Objetos de variables de contexto

Nota

Distinto en la versión 3.7.1:

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.

Nuevo en la versión 3.7.

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 ser NULL. Esta función siempre finaliza con éxito.

int PyContextVar_CheckExact(PyObject *o)

Retorna verdadero si o es de tipo PyContextVar_Type. o no debe ser NULL. Esta función siempre finaliza con éxito.

int PyContextToken_CheckExact(PyObject *o)

Retorna verdadero si o es de tipo PyContextToken_Type. o no debe ser NULL. 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.

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, o NULL para no especificar un valor predeterminado. Si se ha producido un error, esta función retorna NULL.

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 y 0 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 retorna 0 en caso de éxito y -1 en caso de error.