# test await expression # 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__. 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 Awaitable(1)**2 print('x =', x) coro = f() print('return from send:', coro.send(None)) try: coro.send('message from main') except StopIteration: print('got StopIteration')