On 9/4/17, Koos Zevenhoven <k7ho...@gmail.com> wrote: > Core concept > '''''''''''' > > A context-local variable is represented by a single instance of > ``contextvars.Var``, say ``cvar``. Any code that has access to the ``cvar`` > object can ask for its value with respect to the current context. In the > high-level API, this value is given by the ``cvar.value`` property:: > > cvar = contextvars.Var(default="the default value", > description="example context variable") > > assert cvar.value == "the default value" # default still applies > > # In code examples, all ``assert`` statements should > # succeed according to the proposed semantics. > > > No assignments to ``cvar`` have been applied for this context, so > ``cvar.value`` gives the default value. Assigning new values to contextvars > is done in a highly scope-aware manner:: > > with cvar.assign(new_value): > assert cvar.value is new_value > # Any code here, or down the call chain from here, sees: > # cvar.value is new_value > # unless another value has been assigned in a > # nested context > assert cvar.value is new_value > # the assignment of ``cvar`` to ``new_value`` is no longer visible > assert cvar.value == "the default value"
I feel that of "is" and "==" in assert statements in this PEP has to be used (or described) more precisely. What if new_value above is 123456789? maybe using something like could be better? -> def equals(a, b): return a is b or a == b Doesn't PEP need to think about something like "context level overflow" ? Or members like: cvar.level ? _______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/