C API と ABI の安定性
*********************

特記のない限り、Python の C API には後方互換性ポリシー **PEP 387** が
適用されます。 変更の大半はソース互換性を保ちます (通常は新しい API の
追加だけを行います)。 既存 API の変更や削除は、非推奨の期間を経た後、
または重大な問題を修正するためにのみ行います。

CPython のアプリケーションバイナリインターフェース (ABI) は、同じマイ
ナーリリース内で前方互換性と後方互換性を持ちます (同じ方法でコンパイル
されている場合。下記の プラットフォームで考慮すべき点 を参照)。 したが
って、Python 3.10.0 向けにコンパイルしたコードは 3.10.8 で動作し、その
逆も同様ですが、3.9.x や 3.11.x 向けには別にコンパイルする必要がありま
す。

C API には、期待される安定性が異なる二つの階層があります。

* 不安定な API は、非推奨の期間なしにマイナーバージョン間で変更される
  可能性があります。 名前の接頭辞 "PyUnstable" で識別できます。

* Limited API は、複数のマイナーリリースにわたって互換性を持ちます。
  "Py_LIMITED_API" を定義すると、"Python.h" から公開されるのはこの部分
  集合だけになります。

以下でそれぞれを詳しく説明します。

"_Py_InternalState" のようにアンダースコアで始まる名前はプライベート
API で、パッチリリースでも予告なく変更される可能性があります。 この
API を使う必要がある場合は、CPython 開発者 に連絡し、用途に合う公開
API の追加を相談することを検討してください。


不安定な C API
==============

接頭辞 "PyUnstable" を持つ API は CPython の実装の詳細を公開しており、
マイナーリリースごとに (例えば 3.9 から 3.10 で) 非推奨の警告なしに変
更される可能性があります。 ただし、バグ修正リリース (例えば 3.10.0 か
ら 3.10.1) では変更されません。

通常はデバッガのような、低レベルの専門的なツールを対象としています。

この API を使うプロジェクトには、CPython の開発を追い、変更への対応に
追加の労力をかけることが期待されます。


安定したアプリケーションバイナリインターフェース
================================================

Python の *Stable ABI* を使うと、再コンパイルせずに複数バージョンの
Python と互換性を持つ拡張を作成できます。

注釈:

  説明を簡単にするため、この文書では *拡張* について述べますが、Python
  の組み込みなど、API のあらゆる用途で Stable ABI は同じように機能しま
  す。

Stable ABI は二つあります。

* Python 3.2 で導入された "abi3" は、CPython の *フリースレッドビルド*
  **ではない** ビルドと互換性を持ちます。

* Python 3.15 で導入された "abi3t" は、CPython の *フリースレッドビル
  ド* と互換性を持ちます。 "abi3" より API の制約が厳しくなっています
  。

     Added in version 3.15: "abi3t" は **PEP 803** で追加されました。

拡張を "abi3" と "abi3t" の *両方* 向けに同時にコンパイルすることもで
きます。 その結果は、フリースレッドビルドとそうでないビルドの両方で使
えます。 現在のところ、"abi3t" だけを対象にコンパイルする場合と比べて
不利な点はありません。

各 Stable ABI のバージョンには、Python のバージョンの最初の二つの数値
を使います。 例えば Stable ABI 3.14 は Python 3.14 に対応します。
Stable ABI 3.x 向けにコンパイルした拡張は、Python 3.x 以降と ABI 互換
性を持ちます。

Stable ABI を対象にする拡張は、C API の限定された部分集合だけを使わな
ければなりません。 この部分集合を *Limited API* と呼びます。 内容は 後
述の一覧 を参照してください。

Windows では、Stable ABI を使う拡張は "python39.dll" のようなバージョ
ン固有のライブラリではなく、"python3.dll" とリンクしてください。 この
ライブラリは、該当するシンボルだけを公開します。

一部のプラットフォームでは、Python は名前に "abi3" または "abi3t" タグ
を持つ共有ライブラリファイル (例えば "mymodule.abi3.so") を探して読み
込みます。 *フリースレッド* のインタープリタは "abi3t" タグだけを認識
し、それ以外のインタープリタは "abi3" を優先しますが、なければ "abi3t"
を使います。 したがって、両方の ABI と互換性のある拡張には "abi3t" タ
グを使ってください。

Python は、読み込む拡張の ABI に互換性があるかどうかを必ずしも確認しま
せん。 拡張の作者には "Py_mod_abi" スロットまたは "PyABIInfo_Check()"
関数による確認を追加することが推奨されます。 ただし、例えば Stable ABI
3.10 向けの拡張をそれより古い Python にインストールしないようにする最
終的な責任は、利用者 (またはパッケージ管理ツール) にあります。

Stable ABI のすべての関数は、マクロだけでなく Python の共有ライブラリ
内の関数としても存在します。 このため、Python の "ctypes" を含め、C プ
リプロセッサを使わない言語からも利用できます。


Stable ABI 向けのコンパイル
---------------------------

注釈:

  meson-python、scikit-build-core、Setuptools などのビルドツールには、
  マクロを設定し、拡張のファイル名やほかのメタデータと同期させる仕組み
  があることが多いです。 その仕組みがある場合は、手動でマクロを定義す
  るよりもそちらを使ってください。この節の残りは、主にツールの作者と手
  動で拡張をコンパイルする人に関係します。

  参考: Python Packaging User Guide の 推奨ツールの一覧

Stable ABI 向けにコンパイルするには、以下のマクロの一方または両方を、
拡張でサポートする最も古い Python バージョンに "Py_PACK_VERSION" 形式
で定義します。 通常は、コンパイルに使う Python ヘッダのバージョンでは
なく、具体的な値を選んでください。

マクロは "Python.h" をインクルードする前に定義する必要があります。 こ
の時点では "Py_PACK_VERSION" を使えないため、数値を直接使う必要があり
ます。 参考として、最近の Python バージョンの値をいくつか示します。

   0x30a0000  /* Py_PACK_VERSION(3,10) */
   0x30b0000  /* Py_PACK_VERSION(3,11) */
   0x30c0000  /* Py_PACK_VERSION(3,12) */
   0x30d0000  /* Py_PACK_VERSION(3,13) */
   0x30e0000  /* Py_PACK_VERSION(3,14) */
   0x30f0000  /* Py_PACK_VERSION(3,15) */

どちらかのマクロを定義すると、"Python.h" は指定した Stable ABI と互換
性のある API だけを公開します。 つまり Limited API と、コンパイラから
見える必要はあっても直接使うべきでない一部の定義です。 両方を定義した
場合は、両方の Stable ABI と互換性のある API だけを公開します。

Py_LIMITED_API

   "abi3"、つまり CPython の *フリースレッドビルド* ではないビルドを対
   象にします。 共通の情報は 前述の説明 を参照してください。

Py_TARGET_ABI3T

   "abi3t"、つまり CPython の *フリースレッドビルド* を対象にします。
   共通の情報は 前述の説明 を参照してください。

   Added in version 3.15.

どちらのマクロも対象の ABI を指定します。 名前の形式が異なるのは、後方
互換性のためです。

歴史的な補足: "Py_LIMITED_API" を "3" と定義することもできます。 これ
は "0x03020000" (Stable ABI を導入した Python 3.2) と同じように機能し
ます。

両方が定義されている場合、"Python.h" は "Py_LIMITED_API" を
"Py_TARGET_ABI3T" に合わせて再定義する場合としない場合があります。

*フリースレッドビルド*、つまり "Py_GIL_DISABLED" が定義されている場合
、"Py_TARGET_ABI3T" のデフォルトは "Py_LIMITED_API" の値です。 このた
め、"abi3" と "abi3t" の両方を対象にビルドする方法は二つあります。

* "Py_LIMITED_API" と "Py_TARGET_ABI3T" の両方を定義する、または

