Объекты переменных контекста

Примечание

Изменено в версии 3.7.1:

В Python 3.7.1 сигнатуры всех контекстных переменных C API были измененны для использования указателей PyObject вместо PyContext, PyContextVar и PyContextToken, например:

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

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

См. bpo-34762 для получения более подробной информации.

Добавлено в версии 3.7.

В этом разделе подробно описывается общедоступный API C для модуля contextvars.

PyContext

Структура C, используемая для представления объекта contextvars.Context.

PyContextVar

Структура C используется для представления объекта contextvars.ContextVar.

PyContextToken

Структура C, используемая для представления объекта contextvars.Token.

PyTypeObject PyContext_Type

Объект типа, представляющий тип context.

PyTypeObject PyContextVar_Type

Объект типа, представляющий тип context variable.

PyTypeObject PyContextToken_Type

Объект типа, представляющий тип context variable token.

Макросы проверки типа:

int PyContext_CheckExact(PyObject *o)

Возвращает истина, если o имеет тип PyContext_Type. o не должен быть NULL. Эта функция всегда Успешна.

int PyContextVar_CheckExact(PyObject *o)

Возвращает истина, если o имеет тип PyContextVar_Type. o не должен быть NULL. Эта функция всегда Успешна.

int PyContextToken_CheckExact(PyObject *o)

Возвращает истина, если o имеет тип PyContextToken_Type. o не должен быть NULL. Эта функция всегда Успешна.

Функции управления объектами контекста:

PyObject *PyContext_New(void)
Return value: New reference.

Создать новый пустой объект контекста. Возвращает NULL, если произошла ошибка.

PyObject *PyContext_Copy(PyObject *ctx)
Return value: New reference.

Создать мелкую копию переданного объекта контекста ctx. Возвращает NULL, если произошла ошибка.

PyObject *PyContext_CopyCurrent(void)
Return value: New reference.

Создать неглубокую копию текущего контекста потока. Возвращает NULL, если произошла ошибка.

int PyContext_Enter(PyObject *ctx)

Устанавливает ctx в качестве текущего контекста для текущего потока. Возвращает 0 в случае успеха и -1 в случае ошибки.

int PyContext_Exit(PyObject *ctx)

Деактивируйте контекст ctx и восстановите предыдущий контекст как текущий контекст для текущего потока. В случае успеха возвращает 0, а в случае ошибки — -1.

int PyContext_ClearFreeList()

Очистить список свободных переменных контекста. Возвращает общее количество освобожденных элементов. Эта функция всегда Успешна.

Функции контекстной переменной:

PyObject *PyContextVar_New(const char *name, PyObject *def)
Return value: New reference.

Создать новый объект ContextVar. Параметр name используется для самоанализа и отладки. Параметр def может дополнительно указывать значение по умолчанию для переменной контекста. Если произошла ошибка, эта функция возвращает NULL.

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

Получить значение переменной контекста. Возвращает -1, если во время поиска произошла ошибка, и 0, если ошибок не было, независимо от того, было ли значение найдено.

Если переменная контекста была найдена, value будет указателем на нее. Если переменная контекста была найдена not, value будет указывать на:

  • default_value, если не NULL;
  • значение по умолчанию var, если не NULL;
  • NULL

Если значение найдено, функция создаст на него новую ссылку.

PyObject *PyContextVar_Set(PyObject *var, PyObject *value)
Return value: New reference.

Устанавливает значение var на value в текущем контексте. Возвращает указатель на объект PyObject или NULL, если произошла ошибка.

int PyContextVar_Reset(PyObject *var, PyObject *token)

Сбросьте состояние контекстной переменной var на то, в котором она находилась до вызова PyContextVar_Set(), вернувшего token. Эта функция возвращает 0 в случае успеха и -1 в случае ошибки.