コンテキスト変数オブジェクト

注釈

バージョン 3.7.1 で変更:

In Python 3.7.1 the signatures of all context variables C APIs were changed to use PyObject pointers instead of PyContext, PyContextVar, and PyContextToken, e.g.:

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

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

See bpo-34762 for more details.

バージョン 3.7 で追加.

この節では、 contextvars モジュールの公開 C API の詳細について説明します。

PyContext

contextvars.Context オブジェクトを表現するための C 構造体。

PyContextVar

contextvars.ContextVar オブジェクトを表現するための C 構造体。

PyContextToken

contextvars.Token オブジェクトを表現するための C 構造体。

PyTypeObject PyContext_Type

コンテキスト 型を表現する型オブジェクト。

PyTypeObject PyContextVar_Type

コンテキスト変数 型を表現する型オブジェクト。

PyTypeObject PyContextToken_Type

コンテキスト変数トークン 型を表現する型オブジェクト。

型チェックマクロ:

int PyContext_CheckExact(PyObject *o)

oPyContext_Type の場合に真を返します。 oNULL であってはなりません。 この関数は常に成功します。

int PyContextVar_CheckExact(PyObject *o)

oPyContextVar_Type の場合に真を返します。 oNULL であってはなりません。 この関数は常に成功します。

int PyContextToken_CheckExact(PyObject *o)

oPyContextToken_Type の場合に真を返します。 oNULL であってはなりません。 この関数は常に成功します。

コンテキストオブジェクトを取り扱う関数:

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 コンテキストを無効にし、1 つ前のコンテキストを現在のスレッドの現在のコンテキストに復元します。 成功したら 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 が指すものは次のようになっています:

  • (NULL でなければ) default_value

  • (NULL でなければ) var のデフォルト値

  • NULL

値が見付かった場合、この関数はその値への新しい参照を作成します。

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

Set the value of var to value in the current context. Returns a pointer to a PyObject object, or NULL if an error has occurred.

int PyContextVar_Reset(PyObject *var, PyObject *token)

var コンテキスト変数の状態をリセットし、 token を返した PyContextVar_Set() が呼ばれる前の状態に戻します。 この関数は成功したら 0 、失敗したら -1 を返します。