* "Py_LIMITED_API" だけを定義し、さらに次を行う。

  * Windows では "Py_GIL_DISABLED" を定義する。

  * それ以外のシステムでは、Python のフリースレッドビルドのヘッダを使
    う。


Stable ABI の範囲と性能
-----------------------

Stable ABI の目標は、性能が低下する可能性はあるものの、完全な C API で
可能なことをすべて可能にすることです。 一般に Stable ABI に対応するに
は、拡張のソースコードに多少の変更が必要です。

例えば "PyList_GetItem()" は利用できますが、「安全でない」マクロ版の
"PyList_GET_ITEM()" は利用できません。 このマクロは、リストオブジェク
トのバージョン固有の実装の詳細に依存できるため、高速な場合があります。

また、Stable ABI 向けにコンパイル *しない* 場合、一部の C API 関数はイ
ンライン展開されたりマクロに置き換えられたりします。 Stable ABI 向けの
コンパイルではこのインライン展開を無効にするため、Python のデータ構造
が改良されても安定性を保てますが、性能が低下する可能性があります。

"Py_LIMITED_API" または "Py_TARGET_ABI3T" の定義を省くと、Stable ABI
対応のソースをバージョン固有の ABI 向けにコンパイルできます。 その結果
、性能が高くなる可能性のあるバージョン固有の拡張と、低速でも互換性の高
い代替として Stable ABI 向けにコンパイルした版を、併せて配布できます。


Stable ABI の注意点
-------------------

Stable ABI 向けにコンパイルしても、意図した Python バージョンでコード
が動作する完全な保証には *なりません*。 Stable ABI は、シンボル不足に
よるリンクエラーや、構造体のレイアウトや関数シグネチャの変更によるデー
タ破損などの *ABI* の問題を防ぎます。 ただし、Python のほかの変更によ
って拡張の *動作* が変わることはあります。

"Py_TARGET_ABI3T" と "Py_LIMITED_API" で防げない問題の一つに、古い
Python では無効な引数で関数を呼び出すことがあります。 例えば、ある関数
が引数として "NULL" を受け取るようになった場合を考えてください。
Python 3.9 では "NULL" がデフォルトの動作を選択するのに、Python 3.8 で
は引数をそのまま使ってしまい、"NULL" の参照先へのアクセスによってクラ
ッシュするかもしれません。 構造体のフィールドにも同様のことが言えます
。

このため、拡張がサポートする *すべて* の Python マイナーバージョンでテ
ストすることを推奨します。

また、使用するすべての API のドキュメントを確認し、それが明示的に
Limited API の一部であるかどうかをチェックすることをお勧めします。
"Py_LIMITED_API" が定義されていても、技術的な理由で(あるいはバグとして
意図せず)いくつかのプライベート宣言が公開されることがあります。

また、"Py_LIMITED_API" を 3.8 にしてコンパイルした拡張は Python 3.12
で *読み込め*、Python 3.12 で *コンパイルできる* はずですが、同じソー
スが "Py_LIMITED_API" を 3.12 にしてコンパイルできるとは限りません。
一般に、Stable ABI の安定性を維持する限り、Limited API の一部は非推奨
になったり削除されたりすることがあります。


プラットフォームで考慮すべき点
==============================

ABI の安定性は Python だけでなく、使用するコンパイラ、低レベルのライブ
ラリ、コンパイラオプションにも依存します。 Stable ABI では、これらの詳
細をまとめて「プラットフォーム」と呼びます。 通常は OS の種類とプロセ
ッサのアーキテクチャによって決まります。

特定のプラットフォーム上のすべての Python バージョンが、Stable ABI や
バージョン固有の ABI の互換性を壊さない方法でビルドされるようにするの
は、それぞれの Python 配布者の責任です。 "python.org" の Windows 版と
macOS 版、および多くのサードパーティの配布者はこれを行っています。


ABI の確認
==========

Added in version 3.15.

Python は ABI 互換性の基本的な確認機能を備えています。

この確認は網羅的ではありません。 互換性のないモジュールが誤ったインタ
ープリタ向けにインストールされる、よくある場合だけを防ぎます。 プラッ
トフォームの非互換性 も考慮しません。 確認できるのは、拡張の読み込みに
成功した後だけです。

このような制限はありますが、検出できる非互換性によってクラッシュする代
わりに例外を送出できるよう、拡張モジュールではこの仕組みを使うことを推
奨します。

ほとんどのモジュールでは、"Py_mod_abi" スロットと "PyABIInfo_VAR" マク
ロを使って、例えば次のように確認できます。

   PyABIInfo_VAR(abi_info);

   static PyModuleDef_Slot mymodule_slots[] = {
      {Py_mod_abi, &abi_info},
      ...
   };

高度な用途向けに、以下で API 全体を説明します。

int PyABIInfo_Check(PyABIInfo *info, const char *module_name)
    * 次に属します: Stable ABI (バージョン 3.15 より).*

   指定された "info" が、現在実行中のインタープリタと互換性があるかど
   うかを確認します。

   成功した場合は 0 を返します。 失敗した場合は例外を送出し、-1 を返し
   ます。

   ABI に互換性がない場合、送出する例外は "ImportError" です。

   "module_name" 引数は "NULL"、またはエラーメッセージに使う NUL 終端
   の UTF-8 エンコード文字列へのポインタです。

   Note that if *info* describes the ABI that the current code uses
   (as defined by "PyABIInfo_VAR", for example), using any other
   Python C API may lead to crashes. In particular, it is not safe to
   examine the raised exception.

   Added in version 3.15.

PyABIInfo_VAR(NAME)
    * This macro is available when compiling for the Stable ABI (バー
   ジョン 3.15 より).*

   指定された名前 "NAME" で、現在のコードが使う ABI を記述する静的な
   "PyABIInfo" 変数を定義します。 このマクロは次のように展開されます。

      static PyABIInfo NAME = {
          1, 0,
          PyABIInfo_DEFAULT_FLAGS,
          PY_VERSION_HEX,
          PyABIInfo_DEFAULT_ABI_VERSION
      }

   Added in version 3.15.

type PyABIInfo
    * 次に属します: Stable ABI (すべてのメンバーを含む) (バージョン
   3.15 より).*

   uint8_t abiinfo_major_version

      "PyABIInfo" のメジャーバージョン。 次の値を設定できます。

      * "0": すべての確認を省略する、または

      * "1": このバージョンの "PyABIInfo" を指定する。

   uint8_t abiinfo_minor_version

      "PyABIInfo" のマイナーバージョン。 "0" に設定する必要があります
      。 それより大きな値は、将来の後方互換性を持つ "PyABIInfo" のバー
      ジョン用に予約されています。

   uint16_t flags

      通常、このフィールドには次のマクロを設定します。

      PyABIInfo_DEFAULT_FLAGS
          * 次に属します: Stable ABI (バージョン 3.15 より).*

         "Py_LIMITED_API" や "Py_GIL_DISABLED" などのマクロの現在の値
         に基づく、デフォルトのフラグです。

      または、以下のフラグをビット OR で組み合わせて設定できます。 未
      使用のビットはゼロにする必要があります。

      ABI の種類。次のいずれかです。

         PyABIInfo_STABLE
             * 次に属します: Stable ABI (バージョン 3.15 より).*

            Stable ABI を使うことを指定します。

         PyABIInfo_INTERNAL

            CPython の特定のビルドに固有の ABI を指定します。 内部専用
            です。

      フリースレッド対応。次のいずれかです。

         PyABIInfo_FREETHREADED
             * 次に属します: Stable ABI (バージョン 3.15 より).*

            CPython の *フリースレッドビルド* と互換性のある ABI を指
            定します。 つまり "--disable-gil" でコンパイルされ、
            "sys.abiflags" に "t" があるビルドです。

         PyABIInfo_GIL
             * 次に属します: Stable ABI (バージョン 3.15 より).*

            CPython のフリースレッドでないビルド ("--disable-gil" を指
            定 *せずに* コンパイルしたもの) と互換性のある ABI を指定
            します。

         PyABIInfo_FREETHREADING_AGNOSTIC
             * 次に属します: Stable ABI (バージョン 3.15 より).*

            CPython のフリースレッドビルドとそれ以外のビルドの両方、つ
            まり "abi3" と "abi3t" の両方と互換性のある ABI を指定しま
            す。

   uint32_t build_version

      コードのビルドに使った Python ヘッダのバージョンを、
      "PY_VERSION_HEX" と同じ形式で指定します。

      "0" に設定すると、このフィールドに関する確認をすべて省略できます
      。 主に、CPython ヘッダを直接使わず、特定バージョンのヘッダをエ
      ミュレートもしないプロジェクト向けの設定です。

   uint32_t abi_version

      ABI のバージョン。

      Stable ABI では、このフィールドを "Py_LIMITED_API" または
      "Py_TARGET_ABI3T" の値に設定します。 両方が定義されている場合は
      小さい方を使います。 ("Py_LIMITED_API" が "3" の場合は、"3" の代
      わりに Py_PACK_VERSION(3, 2) を使ってください。)

      それ以外の場合は "PY_VERSION_HEX" に設定します。

      "0" に設定して、このフィールドに関する確認をすべて省略することも
      できます。

      PyABIInfo_DEFAULT_ABI_VERSION
          * 次に属します: Stable ABI (バージョン 3.15 より).*

         "Py_LIMITED_API"、"PY_VERSION_HEX"、"Py_GIL_DISABLED" などの
         マクロの現在の値に基づき、このフィールドに使うべき値を示しま
         す。

   Added in version 3.15.


