aboutsummaryrefslogtreecommitdiff
path: root/tests/basics/async_await2.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/basics/async_await2.py')
-rw-r--r--tests/basics/async_await2.py28
1 files changed, 14 insertions, 14 deletions
diff --git a/tests/basics/async_await2.py b/tests/basics/async_await2.py
index 7097ce85a..2c5015fb4 100644
--- a/tests/basics/async_await2.py
+++ b/tests/basics/async_await2.py
@@ -1,22 +1,22 @@
# test await expression
-import sys
-if sys.implementation.name in ('micropython', 'circuitpython'):
- # uPy allows normal generators to be awaitables
- coroutine = lambda f: f
-else:
- import types
- coroutine = types.coroutine
+# uPy allows normal generators to be awaitables.
+# CircuitPython does not.
+# In CircuitPython you need to have an __await__ method on an awaitable like in CPython;
+# and like in CPython, generators do not have __await__.
-@coroutine
-def wait(value):
- print('wait value:', value)
- msg = yield 'message from wait(%u)' % value
- print('wait got back:', msg)
- return 10
+class Awaitable:
+ def __init__(self, value):
+ self.value = value
+
+ def __await__(self):
+ print('wait value:', self.value)
+ msg = yield 'message from wait(%u)' % self.value
+ print('wait got back:', msg)
+ return 10
async def f():
- x = await wait(1)**2
+ x = await Awaitable(1)**2
print('x =', x)
coro = f()