This website requires JavaScript.
Explore
Help
Sign In
djsundog
/
circuitpython
Watch
1
Star
0
Fork
0
You've already forked circuitpython
Code
Issues
Pull Requests
Packages
Projects
Releases
Wiki
Activity
e2b7fe3f0e
circuitpython
/
tests
/
basics
/
generator_pend_throw.py.exp
6 lines
48 B
Plaintext
Raw
Normal View
History
Unescape
Escape
py/objgenerator: Allow to pend an exception for next execution. This implements .pend_throw(exc) method, which sets up an exception to be triggered on the next call to generator's .__next__() or .send() method. This is unlike .throw(), which immediately starts to execute the generator to process the exception. This effectively adds Future-like capabilities to generator protocol (exception will be raised in the future). The need for such a method arised to implement uasyncio wait_for() function efficiently (its behavior is clearly "Future" like, and normally would require to introduce an expensive Future wrapper around all native couroutines, like upstream asyncio does). py/objgenerator: pend_throw: Return previous pended value. This effectively allows to store an additional value (not necessary an exception) in a coroutine while it's not being executed. uasyncio has exactly this usecase: to mark a coro waiting in I/O queue (and thus not executed in the normal scheduling queue), for the purpose of implementing wait_for() function (cancellation of such waiting coro by a timeout).
2017-10-21 05:13:44 -04:00
0
1
raised ValueError()
ret was: None
tests/basics/generator_pend_throw: Add test for just-started generator.
2017-12-18 23:01:49 -05:00
TypeError
Reference in New Issue
Copy Permalink