限定版APIの内容
===============

Python 3.15 の Limited API の正式な一覧です。

* "METH_CLASS"

* "METH_COEXIST"

* "METH_FASTCALL"

* "METH_METHOD"

* "METH_NOARGS"

* "METH_O"

* "METH_STATIC"

* "METH_VARARGS"

* "PY_VECTORCALL_ARGUMENTS_OFFSET"

* "PyABIInfo"

* "PyABIInfo_Check()"

* "PyABIInfo_DEFAULT_ABI_VERSION"

* "PyABIInfo_DEFAULT_FLAGS"

* "PyABIInfo_FREETHREADED"

* "PyABIInfo_FREETHREADING_AGNOSTIC"

* "PyABIInfo_GIL"

* "PyABIInfo_STABLE"

* "PyABIInfo_VAR"

* "PyAIter_Check()"

* "PyArg_Parse()"

* "PyArg_ParseTuple()"

* "PyArg_ParseTupleAndKeywords()"

* "PyArg_UnpackTuple()"

* "PyArg_VaParse()"

* "PyArg_VaParseTupleAndKeywords()"

* "PyArg_ValidateKeywordArguments()"

* "PyBUF_ANY_CONTIGUOUS"

* "PyBUF_CONTIG"

* "PyBUF_CONTIG_RO"

* "PyBUF_C_CONTIGUOUS"

* "PyBUF_FORMAT"

* "PyBUF_FULL"

* "PyBUF_FULL_RO"

* "PyBUF_F_CONTIGUOUS"

* "PyBUF_INDIRECT"

* "PyBUF_MAX_NDIM"

* "PyBUF_ND"

* "PyBUF_READ"

* "PyBUF_RECORDS"

* "PyBUF_RECORDS_RO"

* "PyBUF_SIMPLE"

* "PyBUF_STRIDED"

* "PyBUF_STRIDED_RO"

* "PyBUF_STRIDES"

* "PyBUF_WRITABLE"

* "PyBUF_WRITE"

* "PyBaseObject_Type"

* "PyBool_FromLong()"

* "PyBool_Type"

* "PyBuffer_FillContiguousStrides()"

* "PyBuffer_FillInfo()"

* "PyBuffer_FromContiguous()"

* "PyBuffer_GetPointer()"

* "PyBuffer_IsContiguous()"

* "PyBuffer_Release()"

* "PyBuffer_SizeFromFormat()"

* "PyBuffer_ToContiguous()"

* "PyByteArrayIter_Type"

* "PyByteArray_AsString()"

* "PyByteArray_Concat()"

* "PyByteArray_FromObject()"

* "PyByteArray_FromStringAndSize()"

* "PyByteArray_Resize()"

* "PyByteArray_Size()"

* "PyByteArray_Type"

* "PyBytesIter_Type"

* "PyBytes_AsString()"

* "PyBytes_AsStringAndSize()"

* "PyBytes_Concat()"

* "PyBytes_ConcatAndDel()"

* "PyBytes_DecodeEscape()"

* "PyBytes_FromFormat()"

* "PyBytes_FromFormatV()"

* "PyBytes_FromObject()"

* "PyBytes_FromString()"

* "PyBytes_FromStringAndSize()"

* "PyBytes_Repr()"

* "PyBytes_Size()"

* "PyBytes_Type"

* "PyCFunction"

* "PyCFunctionFast"

* "PyCFunctionFastWithKeywords"

* "PyCFunctionWithKeywords"

* "PyCFunction_GetFlags()"

* "PyCFunction_GetFunction()"

* "PyCFunction_GetSelf()"

* "PyCFunction_New()"

* "PyCFunction_NewEx()"

* "PyCFunction_Type"

* "PyCMethod_New()"

* "PyCallIter_New()"

* "PyCallIter_Type"

* "PyCallable_Check()"

* "PyCapsule_Destructor"

* "PyCapsule_GetContext()"

* "PyCapsule_GetDestructor()"

* "PyCapsule_GetName()"

* "PyCapsule_GetPointer()"

* "PyCapsule_Import()"

* "PyCapsule_IsValid()"

* "PyCapsule_New()"

* "PyCapsule_SetContext()"

* "PyCapsule_SetDestructor()"

* "PyCapsule_SetName()"

* "PyCapsule_SetPointer()"

* "PyCapsule_Type"

* "PyClassMethodDescr_Type"

* "PyCodec_BackslashReplaceErrors()"

* "PyCodec_Decode()"

* "PyCodec_Decoder()"

* "PyCodec_Encode()"

* "PyCodec_Encoder()"

* "PyCodec_IgnoreErrors()"

* "PyCodec_IncrementalDecoder()"

* "PyCodec_IncrementalEncoder()"

* "PyCodec_KnownEncoding()"

* "PyCodec_LookupError()"

* "PyCodec_NameReplaceErrors()"

* "PyCodec_Register()"

* "PyCodec_RegisterError()"

* "PyCodec_ReplaceErrors()"

* "PyCodec_StreamReader()"

* "PyCodec_StreamWriter()"

* "PyCodec_StrictErrors()"

* "PyCodec_Unregister()"

* "PyCodec_XMLCharRefReplaceErrors()"

* "PyComplex_FromDoubles()"

* "PyComplex_ImagAsDouble()"

* "PyComplex_RealAsDouble()"

* "PyComplex_Type"

* "PyCriticalSection"

* "PyCriticalSection2"

* "PyCriticalSection2_Begin()"

* "PyCriticalSection2_End()"

* "PyCriticalSection_Begin()"

* "PyCriticalSection_End()"

* "PyDescr_NewClassMethod()"

* "PyDescr_NewGetSet()"

* "PyDescr_NewMember()"

* "PyDescr_NewMethod()"

* "PyDictItems_Type"

* "PyDictIterItem_Type"

* "PyDictIterKey_Type"

* "PyDictIterValue_Type"

* "PyDictKeys_Type"

* "PyDictProxy_New()"

* "PyDictProxy_Type"

* "PyDictRevIterItem_Type"

* "PyDictRevIterKey_Type"

* "PyDictRevIterValue_Type"

* "PyDictValues_Type"

* "PyDict_Clear()"

* "PyDict_Contains()"

* "PyDict_Copy()"

* "PyDict_DelItem()"

