On 2015-04-23 8:10 AM, Greg Ewing wrote: > Andrew Svetlov wrote: >> From my understanding to use cofunctions I must wrap it with costart >> call: >> >> yield from gather(costart(coro1, a1, a2), costart(coro2), fut3) >> >> There are other places in asyncio API those accept coroutines or >> futures as parameters, not only Task() and async(). > > In a PEP 3152 aware version of asyncio, they would all > know about cofunctions and what to do with them. > What do you mean by that? In a PEP 3152 aware version of asyncio, it's just *not possible to write* cocall gather(coro1(1,2), coro(2,3)) you just have to use your 'costart' built-in: cocall gather(costart(coro1, 1, 2), costart(coro, 2,3)). That's all. That's PEP 3152-aware world. Somehow you think that it's OK to write cocall fut() # instead of just cocall fut() *But it's not*. A huge amount of existing code won't work. You won't be able to migrate it to new syntax easily. If you have a future object 'fut', it's not intuitive or pythonic to write 'cocall fut()'. PEP 3152 was created in pre-asyncio era, and it shows. It's just not gonna work. I know because I designed PEP 492 with a reference implementation at hand, tuning the proposal to make it backwards compatible and on the other hand to actually improve things. Your idea of syntaticaly forcing to use 'cocall' with parens is cute, but it breaks so many things and habits that it just doesn't worth it. Yury
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