https://github.com/python/cpython/commit/20cb7fc7077c20f4595fa65031f7047700a7bab3
commit: 20cb7fc7077c20f4595fa65031f7047700a7bab3
branch: main
author: Victor Stinner <[email protected]>
committer: encukou <[email protected]>
date: 2026-10-08T14:12:57+02:00
summary:

gh-158886: Add INCREF/DECREF macros to stable_abi.toml (GH-158941)

* Add 7 INCREF/DECREF macros
* distinguish between 'const' and 'macro' in stable_abi.dat
  The file now has the 'kind' from the toml, not the ReST role.
* Fix kind of PY_VECTORCALL_ARGUMENTS_OFFSET
* Make it explicit that macros aren't part of the ABI
* Add is_static_inline_function to the TOML file (these are treated as macros 
in the docs)


Co-authored-by: Petr Viktorin <[email protected]>

files:
M Doc/data/stable_abi.dat
M Doc/tools/extensions/c_annotations.py
M Misc/stable_abi.toml
M Tools/build/stable_abi.py

diff --git a/Doc/data/stable_abi.dat b/Doc/data/stable_abi.dat
index 622a079ee6b4f22..3a6832c1ff72e11 100644
--- a/Doc/data/stable_abi.dat
+++ b/Doc/data/stable_abi.dat
@@ -1,247 +1,247 @@
-role,name,added,ifdef_note,struct_abi_kind
-macro,METH_CLASS,3.2,,
-macro,METH_COEXIST,3.2,,
-macro,METH_FASTCALL,3.10,,
-macro,METH_METHOD,3.7,,
-macro,METH_NOARGS,3.2,,
-macro,METH_O,3.2,,
-macro,METH_STATIC,3.2,,
-macro,METH_VARARGS,3.2,,
-macro,PY_VECTORCALL_ARGUMENTS_OFFSET,3.12,,
-type,PyABIInfo,3.15,,full-abi
-func,PyABIInfo_Check,3.15,,
-macro,PyABIInfo_DEFAULT_ABI_VERSION,3.15,,
-macro,PyABIInfo_DEFAULT_FLAGS,3.15,,
-macro,PyABIInfo_FREETHREADED,3.15,,
-macro,PyABIInfo_FREETHREADING_AGNOSTIC,3.15,,
-macro,PyABIInfo_GIL,3.15,,
-macro,PyABIInfo_STABLE,3.15,,
+kind,name,added,ifdef_note,struct_abi_kind
+const,METH_CLASS,3.2,,
+const,METH_COEXIST,3.2,,
+const,METH_FASTCALL,3.10,,
+const,METH_METHOD,3.7,,
+const,METH_NOARGS,3.2,,
+const,METH_O,3.2,,
+const,METH_STATIC,3.2,,
+const,METH_VARARGS,3.2,,
+const,PY_VECTORCALL_ARGUMENTS_OFFSET,3.12,,
+struct,PyABIInfo,3.15,,full-abi
+function,PyABIInfo_Check,3.15,,
+const,PyABIInfo_DEFAULT_ABI_VERSION,3.15,,
+const,PyABIInfo_DEFAULT_FLAGS,3.15,,
+const,PyABIInfo_FREETHREADED,3.15,,
+const,PyABIInfo_FREETHREADING_AGNOSTIC,3.15,,
+const,PyABIInfo_GIL,3.15,,
+const,PyABIInfo_STABLE,3.15,,
 macro,PyABIInfo_VAR,3.15,,
-func,PyAIter_Check,3.10,,
-func,PyArg_Parse,3.2,,
-func,PyArg_ParseTuple,3.2,,
-func,PyArg_ParseTupleAndKeywords,3.2,,
-func,PyArg_UnpackTuple,3.2,,
-func,PyArg_VaParse,3.2,,
-func,PyArg_VaParseTupleAndKeywords,3.2,,
-func,PyArg_ValidateKeywordArguments,3.2,,
-macro,PyBUF_ANY_CONTIGUOUS,3.11,,
-macro,PyBUF_CONTIG,3.11,,
-macro,PyBUF_CONTIG_RO,3.11,,
-macro,PyBUF_C_CONTIGUOUS,3.11,,
-macro,PyBUF_FORMAT,3.11,,
-macro,PyBUF_FULL,3.11,,
-macro,PyBUF_FULL_RO,3.11,,
-macro,PyBUF_F_CONTIGUOUS,3.11,,
-macro,PyBUF_INDIRECT,3.11,,
-macro,PyBUF_MAX_NDIM,3.11,,
-macro,PyBUF_ND,3.11,,
-macro,PyBUF_READ,3.11,,
-macro,PyBUF_RECORDS,3.11,,
-macro,PyBUF_RECORDS_RO,3.11,,
-macro,PyBUF_SIMPLE,3.11,,
-macro,PyBUF_STRIDED,3.11,,
-macro,PyBUF_STRIDED_RO,3.11,,
-macro,PyBUF_STRIDES,3.11,,
-macro,PyBUF_WRITABLE,3.11,,
-macro,PyBUF_WRITE,3.11,,
+function,PyAIter_Check,3.10,,
+function,PyArg_Parse,3.2,,
+function,PyArg_ParseTuple,3.2,,
+function,PyArg_ParseTupleAndKeywords,3.2,,
+function,PyArg_UnpackTuple,3.2,,
+function,PyArg_VaParse,3.2,,
+function,PyArg_VaParseTupleAndKeywords,3.2,,
+function,PyArg_ValidateKeywordArguments,3.2,,
+const,PyBUF_ANY_CONTIGUOUS,3.11,,
+const,PyBUF_CONTIG,3.11,,
+const,PyBUF_CONTIG_RO,3.11,,
+const,PyBUF_C_CONTIGUOUS,3.11,,
+const,PyBUF_FORMAT,3.11,,
+const,PyBUF_FULL,3.11,,
+const,PyBUF_FULL_RO,3.11,,
+const,PyBUF_F_CONTIGUOUS,3.11,,
+const,PyBUF_INDIRECT,3.11,,
+const,PyBUF_MAX_NDIM,3.11,,
+const,PyBUF_ND,3.11,,
+const,PyBUF_READ,3.11,,
+const,PyBUF_RECORDS,3.11,,
+const,PyBUF_RECORDS_RO,3.11,,
+const,PyBUF_SIMPLE,3.11,,
+const,PyBUF_STRIDED,3.11,,
+const,PyBUF_STRIDED_RO,3.11,,
+const,PyBUF_STRIDES,3.11,,
+const,PyBUF_WRITABLE,3.11,,
+const,PyBUF_WRITE,3.11,,
 data,PyBaseObject_Type,3.2,,
-func,PyBool_FromLong,3.2,,
+function,PyBool_FromLong,3.2,,
 data,PyBool_Type,3.2,,
-func,PyBuffer_FillContiguousStrides,3.11,,
-func,PyBuffer_FillInfo,3.11,,
-func,PyBuffer_FromContiguous,3.11,,
-func,PyBuffer_GetPointer,3.11,,
-func,PyBuffer_IsContiguous,3.11,,
-func,PyBuffer_Release,3.11,,
-func,PyBuffer_SizeFromFormat,3.11,,
-func,PyBuffer_ToContiguous,3.11,,
+function,PyBuffer_FillContiguousStrides,3.11,,
+function,PyBuffer_FillInfo,3.11,,
+function,PyBuffer_FromContiguous,3.11,,
+function,PyBuffer_GetPointer,3.11,,
+function,PyBuffer_IsContiguous,3.11,,
+function,PyBuffer_Release,3.11,,
+function,PyBuffer_SizeFromFormat,3.11,,
+function,PyBuffer_ToContiguous,3.11,,
 data,PyByteArrayIter_Type,3.2,,
-func,PyByteArray_AsString,3.2,,
-func,PyByteArray_Concat,3.2,,
-func,PyByteArray_FromObject,3.2,,
-func,PyByteArray_FromStringAndSize,3.2,,
-func,PyByteArray_Resize,3.2,,
-func,PyByteArray_Size,3.2,,
+function,PyByteArray_AsString,3.2,,
+function,PyByteArray_Concat,3.2,,
+function,PyByteArray_FromObject,3.2,,
+function,PyByteArray_FromStringAndSize,3.2,,
+function,PyByteArray_Resize,3.2,,
+function,PyByteArray_Size,3.2,,
 data,PyByteArray_Type,3.2,,
 data,PyBytesIter_Type,3.2,,
-func,PyBytes_AsString,3.2,,
-func,PyBytes_AsStringAndSize,3.2,,
-func,PyBytes_Concat,3.2,,
-func,PyBytes_ConcatAndDel,3.2,,
-func,PyBytes_DecodeEscape,3.2,,
-func,PyBytes_FromFormat,3.2,,
-func,PyBytes_FromFormatV,3.2,,
-func,PyBytes_FromObject,3.2,,
-func,PyBytes_FromString,3.2,,
-func,PyBytes_FromStringAndSize,3.2,,
-func,PyBytes_Repr,3.2,,
-func,PyBytes_Size,3.2,,
+function,PyBytes_AsString,3.2,,
+function,PyBytes_AsStringAndSize,3.2,,
+function,PyBytes_Concat,3.2,,
+function,PyBytes_ConcatAndDel,3.2,,
+function,PyBytes_DecodeEscape,3.2,,
+function,PyBytes_FromFormat,3.2,,
+function,PyBytes_FromFormatV,3.2,,
+function,PyBytes_FromObject,3.2,,
+function,PyBytes_FromString,3.2,,
+function,PyBytes_FromStringAndSize,3.2,,
+function,PyBytes_Repr,3.2,,
+function,PyBytes_Size,3.2,,
 data,PyBytes_Type,3.2,,
-type,PyCFunction,3.2,,
-type,PyCFunctionFast,3.13,,
-type,PyCFunctionFastWithKeywords,3.13,,
-type,PyCFunctionWithKeywords,3.2,,
-func,PyCFunction_GetFlags,3.2,,
-func,PyCFunction_GetFunction,3.2,,
-func,PyCFunction_GetSelf,3.2,,
-func,PyCFunction_New,3.4,,
-func,PyCFunction_NewEx,3.2,,
+typedef,PyCFunction,3.2,,
+typedef,PyCFunctionFast,3.13,,
+typedef,PyCFunctionFastWithKeywords,3.13,,
+typedef,PyCFunctionWithKeywords,3.2,,
+function,PyCFunction_GetFlags,3.2,,
+function,PyCFunction_GetFunction,3.2,,
+function,PyCFunction_GetSelf,3.2,,
+function,PyCFunction_New,3.4,,
+function,PyCFunction_NewEx,3.2,,
 data,PyCFunction_Type,3.2,,
-func,PyCMethod_New,3.9,,
-func,PyCallIter_New,3.2,,
+function,PyCMethod_New,3.9,,
+function,PyCallIter_New,3.2,,
 data,PyCallIter_Type,3.2,,
-func,PyCallable_Check,3.2,,
-type,PyCapsule_Destructor,3.2,,
-func,PyCapsule_GetContext,3.2,,
-func,PyCapsule_GetDestructor,3.2,,
-func,PyCapsule_GetName,3.2,,
-func,PyCapsule_GetPointer,3.2,,
-func,PyCapsule_Import,3.2,,
-func,PyCapsule_IsValid,3.2,,
-func,PyCapsule_New,3.2,,
-func,PyCapsule_SetContext,3.2,,
-func,PyCapsule_SetDestructor,3.2,,
-func,PyCapsule_SetName,3.2,,
-func,PyCapsule_SetPointer,3.2,,
+function,PyCallable_Check,3.2,,
+typedef,PyCapsule_Destructor,3.2,,
+function,PyCapsule_GetContext,3.2,,
+function,PyCapsule_GetDestructor,3.2,,
+function,PyCapsule_GetName,3.2,,
+function,PyCapsule_GetPointer,3.2,,
+function,PyCapsule_Import,3.2,,
+function,PyCapsule_IsValid,3.2,,
+function,PyCapsule_New,3.2,,
+function,PyCapsule_SetContext,3.2,,
+function,PyCapsule_SetDestructor,3.2,,
+function,PyCapsule_SetName,3.2,,
+function,PyCapsule_SetPointer,3.2,,
 data,PyCapsule_Type,3.2,,
 data,PyClassMethodDescr_Type,3.2,,
-func,PyCodec_BackslashReplaceErrors,3.2,,
-func,PyCodec_Decode,3.2,,
-func,PyCodec_Decoder,3.2,,
-func,PyCodec_Encode,3.2,,
-func,PyCodec_Encoder,3.2,,
-func,PyCodec_IgnoreErrors,3.2,,
-func,PyCodec_IncrementalDecoder,3.2,,
-func,PyCodec_IncrementalEncoder,3.2,,
-func,PyCodec_KnownEncoding,3.2,,
-func,PyCodec_LookupError,3.2,,
-func,PyCodec_NameReplaceErrors,3.7,,
-func,PyCodec_Register,3.2,,
-func,PyCodec_RegisterError,3.2,,
-func,PyCodec_ReplaceErrors,3.2,,
-func,PyCodec_StreamReader,3.2,,
-func,PyCodec_StreamWriter,3.2,,
-func,PyCodec_StrictErrors,3.2,,
-func,PyCodec_Unregister,3.10,,
-func,PyCodec_XMLCharRefReplaceErrors,3.2,,
-func,PyComplex_FromDoubles,3.2,,
-func,PyComplex_ImagAsDouble,3.2,,
-func,PyComplex_RealAsDouble,3.2,,
+function,PyCodec_BackslashReplaceErrors,3.2,,
+function,PyCodec_Decode,3.2,,
+function,PyCodec_Decoder,3.2,,
+function,PyCodec_Encode,3.2,,
+function,PyCodec_Encoder,3.2,,
+function,PyCodec_IgnoreErrors,3.2,,
+function,PyCodec_IncrementalDecoder,3.2,,
+function,PyCodec_IncrementalEncoder,3.2,,
+function,PyCodec_KnownEncoding,3.2,,
+function,PyCodec_LookupError,3.2,,
+function,PyCodec_NameReplaceErrors,3.7,,
+function,PyCodec_Register,3.2,,
+function,PyCodec_RegisterError,3.2,,
+function,PyCodec_ReplaceErrors,3.2,,
+function,PyCodec_StreamReader,3.2,,
+function,PyCodec_StreamWriter,3.2,,
+function,PyCodec_StrictErrors,3.2,,
+function,PyCodec_Unregister,3.10,,
+function,PyCodec_XMLCharRefReplaceErrors,3.2,,
+function,PyComplex_FromDoubles,3.2,,
+function,PyComplex_ImagAsDouble,3.2,,
+function,PyComplex_RealAsDouble,3.2,,
 data,PyComplex_Type,3.2,,