* "PyDict_DelItemString()"

* "PyDict_GetItem()"

* "PyDict_GetItemRef()"

* "PyDict_GetItemString()"

* "PyDict_GetItemStringRef()"

* "PyDict_GetItemWithError()"

* "PyDict_Items()"

* "PyDict_Keys()"

* "PyDict_Merge()"

* "PyDict_MergeFromSeq2()"

* "PyDict_New()"

* "PyDict_Next()"

* "PyDict_SetDefaultRef()"

* "PyDict_SetItem()"

* "PyDict_SetItemString()"

* "PyDict_Size()"

* "PyDict_Type"

* "PyDict_Update()"

* "PyDict_Values()"

* "PyEllipsis_Type"

* "PyEnum_Type"

* "PyErr_BadArgument()"

* "PyErr_BadInternalCall()"

* "PyErr_CheckSignals()"

* "PyErr_Clear()"

* "PyErr_Display()"

* "PyErr_DisplayException()"

* "PyErr_ExceptionMatches()"

* "PyErr_Fetch()"

* "PyErr_Format()"

* "PyErr_FormatV()"

* "PyErr_GetExcInfo()"

* "PyErr_GetHandledException()"

* "PyErr_GetRaisedException()"

* "PyErr_GivenExceptionMatches()"

* "PyErr_NewException()"

* "PyErr_NewExceptionWithDoc()"

* "PyErr_NoMemory()"

* "PyErr_NormalizeException()"

* "PyErr_Occurred()"

* "PyErr_Print()"

* "PyErr_PrintEx()"

* "PyErr_ProgramText()"

* "PyErr_ResourceWarning()"

* "PyErr_Restore()"

* "PyErr_SetExcFromWindowsErr()"

* "PyErr_SetExcFromWindowsErrWithFilename()"

* "PyErr_SetExcFromWindowsErrWithFilenameObject()"

* "PyErr_SetExcFromWindowsErrWithFilenameObjects()"

* "PyErr_SetExcInfo()"

* "PyErr_SetFromErrno()"

* "PyErr_SetFromErrnoWithFilename()"

* "PyErr_SetFromErrnoWithFilenameObject()"

* "PyErr_SetFromErrnoWithFilenameObjects()"

* "PyErr_SetFromWindowsErr()"

* "PyErr_SetFromWindowsErrWithFilename()"

* "PyErr_SetHandledException()"

* "PyErr_SetImportError()"

* "PyErr_SetImportErrorSubclass()"

* "PyErr_SetInterrupt()"

* "PyErr_SetInterruptEx()"

* "PyErr_SetNone()"

* "PyErr_SetObject()"

* "PyErr_SetRaisedException()"

* "PyErr_SetString()"

* "PyErr_SyntaxLocation()"

* "PyErr_SyntaxLocationEx()"

* "PyErr_WarnEx()"

* "PyErr_WarnExplicit()"

* "PyErr_WarnFormat()"

* "PyErr_WriteUnraisable()"

* "PyEval_AcquireThread()"

* "PyEval_EvalCode()"

* "PyEval_EvalCodeEx()"

* "PyEval_EvalFrame()"

* "PyEval_EvalFrameEx()"

* "PyEval_GetBuiltins()"

* "PyEval_GetFrame()"

* "PyEval_GetFrameBuiltins()"

* "PyEval_GetFrameGlobals()"

* "PyEval_GetFrameLocals()"

* "PyEval_GetFuncDesc()"

* "PyEval_GetFuncName()"

* "PyEval_GetGlobals()"

* "PyEval_GetLocals()"

* "PyEval_InitThreads()"

* "PyEval_ReleaseThread()"

* "PyEval_RestoreThread()"

* "PyEval_SaveThread()"

* "PyExc_ArithmeticError"

* "PyExc_AssertionError"

* "PyExc_AttributeError"

* "PyExc_BaseException"

* "PyExc_BaseExceptionGroup"

* "PyExc_BlockingIOError"

* "PyExc_BrokenPipeError"

* "PyExc_BufferError"

* "PyExc_BytesWarning"

* "PyExc_ChildProcessError"

* "PyExc_ConnectionAbortedError"

* "PyExc_ConnectionError"

* "PyExc_ConnectionRefusedError"

* "PyExc_ConnectionResetError"

* "PyExc_DeprecationWarning"

* "PyExc_EOFError"

* "PyExc_EncodingWarning"

* "PyExc_EnvironmentError"

* "PyExc_Exception"

* "PyExc_FileExistsError"

* "PyExc_FileNotFoundError"

* "PyExc_FloatingPointError"

* "PyExc_FutureWarning"

* "PyExc_GeneratorExit"

* "PyExc_IOError"

* "PyExc_ImportError"

* "PyExc_ImportWarning"

* "PyExc_IndentationError"

* "PyExc_IndexError"

* "PyExc_InterruptedError"

* "PyExc_IsADirectoryError"

* "PyExc_KeyError"

* "PyExc_KeyboardInterrupt"

* "PyExc_LookupError"

* "PyExc_MemoryError"

* "PyExc_ModuleNotFoundError"

* "PyExc_NameError"

* "PyExc_NotADirectoryError"

* "PyExc_NotImplementedError"

* "PyExc_OSError"

* "PyExc_OverflowError"

* "PyExc_PendingDeprecationWarning"

* "PyExc_PermissionError"

* "PyExc_ProcessLookupError"

* "PyExc_RecursionError"

* "PyExc_ReferenceError"

* "PyExc_ResourceWarning"

* "PyExc_RuntimeError"

* "PyExc_RuntimeWarning"

* "PyExc_StopAsyncIteration"

* "PyExc_StopIteration"

* "PyExc_SyntaxError"

* "PyExc_SyntaxWarning"

* "PyExc_SystemError"

* "PyExc_SystemExit"

* "PyExc_TabError"

* "PyExc_TimeoutError"

* "PyExc_TypeError"

* "PyExc_UnboundLocalError"

* "PyExc_UnicodeDecodeError"

* "PyExc_UnicodeEncodeError"

* "PyExc_UnicodeError"

* "PyExc_UnicodeTranslateError"

* "PyExc_UnicodeWarning"

* "PyExc_UserWarning"

* "PyExc_ValueError"

* "PyExc_Warning"

* "PyExc_WindowsError"

* "PyExc_ZeroDivisionError"

* "PyExceptionClass_Name()"

* "PyException_GetArgs()"

* "PyException_GetCause()"

* "PyException_GetContext()"

* "PyException_GetTraceback()"

* "PyException_SetArgs()"

* "PyException_SetCause()"

* "PyException_SetContext()"

* "PyException_SetTraceback()"

* "PyFile_FromFd()"

* "PyFile_GetLine()"

* "PyFile_WriteObject()"

* "PyFile_WriteString()"

* "PyFilter_Type"

* "PyFloat_AsDouble()"

* "PyFloat_FromDouble()"

* "PyFloat_FromString()"

* "PyFloat_GetInfo()"

* "PyFloat_GetMax()"

* "PyFloat_GetMin()"

* "PyFloat_Type"

* "PyFrameObject"

* "PyFrame_GetCode()"

* "PyFrame_GetLineNumber()"

* "PyFrozenSet_New()"

* "PyFrozenSet_Type"

* "PyGC_Collect()"

* "PyGC_Disable()"

* "PyGC_Enable()"

* "PyGC_IsEnabled()"

* "PyGILState_Ensure()"

* "PyGILState_GetThisThreadState()"

* "PyGILState_Release()"

* "PyGILState_STATE"

* "PyGetSetDef"

* "PyGetSetDescr_Type"

* "PyImport_AddModule()"

* "PyImport_AddModuleObject()"

* "PyImport_AddModuleRef()"

* "PyImport_AppendInittab()"

* "PyImport_ExecCodeModule()"

* "PyImport_ExecCodeModuleEx()"

* "PyImport_ExecCodeModuleObject()"

