diff options
author | Jonathan Hogg <me@jonathanhogg.com> | 2020-07-21 18:47:28 +0100 |
---|---|---|
committer | Damien George <damien@micropython.org> | 2020-07-25 00:58:18 +1000 |
commit | 37e1b5c891f9964bb6c95228bc2d718511507a69 (patch) | |
tree | ce64d2ee23a57c72e32266ee656b726e48da467a /tests/basics/async_for2.py.exp | |
parent | fe7d47971f7de0cc094b28ae34e49f40b41d456d (diff) | |
download | micropython-37e1b5c891f9964bb6c95228bc2d718511507a69.tar.gz micropython-37e1b5c891f9964bb6c95228bc2d718511507a69.zip |
py/compile: Don't await __aiter__ special method in async-for.
MicroPython's original implementation of __aiter__ was correct for an
earlier (provisional) version of PEP492 (CPython 3.5), where __aiter__ was
an async-def function. But that changed in the final version of PEP492 (in
CPython 3.5.2) where the function was changed to a normal one. See
https://www.python.org/dev/peps/pep-0492/#why-aiter-does-not-return-an-awaitable
See also the note at the end of this subsection in the docs:
https://docs.python.org/3.5/reference/datamodel.html#asynchronous-iterators
And for completeness the BPO: https://bugs.python.org/issue27243
To be consistent with the Python spec as it stands today (and now that
PEP492 is final) this commit changes MicroPython's behaviour to match
CPython: __aiter__ should return an async-iterable object, but is not
itself awaitable.
The relevant tests are updated to match.
See #6267.
Diffstat (limited to 'tests/basics/async_for2.py.exp')
-rw-r--r-- | tests/basics/async_for2.py.exp | 4 |
1 files changed, 0 insertions, 4 deletions
diff --git a/tests/basics/async_for2.py.exp b/tests/basics/async_for2.py.exp index 886232f7ba..52bbe90c85 100644 --- a/tests/basics/async_for2.py.exp +++ b/tests/basics/async_for2.py.exp @@ -1,9 +1,5 @@ init aiter -f start: 10 -coro yielded: 11 -coro yielded: 12 -f returned: 13 anext f start: 20 coro yielded: 21 |