summaryrefslogtreecommitdiff
path: root/tests/basics/async_with2.py
diff options
context:
space:
mode:
authorKenny <3454741+WarriorOfWire@users.noreply.github.com>2020-10-10 23:39:32 -0700
committerKenny <3454741+WarriorOfWire@users.noreply.github.com>2020-10-10 23:39:32 -0700
commit98aa4b794346161e512d0fba913901021dd2cfbf (patch)
tree8a6dfa086f6ac86d2a2852c7121a3636814a74f7 /tests/basics/async_with2.py
parent5d96afc5c2e4b4b6aa265a96a3921ac71f036980 (diff)
update async tests with less upython workaround and more cpython compatibility
Diffstat (limited to 'tests/basics/async_with2.py')
-rw-r--r--tests/basics/async_with2.py32
1 files changed, 16 insertions, 16 deletions
diff --git a/tests/basics/async_with2.py b/tests/basics/async_with2.py
index 5fb06ba60..2e9e9e5a7 100644
--- a/tests/basics/async_with2.py
+++ b/tests/basics/async_with2.py
@@ -1,32 +1,32 @@
# test waiting within async with enter/exit functions
-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 f(x):
- print('f start:', x)
- yield x + 1
- yield x + 2
- return x + 3
+class Awaitable:
+ def __init__(self, x):
+ self.x = x
+
+ def __await__(self):
+ print('f start:', self.x)
+ yield self.x + 1
+ yield self.x + 2
+ return self.x + 3
class AContext:
async def __aenter__(self):
print('enter')
- print('f returned:', await f(10))
+ print('f returned:', await Awaitable(10))
async def __aexit__(self, exc_type, exc, tb):
print('exit', exc_type, exc)
- print('f returned:', await f(20))
+ print('f returned:', await Awaitable(20))
async def coro():
async with AContext():
print('body start')
- print('body f returned:', await f(30))
+ print('body f returned:', await Awaitable(30))
print('body end')
o = coro()