* "PyImport_ExecCodeModuleWithPathnames()"

* "PyImport_GetImporter()"

* "PyImport_GetMagicNumber()"

* "PyImport_GetMagicTag()"

* "PyImport_GetModule()"

* "PyImport_GetModuleDict()"

* "PyImport_Import()"

* "PyImport_ImportFrozenModule()"

* "PyImport_ImportFrozenModuleObject()"

* "PyImport_ImportModule()"

* "PyImport_ImportModuleLevel()"

* "PyImport_ImportModuleLevelObject()"

* "PyImport_ReloadModule()"

* "PyIndex_Check()"

* "PyInterpreterGuard"

* "PyInterpreterGuard_Close()"

* "PyInterpreterGuard_FromCurrent()"

* "PyInterpreterGuard_FromView()"

* "PyInterpreterState"

* "PyInterpreterState_Clear()"

* "PyInterpreterState_Delete()"

* "PyInterpreterState_Get()"

* "PyInterpreterState_GetDict()"

* "PyInterpreterState_GetID()"

* "PyInterpreterState_New()"

* "PyInterpreterView"

* "PyInterpreterView_Close()"

* "PyInterpreterView_FromCurrent()"

* "PyInterpreterView_FromMain()"

* "PyIter_Check()"

* "PyIter_Next()"

* "PyIter_NextItem()"

* "PyIter_Send()"

* "PyListIter_Type"

* "PyListRevIter_Type"

* "PyList_Append()"

* "PyList_AsTuple()"

* "PyList_GetItem()"

* "PyList_GetItemRef()"

* "PyList_GetSlice()"

* "PyList_Insert()"

* "PyList_New()"

* "PyList_Reverse()"

* "PyList_SetItem()"

* "PyList_SetSlice()"

* "PyList_Size()"

* "PyList_Sort()"

* "PyList_Type"

* "PyLongExport"

* "PyLongLayout"

* "PyLongObject"

* "PyLongRangeIter_Type"

* "PyLongWriter"

* "PyLongWriter_Create()"

* "PyLongWriter_Discard()"

* "PyLongWriter_Finish()"

* "PyLong_AsDouble()"

* "PyLong_AsInt()"

* "PyLong_AsInt32()"

* "PyLong_AsInt64()"

* "PyLong_AsLong()"

* "PyLong_AsLongAndOverflow()"

* "PyLong_AsLongLong()"

* "PyLong_AsLongLongAndOverflow()"

* "PyLong_AsNativeBytes()"

* "PyLong_AsSize_t()"

* "PyLong_AsSsize_t()"

* "PyLong_AsUInt32()"

* "PyLong_AsUInt64()"

* "PyLong_AsUnsignedLong()"

* "PyLong_AsUnsignedLongLong()"

* "PyLong_AsUnsignedLongLongMask()"

* "PyLong_AsUnsignedLongMask()"

* "PyLong_AsVoidPtr()"

* "PyLong_Export()"

* "PyLong_FreeExport()"

* "PyLong_FromDouble()"

* "PyLong_FromInt32()"

* "PyLong_FromInt64()"

* "PyLong_FromLong()"

* "PyLong_FromLongLong()"

* "PyLong_FromNativeBytes()"

* "PyLong_FromSize_t()"

* "PyLong_FromSsize_t()"

* "PyLong_FromString()"

* "PyLong_FromUInt32()"

* "PyLong_FromUInt64()"

* "PyLong_FromUnsignedLong()"

* "PyLong_FromUnsignedLongLong()"

* "PyLong_FromUnsignedNativeBytes()"

* "PyLong_FromVoidPtr()"

* "PyLong_GetInfo()"

* "PyLong_GetNativeLayout()"

* "PyLong_Type"

* "PyMODEXPORT_FUNC"

* "PyMap_Type"

* "PyMapping_Check()"

* "PyMapping_GetItemString()"

* "PyMapping_GetOptionalItem()"

* "PyMapping_GetOptionalItemString()"

* "PyMapping_HasKey()"

* "PyMapping_HasKeyString()"

* "PyMapping_HasKeyStringWithError()"

* "PyMapping_HasKeyWithError()"

* "PyMapping_Items()"

* "PyMapping_Keys()"

* "PyMapping_Length()"

* "PyMapping_SetItemString()"

* "PyMapping_Size()"

* "PyMapping_Values()"

* "PyMem_Calloc()"

* "PyMem_Free()"

* "PyMem_Malloc()"

* "PyMem_RawCalloc()"

* "PyMem_RawFree()"

* "PyMem_RawMalloc()"

* "PyMem_RawRealloc()"

* "PyMem_Realloc()"

* "PyMemberDef"

* "PyMemberDescr_Type"

* "PyMember_GetOne()"

* "PyMember_SetOne()"

* "PyMemoryView_FromBuffer()"

* "PyMemoryView_FromMemory()"

* "PyMemoryView_FromObject()"

* "PyMemoryView_GetContiguous()"

* "PyMemoryView_Type"

* "PyMethodDef"

* "PyMethodDescr_Type"

* "PyModuleDef"

* "PyModuleDef_Base"

* "PyModuleDef_Init()"

* "PyModuleDef_Slot"

* "PyModuleDef_Type"

* "PyModule_Add()"

* "PyModule_AddFunctions()"

* "PyModule_AddIntConstant()"

* "PyModule_AddObject()"

* "PyModule_AddObjectRef()"

* "PyModule_AddStringConstant()"

* "PyModule_AddType()"

* "PyModule_Create2()"

* "PyModule_Exec()"

* "PyModule_ExecDef()"

* "PyModule_FromDefAndSpec2()"

* "PyModule_FromSlotsAndSpec()"

* "PyModule_GetDef()"

* "PyModule_GetDict()"

* "PyModule_GetFilename()"

* "PyModule_GetFilenameObject()"

* "PyModule_GetName()"

* "PyModule_GetNameObject()"

* "PyModule_GetState()"

* "PyModule_GetStateSize()"

* "PyModule_GetState_DuringGC()"

* "PyModule_GetToken()"

* "PyModule_GetToken_DuringGC()"

* "PyModule_New()"

* "PyModule_NewObject()"

* "PyModule_SetDocString()"

* "PyModule_Type"

* "PyNumber_Absolute()"

* "PyNumber_Add()"

* "PyNumber_And()"

* "PyNumber_AsSsize_t()"

* "PyNumber_Check()"

* "PyNumber_Divmod()"

* "PyNumber_Float()"

* "PyNumber_FloorDivide()"

* "PyNumber_InPlaceAdd()"

* "PyNumber_InPlaceAnd()"

* "PyNumber_InPlaceFloorDivide()"

* "PyNumber_InPlaceLshift()"

* "PyNumber_InPlaceMatrixMultiply()"

* "PyNumber_InPlaceMultiply()"

* "PyNumber_InPlaceOr()"

* "PyNumber_InPlacePower()"

* "PyNumber_InPlaceRemainder()"

* "PyNumber_InPlaceRshift()"

* "PyNumber_InPlaceSubtract()"

* "PyNumber_InPlaceTrueDivide()"

* "PyNumber_InPlaceXor()"

* "PyNumber_Index()"

* "PyNumber_Invert()"

* "PyNumber_Long()"

* "PyNumber_Lshift()"

* "PyNumber_MatrixMultiply()"

* "PyNumber_Multiply()"

* "PyNumber_Negative()"

* "PyNumber_Or()"

* "PyNumber_Positive()"

* "PyNumber_Power()"

* "PyNumber_Remainder()"

* "PyNumber_Rshift()"

* "PyNumber_Subtract()"

* "PyNumber_ToBase()"

* "PyNumber_TrueDivide()"

* "PyNumber_Xor()"

* "PyOS_AfterFork()"

* "PyOS_AfterFork_Child()"

* "PyOS_AfterFork_Parent()"

* "PyOS_BeforeFork()"

