Objetos de variables de contexto¶
Added in version 3.7.
Distinto en la versión 3.7.1:
Nota
En Python 3.7.1, las firmas de todas las variables de contexto C APIs fueron cambiadas para usar punteros PyObject
en lugar de PyContext
, PyContextVar
, y PyContextToken
, por ejemplo:
// in 3.7.0:
PyContext *PyContext_New(void);
// in 3.7.1+:
PyObject *PyContext_New(void);
Ver bpo-34762 para más detalles.
Esta sección detalla la API pública de C para el módulo contextvars
.
-
type PyContext¶
La estructura C utilizada para representar un objeto
contextvars.Context
.
-
type PyContextVar¶
La estructura C utilizada para representar un objeto
contextvars.ContextVar
.
-
type PyContextToken¶
La estructura C solía representar un objeto
contextvars.Token
.
-
PyTypeObject PyContext_Type¶
El objeto de tipo que representa el tipo context.
-
PyTypeObject PyContextVar_Type¶
El objeto tipo que representa el tipo variable de contexto.
-
PyTypeObject PyContextToken_Type¶
El tipo objeto que representa el tipo token de variable de contexto.
Macros de verificación de tipo:
-
int PyContext_CheckExact(PyObject *o)¶
Retorna verdadero si o es de tipo
PyContext_Type
. o no debe serNULL
. Esta función siempre finaliza con éxito.
-
int PyContextVar_CheckExact(PyObject *o)¶
Retorna verdadero si o es de tipo
PyContextVar_Type
. o no debe serNULL
. Esta función siempre finaliza con éxito.
-
int PyContextToken_CheckExact(PyObject *o)¶
Retorna verdadero si o es de tipo
PyContextToken_Type
. o no debe serNULL
. Esta función siempre finaliza con éxito.
Funciones de gestión de objetos de contexto:
-
PyObject *PyContext_New(void)¶
- Return value: New reference.
Crea un nuevo objeto de contexto vacío. Retorna
NULL
si se ha producido un error.
-
PyObject *PyContext_Copy(PyObject *ctx)¶
- Return value: New reference.
Crea una copia superficial del objeto de contexto ctx pasado. Retorna
NULL
si se ha producido un error.
-
PyObject *PyContext_CopyCurrent(void)¶
- Return value: New reference.
Crea una copia superficial del contexto actual del hilo. Retorna
NULL
si se ha producido un error.
-
int PyContext_Enter(PyObject *ctx)¶
Establece ctx como el contexto actual para el hilo actual. Retorna
0
en caso de éxito y-1
en caso de error.
-
int PyContext_Exit(PyObject *ctx)¶
Desactiva el contexto ctx y restaura el contexto anterior como el contexto actual para el hilo actual. Retorna
0
en caso de éxito y-1
en caso de error.
-
int PyContext_AddWatcher(PyContext_WatchCallback callback)¶
Register callback as a context object watcher for the current interpreter. Return an ID which may be passed to
PyContext_ClearWatcher()
. In case of error (e.g. no more watcher IDs available), return-1
and set an exception.Added in version 3.14.
-
int PyContext_ClearWatcher(int watcher_id)¶
Clear watcher identified by watcher_id previously returned from
PyContext_AddWatcher()
for the current interpreter. Return0
on success, or-1
and set an exception on error (e.g. if the given watcher_id was never registered.)Added in version 3.14.
-
type PyContextEvent¶
Enumeration of possible context object watcher events: -
Py_CONTEXT_EVENT_ENTER
-Py_CONTEXT_EVENT_EXIT
Added in version 3.14.
-
typedef int (*PyContext_WatchCallback)(PyContextEvent event, PyContext *ctx)¶
Type of a context object watcher callback function. If event is
Py_CONTEXT_EVENT_ENTER
, then the callback is invoked after ctx has been set as the current context for the current thread. Otherwise, the callback is invoked before the deactivation of ctx as the current context and the restoration of the previous contex object for the current thread.If the callback returns with an exception set, it must return
-1
; this exception will be printed as an unraisable exception usingPyErr_FormatUnraisable()
. Otherwise it should return0
.There may already be a pending exception set on entry to the callback. In this case, the callback should return
0
with the same exception still set. This means the callback may not call any other API that can set an exception unless it saves and clears the exception state first, and restores it before returning.Added in version 3.14.
Funciones variables de contexto:
-
PyObject *PyContextVar_New(const char *name, PyObject *def)¶
- Return value: New reference.
Crea un nuevo objeto
ContextVar
. El parámetro name se usa para propósitos de introspección y depuración. El parámetro def especifica el valor predeterminado para la variable de contexto, oNULL
para no especificar un valor predeterminado. Si se ha producido un error, esta función retornaNULL
.
-
int PyContextVar_Get(PyObject *var, PyObject *default_value, PyObject **value)¶
Obtiene el valor de una variable de contexto. Retorna
-1
si se produjo un error durante la búsqueda y0
si no se produjo ningún error, se haya encontrado o no un valor.Si se encontró la variable de contexto, value será un puntero a ella. Si la variable de contexto not se encontró, value apuntará a:
default_value, si no es
NULL
;el valor predeterminado de var, si no es
NULL
;NULL
A excepción de
NULL
, la función retorna una nueva referencia.
-
PyObject *PyContextVar_Set(PyObject *var, PyObject *value)¶
- Return value: New reference.
Establece el valor de var en value en el contexto actual. Retorna un nuevo objeto token para este cambio, o
NULL
si se ha producido un error.
-
int PyContextVar_Reset(PyObject *var, PyObject *token)¶
Restablece el estado de la variable de contexto var a la que estaba antes
PyContextVar_Set()
que retornó el token fue llamado. Esta función retorna0
en caso de éxito y-1
en caso de error.