-type,PyCriticalSection,3.15,,full-abi
-type,PyCriticalSection2,3.15,,full-abi
-func,PyCriticalSection2_Begin,3.15,,
-func,PyCriticalSection2_End,3.15,,
-func,PyCriticalSection_Begin,3.15,,
-func,PyCriticalSection_End,3.15,,
-func,PyDescr_NewClassMethod,3.2,,
-func,PyDescr_NewGetSet,3.2,,
-func,PyDescr_NewMember,3.2,,
-func,PyDescr_NewMethod,3.2,,
+struct,PyCriticalSection,3.15,,full-abi
+struct,PyCriticalSection2,3.15,,full-abi
+function,PyCriticalSection2_Begin,3.15,,
+function,PyCriticalSection2_End,3.15,,
+function,PyCriticalSection_Begin,3.15,,
+function,PyCriticalSection_End,3.15,,
+function,PyDescr_NewClassMethod,3.2,,
+function,PyDescr_NewGetSet,3.2,,
+function,PyDescr_NewMember,3.2,,
+function,PyDescr_NewMethod,3.2,,
 data,PyDictItems_Type,3.2,,
 data,PyDictIterItem_Type,3.2,,
 data,PyDictIterKey_Type,3.2,,
 data,PyDictIterValue_Type,3.2,,
 data,PyDictKeys_Type,3.2,,
-func,PyDictProxy_New,3.2,,
+function,PyDictProxy_New,3.2,,
 data,PyDictProxy_Type,3.2,,
 data,PyDictRevIterItem_Type,3.8,,
 data,PyDictRevIterKey_Type,3.8,,
 data,PyDictRevIterValue_Type,3.8,,
 data,PyDictValues_Type,3.2,,
-func,PyDict_Clear,3.2,,
-func,PyDict_Contains,3.2,,
-func,PyDict_Copy,3.2,,
-func,PyDict_DelItem,3.2,,
-func,PyDict_DelItemString,3.2,,
-func,PyDict_GetItem,3.2,,
-func,PyDict_GetItemRef,3.13,,
-func,PyDict_GetItemString,3.2,,
-func,PyDict_GetItemStringRef,3.13,,
-func,PyDict_GetItemWithError,3.2,,
-func,PyDict_Items,3.2,,
-func,PyDict_Keys,3.2,,
-func,PyDict_Merge,3.2,,
-func,PyDict_MergeFromSeq2,3.2,,
-func,PyDict_New,3.2,,
-func,PyDict_Next,3.2,,
-func,PyDict_SetDefaultRef,3.15,,
-func,PyDict_SetItem,3.2,,
-func,PyDict_SetItemString,3.2,,
-func,PyDict_Size,3.2,,
+function,PyDict_Clear,3.2,,
+function,PyDict_Contains,3.2,,
+function,PyDict_Copy,3.2,,
+function,PyDict_DelItem,3.2,,
+function,PyDict_DelItemString,3.2,,
+function,PyDict_GetItem,3.2,,
+function,PyDict_GetItemRef,3.13,,
+function,PyDict_GetItemString,3.2,,
+function,PyDict_GetItemStringRef,3.13,,
+function,PyDict_GetItemWithError,3.2,,
+function,PyDict_Items,3.2,,
+function,PyDict_Keys,3.2,,
+function,PyDict_Merge,3.2,,
+function,PyDict_MergeFromSeq2,3.2,,
+function,PyDict_New,3.2,,
+function,PyDict_Next,3.2,,
+function,PyDict_SetDefaultRef,3.15,,
+function,PyDict_SetItem,3.2,,
+function,PyDict_SetItemString,3.2,,
+function,PyDict_Size,3.2,,
 data,PyDict_Type,3.2,,
-func,PyDict_Update,3.2,,
-func,PyDict_Values,3.2,,
+function,PyDict_Update,3.2,,
+function,PyDict_Values,3.2,,
 data,PyEllipsis_Type,3.2,,
 data,PyEnum_Type,3.2,,
-func,PyErr_BadArgument,3.2,,
-func,PyErr_BadInternalCall,3.2,,
-func,PyErr_CheckSignals,3.2,,
-func,PyErr_Clear,3.2,,
-func,PyErr_Display,3.2,,
-func,PyErr_DisplayException,3.12,,
-func,PyErr_ExceptionMatches,3.2,,
-func,PyErr_Fetch,3.2,,
-func,PyErr_Format,3.2,,
-func,PyErr_FormatV,3.5,,
-func,PyErr_GetExcInfo,3.7,,
-func,PyErr_GetHandledException,3.11,,
-func,PyErr_GetRaisedException,3.12,,
-func,PyErr_GivenExceptionMatches,3.2,,
-func,PyErr_NewException,3.2,,
-func,PyErr_NewExceptionWithDoc,3.2,,
-func,PyErr_NoMemory,3.2,,
-func,PyErr_NormalizeException,3.2,,
-func,PyErr_Occurred,3.2,,
-func,PyErr_Print,3.2,,
-func,PyErr_PrintEx,3.2,,
-func,PyErr_ProgramText,3.2,,
-func,PyErr_ResourceWarning,3.6,,
-func,PyErr_Restore,3.2,,
-func,PyErr_SetExcFromWindowsErr,3.7,on Windows,
-func,PyErr_SetExcFromWindowsErrWithFilename,3.7,on Windows,
-func,PyErr_SetExcFromWindowsErrWithFilenameObject,3.7,on Windows,
-func,PyErr_SetExcFromWindowsErrWithFilenameObjects,3.7,on Windows,
-func,PyErr_SetExcInfo,3.7,,
-func,PyErr_SetFromErrno,3.2,,
-func,PyErr_SetFromErrnoWithFilename,3.2,,
-func,PyErr_SetFromErrnoWithFilenameObject,3.2,,
-func,PyErr_SetFromErrnoWithFilenameObjects,3.7,,
-func,PyErr_SetFromWindowsErr,3.7,on Windows,
-func,PyErr_SetFromWindowsErrWithFilename,3.7,on Windows,
-func,PyErr_SetHandledException,3.11,,
-func,PyErr_SetImportError,3.7,,
-func,PyErr_SetImportErrorSubclass,3.6,,
-func,PyErr_SetInterrupt,3.2,,
-func,PyErr_SetInterruptEx,3.10,,
-func,PyErr_SetNone,3.2,,
-func,PyErr_SetObject,3.2,,
-func,PyErr_SetRaisedException,3.12,,
-func,PyErr_SetString,3.2,,
-func,PyErr_SyntaxLocation,3.2,,
-func,PyErr_SyntaxLocationEx,3.7,,
-func,PyErr_WarnEx,3.2,,
-func,PyErr_WarnExplicit,3.2,,
-func,PyErr_WarnFormat,3.2,,
-func,PyErr_WriteUnraisable,3.2,,
-func,PyEval_AcquireThread,3.2,,
-func,PyEval_EvalCode,3.2,,
-func,PyEval_EvalCodeEx,3.2,,
-func,PyEval_EvalFrame,3.2,,
-func,PyEval_EvalFrameEx,3.2,,
-func,PyEval_GetBuiltins,3.2,,
-func,PyEval_GetFrame,3.2,,
-func,PyEval_GetFrameBuiltins,3.13,,
-func,PyEval_GetFrameGlobals,3.13,,
-func,PyEval_GetFrameLocals,3.13,,
-func,PyEval_GetFuncDesc,3.2,,
-func,PyEval_GetFuncName,3.2,,
-func,PyEval_GetGlobals,3.2,,
-func,PyEval_GetLocals,3.2,,
-func,PyEval_ReleaseThread,3.2,,
-func,PyEval_RestoreThread,3.2,,
-func,PyEval_SaveThread,3.2,,
+function,PyErr_BadArgument,3.2,,
+function,PyErr_BadInternalCall,3.2,,
+function,PyErr_CheckSignals,3.2,,
+function,PyErr_Clear,3.2,,
+function,PyErr_Display,3.2,,
+function,PyErr_DisplayException,3.12,,
+function,PyErr_ExceptionMatches,3.2,,
+function,PyErr_Fetch,3.2,,
+function,PyErr_Format,3.2,,
+function,PyErr_FormatV,3.5,,
+function,PyErr_GetExcInfo,3.7,,
+function,PyErr_GetHandledException,3.11,,
+function,PyErr_GetRaisedException,3.12,,
+function,PyErr_GivenExceptionMatches,3.2,,
+function,PyErr_NewException,3.2,,
+function,PyErr_NewExceptionWithDoc,3.2,,
+function,PyErr_NoMemory,3.2,,
+function,PyErr_NormalizeException,3.2,,
+function,PyErr_Occurred,3.2,,
+function,PyErr_Print,3.2,,
+function,PyErr_PrintEx,3.2,,
+function,PyErr_ProgramText,3.2,,
+function,PyErr_ResourceWarning,3.6,,
+function,PyErr_Restore,3.2,,
+function,PyErr_SetExcFromWindowsErr,3.7,on Windows,
+function,PyErr_SetExcFromWindowsErrWithFilename,3.7,on Windows,
+function,PyErr_SetExcFromWindowsErrWithFilenameObject,3.7,on Windows,
+function,PyErr_SetExcFromWindowsErrWithFilenameObjects,3.7,on Windows,
+function,PyErr_SetExcInfo,3.7,,
+function,PyErr_SetFromErrno,3.2,,
+function,PyErr_SetFromErrnoWithFilename,3.2,,
+function,PyErr_SetFromErrnoWithFilenameObject,3.2,,
+function,PyErr_SetFromErrnoWithFilenameObjects,3.7,,
+function,PyErr_SetFromWindowsErr,3.7,on Windows,
+function,PyErr_SetFromWindowsErrWithFilename,3.7,on Windows,
+function,PyErr_SetHandledException,3.11,,
+function,PyErr_SetImportError,3.7,,
+function,PyErr_SetImportErrorSubclass,3.6,,
+function,PyErr_SetInterrupt,3.2,,
+function,PyErr_SetInterruptEx,3.10,,
+function,PyErr_SetNone,3.2,,
+function,PyErr_SetObject,3.2,,
+function,PyErr_SetRaisedException,3.12,,
+function,PyErr_SetString,3.2,,
+function,PyErr_SyntaxLocation,3.2,,
+function,PyErr_SyntaxLocationEx,3.7,,
+function,PyErr_WarnEx,3.2,,
+function,PyErr_WarnExplicit,3.2,,
+function,PyErr_WarnFormat,3.2,,
+function,PyErr_WriteUnraisable,3.2,,
+function,PyEval_AcquireThread,3.2,,
+function,PyEval_EvalCode,3.2,,
+function,PyEval_EvalCodeEx,3.2,,
+function,PyEval_EvalFrame,3.2,,
+function,PyEval_EvalFrameEx,3.2,,
+function,PyEval_GetBuiltins,3.2,,
+function,PyEval_GetFrame,3.2,,
+function,PyEval_GetFrameBuiltins,3.13,,
+function,PyEval_GetFrameGlobals,3.13,,
+function,PyEval_GetFrameLocals,3.13,,
+function,PyEval_GetFuncDesc,3.2,,
+function,PyEval_GetFuncName,3.2,,
+function,PyEval_GetGlobals,3.2,,
+function,PyEval_GetLocals,3.2,,
+function,PyEval_ReleaseThread,3.2,,
+function,PyEval_RestoreThread,3.2,,
+function,PyEval_SaveThread,3.2,,
 data,PyExc_ArithmeticError,3.2,,
 data,PyExc_AssertionError,3.2,,
 data,PyExc_AttributeError,3.2,,
@@ -311,860 +311,867 @@ data,PyExc_ValueError,3.2,,
 data,PyExc_Warning,3.2,,
 data,PyExc_WindowsError,3.7,on Windows,
 data,PyExc_ZeroDivisionError,3.2,,
-func,PyExceptionClass_Name,3.8,,
-func,PyException_GetArgs,3.12,,
-func,PyException_GetCause,3.2,,
-func,PyException_GetContext,3.2,,
-func,PyException_GetTraceback,3.2,,
-func,PyException_SetArgs,3.12,,
-func,PyException_SetCause,3.2,,
-func,PyException_SetContext,3.2,,
-func,PyException_SetTraceback,3.2,,
-func,PyFile_FromFd,3.2,,
-func,PyFile_GetLine,3.2,,
-func,PyFile_WriteObject,3.2,,
-func,PyFile_WriteString,3.2,,
+function,PyExceptionClass_Name,3.8,,
+function,PyException_GetArgs,3.12,,
+function,PyException_GetCause,3.2,,
+function,PyException_GetContext,3.2,,
+function,PyException_GetTraceback,3.2,,
+function,PyException_SetArgs,3.12,,
+function,PyException_SetCause,3.2,,
+function,PyException_SetContext,3.2,,
+function,PyException_SetTraceback,3.2,,
+function,PyFile_FromFd,3.2,,
+function,PyFile_GetLine,3.2,,
+function,PyFile_WriteObject,3.2,,
+function,PyFile_WriteString,3.2,,
 data,PyFilter_Type,3.2,,
-func,PyFloat_AsDouble,3.2,,
-func,PyFloat_FromDouble,3.2,,
-func,PyFloat_FromString,3.2,,
-func,PyFloat_GetInfo,3.2,,
-func,PyFloat_GetMax,3.2,,
-func,PyFloat_GetMin,3.2,,
+function,PyFloat_AsDouble,3.2,,
+function,PyFloat_FromDouble,3.2,,
+function,PyFloat_FromString,3.2,,
+function,PyFloat_GetInfo,3.2,,
+function,PyFloat_GetMax,3.2,,
+function,PyFloat_GetMin,3.2,,
 data,PyFloat_Type,3.2,,
-type,PyFrameObject,3.2,,opaque
-func,PyFrame_GetCode,3.10,,
-func,PyFrame_GetLineNumber,3.10,,
-func,PyFrozenSet_New,3.2,,
+struct,PyFrameObject,3.2,,opaque
+function,PyFrame_GetCode,3.10,,
+function,PyFrame_GetLineNumber,3.10,,
+function,PyFrozenSet_New,3.2,,
 data,PyFrozenSet_Type,3.2,,
-func,PyGC_Collect,3.2,,
-func,PyGC_Disable,3.10,,
-func,PyGC_Enable,3.10,,
-func,PyGC_IsEnabled,3.10,,
-func,PyGILState_Ensure,3.2,,
-func,PyGILState_GetThisThreadState,3.2,,
-func,PyGILState_Release,3.2,,
-type,PyGILState_STATE,3.2,,
-type,PyGetSetDef,3.2,,full-abi
+function,PyGC_Collect,3.2,,
+function,PyGC_Disable,3.10,,
+function,PyGC_Enable,3.10,,
+function,PyGC_IsEnabled,3.10,,
+function,PyGILState_Ensure,3.2,,
+function,PyGILState_GetThisThreadState,3.2,,
+function,PyGILState_Release,3.2,,
+typedef,PyGILState_STATE,3.2,,
+struct,PyGetSetDef,3.2,,full-abi
 data,PyGetSetDescr_Type,3.2,,
