On Tue, Jan 2, 2018 at 4:51 PM, Victor Stinner <victor.stinner@gmail.com> wrote:
Why ContextVar.reset(token) does nothing at the second call with the same token? What is the purpose of Token._used? I guess that there is an use case to justify this behaviour.

reset() should have a result: true if the variable was restored to its previous state, false if reset() did nothing because the token was already used. And/Or Token should have a read-only "used" property.

That depends again on the use case. The only real purpose for reset() is to be able to write a context manager that sets and restores a context variable (like in `with decimal.localcontext()`). Handling double resets is about as useful as specifying what happens if __exit__ is called twice.

--
--Guido van Rossum (python.org/~guido)