C API  ABI 的稳定性
*******************

除非另有文档说明，Python 的 C API 将遵循 **PEP 387** 所描述的向下兼容
策略。 对它的大部分改变都是源代码级兼容的（通常只会增加新的 API）。改
变现有 API 或移除 API 只会在弃用期结束之后或需修复严重问题时才会发生。

CPython 的应用程序二进制接口（ABI）可以跨微版本向上和向下兼容（在以相
同方式编译的情况下，参见下文 平台的考虑 一节）。因此，针对 Python
3.10.0 编译的代码将适用于 3.10.8，反之亦然，但对于 3.9.x 和 3.11.x 则
需要单独编译。

存在具有不同稳定性预期的两个 C API 层次：

* 不稳定 API，可能在次要版本中发生改变而没有弃用期。它的名称会以
  "PyUnstable" 前缀来标记。

* 受限 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 的 *稳定 ABI* 允许扩展在不重新编译的情况下兼容多个 Python 版本
。

备注:

  为简单起见，本文档会讨论 *扩展*，但稳定 ABI 对 API 的所有使用方式都
  同样适用 —— 例如嵌入 Python。

有两种稳定 ABI：

* "abi3" 于 Python 3.2 中引入，兼容 CPython 的 **非***自由线程* 构建。

* "abi3t" 于 Python 3.15 中引入，兼容 CPython 的 *自由线程* 构建。它具
  有比 "abi3" 更严格的 API 限制。

     Added in version 3.15: "abi3t" 是在 **PEP 803** 中添加的

扩展可以同时针对 "abi3" 和 "abi3t" *二者* 进行编译；其结果将同时兼容
Python 的自由线程构建和非自由线程构建。目前，与仅针对 "abi3t" 编译相比
，这样做没有缺点。

每个稳定 ABI 都使用 Python 版本号的前两个数字作为版本号。例如，稳定
ABI 3.14 对应 Python 3.14。针对稳定 ABI 3.x 编译的扩展与 Python 3.x 及
更高版本保持 ABI 兼容。

以稳定 ABI 为目标的扩展只能使用 C API 的一个受限子集。该子集称为 *受限
API*；其内容在 下文列出。

在 Windows 上，使用稳定 ABI 的扩展应当链接到 "python3.dll"，而不是链接
到版本专属库，例如 "python39.dll"。这个库只会公开相关符号。

在某些平台上，Python 会查找并加载名称带有 "abi3" 或 "abi3t" 标签的共享
库文件（例如 "mymodule.abi3.so"）。*自由线程* 解释器只识别 "abi3t" 标
签，而非自由线程解释器会优先使用 "abi3"，但会回退到 "abi3t"。因此，同
时兼容这两种 ABI 的扩展应使用 "abi3t" 标签。

Python 不一定会检查它所加载的扩展是否具有兼容的 ABI。建议扩展作者使用
"Py_mod_abi" 槽位或 "PyABIInfo_Check()" 函数添加检查，但用户（或其打包
工具）最终需要负责确保，例如，针对稳定 ABI 3.10 构建的扩展不会被安装到
更低版本的 Python 中。

稳定 ABI 中的所有函数都以函数的形式存在于 Python 的共享库中，而不是仅
以宏的形式存在。这使得它们可用于不使用 C 预处理器的语言，包括 Python
的 "ctypes"。


针对稳定 ABI 编译
-----------------

备注:

  构建工具（例如 meson-python、scikit-build-core 或 Setuptools）通常具
  有用于设置宏，并将这些宏与扩展文件名和其他元数据同步的机制。如果存在
  这样的机制，应优先使用它，而不是手动定义宏。本节的其余部分主要与工具
  作者以及手动编译扩展的人相关。

  参见: Python 打包用户指南中的 list of recommended tools

要针对稳定 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" 将只公开与给定稳定 ABI 兼容的 API —— 即
受限 API，以及一些需要对编译器可见、但不应直接使用的定义。当二者都被定
义时，"Python.h" 将只公开同时兼容这两种稳定 ABI 的 API。

Py_LIMITED_API

   目标为 "abi3"，也就是 CPython 的非 *自由线程构建*。 通用信息请参见
   上文。

Py_TARGET_ABI3T

   目标为 "abi3t"，也就是 CPython 的 *自由线程构建*。通用信息请参见 上
   文。

   Added in version 3.15.

这两个宏都会指定一个目标 ABI；命名风格不同是出于向后兼容。

历史说明: 你也可以将 "Py_LIMITED_API" 定义为 "3"。 这与 "0x03020000"
(Python 3.2，即引入稳定 ABI 的版本) 的作用相同。

当二者都被定义时，"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 自由线程构建的头文件。


稳定 ABI 的范围与性能
---------------------

稳定 ABI 的目标是允许完成完整 C API 能做到的所有事情，但可能会带来性能
损失。通常，与稳定 ABI 兼容会要求对扩展的源代码做出一些修改。

例如，虽然 "PyList_GetItem()" 可用，但它的“非安全”宏变体
"PyList_GET_ITEM()" 不可用。该宏可能更快，因为它可以依赖列表对象的版本
专属实现细节。

再举一例，当 *不* 针对稳定 ABI 编译时，某些 C API 函数会被内联或被宏替
换。针对稳定 ABI 编译会禁用这种内联，使其在 Python 的数据结构得到改进
时仍保持稳定，但可能会降低性能。

通过省略 "Py_LIMITED_API" 或 "Py_TARGET_ABI3T" 定义，可以将与稳定 ABI
兼容的源代码编译为版本专属 ABI。这样就可以将一个可能更快的版本专属扩展
，与一个针对稳定 ABI 编译的版本一同分发 —— 后者较慢，但兼容性更好，可
作为回退方案。


