On 5 May 2015 at 21:57, Guido van Rossum email@example.com wrote:
On Tue, May 5, 2015 at 1:39 PM, Paul Moore firstname.lastname@example.org wrote:
It's very hard to separate coroutines from asyncio, because there's no other example (not even a toy one) to reason about.
What about Greg Ewing's example? http://www.cosc.canterbury.ac.nz/greg.ewing/python/yield-from/yf_current/Exa...
That doesn't cover any of the higher level abstractions like tasks or futures (at least not by those names or with those interfaces). And I don't see where the PEP 492 additions would fit in (OK, "replace yield from with await" is part of it, but I don't see the rest).
We may be talking at cross purposes here. There's a lot of asyncio that doesn't seem to me to be IO-related. Specifically the future and task abstractions. I view those as relevant to "coroutine programming in Python" because they are referenced in any discussion of coroutines (you yield from a future, for example). If you see them as purely asyncio related (and not directly usable from outside of an asyncio context) then that may explain some of my confusion (but at the cost of reducing the coroutine concept to something pretty trivial in the absence of a library that independently implements these concepts).
In some ways I wish there had been an "asyncio" library that covered the areas that are fundamentally about IO multiplexing. And a separate library (just "async", maybe, although that's now a bad idea as it clashes with a keyword :-)) that covered generic event loop, task and synchronisation areas. But that's water under the bridge now.