Hi, I'm trying to follow the discussion about the PEP 479 (Change StopIteration handling inside generators), but it's hard to read all messages. I'm concerned by trollius and asyncio which heavily rely on StopIteration. Trollius currently supports running asyncio coroutines: a trollius coroutine can executes an asyncio coroutine, and and asyncio coroutine can execute a trollius coroutine. I modified the Return class of Trollius to not inherit from StopIteration. All trollius tests pass on Python 3.3 except on one (which makes me happy, the test suite is wide enough to detect bugs ;-)): test_trollius_in_asyncio. This specific test executes an asyncio which executes a trollius coroutine. https://bitbucket.org/enovance/trollius/src/873d21ac0badec36835ed24d13e2aeda24f2dc64/tests/test_asyncio.py?at=trollius#cl-60 The problem is that an asyncio coroutine cannot execute a Trollius coroutine anymore: "yield from coro" raises a Return exception instead of simply "stopping" the generator and return the result (value passed to Return). I don't see how an asyncio coroutine calling "yield from trollius_coroutine" can handle the Return exception if it doesn't inherit from StopIteration. It means that I have to drop this feature in Python 3.5 (or later when the PEP 479 becomes effective)? I'm talking about the current behaviour of Python 3.3, I didn't try the PEP 479 (I don't know if an exception exists). Victor -------------- next part -------------- A non-text attachment was scrubbed... Name: asyncio_trollius.py Type: text/x-python Size: 1159 bytes Desc: not available URL: <http://mail.python.org/pipermail/python-dev/attachments/20141127/d73f0e1a/attachment-0001.py>
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4