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.