-func,PyImport_AddModule,3.2,,
-func,PyImport_AddModuleObject,3.7,,
-func,PyImport_AddModuleRef,3.13,,
-func,PyImport_AppendInittab,3.2,,
-func,PyImport_ExecCodeModule,3.2,,
-func,PyImport_ExecCodeModuleEx,3.2,,
-func,PyImport_ExecCodeModuleObject,3.7,,
-func,PyImport_ExecCodeModuleWithPathnames,3.2,,
-func,PyImport_GetImporter,3.2,,
-func,PyImport_GetMagicNumber,3.2,,
-func,PyImport_GetMagicTag,3.2,,
-func,PyImport_GetModule,3.8,,
-func,PyImport_GetModuleDict,3.2,,
-func,PyImport_Import,3.2,,
-func,PyImport_ImportFrozenModule,3.2,,
-func,PyImport_ImportFrozenModuleObject,3.7,,
-func,PyImport_ImportModule,3.2,,
-func,PyImport_ImportModuleLevel,3.2,,
-func,PyImport_ImportModuleLevelObject,3.7,,
-func,PyImport_ReloadModule,3.2,,
-func,PyIndex_Check,3.8,,
-type,PyInterpreterGuard,3.15,,opaque
-func,PyInterpreterGuard_Close,3.15,,
-func,PyInterpreterGuard_FromCurrent,3.15,,
-func,PyInterpreterGuard_FromView,3.15,,
-type,PyInterpreterState,3.2,,opaque
-func,PyInterpreterState_Clear,3.2,,
-func,PyInterpreterState_Delete,3.2,,
-func,PyInterpreterState_Get,3.9,,
-func,PyInterpreterState_GetDict,3.8,,
-func,PyInterpreterState_GetID,3.7,,
-func,PyInterpreterState_New,3.2,,
-type,PyInterpreterView,3.15,,opaque
-func,PyInterpreterView_Close,3.15,,
-func,PyInterpreterView_FromCurrent,3.15,,
-func,PyInterpreterView_FromMain,3.15,,
-func,PyIter_Check,3.8,,
-func,PyIter_Next,3.2,,
-func,PyIter_NextItem,3.14,,
-func,PyIter_Send,3.10,,
+function,PyImport_AddModule,3.2,,
+function,PyImport_AddModuleObject,3.7,,
+function,PyImport_AddModuleRef,3.13,,
+function,PyImport_AppendInittab,3.2,,
+function,PyImport_ExecCodeModule,3.2,,
+function,PyImport_ExecCodeModuleEx,3.2,,
+function,PyImport_ExecCodeModuleObject,3.7,,
+function,PyImport_ExecCodeModuleWithPathnames,3.2,,
+function,PyImport_GetImporter,3.2,,
+function,PyImport_GetMagicNumber,3.2,,
+function,PyImport_GetMagicTag,3.2,,
+function,PyImport_GetModule,3.8,,
+function,PyImport_GetModuleDict,3.2,,
+function,PyImport_Import,3.2,,
+function,PyImport_ImportFrozenModule,3.2,,
+function,PyImport_ImportFrozenModuleObject,3.7,,
+function,PyImport_ImportModule,3.2,,
+function,PyImport_ImportModuleLevel,3.2,,
+function,PyImport_ImportModuleLevelObject,3.7,,
+function,PyImport_ReloadModule,3.2,,
+function,PyIndex_Check,3.8,,
+struct,PyInterpreterGuard,3.15,,opaque
+function,PyInterpreterGuard_Close,3.15,,
+function,PyInterpreterGuard_FromCurrent,3.15,,
+function,PyInterpreterGuard_FromView,3.15,,
+struct,PyInterpreterState,3.2,,opaque
+function,PyInterpreterState_Clear,3.2,,
+function,PyInterpreterState_Delete,3.2,,
+function,PyInterpreterState_Get,3.9,,
+function,PyInterpreterState_GetDict,3.8,,
+function,PyInterpreterState_GetID,3.7,,
+function,PyInterpreterState_New,3.2,,
+struct,PyInterpreterView,3.15,,opaque
+function,PyInterpreterView_Close,3.15,,
+function,PyInterpreterView_FromCurrent,3.15,,
+function,PyInterpreterView_FromMain,3.15,,
+function,PyIter_Check,3.8,,
+function,PyIter_Next,3.2,,
+function,PyIter_NextItem,3.14,,
+function,PyIter_Send,3.10,,
 data,PyListIter_Type,3.2,,
 data,PyListRevIter_Type,3.2,,
-func,PyList_Append,3.2,,
-func,PyList_AsTuple,3.2,,
-func,PyList_GetItem,3.2,,
-func,PyList_GetItemRef,3.13,,
-func,PyList_GetSlice,3.2,,
-func,PyList_Insert,3.2,,
-func,PyList_New,3.2,,
-func,PyList_Reverse,3.2,,
-func,PyList_SetItem,3.2,,
-func,PyList_SetSlice,3.2,,
-func,PyList_Size,3.2,,
-func,PyList_Sort,3.2,,
+function,PyList_Append,3.2,,
+function,PyList_AsTuple,3.2,,
+function,PyList_GetItem,3.2,,
+function,PyList_GetItemRef,3.13,,
+function,PyList_GetSlice,3.2,,
+function,PyList_Insert,3.2,,
+function,PyList_New,3.2,,
+function,PyList_Reverse,3.2,,
+function,PyList_SetItem,3.2,,
+function,PyList_SetSlice,3.2,,
+function,PyList_Size,3.2,,
+function,PyList_Sort,3.2,,
 data,PyList_Type,3.2,,
-type,PyLongExport,3.15,,full-abi
-type,PyLongLayout,3.15,,full-abi
-type,PyLongObject,3.2,,opaque
+struct,PyLongExport,3.15,,full-abi
+struct,PyLongLayout,3.15,,full-abi
+struct,PyLongObject,3.2,,opaque
 data,PyLongRangeIter_Type,3.2,,
-type,PyLongWriter,3.15,,opaque
-func,PyLongWriter_Create,3.15,,
-func,PyLongWriter_Discard,3.15,,
-func,PyLongWriter_Finish,3.15,,
-func,PyLong_AsDouble,3.2,,
-func,PyLong_AsInt,3.13,,
-func,PyLong_AsInt32,3.14,,
-func,PyLong_AsInt64,3.14,,
-func,PyLong_AsLong,3.2,,
-func,PyLong_AsLongAndOverflow,3.2,,
-func,PyLong_AsLongLong,3.2,,
-func,PyLong_AsLongLongAndOverflow,3.2,,
-func,PyLong_AsNativeBytes,3.14,,
-func,PyLong_AsSize_t,3.2,,
-func,PyLong_AsSsize_t,3.2,,
-func,PyLong_AsUInt32,3.14,,
-func,PyLong_AsUInt64,3.14,,
-func,PyLong_AsUnsignedLong,3.2,,
-func,PyLong_AsUnsignedLongLong,3.2,,
-func,PyLong_AsUnsignedLongLongMask,3.2,,
-func,PyLong_AsUnsignedLongMask,3.2,,
-func,PyLong_AsVoidPtr,3.2,,
-func,PyLong_Export,3.15,,
-func,PyLong_FreeExport,3.15,,
-func,PyLong_FromDouble,3.2,,
-func,PyLong_FromInt32,3.14,,
-func,PyLong_FromInt64,3.14,,
-func,PyLong_FromLong,3.2,,
-func,PyLong_FromLongLong,3.2,,
-func,PyLong_FromNativeBytes,3.14,,
-func,PyLong_FromSize_t,3.2,,
-func,PyLong_FromSsize_t,3.2,,
-func,PyLong_FromString,3.2,,
-func,PyLong_FromUInt32,3.14,,
-func,PyLong_FromUInt64,3.14,,
-func,PyLong_FromUnsignedLong,3.2,,
-func,PyLong_FromUnsignedLongLong,3.2,,
-func,PyLong_FromUnsignedNativeBytes,3.14,,
-func,PyLong_FromVoidPtr,3.2,,
-func,PyLong_GetInfo,3.2,,
-func,PyLong_GetNativeLayout,3.15,,
+struct,PyLongWriter,3.15,,opaque
+function,PyLongWriter_Create,3.15,,
+function,PyLongWriter_Discard,3.15,,
+function,PyLongWriter_Finish,3.15,,
+function,PyLong_AsDouble,3.2,,
+function,PyLong_AsInt,3.13,,
+function,PyLong_AsInt32,3.14,,
+function,PyLong_AsInt64,3.14,,
+function,PyLong_AsLong,3.2,,
+function,PyLong_AsLongAndOverflow,3.2,,
+function,PyLong_AsLongLong,3.2,,
+function,PyLong_AsLongLongAndOverflow,3.2,,
+function,PyLong_AsNativeBytes,3.14,,
+function,PyLong_AsSize_t,3.2,,
+function,PyLong_AsSsize_t,3.2,,
+function,PyLong_AsUInt32,3.14,,
+function,PyLong_AsUInt64,3.14,,
+function,PyLong_AsUnsignedLong,3.2,,
+function,PyLong_AsUnsignedLongLong,3.2,,
+function,PyLong_AsUnsignedLongLongMask,3.2,,
+function,PyLong_AsUnsignedLongMask,3.2,,
+function,PyLong_AsVoidPtr,3.2,,
+function,PyLong_Export,3.15,,
+function,PyLong_FreeExport,3.15,,
+function,PyLong_FromDouble,3.2,,
+function,PyLong_FromInt32,3.14,,
+function,PyLong_FromInt64,3.14,,
+function,PyLong_FromLong,3.2,,
+function,PyLong_FromLongLong,3.2,,
+function,PyLong_FromNativeBytes,3.14,,
+function,PyLong_FromSize_t,3.2,,
+function,PyLong_FromSsize_t,3.2,,
+function,PyLong_FromString,3.2,,
+function,PyLong_FromUInt32,3.14,,
+function,PyLong_FromUInt64,3.14,,
+function,PyLong_FromUnsignedLong,3.2,,
+function,PyLong_FromUnsignedLongLong,3.2,,
+function,PyLong_FromUnsignedNativeBytes,3.14,,
+function,PyLong_FromVoidPtr,3.2,,
+function,PyLong_GetInfo,3.2,,
+function,PyLong_GetNativeLayout,3.15,,
 data,PyLong_Type,3.2,,
 macro,PyMODEXPORT_FUNC,3.15,,
 data,PyMap_Type,3.2,,
-func,PyMapping_Check,3.2,,
-func,PyMapping_GetItemString,3.2,,
-func,PyMapping_GetOptionalItem,3.13,,
-func,PyMapping_GetOptionalItemString,3.13,,
-func,PyMapping_HasKey,3.2,,
-func,PyMapping_HasKeyString,3.2,,
-func,PyMapping_HasKeyStringWithError,3.13,,
-func,PyMapping_HasKeyWithError,3.13,,
-func,PyMapping_Items,3.2,,
-func,PyMapping_Keys,3.2,,
-func,PyMapping_Length,3.2,,
-func,PyMapping_SetItemString,3.2,,
-func,PyMapping_Size,3.2,,
-func,PyMapping_Values,3.2,,
-func,PyMem_Calloc,3.7,,
-func,PyMem_Free,3.2,,
-func,PyMem_Malloc,3.2,,
-func,PyMem_RawCalloc,3.13,,
-func,PyMem_RawFree,3.13,,
-func,PyMem_RawMalloc,3.13,,
-func,PyMem_RawRealloc,3.13,,
-func,PyMem_Realloc,3.2,,
-type,PyMemberDef,3.2,,full-abi
+function,PyMapping_Check,3.2,,
+function,PyMapping_GetItemString,3.2,,
+function,PyMapping_GetOptionalItem,3.13,,
+function,PyMapping_GetOptionalItemString,3.13,,
+function,PyMapping_HasKey,3.2,,
+function,PyMapping_HasKeyString,3.2,,
+function,PyMapping_HasKeyStringWithError,3.13,,
+function,PyMapping_HasKeyWithError,3.13,,
+function,PyMapping_Items,3.2,,
+function,PyMapping_Keys,3.2,,
+function,PyMapping_Length,3.2,,
+function,PyMapping_SetItemString,3.2,,
+function,PyMapping_Size,3.2,,
+function,PyMapping_Values,3.2,,
+function,PyMem_Calloc,3.7,,
+function,PyMem_Free,3.2,,
+function,PyMem_Malloc,3.2,,
+function,PyMem_RawCalloc,3.13,,
+function,PyMem_RawFree,3.13,,
+function,PyMem_RawMalloc,3.13,,
+function,PyMem_RawRealloc,3.13,,
+function,PyMem_Realloc,3.2,,
+struct,PyMemberDef,3.2,,full-abi
 data,PyMemberDescr_Type,3.2,,
-func,PyMember_GetOne,3.2,,
-func,PyMember_SetOne,3.2,,
-func,PyMemoryView_FromBuffer,3.11,,
-func,PyMemoryView_FromMemory,3.7,,
-func,PyMemoryView_FromObject,3.2,,
-func,PyMemoryView_GetContiguous,3.2,,
+function,PyMember_GetOne,3.2,,
+function,PyMember_SetOne,3.2,,
+function,PyMemoryView_FromBuffer,3.11,,
+function,PyMemoryView_FromMemory,3.7,,
+function,PyMemoryView_FromObject,3.2,,
+function,PyMemoryView_GetContiguous,3.2,,
 data,PyMemoryView_Type,3.2,,
-type,PyMethodDef,3.2,,full-abi
+struct,PyMethodDef,3.2,,full-abi
 data,PyMethodDescr_Type,3.2,,
-type,PyModuleDef,3.2,,abi3t-opaque
-type,PyModuleDef_Base,3.2,,abi3t-opaque
-func,PyModuleDef_Init,3.5,,
-type,PyModuleDef_Slot,3.5,,full-abi
+struct,PyModuleDef,3.2,,abi3t-opaque
+struct,PyModuleDef_Base,3.2,,abi3t-opaque
+function,PyModuleDef_Init,3.5,,
+struct,PyModuleDef_Slot,3.5,,full-abi
 data,PyModuleDef_Type,3.5,,
-func,PyModule_Add,3.13,,
-func,PyModule_AddFunctions,3.7,,
-func,PyModule_AddIntConstant,3.2,,
-func,PyModule_AddObject,3.2,,
-func,PyModule_AddObjectRef,3.10,,
-func,PyModule_AddStringConstant,3.2,,
-func,PyModule_AddType,3.10,,
-func,PyModule_Create2,3.2,,
-func,PyModule_Exec,3.15,,
-func,PyModule_ExecDef,3.7,,
-func,PyModule_FromDefAndSpec2,3.7,,
-func,PyModule_FromSlotsAndSpec,3.15,,
-func,PyModule_GetDef,3.2,,
-func,PyModule_GetDict,3.2,,
-func,PyModule_GetFilename,3.2,,
-func,PyModule_GetFilenameObject,3.2,,
-func,PyModule_GetName,3.2,,
-func,PyModule_GetNameObject,3.7,,
-func,PyModule_GetState,3.2,,
-func,PyModule_GetStateSize,3.15,,
-func,PyModule_GetState_DuringGC,3.15,,
-func,PyModule_GetToken,3.15,,
-func,PyModule_GetToken_DuringGC,3.15,,
-func,PyModule_New,3.2,,
-func,PyModule_NewObject,3.7,,
-func,PyModule_SetDocString,3.7,,
+function,PyModule_Add,3.13,,
+function,PyModule_AddFunctions,3.7,,
+function,PyModule_AddIntConstant,3.2,,
+function,PyModule_AddObject,3.2,,
+function,PyModule_AddObjectRef,3.10,,
+function,PyModule_AddStringConstant,3.2,,
+function,PyModule_AddType,3.10,,
+function,PyModule_Create2,3.2,,
+function,PyModule_Exec,3.15,,
+function,PyModule_ExecDef,3.7,,
+function,PyModule_FromDefAndSpec2,3.7,,
+function,PyModule_FromSlotsAndSpec,3.15,,
+function,PyModule_GetDef,3.2,,
+function,PyModule_GetDict,3.2,,
+function,PyModule_GetFilename,3.2,,
+function,PyModule_GetFilenameObject,3.2,,
+function,PyModule_GetName,3.2,,
+function,PyModule_GetNameObject,3.7,,
+function,PyModule_GetState,3.2,,
+function,PyModule_GetStateSize,3.15,,
+function,PyModule_GetState_DuringGC,3.15,,
+function,PyModule_GetToken,3.15,,
+function,PyModule_GetToken_DuringGC,3.15,,
+function,PyModule_New,3.2,,
+function,PyModule_NewObject,3.7,,
+function,PyModule_SetDocString,3.7,,
 data,PyModule_Type,3.2,,
