901f3dce6e
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.
33 lines
371 B
Plaintext
33 lines
371 B
Plaintext
init
|
|
aiter
|
|
anext
|
|
f start: 20
|
|
coro yielded: 21
|
|
coro yielded: 22
|
|
f returned: 23
|
|
x 0
|
|
anext
|
|
f start: 20
|
|
coro yielded: 21
|
|
coro yielded: 22
|
|
f returned: 23
|
|
x 1
|
|
anext
|
|
f start: 20
|
|
coro yielded: 21
|
|
coro yielded: 22
|
|
f returned: 23
|
|
x 2
|
|
anext
|
|
f start: 20
|
|
coro yielded: 21
|
|
coro yielded: 22
|
|
f returned: 23
|
|
x 3
|
|
anext
|
|
f start: 20
|
|
coro yielded: 21
|
|
coro yielded: 22
|
|
f returned: 23
|
|
finished
|