[Python-Dev] PEP 492: async/await in Python; v3
Yury Selivanov
yselivanov.ml at gmail.com
Wed Apr 29 16:18:41 CEST 2015
Greg,
On 2015-04-29 5:13 AM, Greg Ewing wrote:
> Yury Selivanov wrote:
>>
>> On 2015-04-28 11:59 PM, Greg wrote:
>>
>>> On 29/04/2015 9:49 a.m., Guido van Rossum wrote:
>>>
>>>> *But* every generator-based coroutine *must* be
>>>> decorated with `asyncio.coroutine()`. This is
>>>> potentially a backwards incompatible change.
>>>>
>>>> See below. I worry about backward compatibility. A lot. Are you saying
>>>> that asycio-based code that doesn't use @coroutine will break in 3.5?
>>>
>>> That seems unavoidable if the goal is for 'await' to only
>>> work on generators that are intended to implement coroutines,
>>
>> Not sure what you mean by "unavoidable".
>
> Guido is worried about existing asyncio-based code that
> doesn't always decorate its generators with @coroutine.
>
> If I understand correctly, if you have
>
> @coroutine
> def coro1():
> yield from coro2()
>
> def coro2():
> yield from ...
>
> then coro1() would no longer work. In other words,
> some currently legitimate asyncio-based code will break
> under PEP 492 even if it doesn't use any PEP 492 features.
>
> What you seem to be trying to do here is catch the
> mistake of using a non-coroutine iterator as if it
> were a coroutine. By "unavoidable" I mean I can't see
> a way to achieve that in all possible permutations
> without giving up some backward compatibility.
Please see my reply to Guido in other thread.
Yury
More information about the Python-Dev
mailing list