On Wed, 29 Apr 2015 20:33:09 -0400 Yury Selivanov firstname.lastname@example.org wrote:
On 2015-04-29 8:21 PM, Ethan Furman wrote:
From the PEP:
Why not a __future__ import
__future__ imports are inconvenient and easy to forget to add.
That is a horrible rationale for not using an import. By that logic we should have everything in built-ins. ;)
Working example ...
The working example only uses async def and await, not async with nor async for nor __aenter__, etc., etc.
Could you put in a more complete example -- maybe a basic chat room with both server and client -- that demonstrated more of the new possibilities?
Andrew Svetlov has implemented some new features in his aiomysql driver:
I don't want to cite it in the PEP because it's not complete yet, and some idioms (like 'async with') aren't used to their full potential.
Having gone through the PEP again, I am still no closer to understanding what happens here:
data = await reader.read(8192)
What does the flow of control look like at the interpreter level?
'await' is semantically equivalent to 'yield from' in this line.
To really understand all implementation details of this line you need to read PEP 3156 and experiment with asyncio. There is no easier way, unfortunately. I can't add a super detailed explanation how event loops can be implemented in PEP 492, that's not in its scope.
But if you really want, you can. The likely reason for that though would be desire to develop "yield from" for an alternative Python implementation. You can take inspiration from a diagram I drew while I implemented "yield from" for MicroPython: https://dl.dropboxusercontent.com/u/44884329/yield-from.pdf