[Python-ideas] PEP draft: context variables

Koos Zevenhoven k7hoven at gmail.com
Fri Oct 13 13:55:51 EDT 2017


On Fri, Oct 13, 2017 at 8:45 PM, Ethan Furman <ethan at stoneleaf.us> wrote:

> 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.
>

​The semantics is not really dependent on __aenter__ and __aexit__. They
can be used together with both semantic variants that I'm describing for
PEP 555, and without any special casing. IOW, this is independent of any
remaining concerns in PEP 555.

––Koos


-- 
+ Koos Zevenhoven + http://twitter.com/k7hoven +
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20171013/9821a3de/attachment-0001.html>


More information about the Python-ideas mailing list