mirror of
https://github.com/python/cpython.git
synced 2026-01-26 21:03:34 +00:00
gh-142119: Clarify context manager protocol documentation on ContextVar.set and Token (GH-143694)
This commit is contained in:
parent
19de10d3d8
commit
04d497c284
@ -77,6 +77,32 @@ Context Variables
|
||||
to restore the variable to its previous value via the
|
||||
:meth:`ContextVar.reset` method.
|
||||
|
||||
For convenience, the token object can be used as a context manager
|
||||
to avoid calling :meth:`ContextVar.reset` manually::
|
||||
|
||||
var = ContextVar('var', default='default value')
|
||||
|
||||
with var.set('new value'):
|
||||
assert var.get() == 'new value'
|
||||
|
||||
assert var.get() == 'default value'
|
||||
|
||||
It is a shorthand for::
|
||||
|
||||
var = ContextVar('var', default='default value')
|
||||
|
||||
token = var.set('new value')
|
||||
try:
|
||||
assert var.get() == 'new value'
|
||||
finally:
|
||||
var.reset(token)
|
||||
|
||||
assert var.get() == 'default value'
|
||||
|
||||
.. versionadded:: 3.14
|
||||
|
||||
Added support for using tokens as context managers.
|
||||
|
||||
.. method:: reset(token)
|
||||
|
||||
Reset the context variable to the value it had before the
|
||||
@ -101,16 +127,8 @@ Context Variables
|
||||
the value of the variable to what it was before the corresponding
|
||||
*set*.
|
||||
|
||||
The token supports :ref:`context manager protocol <context-managers>`
|
||||
to restore the corresponding context variable value at the exit from
|
||||
:keyword:`with` block::
|
||||
|
||||
var = ContextVar('var', default='default value')
|
||||
|
||||
with var.set('new value'):
|
||||
assert var.get() == 'new value'
|
||||
|
||||
assert var.get() == 'default value'
|
||||
Tokens support the :ref:`context manager protocol <context-managers>`
|
||||
to automatically reset context variables. See :meth:`ContextVar.set`.
|
||||
|
||||
.. versionadded:: 3.14
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user