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

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

Изменено в версии 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 для получения более подробной информации.

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

type PyContext

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

type PyContextVar

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

type PyContextToken

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

PyTypeObject PyContext_Type

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

PyTypeObject PyContextVar_Type

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

PyTypeObject PyContextToken_Type

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

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

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)
Возвращаемое значение: Новая ссылка.

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

PyObject *PyContext_Copy(PyObject *ctx)
Возвращаемое значение: Новая ссылка.

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

PyObject *PyContext_CopyCurrent(void)
Возвращаемое значение: Новая ссылка.

Создайте неполную копию текущего контекста потока. Возвращает 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)
Возвращаемое значение: Новая ссылка.

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

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

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

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

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

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

  • NULL

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

PyObject *PyContextVar_Set(PyObject *var, PyObject *value)
Возвращаемое значение: Новая ссылка.

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

int PyContextVar_Reset(PyObject *var, PyObject *token)

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

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