稳定 ABI 注意事项
-----------------

请注意，针对稳定 ABI 编译 *并不* 完全保证代码会与预期的 Python 版本兼
容。稳定 ABI 防止的是 *ABI* 问题，例如因缺少符号导致的链接器错误，或因
结构体布局或函数签名改变导致的数据损坏。然而，Python 中的其他改变可能
会改变扩展的 *行为*。

有一个问题是 "Py_TARGET_ABI3T" 和 "Py_LIMITED_API" 宏无法防范的：使用
在较低 Python 版本中无效的参数来调用函数。例如，假设某个函数开始接受
"NULL" 作为参数。在 Python 3.9 中，"NULL" 现在会选择一种默认行为，但在
Python 3.8 中，该参数会被直接使用，从而导致 "NULL" 解引用并崩溃。结构
体字段也存在类似情况。

由于这些原因，我们建议使用扩展所支持的 *所有* Python 次要版本来测试该
扩展。

我们还建议查看所使用 API 的全部文档以检查其是否显式指明为受限 API 的一
部分。即使定义了 "Py_LIMITED_API"，少数私有声明还是会出于技术原因（或
者甚至是作为程序缺陷在无意中）被暴露出来。

还要注意，虽然使用 "Py_LIMITED_API" 3.8 编译意味着扩展应当能在 Python
3.12 上 *加载*，也能使用 Python 3.12 *编译*，但同一份源代码不一定能在
将 "Py_LIMITED_API" 设为 3.12 时完成编译。通常，只要稳定 ABI 保持稳定
，受限 API 的某些部分可能会被弃用并移除。


平台的考虑
==========

ABI 稳定性不仅取决于 Python，还取决于所使用的编译器、底层库和编译器选
项。就 稳定 ABI 而言，这些细节定义了一个“平台”。它们通常取决于操作系统
类型和处理器架构

每个特定的 Python 分发方都有责任确保特定平台上的所有 Python 版本都以不
会破坏稳定 ABI 或版本专属 ABI 的方式构建。来自 "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)
    * 属于 稳定 ABI 自 3.15 版起.*

   验证给定的 *info* 是否与当前正在运行的解释器兼容。

   成功时返回 0。失败时引发异常并返回 -1。

   如果 ABI 不兼容，引发的异常将是 "ImportError"。

   *module_name* 参数可以为 "NULL"，也可以指向一个以 NUL 终止、使用
   UTF-8 编码、用于错误消息的字符串。

   请注意，如果 *info* 描述的是当前代码所使用的 ABI（例如由
   "PyABIInfo_VAR" 定义），则使用任何其他 Python C API 都可能导致崩溃
   。尤其是，检查所引发的异常是不安全的。

   Added in version 3.15.

PyABIInfo_VAR(NAME)
    * This macro is available when compiling for the 稳定 ABI 自 3.15
   版起.*

   定义一个具有给定 *NAME* 的静态 "PyABIInfo" 变量，用于描述当前代码将
   使用的 ABI。此宏会展开为：

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

   Added in version 3.15.

type PyABIInfo
    * 属于 稳定 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
          * 属于 稳定 ABI 自 3.15 版起.*

         默认标志，基于 "Py_LIMITED_API" 和 "Py_GIL_DISABLED" 等宏的当
         前值。

      或者，可以将此字段设为以下标志，并通过按位或组合。未使用的位必须
      设为零。

      ABI 变体 —— 以下之一：

         PyABIInfo_STABLE
             * 属于 稳定 ABI 自 3.15 版起.*

            指定使用稳定 ABI。

         PyABIInfo_INTERNAL

            指定特定于某个 CPython 构建的 ABI。仅限内部使用。

      自由线程兼容性 —— 以下之一：

         PyABIInfo_FREETHREADED
             * 属于 稳定 ABI 自 3.15 版起.*

            指定与 CPython 的 *自由线程构建* 兼容的 ABI。（即使用 "--
            disable-gil" 编译，并且 "sys.abiflags" 中带有 "t" 的构建）

         PyABIInfo_GIL
             * 属于 稳定 ABI 自 3.15 版起.*

            指定与 CPython 的非自由线程构建兼容的 ABI（即 *未* 使用 "
            --disable-gil" 编译的构建）。

         PyABIInfo_FREETHREADING_AGNOSTIC
             * 属于 稳定 ABI 自 3.15 版起.*

            指定与 CPython 的自由线程构建和非自由线程构建二者都兼容的
            ABI，也就是同时兼容 "abi3" 和 "abi3t"。

   uint32_t build_version

      用于构建代码的 Python 头文件版本，采用 "PY_VERSION_HEX" 所使用的
      格式。

      可以将其设为 "0"，以跳过与此字段相关的任何检查。此选项主要面向不
      直接使用 CPython 头文件，并且不模拟其某个特定版本的项目。

   uint32_t abi_version

      ABI 版本。

      对于稳定 ABI，此字段应为 "Py_LIMITED_API" 或 "Py_TARGET_ABI3T"
      的值。如果二者都被定义，则使用较小的值。（如果 "Py_LIMITED_API"
      为 "3"，则使用 Py_PACK_VERSION(3, 2) 而不是 "3"。）

      否则，应将其设为 "PY_VERSION_HEX"。

      也可以将其设为 "0"，以跳过与此字段相关的任何检查。

      PyABIInfo_DEFAULT_ABI_VERSION
          * 属于 稳定 ABI 自 3.15 版起.*

         此字段应使用的值，基于 "Py_LIMITED_API"、"PY_VERSION_HEX" 和
         "Py_GIL_DISABLED" 等宏的当前值。

   Added in version 3.15.


受限 API 的内容
===============

这是 Python 3.15 的 受限 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"
