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

Примечание

Изменено в версии 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.

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

PyContext

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

PyContextVar

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

PyContextToken

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

PyTypeObject PyContext_Type

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

PyTypeObject PyContextVar_Type

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

PyTypeObject PyContextToken_Type

Объект 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 при ошибке.

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 будет указателем на нее. Если переменная контекста не найдена, 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 при ошибке.