-func,PyNumber_Absolute,3.2,,
-func,PyNumber_Add,3.2,,
-func,PyNumber_And,3.2,,
-func,PyNumber_AsSsize_t,3.2,,
-func,PyNumber_Check,3.2,,
-func,PyNumber_Divmod,3.2,,
-func,PyNumber_Float,3.2,,
-func,PyNumber_FloorDivide,3.2,,
-func,PyNumber_InPlaceAdd,3.2,,
-func,PyNumber_InPlaceAnd,3.2,,
-func,PyNumber_InPlaceFloorDivide,3.2,,
-func,PyNumber_InPlaceLshift,3.2,,
-func,PyNumber_InPlaceMatrixMultiply,3.7,,
-func,PyNumber_InPlaceMultiply,3.2,,
-func,PyNumber_InPlaceOr,3.2,,
-func,PyNumber_InPlacePower,3.2,,
-func,PyNumber_InPlaceRemainder,3.2,,
-func,PyNumber_InPlaceRshift,3.2,,
-func,PyNumber_InPlaceSubtract,3.2,,
-func,PyNumber_InPlaceTrueDivide,3.2,,
-func,PyNumber_InPlaceXor,3.2,,
-func,PyNumber_Index,3.2,,
-func,PyNumber_Invert,3.2,,
-func,PyNumber_Long,3.2,,
-func,PyNumber_Lshift,3.2,,
-func,PyNumber_MatrixMultiply,3.7,,
-func,PyNumber_Multiply,3.2,,
-func,PyNumber_Negative,3.2,,
-func,PyNumber_Or,3.2,,
-func,PyNumber_Positive,3.2,,
-func,PyNumber_Power,3.2,,
-func,PyNumber_Remainder,3.2,,
-func,PyNumber_Rshift,3.2,,
-func,PyNumber_Subtract,3.2,,
-func,PyNumber_ToBase,3.2,,
-func,PyNumber_TrueDivide,3.2,,
-func,PyNumber_Xor,3.2,,
-func,PyOS_AfterFork,3.2,on platforms with fork(),
-func,PyOS_AfterFork_Child,3.7,on platforms with fork(),
-func,PyOS_AfterFork_Parent,3.7,on platforms with fork(),
-func,PyOS_BeforeFork,3.7,on platforms with fork(),
-func,PyOS_CheckStack,3.7,on platforms with USE_STACKCHECK,
-func,PyOS_FSPath,3.6,,
+function,PyNumber_Absolute,3.2,,
+function,PyNumber_Add,3.2,,
+function,PyNumber_And,3.2,,
+function,PyNumber_AsSsize_t,3.2,,
+function,PyNumber_Check,3.2,,
+function,PyNumber_Divmod,3.2,,
+function,PyNumber_Float,3.2,,
+function,PyNumber_FloorDivide,3.2,,
+function,PyNumber_InPlaceAdd,3.2,,
+function,PyNumber_InPlaceAnd,3.2,,
+function,PyNumber_InPlaceFloorDivide,3.2,,
+function,PyNumber_InPlaceLshift,3.2,,
+function,PyNumber_InPlaceMatrixMultiply,3.7,,
+function,PyNumber_InPlaceMultiply,3.2,,
+function,PyNumber_InPlaceOr,3.2,,
+function,PyNumber_InPlacePower,3.2,,
+function,PyNumber_InPlaceRemainder,3.2,,
+function,PyNumber_InPlaceRshift,3.2,,
+function,PyNumber_InPlaceSubtract,3.2,,
+function,PyNumber_InPlaceTrueDivide,3.2,,
+function,PyNumber_InPlaceXor,3.2,,
+function,PyNumber_Index,3.2,,
+function,PyNumber_Invert,3.2,,
+function,PyNumber_Long,3.2,,
+function,PyNumber_Lshift,3.2,,
+function,PyNumber_MatrixMultiply,3.7,,
+function,PyNumber_Multiply,3.2,,
+function,PyNumber_Negative,3.2,,
+function,PyNumber_Or,3.2,,
+function,PyNumber_Positive,3.2,,
+function,PyNumber_Power,3.2,,
+function,PyNumber_Remainder,3.2,,
+function,PyNumber_Rshift,3.2,,
+function,PyNumber_Subtract,3.2,,
+function,PyNumber_ToBase,3.2,,
+function,PyNumber_TrueDivide,3.2,,
+function,PyNumber_Xor,3.2,,
+function,PyOS_AfterFork,3.2,on platforms with fork(),
+function,PyOS_AfterFork_Child,3.7,on platforms with fork(),
+function,PyOS_AfterFork_Parent,3.7,on platforms with fork(),
+function,PyOS_BeforeFork,3.7,on platforms with fork(),
+function,PyOS_CheckStack,3.7,on platforms with USE_STACKCHECK,
+function,PyOS_FSPath,3.6,,
 data,PyOS_InputHook,3.2,,
-func,PyOS_InterruptOccurred,3.2,,
-func,PyOS_double_to_string,3.2,,
-func,PyOS_getsig,3.2,,
-func,PyOS_mystricmp,3.2,,
-func,PyOS_mystrnicmp,3.2,,
-func,PyOS_setsig,3.2,,
-type,PyOS_sighandler_t,3.2,,
-func,PyOS_snprintf,3.2,,
-func,PyOS_string_to_double,3.2,,
-func,PyOS_strtol,3.2,,
-func,PyOS_strtoul,3.2,,
-func,PyOS_vsnprintf,3.2,,
-type,PyObject,3.2,,members
+function,PyOS_InterruptOccurred,3.2,,
+function,PyOS_double_to_string,3.2,,
+function,PyOS_getsig,3.2,,
+function,PyOS_mystricmp,3.2,,
+function,PyOS_mystrnicmp,3.2,,
+function,PyOS_setsig,3.2,,
+typedef,PyOS_sighandler_t,3.2,,
+function,PyOS_snprintf,3.2,,
+function,PyOS_string_to_double,3.2,,
+function,PyOS_strtol,3.2,,
+function,PyOS_strtoul,3.2,,
+function,PyOS_vsnprintf,3.2,,
+struct,PyObject,3.2,,members
 member,PyObject.ob_refcnt,3.2,,
 member,PyObject.ob_type,3.2,,
-func,PyObject_ASCII,3.2,,
-func,PyObject_AsFileDescriptor,3.2,,
-func,PyObject_Bytes,3.2,,
-func,PyObject_Call,3.2,,
-func,PyObject_CallFinalizerFromDealloc,3.15,,
-func,PyObject_CallFunction,3.2,,
-func,PyObject_CallFunctionObjArgs,3.2,,
-func,PyObject_CallMethod,3.2,,
-func,PyObject_CallMethodObjArgs,3.2,,
-func,PyObject_CallNoArgs,3.10,,
-func,PyObject_CallObject,3.2,,
-func,PyObject_Calloc,3.7,,
-func,PyObject_CheckBuffer,3.11,,
-func,PyObject_ClearWeakRefs,3.2,,
-func,PyObject_CopyData,3.11,,
-func,PyObject_DelAttr,3.13,,
-func,PyObject_DelAttrString,3.13,,
-func,PyObject_DelItem,3.2,,
-func,PyObject_DelItemString,3.2,,
-func,PyObject_Dir,3.2,,
-func,PyObject_Format,3.2,,
-func,PyObject_Free,3.2,,
-func,PyObject_GC_Del,3.2,,
-func,PyObject_GC_IsFinalized,3.9,,
-func,PyObject_GC_IsTracked,3.9,,
-func,PyObject_GC_Track,3.2,,
-func,PyObject_GC_UnTrack,3.2,,
-func,PyObject_GenericGetAttr,3.2,,
-func,PyObject_GenericGetDict,3.10,,
-func,PyObject_GenericSetAttr,3.2,,
-func,PyObject_GenericSetDict,3.7,,
-func,PyObject_GetAIter,3.10,,
-func,PyObject_GetAttr,3.2,,
-func,PyObject_GetAttrString,3.2,,
-func,PyObject_GetBuffer,3.11,,
-func,PyObject_GetItem,3.2,,
-func,PyObject_GetIter,3.2,,
-func,PyObject_GetOptionalAttr,3.13,,
-func,PyObject_GetOptionalAttrString,3.13,,
-func,PyObject_GetTypeData,3.12,,
-func,PyObject_GetTypeData_DuringGC,3.15,,
-func,PyObject_HasAttr,3.2,,
-func,PyObject_HasAttrString,3.2,,
-func,PyObject_HasAttrStringWithError,3.13,,
-func,PyObject_HasAttrWithError,3.13,,
-func,PyObject_Hash,3.2,,
-func,PyObject_HashNotImplemented,3.2,,
-func,PyObject_Init,3.2,,
-func,PyObject_InitVar,3.2,,
-func,PyObject_IsInstance,3.2,,
-func,PyObject_IsSubclass,3.2,,
-func,PyObject_IsTrue,3.2,,
-func,PyObject_Length,3.2,,
-func,PyObject_Malloc,3.2,,
-func,PyObject_Not,3.2,,
-func,PyObject_Realloc,3.2,,
-func,PyObject_Repr,3.2,,
-func,PyObject_RichCompare,3.2,,
-func,PyObject_RichCompareBool,3.2,,
-func,PyObject_SelfIter,3.2,,
-func,PyObject_SetAttr,3.2,,
-func,PyObject_SetAttrString,3.2,,
-func,PyObject_SetItem,3.2,,
-func,PyObject_Size,3.2,,
-func,PyObject_Str,3.2,,
-func,PyObject_Type,3.2,,
-func,PyObject_Vectorcall,3.12,,
-func,PyObject_VectorcallMethod,3.12,,
+function,PyObject_ASCII,3.2,,
+function,PyObject_AsFileDescriptor,3.2,,
+function,PyObject_Bytes,3.2,,
+function,PyObject_Call,3.2,,
+function,PyObject_CallFinalizerFromDealloc,3.15,,
+function,PyObject_CallFunction,3.2,,
+function,PyObject_CallFunctionObjArgs,3.2,,
+function,PyObject_CallMethod,3.2,,
+function,PyObject_CallMethodObjArgs,3.2,,
+function,PyObject_CallNoArgs,3.10,,
+function,PyObject_CallObject,3.2,,
+function,PyObject_Calloc,3.7,,
+function,PyObject_CheckBuffer,3.11,,
+function,PyObject_ClearWeakRefs,3.2,,
+function,PyObject_CopyData,3.11,,
+function,PyObject_DelAttr,3.13,,
+function,PyObject_DelAttrString,3.13,,
+function,PyObject_DelItem,3.2,,
+function,PyObject_DelItemString,3.2,,
+function,PyObject_Dir,3.2,,
+function,PyObject_Format,3.2,,
+function,PyObject_Free,3.2,,
+function,PyObject_GC_Del,3.2,,
+function,PyObject_GC_IsFinalized,3.9,,
+function,PyObject_GC_IsTracked,3.9,,
+function,PyObject_GC_Track,3.2,,
+function,PyObject_GC_UnTrack,3.2,,
+function,PyObject_GenericGetAttr,3.2,,
+function,PyObject_GenericGetDict,3.10,,
+function,PyObject_GenericSetAttr,3.2,,
+function,PyObject_GenericSetDict,3.7,,
+function,PyObject_GetAIter,3.10,,
+function,PyObject_GetAttr,3.2,,
+function,PyObject_GetAttrString,3.2,,
+function,PyObject_GetBuffer,3.11,,
+function,PyObject_GetItem,3.2,,
+function,PyObject_GetIter,3.2,,
+function,PyObject_GetOptionalAttr,3.13,,
+function,PyObject_GetOptionalAttrString,3.13,,
+function,PyObject_GetTypeData,3.12,,
+function,PyObject_GetTypeData_DuringGC,3.15,,
+function,PyObject_HasAttr,3.2,,
+function,PyObject_HasAttrString,3.2,,
+function,PyObject_HasAttrStringWithError,3.13,,
+function,PyObject_HasAttrWithError,3.13,,
+function,PyObject_Hash,3.2,,
+function,PyObject_HashNotImplemented,3.2,,
+function,PyObject_Init,3.2,,
+function,PyObject_InitVar,3.2,,
+function,PyObject_IsInstance,3.2,,
+function,PyObject_IsSubclass,3.2,,
+function,PyObject_IsTrue,3.2,,
+function,PyObject_Length,3.2,,
+function,PyObject_Malloc,3.2,,
+function,PyObject_Not,3.2,,
+function,PyObject_Realloc,3.2,,
+function,PyObject_Repr,3.2,,
+function,PyObject_RichCompare,3.2,,
+function,PyObject_RichCompareBool,3.2,,
+function,PyObject_SelfIter,3.2,,
+function,PyObject_SetAttr,3.2,,
+function,PyObject_SetAttrString,3.2,,
+function,PyObject_SetItem,3.2,,
+function,PyObject_Size,3.2,,
+function,PyObject_Str,3.2,,
+function,PyObject_Type,3.2,,
+function,PyObject_Vectorcall,3.12,,
+function,PyObject_VectorcallMethod,3.12,,
 data,PyProperty_Type,3.2,,
 data,PyRangeIter_Type,3.2,,
 data,PyRange_Type,3.2,,
 data,PyReversed_Type,3.2,,
-func,PySeqIter_New,3.2,,
+function,PySeqIter_New,3.2,,
 data,PySeqIter_Type,3.2,,
