Note
Changed in version 3.7.1:
In Python 3.7.1 the signatures of all context variables
C APIs were changed to use PyObject
pointers instead
of PyContext
, PyContextVar
, and
PyContextToken
, e.g.:
// in 3.7.0:
PyContext *PyContext_New(void);
// in 3.7.1+:
PyObject *PyContext_New(void);
See bpo-34762 for more details.
New in version 3.7.
This section details the public C API for the contextvars
module.
PyContext
contextvars.Context
object.PyContextVar
contextvars.ContextVar
object.PyContextToken
contextvars.Token
object.PyContext_Type
PyContextVar_Type
PyContextToken_Type
Type-check macros:
PyContext_CheckExact
(PyObject *o)PyContext_Type
. o must not be NULL
. This function always succeeds.PyContextVar_CheckExact
(PyObject *o)PyContextVar_Type
. o must not be NULL
. This function always succeeds.PyContextToken_CheckExact
(PyObject *o)PyContextToken_Type
. o must not be NULL
. This function always succeeds.Context object management functions:
PyContext_New
(void)Return value: New reference.
Create a new empty context object. Returns NULL
if an error
has occurred.
PyContext_Copy
(PyObject *ctx)Return value: New reference.
Create a shallow copy of the passed ctx context object.
Returns NULL
if an error has occurred.
PyContext_CopyCurrent
(void)Return value: New reference.
Create a shallow copy of the current thread context.
Returns NULL
if an error has occurred.
PyContext_Enter
(PyObject *ctx)0
on success, and -1
on error.PyContext_Exit
(PyObject *ctx)0
on success, and -1
on error.Context variable functions:
PyContextVar_New
(const char *name, PyObject *def)Return value: New reference.
Create a new ContextVar
object. The name parameter is used
for introspection and debug purposes. The def parameter may optionally
specify the default value for the context variable. If an error has
occurred, this function returns NULL
.
PyContextVar_Get
(PyObject *var, PyObject *default_value, PyObject **value)Get the value of a context variable. Returns -1
if an error has
occurred during lookup, and 0
if no error occurred, whether or not
a value was found.
If the context variable was found, value will be a pointer to it. If the context variable was not found, value will point to:
default_value, if not NULL
;
the default value of var, if not NULL
;
NULL
If the value was found, the function will create a new reference to it.
PyContextVar_Set
(PyObject *var, PyObject *value)Return value: New reference.
Set the value of var to value in the current context. Returns a
pointer to a PyObject
object, or NULL
if an error
has occurred.
PyContextVar_Reset
(PyObject *var, PyObject *token)PyContextVar_Set()
that returned the token was called. This function returns 0
on success and -1
on error.