Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 28 additions & 10 deletions Doc/library/contextvars.rst
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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

Expand Down
Loading