* "PyOS_CheckStack()"

* "PyOS_FSPath()"

* "PyOS_InputHook"

* "PyOS_InterruptOccurred()"

* "PyOS_double_to_string()"

* "PyOS_getsig()"

* "PyOS_mystricmp()"

* "PyOS_mystrnicmp()"

* "PyOS_setsig()"

* "PyOS_sighandler_t"

* "PyOS_snprintf()"

* "PyOS_string_to_double()"

* "PyOS_strtol()"

* "PyOS_strtoul()"

* "PyOS_vsnprintf()"

* "PyObject"

* "PyObject.ob_refcnt"

* "PyObject.ob_type"

* "PyObject_ASCII()"

* "PyObject_AsFileDescriptor()"

* "PyObject_Bytes()"

* "PyObject_Call()"

* "PyObject_CallFinalizerFromDealloc()"

* "PyObject_CallFunction()"

* "PyObject_CallFunctionObjArgs()"

* "PyObject_CallMethod()"

* "PyObject_CallMethodObjArgs()"

* "PyObject_CallNoArgs()"

* "PyObject_CallObject()"

* "PyObject_Calloc()"

* "PyObject_CheckBuffer()"

* "PyObject_ClearWeakRefs()"

* "PyObject_CopyData()"

* "PyObject_DelAttr()"

* "PyObject_DelAttrString()"

* "PyObject_DelItem()"

* "PyObject_DelItemString()"

* "PyObject_Dir()"

* "PyObject_Format()"

* "PyObject_Free()"

* "PyObject_GC_Del()"

* "PyObject_GC_IsFinalized()"

* "PyObject_GC_IsTracked()"

* "PyObject_GC_Track()"

* "PyObject_GC_UnTrack()"

* "PyObject_GenericGetAttr()"

* "PyObject_GenericGetDict()"

* "PyObject_GenericSetAttr()"

* "PyObject_GenericSetDict()"

* "PyObject_GetAIter()"

* "PyObject_GetAttr()"

* "PyObject_GetAttrString()"

* "PyObject_GetBuffer()"

* "PyObject_GetItem()"

* "PyObject_GetIter()"

* "PyObject_GetOptionalAttr()"

* "PyObject_GetOptionalAttrString()"

* "PyObject_GetTypeData()"

* "PyObject_GetTypeData_DuringGC()"

* "PyObject_HasAttr()"

* "PyObject_HasAttrString()"

* "PyObject_HasAttrStringWithError()"

* "PyObject_HasAttrWithError()"

* "PyObject_Hash()"

* "PyObject_HashNotImplemented()"

* "PyObject_Init()"

* "PyObject_InitVar()"

* "PyObject_IsInstance()"

* "PyObject_IsSubclass()"

* "PyObject_IsTrue()"

* "PyObject_Length()"

* "PyObject_Malloc()"

* "PyObject_Not()"

* "PyObject_Realloc()"

* "PyObject_Repr()"

* "PyObject_RichCompare()"

* "PyObject_RichCompareBool()"

* "PyObject_SelfIter()"

* "PyObject_SetAttr()"

* "PyObject_SetAttrString()"

* "PyObject_SetItem()"

* "PyObject_Size()"

* "PyObject_Str()"

* "PyObject_Type()"

* "PyObject_Vectorcall()"

* "PyObject_VectorcallMethod()"

* "PyProperty_Type"

* "PyRangeIter_Type"

* "PyRange_Type"

* "PyReversed_Type"

* "PySeqIter_New()"

* "PySeqIter_Type"

* "PySequence_Check()"

* "PySequence_Concat()"

* "PySequence_Contains()"

* "PySequence_Count()"

* "PySequence_DelItem()"

* "PySequence_DelSlice()"

* "PySequence_Fast()"

* "PySequence_GetItem()"

* "PySequence_GetSlice()"

* "PySequence_In()"

* "PySequence_InPlaceConcat()"

* "PySequence_InPlaceRepeat()"

* "PySequence_Index()"

* "PySequence_Length()"

* "PySequence_List()"

* "PySequence_Repeat()"

* "PySequence_SetItem()"

* "PySequence_SetSlice()"

* "PySequence_Size()"

* "PySequence_Tuple()"

* "PySetIter_Type"

* "PySet_Add()"

* "PySet_Clear()"

* "PySet_Contains()"

* "PySet_Discard()"

* "PySet_New()"

* "PySet_Pop()"

* "PySet_Size()"

* "PySet_Type"

* "PySlice_AdjustIndices()"

* "PySlice_GetIndices()"

* "PySlice_GetIndicesEx()"

* "PySlice_New()"

* "PySlice_Type"

* "PySlice_Unpack()"

* "PySlot"

* "PySlot_DATA"

* "PySlot_END"

* "PySlot_FUNC"

* "PySlot_INT64"

* "PySlot_INTPTR"

* "PySlot_OPTIONAL"

* "PySlot_PTR"

* "PySlot_PTR_STATIC"

* "PySlot_SIZE"

* "PySlot_STATIC"

* "PySlot_STATIC_DATA"

* "PySlot_UINT64"

* "PyState_AddModule()"

* "PyState_FindModule()"

* "PyState_RemoveModule()"

* "PyStructSequence_Desc"

* "PyStructSequence_Field"

* "PyStructSequence_GetItem()"

* "PyStructSequence_New()"

* "PyStructSequence_NewType()"

* "PyStructSequence_SetItem()"

* "PyStructSequence_UnnamedField"

* "PySuper_Type"

* "PySys_Audit()"

* "PySys_AuditTuple()"

* "PySys_FormatStderr()"

* "PySys_FormatStdout()"

* "PySys_GetAttr()"

* "PySys_GetAttrString()"

* "PySys_GetObject()"

* "PySys_GetOptionalAttr()"

* "PySys_GetOptionalAttrString()"

* "PySys_GetXOptions()"

* "PySys_SetArgv()"

* "PySys_SetArgvEx()"

* "PySys_SetObject()"

* "PySys_WriteStderr()"

* "PySys_WriteStdout()"

* "PyThreadState"

* "PyThreadStateToken"

* "PyThreadState_Clear()"

* "PyThreadState_Delete()"

* "PyThreadState_Ensure()"

* "PyThreadState_EnsureFromView()"

* "PyThreadState_Get()"

* "PyThreadState_GetDict()"

* "PyThreadState_GetFrame()"

* "PyThreadState_GetID()"

* "PyThreadState_GetInterpreter()"

* "PyThreadState_New()"

* "PyThreadState_Release()"

* "PyThreadState_SetAsyncExc()"

* "PyThreadState_Swap()"

* "PyThread_GetInfo()"

* "PyThread_ReInitTLS()"

* "PyThread_acquire_lock()"

* "PyThread_acquire_lock_timed()"

* "PyThread_allocate_lock()"

* "PyThread_create_key()"

* "PyThread_delete_key()"

* "PyThread_delete_key_value()"

* "PyThread_exit_thread()"

* "PyThread_free_lock()"

* "PyThread_get_key_value()"

* "PyThread_get_stacksize()"

* "PyThread_get_thread_ident()"

* "PyThread_get_thread_native_id()"

* "PyThread_init_thread()"

* "PyThread_release_lock()"

* "PyThread_set_key_value()"

* "PyThread_set_stacksize()"

* "PyThread_start_new_thread()"

* "PyThread_tss_alloc()"

* "PyThread_tss_create()"

* "PyThread_tss_delete()"

* "PyThread_tss_free()"

* "PyThread_tss_get()"

* "PyThread_tss_is_created()"

* "PyThread_tss_set()"

* "PyTraceBack_Here()"

* "PyTraceBack_Print()"

* "PyTraceBack_Type"

* "PyTupleIter_Type"

* "PyTuple_GetItem()"

* "PyTuple_GetSlice()"

* "PyTuple_New()"

* "PyTuple_Pack()"

* "PyTuple_SetItem()"

