[Python-ideas] PEP draft: context variables

Yury Selivanov yselivanov.ml at gmail.com
Fri Oct 13 18:30:14 EDT 2017


On Fri, Oct 13, 2017 at 4:29 PM, Paul Moore <p.f.moore at gmail.com> wrote:
[..]
> Nick's other async refactoring example is different. If the two forms
> he showed don't behave identically in all contexts, then I'd consider
> that to be a major problem. Saying that "coroutines are special" just
> reads to me as "coroutines/async are sufficiently weird that I can't
> expect my normal patterns of reasoning to work with them". (Apologies
> if I'm conflating coroutines and async incorrectly - as a non-expert,
> they are essentially indistinguishable to me). I sincerely hope that
> isn't the message I should be getting - async is already more
> inaccessible than I'd like for the average user.

Nick's idea that coroutines can isolate context was actually explored
before in PEP 550 v3, and then, rather quickly, it became apparent
that it wouldn't work.

Steve's comments were about a specific example about generators, not
coroutines.  We can't special case __aenter__, we simply can not.
__aenter__ can be a chain of coroutines -- its own separate call
stack, we can't say that this whole call stack is behaving differently
from all other code with respect to execution context.

At this time, we have so many conflicted examples and tangled
discussions on these topics, that I myself just lost what everybody is
implying by "this semantics isn't obvious to *me*".  Which semantics?
It's hard to tell.

At this point of time, there's just one place which describes one well
defined semantics: PEP 550 latest version.  Paul, if you have
time/interest, please take a look at it, and say what's confusing
there.

Yury


More information about the Python-ideas mailing list