[Python-Dev] PEP 492: __aiter__ should return async iterator directly instead of awaitable
Yury Selivanov
yselivanov.ml at gmail.com
Mon Jun 6 16:05:53 EDT 2016
On 2016-06-06 4:02 PM, Łukasz Langa wrote:
>> The proposed patch fixes the __aiter__ in a backwards compatible way:
>>
>> 1. ceval/GET_AITER opcode calls the __aiter__ method.
>>
>> 2. If the returned object has an '__anext__' method, GET_AITER
>> silently wraps it in an awaitable, which is equivalent to the
>> following coroutine:
>>
>> async def wrapper(aiter_result):
>> return aiter_result
>>
>> 3. If the returned object does not have an '__anext__' method, a
>> DeprecationWarning is raised.
>
> There’s a problem with this approach. It will force people to write
> deprecated code because you never know if your library is going to run
> on 3.5.0 or 3.5.1. Barry, Ubuntu wily, xenial and yakkety currently
> package 3.5.0 or 3.5.1. When 3.5.2 is going to get released, are they
> going to get it? I’m pretty sure wily *isn’t* and yakkety *is* but
> just wanted to confirm; especially with xenial being an LTS release.
>
Yes, I agree. OTOH, I don't see any other way of resolving this.
Another option would be to start raising the DeprecationWarning only in 3.6.
Yury
More information about the Python-Dev
mailing list