* "PyTuple_Size()"

* "PyTuple_Type"

* "PyTypeObject"

* "PyType_ClearCache()"

* "PyType_Freeze()"

* "PyType_FromMetaclass()"

* "PyType_FromModuleAndSpec()"

* "PyType_FromSlots()"

* "PyType_FromSpec()"

* "PyType_FromSpecWithBases()"

* "PyType_GenericAlloc()"

* "PyType_GenericNew()"

* "PyType_GetBaseByToken()"

* "PyType_GetBaseByToken_DuringGC()"

* "PyType_GetFlags()"

* "PyType_GetFullyQualifiedName()"

* "PyType_GetModule()"

* "PyType_GetModuleByDef()"

* "PyType_GetModuleByToken()"

* "PyType_GetModuleByToken_DuringGC()"

* "PyType_GetModuleName()"

* "PyType_GetModuleState()"

* "PyType_GetModuleState_DuringGC()"

* "PyType_GetModule_DuringGC()"

* "PyType_GetName()"

* "PyType_GetQualName()"

* "PyType_GetSlot()"

* "PyType_GetTypeDataSize()"

* "PyType_IsSubtype()"

* "PyType_Modified()"

* "PyType_Ready()"

* "PyType_Slot"

* "PyType_Spec"

* "PyType_Type"

* "PyUnicodeDecodeError_Create()"

* "PyUnicodeDecodeError_GetEncoding()"

* "PyUnicodeDecodeError_GetEnd()"

* "PyUnicodeDecodeError_GetObject()"

* "PyUnicodeDecodeError_GetReason()"

* "PyUnicodeDecodeError_GetStart()"

* "PyUnicodeDecodeError_SetEnd()"

* "PyUnicodeDecodeError_SetReason()"

* "PyUnicodeDecodeError_SetStart()"

* "PyUnicodeEncodeError_GetEncoding()"

* "PyUnicodeEncodeError_GetEnd()"

* "PyUnicodeEncodeError_GetObject()"

* "PyUnicodeEncodeError_GetReason()"

* "PyUnicodeEncodeError_GetStart()"

* "PyUnicodeEncodeError_SetEnd()"

* "PyUnicodeEncodeError_SetReason()"

* "PyUnicodeEncodeError_SetStart()"

* "PyUnicodeIter_Type"

* "PyUnicodeTranslateError_GetEnd()"

* "PyUnicodeTranslateError_GetObject()"

* "PyUnicodeTranslateError_GetReason()"

* "PyUnicodeTranslateError_GetStart()"

* "PyUnicodeTranslateError_SetEnd()"

* "PyUnicodeTranslateError_SetReason()"

* "PyUnicodeTranslateError_SetStart()"

* "PyUnicode_Append()"

* "PyUnicode_AppendAndDel()"

* "PyUnicode_AsASCIIString()"

* "PyUnicode_AsCharmapString()"

* "PyUnicode_AsEncodedString()"

* "PyUnicode_AsLatin1String()"

* "PyUnicode_AsMBCSString()"

* "PyUnicode_AsRawUnicodeEscapeString()"

* "PyUnicode_AsUCS4()"

* "PyUnicode_AsUCS4Copy()"

* "PyUnicode_AsUTF16String()"

* "PyUnicode_AsUTF32String()"

* "PyUnicode_AsUTF8AndSize()"

* "PyUnicode_AsUTF8String()"

* "PyUnicode_AsUnicodeEscapeString()"

* "PyUnicode_AsWideChar()"

* "PyUnicode_AsWideCharString()"

* "PyUnicode_BuildEncodingMap()"

* "PyUnicode_Compare()"

* "PyUnicode_CompareWithASCIIString()"

* "PyUnicode_Concat()"

* "PyUnicode_Contains()"

* "PyUnicode_Count()"

* "PyUnicode_Decode()"

* "PyUnicode_DecodeASCII()"

* "PyUnicode_DecodeCharmap()"

* "PyUnicode_DecodeCodePageStateful()"

* "PyUnicode_DecodeFSDefault()"

* "PyUnicode_DecodeFSDefaultAndSize()"

* "PyUnicode_DecodeLatin1()"

* "PyUnicode_DecodeLocale()"

* "PyUnicode_DecodeLocaleAndSize()"

* "PyUnicode_DecodeMBCS()"

* "PyUnicode_DecodeMBCSStateful()"

* "PyUnicode_DecodeRawUnicodeEscape()"

* "PyUnicode_DecodeUTF16()"

* "PyUnicode_DecodeUTF16Stateful()"

* "PyUnicode_DecodeUTF32()"

* "PyUnicode_DecodeUTF32Stateful()"

* "PyUnicode_DecodeUTF7()"

* "PyUnicode_DecodeUTF7Stateful()"

* "PyUnicode_DecodeUTF8()"

* "PyUnicode_DecodeUTF8Stateful()"

* "PyUnicode_DecodeUnicodeEscape()"

* "PyUnicode_EncodeCodePage()"

* "PyUnicode_EncodeFSDefault()"

* "PyUnicode_EncodeLocale()"

* "PyUnicode_Equal()"

* "PyUnicode_EqualToUTF8()"

* "PyUnicode_EqualToUTF8AndSize()"

* "PyUnicode_FSConverter()"

* "PyUnicode_FSDecoder()"

* "PyUnicode_Find()"

* "PyUnicode_FindChar()"

* "PyUnicode_Format()"

* "PyUnicode_FromEncodedObject()"

* "PyUnicode_FromFormat()"

* "PyUnicode_FromFormatV()"

* "PyUnicode_FromObject()"

* "PyUnicode_FromOrdinal()"

* "PyUnicode_FromString()"

* "PyUnicode_FromStringAndSize()"

* "PyUnicode_FromWideChar()"

* "PyUnicode_GetDefaultEncoding()"

* "PyUnicode_GetLength()"

* "PyUnicode_InternFromString()"

* "PyUnicode_InternInPlace()"

* "PyUnicode_IsIdentifier()"

* "PyUnicode_Join()"

* "PyUnicode_Partition()"

* "PyUnicode_RPartition()"

* "PyUnicode_RSplit()"

* "PyUnicode_ReadChar()"

* "PyUnicode_Replace()"

* "PyUnicode_Resize()"

* "PyUnicode_RichCompare()"

* "PyUnicode_Split()"

* "PyUnicode_Splitlines()"

* "PyUnicode_Substring()"

* "PyUnicode_Tailmatch()"

* "PyUnicode_Translate()"

* "PyUnicode_Type"

* "PyUnicode_WriteChar()"

* "PyVarObject"

* "PyVarObject.ob_base"

* "PyVarObject.ob_size"

* "PyVectorcall_Call()"

* "PyVectorcall_NARGS()"

* "PyWeakReference"

* "PyWeakref_GetRef()"

* "PyWeakref_NewProxy()"

* "PyWeakref_NewRef()"

* "PyWrapperDescr_Type"

* "PyWrapper_New()"

* "PyZip_Type"

* "Py_ASNATIVEBYTES_ALLOW_INDEX"

* "Py_ASNATIVEBYTES_BIG_ENDIAN"

* "Py_ASNATIVEBYTES_DEFAULTS"

* "Py_ASNATIVEBYTES_LITTLE_ENDIAN"

* "Py_ASNATIVEBYTES_NATIVE_ENDIAN"

* "Py_ASNATIVEBYTES_REJECT_NEGATIVE"

* "Py_ASNATIVEBYTES_UNSIGNED_BUFFER"

* "Py_AUDIT_READ"

* "Py_AddPendingCall()"

* "Py_AtExit()"

* "Py_BEGIN_ALLOW_THREADS"

* "Py_BEGIN_CRITICAL_SECTION"

* "Py_BEGIN_CRITICAL_SECTION2"

* "Py_BLOCK_THREADS"

* "Py_BuildValue()"

* "Py_BytesMain()"

* "Py_CLEAR"

