Objetos de variáveis ​de contexto

Adicionado na versão 3.7.

Alterado na versão 3.7.1:

Nota

No Python 3.7.1, as assinaturas de todas as APIs C de variáveis de contexto foram alteradas para usar ponteiros PyObject em vez de PyContext, PyContextVar e PyContextToken. Por exemplo:

// no 3.7.0:
PyContext *PyContext_New(void);

// no 3.7.1+:
PyObject *PyContext_New(void);

Veja bpo-34762 para mais detalhes.

Esta seção detalha a API C pública para o módulo contextvars.

type PyContext

A estrutura C usada para representar um objeto contextvars.Context.

type PyContextVar

A estrutura C usada para representar um objeto contextvars.ContextVar.

type PyContextToken

A estrutura C usada para representar um objeto contextvars.Token

PyTypeObject PyContext_Type

O objeto de tipo que representa o tipo de contexto.

PyTypeObject PyContextVar_Type

O objeto de tipo que representa o tipo de variável de contexto.

PyTypeObject PyContextToken_Type

O objeto de tipo que representa o tipo de token de variável de contexto.

Macros de verificação de tipo:

int PyContext_CheckExact(PyObject *o)

Retorna verdadeiro se o for do tipo PyContext_Type. o não deve ser NULL. Esta função sempre tem sucesso.

int PyContextVar_CheckExact(PyObject *o)

Retorna verdadeiro se o for do tipo PyContextVar_Type. o não deve ser NULL. Esta função sempre tem sucesso.

int PyContextToken_CheckExact(PyObject *o)

Retorna verdadeiro se o for do tipo PyContextToken_Type. o não deve ser NULL. Esta função sempre tem sucesso.

Funções de gerenciamento de objetos de contexto:

PyObject *PyContext_New(void)
Retorna valor: Nova referência.

Cria um novo objeto de contexto vazio. Retorna NULL se um erro ocorreu.

PyObject *PyContext_Copy(PyObject *ctx)
Retorna valor: Nova referência.

Cria uma cópia rasa do objeto de contexto ctx passado. Retorna NULL se um erro ocorreu.

PyObject *PyContext_CopyCurrent(void)
Retorna valor: Nova referência.

Cria uma cópia rasa do contexto da thread atual. Retorna NULL se um erro ocorreu.

int PyContext_Enter(PyObject *ctx)

Defina ctx como o contexto atual para o thread atual. Retorna 0 em caso de sucesso e -1 em caso de erro.

int PyContext_Exit(PyObject *ctx)

Desativa o contexto ctx e restaura o contexto anterior como o contexto atual para a thread atual. Retorna 0 em caso de sucesso e -1 em caso de erro.

Funções de variável de contexto:

PyObject *PyContextVar_New(const char *name, PyObject *def)
Retorna valor: Nova referência.

Cria um novo objeto ContextVar. O parâmetro name é usado para fins de introspecção e depuração. O parâmetro def especifica um valor padrão para a variável de contexto, ou NULL para nenhum padrão. Se ocorrer um erro, esta função retorna NULL.

int PyContextVar_Get(PyObject *var, PyObject *default_value, PyObject **value)

Obtém o valor de uma variável de contexto. Retorna -1 se um erro ocorreu durante a pesquisa, e 0 se nenhum erro ocorreu, se um valor foi encontrado ou não.

Se a variável de contexto foi encontrada, value será um ponteiro para ela. Se a variável de contexto não foi encontrada, value apontará para:

  • default_value, se não for NULL;

  • o valor padrão de var, se não for NULL;

  • NULL

Exceto para NULL, a função retorna uma nova referência.

PyObject *PyContextVar_Set(PyObject *var, PyObject *value)
Retorna valor: Nova referência.

Define o valor de var como value no contexto atual. Retorna um novo objeto token para esta alteração, ou NULL se um erro ocorreu.

int PyContextVar_Reset(PyObject *var, PyObject *token)

Redefine o estado da variável de contexto var para o estado que anterior a PyContextVar_Set() que retornou o token foi chamado. Esta função retorna 0 em caso de sucesso e -1 em caso de erro.