-func,PySequence_Check,3.2,,
-func,PySequence_Concat,3.2,,
-func,PySequence_Contains,3.2,,
-func,PySequence_Count,3.2,,
-func,PySequence_DelItem,3.2,,
-func,PySequence_DelSlice,3.2,,
-func,PySequence_Fast,3.2,,
-func,PySequence_GetItem,3.2,,
-func,PySequence_GetSlice,3.2,,
-func,PySequence_In,3.2,,
-func,PySequence_InPlaceConcat,3.2,,
-func,PySequence_InPlaceRepeat,3.2,,
-func,PySequence_Index,3.2,,
-func,PySequence_Length,3.2,,
-func,PySequence_List,3.2,,
-func,PySequence_Repeat,3.2,,
-func,PySequence_SetItem,3.2,,
-func,PySequence_SetSlice,3.2,,
-func,PySequence_Size,3.2,,
-func,PySequence_Tuple,3.2,,
+function,PySequence_Check,3.2,,
+function,PySequence_Concat,3.2,,
+function,PySequence_Contains,3.2,,
+function,PySequence_Count,3.2,,
+function,PySequence_DelItem,3.2,,
+function,PySequence_DelSlice,3.2,,
+function,PySequence_Fast,3.2,,
+function,PySequence_GetItem,3.2,,
+function,PySequence_GetSlice,3.2,,
+function,PySequence_In,3.2,,
+function,PySequence_InPlaceConcat,3.2,,
+function,PySequence_InPlaceRepeat,3.2,,
+function,PySequence_Index,3.2,,
+function,PySequence_Length,3.2,,
+function,PySequence_List,3.2,,
+function,PySequence_Repeat,3.2,,
+function,PySequence_SetItem,3.2,,
+function,PySequence_SetSlice,3.2,,
+function,PySequence_Size,3.2,,
+function,PySequence_Tuple,3.2,,
 data,PySetIter_Type,3.2,,
-func,PySet_Add,3.2,,
-func,PySet_Clear,3.2,,
-func,PySet_Contains,3.2,,
-func,PySet_Discard,3.2,,
-func,PySet_New,3.2,,
-func,PySet_Pop,3.2,,
-func,PySet_Size,3.2,,
+function,PySet_Add,3.2,,
+function,PySet_Clear,3.2,,
+function,PySet_Contains,3.2,,
+function,PySet_Discard,3.2,,
+function,PySet_New,3.2,,
+function,PySet_Pop,3.2,,
+function,PySet_Size,3.2,,
 data,PySet_Type,3.2,,
-func,PySlice_AdjustIndices,3.7,,
-func,PySlice_GetIndices,3.2,,
-func,PySlice_GetIndicesEx,3.2,,
-func,PySlice_New,3.2,,
+function,PySlice_AdjustIndices,3.7,,
+function,PySlice_GetIndices,3.2,,
+function,PySlice_GetIndicesEx,3.2,,
+function,PySlice_New,3.2,,
 data,PySlice_Type,3.2,,
-func,PySlice_Unpack,3.7,,
-type,PySlot,3.15,,full-abi
+function,PySlice_Unpack,3.7,,
+struct,PySlot,3.15,,full-abi
 macro,PySlot_DATA,3.15,,
 macro,PySlot_END,3.15,,
 macro,PySlot_FUNC,3.15,,
 macro,PySlot_INT64,3.15,,
-macro,PySlot_INTPTR,3.15,,
-macro,PySlot_OPTIONAL,3.15,,
+const,PySlot_INTPTR,3.15,,
+const,PySlot_OPTIONAL,3.15,,
 macro,PySlot_PTR,3.15,,
 macro,PySlot_PTR_STATIC,3.15,,
 macro,PySlot_SIZE,3.15,,
-macro,PySlot_STATIC,3.15,,
+const,PySlot_STATIC,3.15,,
 macro,PySlot_STATIC_DATA,3.15,,
 macro,PySlot_UINT64,3.15,,
-func,PyState_AddModule,3.3,,
-func,PyState_FindModule,3.2,,
-func,PyState_RemoveModule,3.3,,
-type,PyStructSequence_Desc,3.2,,full-abi
-type,PyStructSequence_Field,3.2,,full-abi
-func,PyStructSequence_GetItem,3.2,,
-func,PyStructSequence_New,3.2,,
-func,PyStructSequence_NewType,3.2,,
-func,PyStructSequence_SetItem,3.2,,
+function,PyState_AddModule,3.3,,
+function,PyState_FindModule,3.2,,
+function,PyState_RemoveModule,3.3,,
+struct,PyStructSequence_Desc,3.2,,full-abi
+struct,PyStructSequence_Field,3.2,,full-abi
+function,PyStructSequence_GetItem,3.2,,
+function,PyStructSequence_New,3.2,,
+function,PyStructSequence_NewType,3.2,,
+function,PyStructSequence_SetItem,3.2,,
 data,PyStructSequence_UnnamedField,3.11,,
 data,PySuper_Type,3.2,,
-func,PySys_Audit,3.13,,
-func,PySys_AuditTuple,3.13,,
-func,PySys_FormatStderr,3.2,,
-func,PySys_FormatStdout,3.2,,
-func,PySys_GetAttr,3.15,,
-func,PySys_GetAttrString,3.15,,
-func,PySys_GetObject,3.2,,
-func,PySys_GetOptionalAttr,3.15,,
-func,PySys_GetOptionalAttrString,3.15,,
-func,PySys_GetXOptions,3.7,,
-func,PySys_SetObject,3.2,,
-func,PySys_WriteStderr,3.2,,
-func,PySys_WriteStdout,3.2,,
-type,PyThreadState,3.2,,opaque
-type,PyThreadStateToken,3.15,,opaque
-func,PyThreadState_Clear,3.2,,
-func,PyThreadState_Delete,3.2,,
-func,PyThreadState_Ensure,3.15,,
-func,PyThreadState_EnsureFromView,3.15,,
-func,PyThreadState_Get,3.2,,
-func,PyThreadState_GetDict,3.2,,
-func,PyThreadState_GetFrame,3.10,,
-func,PyThreadState_GetID,3.10,,
-func,PyThreadState_GetInterpreter,3.10,,
-func,PyThreadState_New,3.2,,
-func,PyThreadState_Release,3.15,,
-func,PyThreadState_SetAsyncExc,3.2,,
-func,PyThreadState_Swap,3.2,,
-func,PyThread_GetInfo,3.3,,
-func,PyThread_ReInitTLS,3.2,,
-func,PyThread_acquire_lock,3.2,,
-func,PyThread_acquire_lock_timed,3.2,,
-func,PyThread_allocate_lock,3.2,,
-func,PyThread_create_key,3.2,,
-func,PyThread_delete_key,3.2,,
-func,PyThread_delete_key_value,3.2,,
-func,PyThread_exit_thread,3.2,,
-func,PyThread_free_lock,3.2,,
-func,PyThread_get_key_value,3.2,,
-func,PyThread_get_stacksize,3.2,,
-func,PyThread_get_thread_ident,3.2,,
-func,PyThread_get_thread_native_id,3.2,on platforms with native thread IDs,
-func,PyThread_init_thread,3.2,,
-func,PyThread_release_lock,3.2,,
-func,PyThread_set_key_value,3.2,,
-func,PyThread_set_stacksize,3.2,,
-func,PyThread_start_new_thread,3.2,,
-func,PyThread_tss_alloc,3.7,,
-func,PyThread_tss_create,3.7,,
-func,PyThread_tss_delete,3.7,,
-func,PyThread_tss_free,3.7,,
-func,PyThread_tss_get,3.7,,
-func,PyThread_tss_is_created,3.7,,
-func,PyThread_tss_set,3.7,,
-func,PyTraceBack_Here,3.2,,
-func,PyTraceBack_Print,3.2,,
+function,PySys_Audit,3.13,,
+function,PySys_AuditTuple,3.13,,
+function,PySys_FormatStderr,3.2,,
+function,PySys_FormatStdout,3.2,,
+function,PySys_GetAttr,3.15,,
+function,PySys_GetAttrString,3.15,,
+function,PySys_GetObject,3.2,,
+function,PySys_GetOptionalAttr,3.15,,
+function,PySys_GetOptionalAttrString,3.15,,
+function,PySys_GetXOptions,3.7,,
+function,PySys_SetObject,3.2,,
+function,PySys_WriteStderr,3.2,,
+function,PySys_WriteStdout,3.2,,
+struct,PyThreadState,3.2,,opaque
+struct,PyThreadStateToken,3.15,,opaque
+function,PyThreadState_Clear,3.2,,
+function,PyThreadState_Delete,3.2,,
+function,PyThreadState_Ensure,3.15,,
+function,PyThreadState_EnsureFromView,3.15,,
+function,PyThreadState_Get,3.2,,
+function,PyThreadState_GetDict,3.2,,
+function,PyThreadState_GetFrame,3.10,,
+function,PyThreadState_GetID,3.10,,
+function,PyThreadState_GetInterpreter,3.10,,
+function,PyThreadState_New,3.2,,
+function,PyThreadState_Release,3.15,,
+function,PyThreadState_SetAsyncExc,3.2,,
+function,PyThreadState_Swap,3.2,,
+function,PyThread_GetInfo,3.3,,
+function,PyThread_ReInitTLS,3.2,,
+function,PyThread_acquire_lock,3.2,,
+function,PyThread_acquire_lock_timed,3.2,,
+function,PyThread_allocate_lock,3.2,,
+function,PyThread_create_key,3.2,,
+function,PyThread_delete_key,3.2,,
+function,PyThread_delete_key_value,3.2,,
+function,PyThread_exit_thread,3.2,,
+function,PyThread_free_lock,3.2,,
+function,PyThread_get_key_value,3.2,,
+function,PyThread_get_stacksize,3.2,,
+function,PyThread_get_thread_ident,3.2,,
+function,PyThread_get_thread_native_id,3.2,on platforms with native thread IDs,
+function,PyThread_init_thread,3.2,,
+function,PyThread_release_lock,3.2,,
+function,PyThread_set_key_value,3.2,,
+function,PyThread_set_stacksize,3.2,,
+function,PyThread_start_new_thread,3.2,,
+function,PyThread_tss_alloc,3.7,,
+function,PyThread_tss_create,3.7,,
+function,PyThread_tss_delete,3.7,,
+function,PyThread_tss_free,3.7,,
+function,PyThread_tss_get,3.7,,
+function,PyThread_tss_is_created,3.7,,
+function,PyThread_tss_set,3.7,,
+function,PyTraceBack_Here,3.2,,
+function,PyTraceBack_Print,3.2,,
 data,PyTraceBack_Type,3.2,,
 data,PyTupleIter_Type,3.2,,
-func,PyTuple_GetItem,3.2,,
-func,PyTuple_GetSlice,3.2,,
-func,PyTuple_New,3.2,,
-func,PyTuple_Pack,3.2,,
-func,PyTuple_SetItem,3.2,,
-func,PyTuple_Size,3.2,,
+function,PyTuple_GetItem,3.2,,
+function,PyTuple_GetSlice,3.2,,
+function,PyTuple_New,3.2,,
+function,PyTuple_Pack,3.2,,
+function,PyTuple_SetItem,3.2,,
+function,PyTuple_Size,3.2,,
 data,PyTuple_Type,3.2,,
-type,PyTypeObject,3.2,,opaque
-func,PyType_ClearCache,3.2,,
-func,PyType_Freeze,3.14,,
-func,PyType_FromMetaclass,3.12,,
-func,PyType_FromModuleAndSpec,3.10,,
-func,PyType_FromSlots,3.15,,
-func,PyType_FromSpec,3.2,,
-func,PyType_FromSpecWithBases,3.3,,
-func,PyType_GenericAlloc,3.2,,
-func,PyType_GenericNew,3.2,,
-func,PyType_GetBaseByToken,3.14,,
-func,PyType_GetBaseByToken_DuringGC,3.15,,
-func,PyType_GetFlags,3.2,,
-func,PyType_GetFullyQualifiedName,3.13,,
-func,PyType_GetModule,3.10,,
-func,PyType_GetModuleByDef,3.13,,
-func,PyType_GetModuleByToken,3.15,,
-func,PyType_GetModuleByToken_DuringGC,3.15,,
-func,PyType_GetModuleName,3.13,,
-func,PyType_GetModuleState,3.10,,
-func,PyType_GetModuleState_DuringGC,3.15,,
-func,PyType_GetModule_DuringGC,3.15,,
-func,PyType_GetName,3.11,,
-func,PyType_GetQualName,3.11,,
-func,PyType_GetSlot,3.4,,
-func,PyType_GetTypeDataSize,3.12,,
-func,PyType_IsSubtype,3.2,,
-func,PyType_Modified,3.2,,
-func,PyType_Ready,3.2,,
-type,PyType_Slot,3.2,,full-abi
-type,PyType_Spec,3.2,,full-abi
+struct,PyTypeObject,3.2,,opaque
+function,PyType_ClearCache,3.2,,
+function,PyType_Freeze,3.14,,
+function,PyType_FromMetaclass,3.12,,
+function,PyType_FromModuleAndSpec,3.10,,
+function,PyType_FromSlots,3.15,,
+function,PyType_FromSpec,3.2,,
+function,PyType_FromSpecWithBases,3.3,,
+function,PyType_GenericAlloc,3.2,,
+function,PyType_GenericNew,3.2,,
+function,PyType_GetBaseByToken,3.14,,
+function,PyType_GetBaseByToken_DuringGC,3.15,,
+function,PyType_GetFlags,3.2,,
+function,PyType_GetFullyQualifiedName,3.13,,
+function,PyType_GetModule,3.10,,
+function,PyType_GetModuleByDef,3.13,,
+function,PyType_GetModuleByToken,3.15,,
+function,PyType_GetModuleByToken_DuringGC,3.15,,
+function,PyType_GetModuleName,3.13,,
+function,PyType_GetModuleState,3.10,,
+function,PyType_GetModuleState_DuringGC,3.15,,
+function,PyType_GetModule_DuringGC,3.15,,
+function,PyType_GetName,3.11,,
+function,PyType_GetQualName,3.11,,
+function,PyType_GetSlot,3.4,,
+function,PyType_GetTypeDataSize,3.12,,
+function,PyType_IsSubtype,3.2,,
+function,PyType_Modified,3.2,,
+function,PyType_Ready,3.2,,
+struct,PyType_Slot,3.2,,full-abi
+struct,PyType_Spec,3.2,,full-abi
 data,PyType_Type,3.2,,
-func,PyUnicodeDecodeError_Create,3.2,,
-func,PyUnicodeDecodeError_GetEncoding,3.2,,
-func,PyUnicodeDecodeError_GetEnd,3.2,,
-func,PyUnicodeDecodeError_GetObject,3.2,,
-func,PyUnicodeDecodeError_GetReason,3.2,,
-func,PyUnicodeDecodeError_GetStart,3.2,,
-func,PyUnicodeDecodeError_SetEnd,3.2,,
-func,PyUnicodeDecodeError_SetReason,3.2,,
-func,PyUnicodeDecodeError_SetStart,3.2,,
-func,PyUnicodeEncodeError_GetEncoding,3.2,,
-func,PyUnicodeEncodeError_GetEnd,3.2,,
-func,PyUnicodeEncodeError_GetObject,3.2,,
-func,PyUnicodeEncodeError_GetReason,3.2,,
-func,PyUnicodeEncodeError_GetStart,3.2,,
-func,PyUnicodeEncodeError_SetEnd,3.2,,
-func,PyUnicodeEncodeError_SetReason,3.2,,
-func,PyUnicodeEncodeError_SetStart,3.2,,
+function,PyUnicodeDecodeError_Create,3.2,,
+function,PyUnicodeDecodeError_GetEncoding,3.2,,
+function,PyUnicodeDecodeError_GetEnd,3.2,,
+function,PyUnicodeDecodeError_GetObject,3.2,,
+function,PyUnicodeDecodeError_GetReason,3.2,,
+function,PyUnicodeDecodeError_GetStart,3.2,,
+function,PyUnicodeDecodeError_SetEnd,3.2,,
+function,PyUnicodeDecodeError_SetReason,3.2,,
+function,PyUnicodeDecodeError_SetStart,3.2,,
+function,PyUnicodeEncodeError_GetEncoding,3.2,,
+function,PyUnicodeEncodeError_GetEnd,3.2,,
+function,PyUnicodeEncodeError_GetObject,3.2,,
+function,PyUnicodeEncodeError_GetReason,3.2,,
+function,PyUnicodeEncodeError_GetStart,3.2,,
+function,PyUnicodeEncodeError_SetEnd,3.2,,
+function,PyUnicodeEncodeError_SetReason,3.2,,
+function,PyUnicodeEncodeError_SetStart,3.2,,
 data,PyUnicodeIter_Type,3.2,,