* "Py_CompileString()"

* "Py_DECREF"

* "Py_DecRef()"

* "Py_DecodeLocale()"

* "Py_END_ALLOW_THREADS"

* "Py_END_CRITICAL_SECTION"

* "Py_END_CRITICAL_SECTION2"

* "Py_EncodeLocale()"

* "Py_EndInterpreter()"

* "Py_EnterRecursiveCall()"

* "Py_Exit()"

* "Py_FatalError()"

* "Py_FileSystemDefaultEncodeErrors"

* "Py_FileSystemDefaultEncoding"

* "Py_Finalize()"

* "Py_FinalizeEx()"

* "Py_GenericAlias()"

* "Py_GenericAliasType"

* "Py_GetBuildInfo()"

* "Py_GetCompiler()"

* "Py_GetConstant()"

* "Py_GetConstantBorrowed()"

* "Py_GetCopyright()"

* "Py_GetPlatform()"

* "Py_GetRecursionLimit()"

* "Py_GetVersion()"

* "Py_HasFileSystemDefaultEncoding"

* "Py_INCREF"

* "Py_IS_TYPE()"

* "Py_IncRef()"

* "Py_Initialize()"

* "Py_InitializeEx()"

* "Py_Is()"

* "Py_IsFalse()"

* "Py_IsFinalizing()"

* "Py_IsInitialized()"

* "Py_IsNone()"

* "Py_IsTrue()"

* "Py_LeaveRecursiveCall()"

* "Py_Main()"

* "Py_MakePendingCalls()"

* "Py_NewInterpreter()"

* "Py_NewRef()"

* "Py_PACK_FULL_VERSION()"

* "Py_PACK_VERSION()"

* "Py_READONLY"

* "Py_REFCNT()"

* "Py_RELATIVE_OFFSET"

* "Py_ReprEnter()"

* "Py_ReprLeave()"

* "Py_SET_REFCNT"

* "Py_SET_SIZE()"

* "Py_SET_TYPE"

* "Py_SIZE()"

* "Py_SetProgramName()"

* "Py_SetPythonHome()"

* "Py_SetRecursionLimit()"

* "Py_TPFLAGS_BASETYPE"

* "Py_TPFLAGS_DEFAULT"

* "Py_TPFLAGS_HAVE_GC"

* "Py_TPFLAGS_HAVE_VECTORCALL"

* "Py_TPFLAGS_ITEMS_AT_END"

* "Py_TPFLAGS_METHOD_DESCRIPTOR"

* "Py_TP_USE_SPEC"

* "Py_TYPE()"

* "Py_T_BOOL"

* "Py_T_BYTE"

* "Py_T_CHAR"

* "Py_T_DOUBLE"

* "Py_T_FLOAT"

* "Py_T_INT"

* "Py_T_LONG"

* "Py_T_LONGLONG"

* "Py_T_OBJECT_EX"

* "Py_T_PYSSIZET"

* "Py_T_SHORT"

* "Py_T_STRING"

* "Py_T_STRING_INPLACE"

* "Py_T_UBYTE"

* "Py_T_UINT"

* "Py_T_ULONG"

* "Py_T_ULONGLONG"

* "Py_T_USHORT"

* "Py_UCS4"

* "Py_UNBLOCK_THREADS"

* "Py_UTF8Mode"

* "Py_VaBuildValue()"

* "Py_Version"

* "Py_XDECREF"

* "Py_XINCREF"

* "Py_XNewRef()"

* "Py_am_aiter"

* "Py_am_anext"

* "Py_am_await"

* "Py_am_send"

* "Py_bf_getbuffer"

* "Py_bf_releasebuffer"

* "Py_buffer"

* "Py_intptr_t"

* "Py_mod_abi"

* "Py_mod_create"

* "Py_mod_doc"

* "Py_mod_exec"

* "Py_mod_gil"

* "Py_mod_methods"

* "Py_mod_multiple_interpreters"

* "Py_mod_name"

* "Py_mod_slots"

* "Py_mod_state_clear"

* "Py_mod_state_free"

* "Py_mod_state_size"

* "Py_mod_state_traverse"

* "Py_mod_token"

* "Py_mp_ass_subscript"

* "Py_mp_length"

* "Py_mp_subscript"

* "Py_nb_absolute"

* "Py_nb_add"

* "Py_nb_and"

* "Py_nb_bool"

* "Py_nb_divmod"

* "Py_nb_float"

* "Py_nb_floor_divide"

* "Py_nb_index"

* "Py_nb_inplace_add"

* "Py_nb_inplace_and"

* "Py_nb_inplace_floor_divide"

* "Py_nb_inplace_lshift"

* "Py_nb_inplace_matrix_multiply"

* "Py_nb_inplace_multiply"

* "Py_nb_inplace_or"

* "Py_nb_inplace_power"

* "Py_nb_inplace_remainder"

* "Py_nb_inplace_rshift"

* "Py_nb_inplace_subtract"

* "Py_nb_inplace_true_divide"

* "Py_nb_inplace_xor"

* "Py_nb_int"

* "Py_nb_invert"

* "Py_nb_lshift"

* "Py_nb_matrix_multiply"

* "Py_nb_multiply"

* "Py_nb_negative"

* "Py_nb_or"

* "Py_nb_positive"

* "Py_nb_power"

* "Py_nb_remainder"

* "Py_nb_rshift"

* "Py_nb_subtract"

* "Py_nb_true_divide"

* "Py_nb_xor"

* "Py_slot_end"

* "Py_slot_invalid"

* "Py_slot_subslots"

* "Py_sq_ass_item"

* "Py_sq_concat"

* "Py_sq_contains"

* "Py_sq_inplace_concat"

* "Py_sq_inplace_repeat"

* "Py_sq_item"

* "Py_sq_length"

* "Py_sq_repeat"

* "Py_ssize_t"

* "Py_tp_alloc"

* "Py_tp_base"

* "Py_tp_bases"

* "Py_tp_basicsize"

* "Py_tp_call"

* "Py_tp_clear"

* "Py_tp_dealloc"

* "Py_tp_del"

* "Py_tp_descr_get"

* "Py_tp_descr_set"

* "Py_tp_doc"

* "Py_tp_extra_basicsize"

* "Py_tp_finalize"

* "Py_tp_flags"

* "Py_tp_free"

* "Py_tp_getattr"

* "Py_tp_getattro"

* "Py_tp_getset"

* "Py_tp_hash"

* "Py_tp_init"

* "Py_tp_is_gc"

* "Py_tp_itemsize"

* "Py_tp_iter"

* "Py_tp_iternext"

* "Py_tp_members"

* "Py_tp_metaclass"

* "Py_tp_methods"

* "Py_tp_module"

* "Py_tp_name"

* "Py_tp_new"

* "Py_tp_repr"

* "Py_tp_richcompare"

* "Py_tp_setattr"

* "Py_tp_setattro"

* "Py_tp_slots"

* "Py_tp_str"

* "Py_tp_token"

* "Py_tp_traverse"

* "Py_tp_vectorcall"

* "Py_uintptr_t"

* "allocfunc"

* "binaryfunc"

* "descrgetfunc"

* "descrsetfunc"

* "destructor"

* "getattrfunc"

* "getattrofunc"

* "getbufferproc"

* "getiterfunc"

* "getter"

* "hashfunc"

* "initproc"

* "inquiry"

* "iternextfunc"

* "lenfunc"

* "newfunc"

* "objobjargproc"

* "objobjproc"

* "releasebufferproc"

* "reprfunc"

* "richcmpfunc"

* "setattrfunc"

* "setattrofunc"

* "setter"

* "ssizeargfunc"

* "ssizeobjargproc"

* "ssizessizeargfunc"

* "ssizessizeobjargproc"

* "symtable"

* "ternaryfunc"

* "traverseproc"

* "unaryfunc"

* "vectorcallfunc"

* "visitproc"
