[Python-Dev] PEP 567 pre v3 (original) (raw)

Nick Coghlan ncoghlan at gmail.com
Mon Jan 8 22:22:15 EST 2018


On 9 January 2018 at 05:34, Yury Selivanov <yselivanov.ml at gmail.com> wrote:

Maybe we can rename ContextVar.get() to ContextVar.lookup()? This would help to avoid potential confusion between Context.get() and ContextVar.get().

I think this would also tie in nicely with the PEP 568 draft, where "ContextVar.lookup()" may end up scanning a chain of Context mappings before falling back on the given default value.

That said, I do wonder if this may be a case where a dual API might be appropriate (ala dict.getitem vs dict.get), such that you have:

ContextVar.get(default=None) -> Optional[T] # Missing -> None
ContextVar.lookup() -> T # Missing -> raise LookupError

If you set a default on the ContextVar itself, they'd always be identical (since you'll never hit the "Missing" case), but they'd mimic the dict.getitem vs dict.get split if no var level default was specified.

The conservative option would be to start with only the ContextVar.lookup method, and then add ContextVar.get later if it's absence proved sufficiently irritating.

Cheers, Nick.

-- Nick Coghlan | ncoghlan at gmail.com | Brisbane, Australia



More information about the Python-Dev mailing list