-func,PyUnicodeTranslateError_GetEnd,3.2,,
-func,PyUnicodeTranslateError_GetObject,3.2,,
-func,PyUnicodeTranslateError_GetReason,3.2,,
-func,PyUnicodeTranslateError_GetStart,3.2,,
-func,PyUnicodeTranslateError_SetEnd,3.2,,
-func,PyUnicodeTranslateError_SetReason,3.2,,
-func,PyUnicodeTranslateError_SetStart,3.2,,
-func,PyUnicode_Append,3.2,,
-func,PyUnicode_AppendAndDel,3.2,,
-func,PyUnicode_AsASCIIString,3.2,,
-func,PyUnicode_AsCharmapString,3.2,,
-func,PyUnicode_AsEncodedString,3.2,,
-func,PyUnicode_AsLatin1String,3.2,,
-func,PyUnicode_AsMBCSString,3.7,on Windows,
-func,PyUnicode_AsRawUnicodeEscapeString,3.2,,
-func,PyUnicode_AsUCS4,3.7,,
-func,PyUnicode_AsUCS4Copy,3.7,,
-func,PyUnicode_AsUTF16String,3.2,,
-func,PyUnicode_AsUTF32String,3.2,,
-func,PyUnicode_AsUTF8AndSize,3.10,,
-func,PyUnicode_AsUTF8String,3.2,,
-func,PyUnicode_AsUnicodeEscapeString,3.2,,
-func,PyUnicode_AsWideChar,3.2,,
-func,PyUnicode_AsWideCharString,3.7,,
-func,PyUnicode_BuildEncodingMap,3.2,,
-func,PyUnicode_Compare,3.2,,
-func,PyUnicode_CompareWithASCIIString,3.2,,
-func,PyUnicode_Concat,3.2,,
-func,PyUnicode_Contains,3.2,,
-func,PyUnicode_Count,3.2,,
-func,PyUnicode_Decode,3.2,,
-func,PyUnicode_DecodeASCII,3.2,,
-func,PyUnicode_DecodeCharmap,3.2,,
-func,PyUnicode_DecodeCodePageStateful,3.7,on Windows,
-func,PyUnicode_DecodeFSDefault,3.2,,
-func,PyUnicode_DecodeFSDefaultAndSize,3.2,,
-func,PyUnicode_DecodeLatin1,3.2,,
-func,PyUnicode_DecodeLocale,3.7,,
-func,PyUnicode_DecodeLocaleAndSize,3.7,,
-func,PyUnicode_DecodeMBCS,3.7,on Windows,
-func,PyUnicode_DecodeMBCSStateful,3.7,on Windows,
-func,PyUnicode_DecodeRawUnicodeEscape,3.2,,
-func,PyUnicode_DecodeUTF16,3.2,,
-func,PyUnicode_DecodeUTF16Stateful,3.2,,
-func,PyUnicode_DecodeUTF32,3.2,,
-func,PyUnicode_DecodeUTF32Stateful,3.2,,
-func,PyUnicode_DecodeUTF7,3.2,,
-func,PyUnicode_DecodeUTF7Stateful,3.2,,
-func,PyUnicode_DecodeUTF8,3.2,,
-func,PyUnicode_DecodeUTF8Stateful,3.2,,
-func,PyUnicode_DecodeUnicodeEscape,3.2,,
-func,PyUnicode_EncodeCodePage,3.7,on Windows,
-func,PyUnicode_EncodeFSDefault,3.2,,
-func,PyUnicode_EncodeLocale,3.7,,
-func,PyUnicode_Equal,3.14,,
-func,PyUnicode_EqualToUTF8,3.13,,
-func,PyUnicode_EqualToUTF8AndSize,3.13,,
-func,PyUnicode_FSConverter,3.2,,
-func,PyUnicode_FSDecoder,3.2,,
-func,PyUnicode_Find,3.2,,
-func,PyUnicode_FindChar,3.7,,
-func,PyUnicode_Format,3.2,,
-func,PyUnicode_FromEncodedObject,3.2,,
-func,PyUnicode_FromFormat,3.2,,
-func,PyUnicode_FromFormatV,3.2,,
-func,PyUnicode_FromObject,3.2,,
-func,PyUnicode_FromOrdinal,3.2,,
-func,PyUnicode_FromString,3.2,,
-func,PyUnicode_FromStringAndSize,3.2,,
-func,PyUnicode_FromWideChar,3.2,,
-func,PyUnicode_GetDefaultEncoding,3.2,,
-func,PyUnicode_GetLength,3.7,,
-func,PyUnicode_InternFromString,3.2,,
-func,PyUnicode_InternInPlace,3.2,,
-func,PyUnicode_IsIdentifier,3.2,,
-func,PyUnicode_Join,3.2,,
-func,PyUnicode_Partition,3.2,,
-func,PyUnicode_RPartition,3.2,,
-func,PyUnicode_RSplit,3.2,,
-func,PyUnicode_ReadChar,3.7,,
-func,PyUnicode_Replace,3.2,,
-func,PyUnicode_Resize,3.2,,
-func,PyUnicode_RichCompare,3.2,,
-func,PyUnicode_Split,3.2,,
-func,PyUnicode_Splitlines,3.2,,
-func,PyUnicode_Substring,3.7,,
-func,PyUnicode_Tailmatch,3.2,,
-func,PyUnicode_Translate,3.2,,
+function,PyUnicodeTranslateError_GetEnd,3.2,,
+function,PyUnicodeTranslateError_GetObject,3.2,,
+function,PyUnicodeTranslateError_GetReason,3.2,,
+function,PyUnicodeTranslateError_GetStart,3.2,,
+function,PyUnicodeTranslateError_SetEnd,3.2,,
+function,PyUnicodeTranslateError_SetReason,3.2,,
+function,PyUnicodeTranslateError_SetStart,3.2,,
+function,PyUnicode_Append,3.2,,
+function,PyUnicode_AppendAndDel,3.2,,
+function,PyUnicode_AsASCIIString,3.2,,
+function,PyUnicode_AsCharmapString,3.2,,
+function,PyUnicode_AsEncodedString,3.2,,
+function,PyUnicode_AsLatin1String,3.2,,
+function,PyUnicode_AsMBCSString,3.7,on Windows,
+function,PyUnicode_AsRawUnicodeEscapeString,3.2,,
+function,PyUnicode_AsUCS4,3.7,,
+function,PyUnicode_AsUCS4Copy,3.7,,
+function,PyUnicode_AsUTF16String,3.2,,
+function,PyUnicode_AsUTF32String,3.2,,
+function,PyUnicode_AsUTF8AndSize,3.10,,
+function,PyUnicode_AsUTF8String,3.2,,
+function,PyUnicode_AsUnicodeEscapeString,3.2,,
+function,PyUnicode_AsWideChar,3.2,,
+function,PyUnicode_AsWideCharString,3.7,,
+function,PyUnicode_BuildEncodingMap,3.2,,
+function,PyUnicode_Compare,3.2,,
+function,PyUnicode_CompareWithASCIIString,3.2,,
+function,PyUnicode_Concat,3.2,,
+function,PyUnicode_Contains,3.2,,
+function,PyUnicode_Count,3.2,,
+function,PyUnicode_Decode,3.2,,
+function,PyUnicode_DecodeASCII,3.2,,
+function,PyUnicode_DecodeCharmap,3.2,,
+function,PyUnicode_DecodeCodePageStateful,3.7,on Windows,
+function,PyUnicode_DecodeFSDefault,3.2,,
+function,PyUnicode_DecodeFSDefaultAndSize,3.2,,
+function,PyUnicode_DecodeLatin1,3.2,,
+function,PyUnicode_DecodeLocale,3.7,,
+function,PyUnicode_DecodeLocaleAndSize,3.7,,
+function,PyUnicode_DecodeMBCS,3.7,on Windows,
+function,PyUnicode_DecodeMBCSStateful,3.7,on Windows,
+function,PyUnicode_DecodeRawUnicodeEscape,3.2,,
+function,PyUnicode_DecodeUTF16,3.2,,
+function,PyUnicode_DecodeUTF16Stateful,3.2,,
+function,PyUnicode_DecodeUTF32,3.2,,
+function,PyUnicode_DecodeUTF32Stateful,3.2,,
+function,PyUnicode_DecodeUTF7,3.2,,
+function,PyUnicode_DecodeUTF7Stateful,3.2,,
+function,PyUnicode_DecodeUTF8,3.2,,
+function,PyUnicode_DecodeUTF8Stateful,3.2,,
+function,PyUnicode_DecodeUnicodeEscape,3.2,,
+function,PyUnicode_EncodeCodePage,3.7,on Windows,
+function,PyUnicode_EncodeFSDefault,3.2,,
+function,PyUnicode_EncodeLocale,3.7,,
+function,PyUnicode_Equal,3.14,,
+function,PyUnicode_EqualToUTF8,3.13,,
+function,PyUnicode_EqualToUTF8AndSize,3.13,,
+function,PyUnicode_FSConverter,3.2,,
+function,PyUnicode_FSDecoder,3.2,,
+function,PyUnicode_Find,3.2,,
+function,PyUnicode_FindChar,3.7,,
+function,PyUnicode_Format,3.2,,
+function,PyUnicode_FromEncodedObject,3.2,,
+function,PyUnicode_FromFormat,3.2,,
+function,PyUnicode_FromFormatV,3.2,,
+function,PyUnicode_FromObject,3.2,,
+function,PyUnicode_FromOrdinal,3.2,,
+function,PyUnicode_FromString,3.2,,
+function,PyUnicode_FromStringAndSize,3.2,,
+function,PyUnicode_FromWideChar,3.2,,
+function,PyUnicode_GetDefaultEncoding,3.2,,
+function,PyUnicode_GetLength,3.7,,
+function,PyUnicode_InternFromString,3.2,,
+function,PyUnicode_InternInPlace,3.2,,
+function,PyUnicode_IsIdentifier,3.2,,
+function,PyUnicode_Join,3.2,,
+function,PyUnicode_Partition,3.2,,
+function,PyUnicode_RPartition,3.2,,
+function,PyUnicode_RSplit,3.2,,
+function,PyUnicode_ReadChar,3.7,,
+function,PyUnicode_Replace,3.2,,
+function,PyUnicode_Resize,3.2,,
+function,PyUnicode_RichCompare,3.2,,
+function,PyUnicode_Split,3.2,,
+function,PyUnicode_Splitlines,3.2,,
+function,PyUnicode_Substring,3.7,,
+function,PyUnicode_Tailmatch,3.2,,
+function,PyUnicode_Translate,3.2,,
 data,PyUnicode_Type,3.2,,
-func,PyUnicode_WriteChar,3.7,,
-type,PyVarObject,3.2,,members
+function,PyUnicode_WriteChar,3.7,,
+struct,PyVarObject,3.2,,members
 member,PyVarObject.ob_base,3.2,,
 member,PyVarObject.ob_size,3.2,,
-func,PyVectorcall_Call,3.12,,
-func,PyVectorcall_NARGS,3.12,,
-type,PyWeakReference,3.2,,opaque
-func,PyWeakref_GetRef,3.13,,
-func,PyWeakref_NewProxy,3.2,,
-func,PyWeakref_NewRef,3.2,,
+function,PyVectorcall_Call,3.12,,
+function,PyVectorcall_NARGS,3.12,,
+struct,PyWeakReference,3.2,,opaque
+function,PyWeakref_GetRef,3.13,,
+function,PyWeakref_NewProxy,3.2,,
+function,PyWeakref_NewRef,3.2,,
 data,PyWrapperDescr_Type,3.2,,
-func,PyWrapper_New,3.2,,
+function,PyWrapper_New,3.2,,
 data,PyZip_Type,3.2,,
-macro,Py_ASNATIVEBYTES_ALLOW_INDEX,3.14,,
-macro,Py_ASNATIVEBYTES_BIG_ENDIAN,3.14,,
-macro,Py_ASNATIVEBYTES_DEFAULTS,3.14,,
-macro,Py_ASNATIVEBYTES_LITTLE_ENDIAN,3.14,,
-macro,Py_ASNATIVEBYTES_NATIVE_ENDIAN,3.14,,
-macro,Py_ASNATIVEBYTES_REJECT_NEGATIVE,3.14,,
-macro,Py_ASNATIVEBYTES_UNSIGNED_BUFFER,3.14,,
-macro,Py_AUDIT_READ,3.12,,
-func,Py_AddPendingCall,3.2,,
-func,Py_AtExit,3.2,,
+const,Py_ASNATIVEBYTES_ALLOW_INDEX,3.14,,
+const,Py_ASNATIVEBYTES_BIG_ENDIAN,3.14,,
+const,Py_ASNATIVEBYTES_DEFAULTS,3.14,,
+const,Py_ASNATIVEBYTES_LITTLE_ENDIAN,3.14,,
+const,Py_ASNATIVEBYTES_NATIVE_ENDIAN,3.14,,
+const,Py_ASNATIVEBYTES_REJECT_NEGATIVE,3.14,,
+const,Py_ASNATIVEBYTES_UNSIGNED_BUFFER,3.14,,
+const,Py_AUDIT_READ,3.12,,
+function,Py_AddPendingCall,3.2,,
+function,Py_AtExit,3.2,,
 macro,Py_BEGIN_ALLOW_THREADS,3.2,,
 macro,Py_BEGIN_CRITICAL_SECTION,3.15,,
 macro,Py_BEGIN_CRITICAL_SECTION2,3.15,,
 macro,Py_BLOCK_THREADS,3.2,,
-func,Py_BuildValue,3.2,,
-func,Py_BytesMain,3.8,,
-func,Py_CompileString,3.2,,
-func,Py_DecRef,3.2,,
-func,Py_DecodeLocale,3.7,,
+function,Py_BuildValue,3.2,,
+function,Py_BytesMain,3.8,,
+macro,Py_CLEAR,3.2,,
+function,Py_CompileString,3.2,,
+macro,Py_DECREF,3.2,,
+function,Py_DecRef,3.2,,
+function,Py_DecodeLocale,3.7,,
 macro,Py_END_ALLOW_THREADS,3.2,,
 macro,Py_END_CRITICAL_SECTION,3.15,,
 macro,Py_END_CRITICAL_SECTION2,3.15,,
