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

Примечание

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

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

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

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

Более подробную информацию см. в разделе bpo-34762.

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

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

type PyContext

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

type PyContextVar

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

type PyContextToken

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

PyTypeObject PyContext_Type

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

PyTypeObject PyContextVar_Type

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

PyTypeObject PyContextToken_Type

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

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

int PyContext_CheckExact(PyObject *o)

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

int PyContextVar_CheckExact(PyObject *o)

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

int PyContextToken_CheckExact(PyObject *o)

Возвращает true, если 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 при ошибке.

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

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

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

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

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

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

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

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

  • NULL

За исключением NULL, функция возвращает новую ссылку.

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

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

int PyContextVar_Reset(PyObject *var, PyObject *token)

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

Вернуться на верх