[Python-ideas] PEP draft: context variables

Ethan Furman ethan at stoneleaf.us
Fri Oct 13 13:45:35 EDT 2017

On 10/13/2017 09:48 AM, Steve Dower wrote:
> On 13Oct2017 0941, Yury Selivanov wrote:

>> Actually, capturing context at the moment of coroutine creation (in
>> PEP 550 v1 semantics) will not work at all.  Async context managers
>> will break.
>>     class AC:
>>         async def __aenter__(self):
>>              pass
>> ^ If the context is captured when coroutines are instantiated,
>> __aenter__ won't be able to set context variables and thus affect the
>> code it wraps.  That's why coroutines shouldn't capture context when
>> created, nor they should isolate context.  It's a job of async Task.
> Then make __aenter__/__aexit__ when called by "async with" an exception to the normal semantics?
> It seems simpler to have one specially named and specially called function be special, rather than make the semantics
> more complicated for all functions.

+1.  I think that would make it much more usable by those of us who are not experts.


More information about the Python-ideas mailing list