-func,Py_EncodeLocale,3.7,,
-func,Py_EndInterpreter,3.2,,
-func,Py_EnterRecursiveCall,3.9,,
-func,Py_Exit,3.2,,
-func,Py_FatalError,3.2,,
-func,Py_Finalize,3.2,,
-func,Py_FinalizeEx,3.6,,
-func,Py_GenericAlias,3.9,,
+function,Py_EncodeLocale,3.7,,
+function,Py_EndInterpreter,3.2,,
+function,Py_EnterRecursiveCall,3.9,,
+function,Py_Exit,3.2,,
+function,Py_FatalError,3.2,,
+function,Py_Finalize,3.2,,
+function,Py_FinalizeEx,3.6,,
+function,Py_GenericAlias,3.9,,
 data,Py_GenericAliasType,3.9,,
-func,Py_GetBuildInfo,3.2,,
-func,Py_GetCompiler,3.2,,
-func,Py_GetConstant,3.13,,
-func,Py_GetConstantBorrowed,3.13,,
-func,Py_GetCopyright,3.2,,
-func,Py_GetPlatform,3.2,,
-func,Py_GetRecursionLimit,3.2,,
-func,Py_GetVersion,3.2,,
-func,Py_HashBuffer,3.16,,
-func,Py_IS_TYPE,3.15,,
-func,Py_IncRef,3.2,,
-func,Py_Initialize,3.2,,
-func,Py_InitializeEx,3.2,,
-func,Py_Is,3.10,,
-func,Py_IsFalse,3.10,,
-func,Py_IsFinalizing,3.13,,
-func,Py_IsInitialized,3.2,,
-func,Py_IsNone,3.10,,
-func,Py_IsTrue,3.10,,
-func,Py_LeaveRecursiveCall,3.9,,
-func,Py_Main,3.2,,
-func,Py_MakePendingCalls,3.2,,
-func,Py_NewInterpreter,3.2,,
-func,Py_NewRef,3.10,,
-func,Py_PACK_FULL_VERSION,3.14,,
-func,Py_PACK_VERSION,3.14,,
-macro,Py_READONLY,3.12,,
-func,Py_REFCNT,3.14,,
-macro,Py_RELATIVE_OFFSET,3.12,,
-func,Py_ReprEnter,3.2,,
-func,Py_ReprLeave,3.2,,
+function,Py_GetBuildInfo,3.2,,
+function,Py_GetCompiler,3.2,,
+function,Py_GetConstant,3.13,,
+function,Py_GetConstantBorrowed,3.13,,
+function,Py_GetCopyright,3.2,,
+function,Py_GetPlatform,3.2,,
+function,Py_GetRecursionLimit,3.2,,
+function,Py_GetVersion,3.2,,
+function,Py_HashBuffer,3.16,,
+macro,Py_INCREF,3.2,,
+function,Py_IS_TYPE,3.15,,
+function,Py_IncRef,3.2,,
+function,Py_Initialize,3.2,,
+function,Py_InitializeEx,3.2,,
+function,Py_Is,3.10,,
+function,Py_IsFalse,3.10,,
+function,Py_IsFinalizing,3.13,,
+function,Py_IsInitialized,3.2,,
+function,Py_IsNone,3.10,,
+function,Py_IsTrue,3.10,,
+function,Py_LeaveRecursiveCall,3.9,,
+function,Py_Main,3.2,,
+function,Py_MakePendingCalls,3.2,,
+function,Py_NewInterpreter,3.2,,
+function,Py_NewRef,3.10,,
+function,Py_PACK_FULL_VERSION,3.14,,
+function,Py_PACK_VERSION,3.14,,
+const,Py_READONLY,3.12,,
+function,Py_REFCNT,3.14,,
+const,Py_RELATIVE_OFFSET,3.12,,
+function,Py_ReprEnter,3.2,,
+function,Py_ReprLeave,3.2,,
 macro,Py_SETREF,3.16,,
-func,Py_SET_SIZE,3.15,,
-func,Py_SIZE,3.15,,
-func,Py_SetRecursionLimit,3.2,,
-macro,Py_TPFLAGS_BASETYPE,3.2,,
-macro,Py_TPFLAGS_DEFAULT,3.2,,
-macro,Py_TPFLAGS_HAVE_GC,3.2,,
-macro,Py_TPFLAGS_HAVE_VECTORCALL,3.12,,
-macro,Py_TPFLAGS_ITEMS_AT_END,3.12,,
-macro,Py_TPFLAGS_METHOD_DESCRIPTOR,3.8,,
-macro,Py_TP_USE_SPEC,3.14,,
-func,Py_TYPE,3.14,,
-macro,Py_T_BOOL,3.12,,
-macro,Py_T_BYTE,3.12,,
-macro,Py_T_CHAR,3.12,,
-macro,Py_T_DOUBLE,3.12,,
-macro,Py_T_FLOAT,3.12,,
-macro,Py_T_INT,3.12,,
-macro,Py_T_LONG,3.12,,
-macro,Py_T_LONGLONG,3.12,,
-macro,Py_T_OBJECT_EX,3.12,,
-macro,Py_T_PYSSIZET,3.12,,
-macro,Py_T_SHORT,3.12,,
-macro,Py_T_STRING,3.12,,
-macro,Py_T_STRING_INPLACE,3.12,,
-macro,Py_T_UBYTE,3.12,,
-macro,Py_T_UINT,3.12,,
-macro,Py_T_ULONG,3.12,,
-macro,Py_T_ULONGLONG,3.12,,
-macro,Py_T_USHORT,3.12,,
-type,Py_UCS4,3.2,,
+macro,Py_SET_REFCNT,3.9,,
+function,Py_SET_SIZE,3.15,,
+macro,Py_SET_TYPE,3.9,,
+function,Py_SIZE,3.15,,
+function,Py_SetRecursionLimit,3.2,,
+const,Py_TPFLAGS_BASETYPE,3.2,,
+const,Py_TPFLAGS_DEFAULT,3.2,,
+const,Py_TPFLAGS_HAVE_GC,3.2,,
+const,Py_TPFLAGS_HAVE_VECTORCALL,3.12,,
+const,Py_TPFLAGS_ITEMS_AT_END,3.12,,
+const,Py_TPFLAGS_METHOD_DESCRIPTOR,3.8,,
+const,Py_TP_USE_SPEC,3.14,,
+function,Py_TYPE,3.14,,
+const,Py_T_BOOL,3.12,,
+const,Py_T_BYTE,3.12,,
+const,Py_T_CHAR,3.12,,
+const,Py_T_DOUBLE,3.12,,
+const,Py_T_FLOAT,3.12,,
+const,Py_T_INT,3.12,,
+const,Py_T_LONG,3.12,,
+const,Py_T_LONGLONG,3.12,,
+const,Py_T_OBJECT_EX,3.12,,
+const,Py_T_PYSSIZET,3.12,,
+const,Py_T_SHORT,3.12,,
+const,Py_T_STRING,3.12,,
+const,Py_T_STRING_INPLACE,3.12,,
+const,Py_T_UBYTE,3.12,,
+const,Py_T_UINT,3.12,,
+const,Py_T_ULONG,3.12,,
+const,Py_T_ULONGLONG,3.12,,
+const,Py_T_USHORT,3.12,,
+typedef,Py_UCS4,3.2,,
 macro,Py_UNBLOCK_THREADS,3.2,,
-func,Py_VaBuildValue,3.2,,
+function,Py_VaBuildValue,3.2,,
 data,Py_Version,3.11,,
-func,Py_XNewRef,3.10,,
+macro,Py_XDECREF,3.2,,
+macro,Py_XINCREF,3.2,,
+function,Py_XNewRef,3.10,,
 macro,Py_XSETREF,3.16,,
-macro,Py_am_aiter,3.5,,
-macro,Py_am_anext,3.5,,
-macro,Py_am_await,3.5,,
-macro,Py_am_send,3.10,,
-macro,Py_bf_getbuffer,3.11,,
-macro,Py_bf_releasebuffer,3.11,,
-type,Py_buffer,3.11,,full-abi
-type,Py_intptr_t,3.2,,
-macro,Py_mod_abi,3.15,,
-macro,Py_mod_create,3.5,,
-macro,Py_mod_doc,3.15,,
-macro,Py_mod_exec,3.5,,
-macro,Py_mod_gil,3.13,,
-macro,Py_mod_methods,3.15,,
-macro,Py_mod_multiple_interpreters,3.12,,
-macro,Py_mod_name,3.15,,
-macro,Py_mod_slots,3.15,,
-macro,Py_mod_state_clear,3.15,,
-macro,Py_mod_state_free,3.15,,
-macro,Py_mod_state_size,3.15,,
-macro,Py_mod_state_traverse,3.15,,
-macro,Py_mod_token,3.15,,
-macro,Py_mp_ass_subscript,3.2,,
-macro,Py_mp_length,3.2,,
-macro,Py_mp_subscript,3.2,,
-macro,Py_nb_absolute,3.2,,
-macro,Py_nb_add,3.2,,
-macro,Py_nb_and,3.2,,
-macro,Py_nb_bool,3.2,,
-macro,Py_nb_divmod,3.2,,
-macro,Py_nb_float,3.2,,
-macro,Py_nb_floor_divide,3.2,,
-macro,Py_nb_index,3.2,,
-macro,Py_nb_inplace_add,3.2,,
-macro,Py_nb_inplace_and,3.2,,
-macro,Py_nb_inplace_floor_divide,3.2,,
-macro,Py_nb_inplace_lshift,3.2,,
-macro,Py_nb_inplace_matrix_multiply,3.5,,
-macro,Py_nb_inplace_multiply,3.2,,
-macro,Py_nb_inplace_or,3.2,,
-macro,Py_nb_inplace_power,3.2,,
-macro,Py_nb_inplace_remainder,3.2,,
-macro,Py_nb_inplace_rshift,3.2,,
-macro,Py_nb_inplace_subtract,3.2,,
-macro,Py_nb_inplace_true_divide,3.2,,
-macro,Py_nb_inplace_xor,3.2,,
-macro,Py_nb_int,3.2,,
-macro,Py_nb_invert,3.2,,
-macro,Py_nb_lshift,3.2,,
-macro,Py_nb_matrix_multiply,3.5,,
-macro,Py_nb_multiply,3.2,,
-macro,Py_nb_negative,3.2,,
-macro,Py_nb_or,3.2,,
-macro,Py_nb_positive,3.2,,
-macro,Py_nb_power,3.2,,
-macro,Py_nb_remainder,3.2,,
-macro,Py_nb_rshift,3.2,,
-macro,Py_nb_subtract,3.2,,
-macro,Py_nb_true_divide,3.2,,
-macro,Py_nb_xor,3.2,,
-macro,Py_slot_end,3.15,,
-macro,Py_slot_invalid,3.15,,
-macro,Py_slot_subslots,3.15,,
-macro,Py_sq_ass_item,3.2,,
-macro,Py_sq_concat,3.2,,
-macro,Py_sq_contains,3.2,,
-macro,Py_sq_inplace_concat,3.2,,
-macro,Py_sq_inplace_repeat,3.2,,
-macro,Py_sq_item,3.2,,
-macro,Py_sq_length,3.2,,
-macro,Py_sq_repeat,3.2,,
-type,Py_ssize_t,3.2,,
-macro,Py_tp_alloc,3.2,,
-macro,Py_tp_base,3.2,,
-macro,Py_tp_bases,3.2,,
-macro,Py_tp_basicsize,3.15,,
-macro,Py_tp_call,3.2,,
-macro,Py_tp_clear,3.2,,
-macro,Py_tp_dealloc,3.2,,
-macro,Py_tp_del,3.2,,
-macro,Py_tp_descr_get,3.2,,
-macro,Py_tp_descr_set,3.2,,
-macro,Py_tp_doc,3.2,,
-macro,Py_tp_extra_basicsize,3.15,,
-macro,Py_tp_finalize,3.5,,
-macro,Py_tp_flags,3.15,,
-macro,Py_tp_free,3.2,,
-macro,Py_tp_getattr,3.2,,
-macro,Py_tp_getattro,3.2,,
-macro,Py_tp_getset,3.2,,
-macro,Py_tp_hash,3.2,,
-macro,Py_tp_init,3.2,,
-macro,Py_tp_is_gc,3.2,,
-macro,Py_tp_itemsize,3.15,,
-macro,Py_tp_iter,3.2,,
-macro,Py_tp_iternext,3.2,,
-macro,Py_tp_members,3.2,,
-macro,Py_tp_metaclass,3.15,,
-macro,Py_tp_methods,3.2,,
-macro,Py_tp_module,3.15,,
-macro,Py_tp_name,3.15,,
-macro,Py_tp_new,3.2,,
-macro,Py_tp_repr,3.2,,
-macro,Py_tp_richcompare,3.2,,
-macro,Py_tp_setattr,3.2,,
-macro,Py_tp_setattro,3.2,,
-macro,Py_tp_slots,3.15,,
-macro,Py_tp_str,3.2,,
-macro,Py_tp_token,3.14,,
-macro,Py_tp_traverse,3.2,,
-macro,Py_tp_vectorcall,3.14,,
-type,Py_uintptr_t,3.2,,
-type,allocfunc,3.2,,
-type,binaryfunc,3.2,,
-type,descrgetfunc,3.2,,
-type,descrsetfunc,3.2,,
-type,destructor,3.2,,
-type,getattrfunc,3.2,,
-type,getattrofunc,3.2,,
-type,getbufferproc,3.12,,
-type,getiterfunc,3.2,,
-type,getter,3.2,,
-type,hashfunc,3.2,,
-type,initproc,3.2,,
-type,inquiry,3.2,,
-type,iternextfunc,3.2,,
-type,lenfunc,3.2,,
-type,newfunc,3.2,,
-type,objobjargproc,3.2,,
-type,objobjproc,3.2,,
-type,releasebufferproc,3.12,,
-type,reprfunc,3.2,,
-type,richcmpfunc,3.2,,
-type,setattrfunc,3.2,,
-type,setattrofunc,3.2,,
-type,setter,3.2,,
-type,ssizeargfunc,3.2,,
-type,ssizeobjargproc,3.2,,
-type,ssizessizeargfunc,3.2,,
-type,ssizessizeobjargproc,3.2,,
-type,symtable,3.2,,opaque
-type,ternaryfunc,3.2,,
-type,traverseproc,3.2,,
-type,unaryfunc,3.2,,
-type,vectorcallfunc,3.12,,
-type,visitproc,3.2,,
+const,Py_am_aiter,3.5,,
+const,Py_am_anext,3.5,,
+const,Py_am_await,3.5,,
+const,Py_am_send,3.10,,
+const,Py_bf_getbuffer,3.11,,
+const,Py_bf_releasebuffer,3.11,,
+struct,Py_buffer,3.11,,full-abi
+typedef,Py_intptr_t,3.2,,
+const,Py_mod_abi,3.15,,
+const,Py_mod_create,3.5,,
+const,Py_mod_doc,3.15,,
+const,Py_mod_exec,3.5,,
+const,Py_mod_gil,3.13,,
+const,Py_mod_methods,3.15,,
+const,Py_mod_multiple_interpreters,3.12,,
+const,Py_mod_name,3.15,,
+const,Py_mod_slots,3.15,,
+const,Py_mod_state_clear,3.15,,
+const,Py_mod_state_free,3.15,,
+const,Py_mod_state_size,3.15,,
+const,Py_mod_state_traverse,3.15,,
+const,Py_mod_token,3.15,,
+const,Py_mp_ass_subscript,3.2,,
+const,Py_mp_length,3.2,,
+const,Py_mp_subscript,3.2,,
+const,Py_nb_absolute,3.2,,
+const,Py_nb_add,3.2,,
+const,Py_nb_and,3.2,,
+const,Py_nb_bool,3.2,,
+const,Py_nb_divmod,3.2,,
+const,Py_nb_float,3.2,,
+const,Py_nb_floor_divide,3.2,,
+const,Py_nb_index,3.2,,
+const,Py_nb_inplace_add,3.2,,
+const,Py_nb_inplace_and,3.2,,
+const,Py_nb_inplace_floor_divide,3.2,,
+const,Py_nb_inplace_lshift,3.2,,
+const,Py_nb_inplace_matrix_multiply,3.5,,
+const,Py_nb_inplace_multiply,3.2,,
+const,Py_nb_inplace_or,3.2,,
+const,Py_nb_inplace_power,3.2,,
+const,Py_nb_inplace_remainder,3.2,,
+const,Py_nb_inplace_rshift,3.2,,
+const,Py_nb_inplace_subtract,3.2,,
+const,Py_nb_inplace_true_divide,3.2,,
+const,Py_nb_inplace_xor,3.2,,
+const,Py_nb_int,3.2,,
+const,Py_nb_invert,3.2,,
+const,Py_nb_lshift,3.2,,
+const,Py_nb_matrix_multiply,3.5,,
+const,Py_nb_multiply,3.2,,
+const,Py_nb_negative,3.2,,
+const,Py_nb_or,3.2,,
+const,Py_nb_positive,3.2,,
+const,Py_nb_power,3.2,,
+const,Py_nb_remainder,3.2,,
+const,Py_nb_rshift,3.2,,
+const,Py_nb_subtract,3.2,,
+const,Py_nb_true_divide,3.2,,
+const,Py_nb_xor,3.2,,
+const,Py_slot_end,3.15,,
+const,Py_slot_invalid,3.15,,
+const,Py_slot_subslots,3.15,,
+const,Py_sq_ass_item,3.2,,
+const,Py_sq_concat,3.2,,
+const,Py_sq_contains,3.2,,
+const,Py_sq_inplace_concat,3.2,,
+const,Py_sq_inplace_repeat,3.2,,
+const,Py_sq_item,3.2,,
+const,Py_sq_length,3.2,,
+const,Py_sq_repeat,3.2,,
+typedef,Py_ssize_t,3.2,,
+const,Py_tp_alloc,3.2,,
+const,Py_tp_base,3.2,,
+const,Py_tp_bases,3.2,,
+const,Py_tp_basicsize,3.15,,
+const,Py_tp_call,3.2,,
+const,Py_tp_clear,3.2,,
+const,Py_tp_dealloc,3.2,,
+const,Py_tp_del,3.2,,
+const,Py_tp_descr_get,3.2,,
+const,Py_tp_descr_set,3.2,,
+const,Py_tp_doc,3.2,,
+const,Py_tp_extra_basicsize,3.15,,
+const,Py_tp_finalize,3.5,,
+const,Py_tp_flags,3.15,,
+const,Py_tp_free,3.2,,
+const,Py_tp_getattr,3.2,,
+const,Py_tp_getattro,3.2,,
+const,Py_tp_getset,3.2,,
+const,Py_tp_hash,3.2,,
+const,Py_tp_init,3.2,,
+const,Py_tp_is_gc,3.2,,
+const,Py_tp_itemsize,3.15,,
+const,Py_tp_iter,3.2,,
+const,Py_tp_iternext,3.2,,
+const,Py_tp_members,3.2,,
+const,Py_tp_metaclass,3.15,,
+const,Py_tp_methods,3.2,,
+const,Py_tp_module,3.15,,
+const,Py_tp_name,3.15,,
+const,Py_tp_new,3.2,,
+const,Py_tp_repr,3.2,,
+const,Py_tp_richcompare,3.2,,
+const,Py_tp_setattr,3.2,,
+const,Py_tp_setattro,3.2,,
+const,Py_tp_slots,3.15,,
+const,Py_tp_str,3.2,,
+const,Py_tp_token,3.14,,
+const,Py_tp_traverse,3.2,,
+const,Py_tp_vectorcall,3.14,,
+typedef,Py_uintptr_t,3.2,,
+typedef,allocfunc,3.2,,
+typedef,binaryfunc,3.2,,
+typedef,descrgetfunc,3.2,,
+typedef,descrsetfunc,3.2,,
+typedef,destructor,3.2,,
+typedef,getattrfunc,3.2,,
+typedef,getattrofunc,3.2,,
+typedef,getbufferproc,3.12,,
+typedef,getiterfunc,3.2,,
+typedef,getter,3.2,,
+typedef,hashfunc,3.2,,
+typedef,initproc,3.2,,
+typedef,inquiry,3.2,,
+typedef,iternextfunc,3.2,,
+typedef,lenfunc,3.2,,
+typedef,newfunc,3.2,,
+typedef,objobjargproc,3.2,,
+typedef,objobjproc,3.2,,
+typedef,releasebufferproc,3.12,,
+typedef,reprfunc,3.2,,
+typedef,richcmpfunc,3.2,,
+typedef,setattrfunc,3.2,,
+typedef,setattrofunc,3.2,,
+typedef,setter,3.2,,
+typedef,ssizeargfunc,3.2,,
+typedef,ssizeobjargproc,3.2,,
+typedef,ssizessizeargfunc,3.2,,
+typedef,ssizessizeobjargproc,3.2,,
+struct,symtable,3.2,,opaque
+typedef,ternaryfunc,3.2,,
+typedef,traverseproc,3.2,,
+typedef,unaryfunc,3.2,,
+typedef,vectorcallfunc,3.12,,
+typedef,visitproc,3.2,,
diff --git a/Doc/tools/extensions/c_annotations.py 
b/Doc/tools/extensions/c_annotations.py
index 0e762042979c2b7..fbbf01fa7da02bd 100644
--- a/Doc/tools/extensions/c_annotations.py
+++ b/Doc/tools/extensions/c_annotations.py
@@ -28,12 +28,25 @@
     from sphinx.application import Sphinx
     from sphinx.util.typing import ExtensionMetadata
 
