I'm convinced by the new section explaining why a single value is better than a namespace.  Nonetheless, it would feel more "Pythonic" to me to create a property `ContextVariable.val` whose getter and setter was `.lookup()` and `.set()` (or maybe `._lookup()` and `._set()`).

Lookup might require a more complex call signature in rare cases, but the large majority of the time it would simply be `var.val`, and that should be the preferred API IMO.  That provides a nice parallel between `var.name` and `var.val` also.

On Sat, Aug 26, 2017 at 11:22 AM, Barry Warsaw <barry@python.org> wrote:
On Aug 26, 2017, at 14:15, Yury Selivanov <yselivanov.ml@gmail.com> wrote:
>
> Elvis just added it:
> https://www.python.org/dev/peps/pep-0550/#replication-of-threading-local-interface

Thanks, that’s exactly what I was looking for.  Great summary of the issue.
>
>> That said, if we have to use method lookup, then I agree that `.get()` is a better choice than `.lookup()`.  But in that case, would it be possible to add an optional `default=None` argument so that you can specify a marker object for a missing value?  I worry that None might be a valid value in some cases, but that currently can’t be distinguished from “missing”.
>
> Nathaniel has a use case where he needs to know if the value is in the
> topmost LC or not.
>
> One way to address that need is to have the following signature for lookup():
>
>   lookup(*, default=None, traverse=True)
>
> IMO "lookup" is a slightly better name in this particular context.

Given that signature (which +1), I agree.  You could add keywords for debugging lookup fairly easily too.

Cheers,
-Barry


_______________________________________________
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/mertz%40gnosis.cx




--
Keeping medicines from the bloodstreams of the sick; food
from the bellies of the hungry; books from the hands of the
uneducated; technology from the underdeveloped; and putting
advocates of freedom in prisons.  Intellectual property is
to the 21st century what the slave trade was to the 16th.