On Thu, Jan 4, 2018 at 3:25 AM, Paul Moore <p.f.mo...@gmail.com> wrote:
> On 4 January 2018 at 00:17, Greg Ewing <greg.ew...@canterbury.ac.nz> > wrote: > > Guido van Rossum wrote: > >> > >> contextvars.copy_context().run(func, <args>) > > > > If contexts are immutable, why is there something > > called copy_context? > > Agreed. This was something that bothered me, too. I mentioned it in my > review, but that seemed to get lost in the other comments in this > thread... > > I get the impression that the logic is that the context is immutable, > but the ContextVars that it contains aren't, and the copy is deep (at > least 1 level deep) so you copy then change the value of a ContextVar. > But rereading that sentence, it sounds confused even to me, so it's > either not right or the implementation falls foul of "If the > implementation is hard to explain, it's a bad idea." :-) It was get_context() in an earlier version of PEP 567. We changed it to copy_context() believing that that would clarify that you get a clone that is unaffected by subsequent ContextVar.set() operations (which affect the *current* context rather than the copy you just got). [The discussion is fragmentary because Yury is on vacation until the 15th and I am scrambling for time myself. But your long post is saved, and not forgotten.] -- --Guido van Rossum (python.org/~guido)
_______________________________________________ Python-Dev mailing list Python-Dev@python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com