-ROLE_TO_OBJECT_TYPE = {
-    "func": "function",
-    "macro": "macro",
-    "member": "member",
-    "type": "type",
-    "data": "var",
+ABI_KIND_TO_OBJECT_TYPES = {
+    "function": ["function"],
+    "member": ["member"],
+    "struct": ["type"],
+    "data": ["var"],
+    "const": ["macro"],
+    "typedef": ["type"],
+    # Some macros are documented as functions
+    "macro": ["macro", "function"],
+}
+
+ABI_KIND_TO_ROLE = {
+    'function': 'func',
+    "member": 'member',
+    'data': 'data',
+    'struct': 'type',
+    'macro': 'macro',
+    'const': 'macro',
+    'typedef': 'type',
 }
 
 
@@ -61,11 +74,11 @@ class ThreadSafetyEntry:
 
 @dataclasses.dataclass(frozen=True, slots=True)
 class StableABIEntry:
-    # Role of the object.
-    # Source: Each [item_kind] in stable_abi.toml is mapped to a C Domain role.
-    role: str
+    # Kind of the object.
+    # Source: [<kind>.<name>] in stable_abi.toml.
+    kind: str
     # Name of the object.
-    # Source: [<item_kind>.*] in stable_abi.toml.
+    # Source: [<kind>.<name>] in stable_abi.toml.
     name: str
     # Version when the object was added to the stable ABI.
     # (Source: [<item_kind>.*.added] in stable_abi.toml.
@@ -177,10 +190,11 @@ def add_annotations(app: Sphinx, doctree: nodes.document) 
-> None:
 
         # Stable ABI annotation.
         if record := stable_abi_data.get(name):
-            if ROLE_TO_OBJECT_TYPE[record.role] != objtype:
+            record_object_types = ABI_KIND_TO_OBJECT_TYPES[record.kind]
+            if objtype not in record_object_types:
                 msg = (
                     f"Object type mismatch in limited API annotation for 
{name}: "
-                    f"{ROLE_TO_OBJECT_TYPE[record.role]!r} != {objtype!r}"
+                    f"{objtype!r} not in {record_object_types!r}"
                 )
                 raise ValueError(msg)
             annotation = _stable_abi_annotation(record)
@@ -238,10 +252,14 @@ def _stable_abi_annotation(
         emph_node += nodes.Text(" ")
         emph_node += nodes.literal(record.name, record.name)
         message = sphinx_gettext("is part of the")
-        emph_node += nodes.Text(" " + message + " ")
+    elif record.kind == "macro":
+        # Macros are not part of the ABI
+        message = sphinx_gettext(
+            "This macro is available when compiling for the"
+        )
     else:
         message = sphinx_gettext("Part of the")
-        emph_node += nodes.Text(" " + message + " ")
+    emph_node += nodes.Text(" " + message + " ")
     ref_node = addnodes.pending_xref(
         "Stable ABI",
         refdomain="std",
@@ -365,7 +383,7 @@ class LimitedAPIList(SphinxDirective):
     def run(self) -> list[nodes.Node]:
         state = self.env.domaindata["c_annotations"]
         content = [
-            f"* :c:{record.role}:`{record.name}`"
+            f"* :c:{ABI_KIND_TO_ROLE[record.kind]}:`{record.name}`"
             for record in state["stable_abi_data"].values()
         ]
         node = nodes.paragraph()
diff --git a/Misc/stable_abi.toml b/Misc/stable_abi.toml
index 751c186674c7c91..e79fa33319a39b0 100644
--- a/Misc/stable_abi.toml
+++ b/Misc/stable_abi.toml
@@ -64,6 +64,8 @@
 #   on all platforms.)
 # - abi3t_opaque: In abi3t, this struct is opaque (as if `struct_abi_kind`
 #   was 'opaque' and `members` was missing).
+# - is_static_inline_function: for `macro`: actually implemented as a static
+#   inline function, rather than a macro.
 
 # Removing items from this file is generally not allowed, and additions should
 # be considered with that in mind. See the devguide for exact rules:
@@ -1872,6 +1874,22 @@
 [function.PyThread_start_new_thread]
     added = '3.2'
 
+# Python 3.2 macros
+
+[macro.Py_CLEAR]
+    added = '3.2'
+[macro.Py_DECREF]
+    added = '3.2'
+[macro.Py_INCREF]
+    added = '3.2'
+    is_static_inline_function = true
+[macro.Py_XDECREF]
+    added = '3.2'
+    is_static_inline_function = true
+[macro.Py_XINCREF]
+    added = '3.2'
+    is_static_inline_function = true
+
 
 ### Python 3.3 ##############################################################
 
@@ -2225,6 +2243,15 @@
 [function.PyObject_GC_IsTracked]
     added = '3.9'
 
+# Python 3.9 macros
+
+[macro.Py_SET_REFCNT]
+    added = '3.9'
+    is_static_inline_function = true
+[macro.Py_SET_TYPE]
+    added = '3.9'
+    is_static_inline_function = true
+
 
 ### Python 3.10 #############################################################
 
@@ -2451,7 +2478,7 @@
     added = '3.12'
 [function.PyObject_VectorcallMethod]
     added = '3.12'
-[macro.PY_VECTORCALL_ARGUMENTS_OFFSET]
+[const.PY_VECTORCALL_ARGUMENTS_OFFSET]
     added = '3.12'
 [typedef.getbufferproc]
     added = '3.12'
diff --git a/Tools/build/stable_abi.py b/Tools/build/stable_abi.py
index 39115b331ba6428..5f70a706d139b64 100644
--- a/Tools/build/stable_abi.py
+++ b/Tools/build/stable_abi.py
@@ -116,7 +116,6 @@ def decorator(cls):
     return decorator
 
 @itemclass('function')
-@itemclass('macro')
 @itemclass('data')
 @itemclass('const')
 @itemclass('typedef')
@@ -144,6 +143,11 @@ class Struct(ABIItem):
     struct_abi_kind: str
     members: list = None
 
+@itemclass('macro')
[email protected]
+class Macro(ABIItem):
+    is_static_inline_function: bool = False
+
 
 def parse_manifest(file):
     """Parse the given file (iterable of lines) to a Manifest"""
@@ -227,13 +231,13 @@ def sort_key(item):
             key=sort_key):
         write(f'EXPORT_DATA({item.name})')
 
-ITEM_KIND_TO_DOC_ROLE = {
-    'function': 'func',
-    'data': 'data',
-    'struct': 'type',
-    'macro': 'macro',
-    'const': 'macro',
-    'typedef': 'type',
+DOC_KINDS = {
+    'function',
+    'data',
+    'struct',
+    'macro',
+    'const',
+    'typedef',
 }
 
 @generator("doc_list", 'Doc/data/stable_abi.dat')
@@ -245,17 +249,16 @@ def gen_doc_annotations(manifest, args, outfile):
     """
     writer = csv.DictWriter(
         outfile,
-        ['role', 'name', 'added', 'ifdef_note', 'struct_abi_kind'],
+        ['kind', 'name', 'added', 'ifdef_note', 'struct_abi_kind'],
         lineterminator='\n')
     writer.writeheader()
-    kinds = set(ITEM_KIND_TO_DOC_ROLE)
-    for item in manifest.select(kinds, include_abi_only=False):
+    for item in manifest.select(DOC_KINDS, include_abi_only=False):
         if item.ifdef:
             ifdef_note = manifest.contents[item.ifdef].doc
         else:
             ifdef_note = None
         row = {
-            'role': ITEM_KIND_TO_DOC_ROLE[item.kind],
+            'kind': item.kind,
             'name': item.name,
             'added': item.added,
             'ifdef_note': ifdef_note,
@@ -265,7 +268,7 @@ def gen_doc_annotations(manifest, args, outfile):
             row['struct_abi_kind'] = item.struct_abi_kind
             for member_name in item.members or ():
                 rows.append({
-                    'role': 'member',
+                    'kind': 'member',
                     'name': f'{item.name}.{member_name}',
                     'added': item.added,
                 })
@@ -408,7 +411,10 @@ def do_unixy_check(manifest, args):
     feature_macros &= present_macros
 
     # Check that we have all needed macros
-    expected_macros = {item.name for item in manifest.select({'macro'})}
+    expected_macros = {
+        item.name for item in manifest.select({'macro'})
+        if not item.is_static_inline_function
+    }
     missing_macros = expected_macros - present_macros
     okay &= _report_unexpected_items(
         missing_macros,

_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3//lists/python-checkins.python.org
Member address: [email protected]

Reply via email to