From e010f0ac8edefa912ff7a5c13043867b10564726 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Tue, 6 Oct 2026 23:56:54 +0200 Subject: [PATCH 1/6] gh-158886: Add INCREF/DECREF macros to stable_abi.toml --- Doc/data/stable_abi.dat | 7 +++++++ Misc/stable_abi.toml | 20 ++++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/Doc/data/stable_abi.dat b/Doc/data/stable_abi.dat index 622a079ee6b4f2..c6fbf444da272e 100644 --- a/Doc/data/stable_abi.dat +++ b/Doc/data/stable_abi.dat @@ -940,7 +940,9 @@ macro,Py_BEGIN_CRITICAL_SECTION2,3.15,, macro,Py_BLOCK_THREADS,3.2,, func,Py_BuildValue,3.2,, func,Py_BytesMain,3.8,, +macro,Py_CLEAR,3.2,, func,Py_CompileString,3.2,, +macro,Py_DECREF,3.2,, func,Py_DecRef,3.2,, func,Py_DecodeLocale,3.7,, macro,Py_END_ALLOW_THREADS,3.2,, @@ -964,6 +966,7 @@ func,Py_GetPlatform,3.2,, func,Py_GetRecursionLimit,3.2,, func,Py_GetVersion,3.2,, func,Py_HashBuffer,3.16,, +macro,Py_INCREF,3.2,, func,Py_IS_TYPE,3.15,, func,Py_IncRef,3.2,, func,Py_Initialize,3.2,, @@ -987,7 +990,9 @@ macro,Py_RELATIVE_OFFSET,3.12,, func,Py_ReprEnter,3.2,, func,Py_ReprLeave,3.2,, macro,Py_SETREF,3.16,, +macro,Py_SET_REFCNT,3.9,, func,Py_SET_SIZE,3.15,, +macro,Py_SET_TYPE,3.9,, func,Py_SIZE,3.15,, func,Py_SetRecursionLimit,3.2,, macro,Py_TPFLAGS_BASETYPE,3.2,, @@ -1020,6 +1025,8 @@ type,Py_UCS4,3.2,, macro,Py_UNBLOCK_THREADS,3.2,, func,Py_VaBuildValue,3.2,, data,Py_Version,3.11,, +macro,Py_XDECREF,3.2,, +macro,Py_XINCREF,3.2,, func,Py_XNewRef,3.10,, macro,Py_XSETREF,3.16,, macro,Py_am_aiter,3.5,, diff --git a/Misc/stable_abi.toml b/Misc/stable_abi.toml index 751c186674c7c9..1cb4f84471c8d2 100644 --- a/Misc/stable_abi.toml +++ b/Misc/stable_abi.toml @@ -1872,6 +1872,19 @@ [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' +[macro.Py_XDECREF] + added = '3.2' +[macro.Py_XINCREF] + added = '3.2' + ### Python 3.3 ############################################################## @@ -2225,6 +2238,13 @@ [function.PyObject_GC_IsTracked] added = '3.9' +# Python 3.9 macros + +[macro.Py_SET_REFCNT] + added = '3.9' +[macro.Py_SET_TYPE] + added = '3.9' + ### Python 3.10 ############################################################# From 18388f989ac5a7e4b1e090ee019214045820344a Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Tue, 6 Oct 2026 01:10:26 +0200 Subject: [PATCH 2/6] Sphinx extension: tolerate macros documented as functions --- Doc/tools/extensions/c_annotations.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Doc/tools/extensions/c_annotations.py b/Doc/tools/extensions/c_annotations.py index 0e762042979c2b..d7a20f70642e33 100644 --- a/Doc/tools/extensions/c_annotations.py +++ b/Doc/tools/extensions/c_annotations.py @@ -177,10 +177,13 @@ 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_type = ROLE_TO_OBJECT_TYPE[record.role] + if (record_object_type != objtype + # Some macros are documented as functions + and not(record_object_type == 'macro' and objtype == 'function')): msg = ( f"Object type mismatch in limited API annotation for {name}: " - f"{ROLE_TO_OBJECT_TYPE[record.role]!r} != {objtype!r}" + f"{record_object_type!r} != {objtype!r}" ) raise ValueError(msg) annotation = _stable_abi_annotation(record) From fcf7b5c27f5fef5a1963c1baa13a182a0d61f786 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Wed, 7 Oct 2026 00:10:18 +0200 Subject: [PATCH 3/6] Run prek to reformat the Python code --- Doc/tools/extensions/c_annotations.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Doc/tools/extensions/c_annotations.py b/Doc/tools/extensions/c_annotations.py index d7a20f70642e33..d8e3829022d639 100644 --- a/Doc/tools/extensions/c_annotations.py +++ b/Doc/tools/extensions/c_annotations.py @@ -178,9 +178,13 @@ def add_annotations(app: Sphinx, doctree: nodes.document) -> None: # Stable ABI annotation. if record := stable_abi_data.get(name): record_object_type = ROLE_TO_OBJECT_TYPE[record.role] - if (record_object_type != objtype + if ( + record_object_type != objtype # Some macros are documented as functions - and not(record_object_type == 'macro' and objtype == 'function')): + and not ( + record_object_type == 'macro' and objtype == 'function' + ) + ): msg = ( f"Object type mismatch in limited API annotation for {name}: " f"{record_object_type!r} != {objtype!r}" From 0343bc9057070e9ef710061cae4c299fae92872c Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Wed, 7 Oct 2026 05:10:35 +0200 Subject: [PATCH 4/6] List manually static inline functions in stable_abi.py --- Tools/build/stable_abi.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/Tools/build/stable_abi.py b/Tools/build/stable_abi.py index 39115b331ba642..497020137931f3 100644 --- a/Tools/build/stable_abi.py +++ b/Tools/build/stable_abi.py @@ -49,6 +49,17 @@ UNIXY = MACOS or (sys.platform == "linux") # XXX should this be "not Windows"? +# "Macros" implemented as static inline functions, documented as macros +# by Misc/stable_abi.toml, and not listed by gcc_get_limited_api_macros() +STATIC_INLINE_FUNCTIONS = set(( + 'Py_INCREF', + 'Py_SET_REFCNT', + 'Py_SET_TYPE', + 'Py_XDECREF', + 'Py_XINCREF', +)) + + # The stable ABI manifest (Misc/stable_abi.toml) exists only to fill the # following dataclasses. # Feel free to change its syntax (and the `parse_manifest` function) @@ -404,6 +415,7 @@ def do_unixy_check(manifest, args): # Get all macros first: we'll need feature macros like HAVE_FORK and # MS_WINDOWS for everything else present_macros = gcc_get_limited_api_macros(['Include/Python.h']) + present_macros |= STATIC_INLINE_FUNCTIONS feature_macros = {m.name for m in manifest.select({'feature_macro'})} feature_macros &= present_macros From 953d7e2b61748dc39f1940ebe979510688257ca3 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Wed, 7 Oct 2026 05:40:48 +0200 Subject: [PATCH 5/6] Please the linter gods --- Tools/build/stable_abi.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Tools/build/stable_abi.py b/Tools/build/stable_abi.py index 497020137931f3..6967f8c249bdcf 100644 --- a/Tools/build/stable_abi.py +++ b/Tools/build/stable_abi.py @@ -51,13 +51,13 @@ # "Macros" implemented as static inline functions, documented as macros # by Misc/stable_abi.toml, and not listed by gcc_get_limited_api_macros() -STATIC_INLINE_FUNCTIONS = set(( +STATIC_INLINE_FUNCTIONS = { 'Py_INCREF', 'Py_SET_REFCNT', 'Py_SET_TYPE', 'Py_XDECREF', 'Py_XINCREF', -)) +} # The stable ABI manifest (Misc/stable_abi.toml) exists only to fill the From 803f7ad967e89cd5f6e20c808c2d1d22add8358e Mon Sep 17 00:00:00 2001 From: Petr Viktorin Date: Wed, 7 Oct 2026 15:34:04 +0200 Subject: [PATCH 6/6] Changes for #158941 (#20) * 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 * Regenerate stable_abi.dat * Make it explicit that macros aren't part of the ABI * Move is_static_inline_function (per-item data) to the TOML file * Appease linter rule, despite PEP 8 --- Doc/data/stable_abi.dat | 2032 ++++++++++++------------- Doc/tools/extensions/c_annotations.py | 55 +- Misc/stable_abi.toml | 9 +- Tools/build/stable_abi.py | 46 +- 4 files changed, 1077 insertions(+), 1065 deletions(-) diff --git a/Doc/data/stable_abi.dat b/Doc/data/stable_abi.dat index c6fbf444da272e..3a6832c1ff72e1 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,867 +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,, +function,Py_BuildValue,3.2,, +function,Py_BytesMain,3.8,, macro,Py_CLEAR,3.2,, -func,Py_CompileString,3.2,, +function,Py_CompileString,3.2,, macro,Py_DECREF,3.2,, -func,Py_DecRef,3.2,, -func,Py_DecodeLocale,3.7,, +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,, +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,, -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_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,, macro,Py_SET_REFCNT,3.9,, -func,Py_SET_SIZE,3.15,, +function,Py_SET_SIZE,3.15,, macro,Py_SET_TYPE,3.9,, -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,, +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,, macro,Py_XDECREF,3.2,, macro,Py_XINCREF,3.2,, -func,Py_XNewRef,3.10,, +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 d8e3829022d639..fbbf01fa7da02b 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: [.] in stable_abi.toml. + kind: str # Name of the object. - # Source: [.*] in stable_abi.toml. + # Source: [.] in stable_abi.toml. name: str # Version when the object was added to the stable ABI. # (Source: [.*.added] in stable_abi.toml. @@ -177,17 +190,11 @@ def add_annotations(app: Sphinx, doctree: nodes.document) -> None: # Stable ABI annotation. if record := stable_abi_data.get(name): - record_object_type = ROLE_TO_OBJECT_TYPE[record.role] - if ( - record_object_type != objtype - # Some macros are documented as functions - and not ( - record_object_type == 'macro' and objtype == 'function' - ) - ): + 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"{record_object_type!r} != {objtype!r}" + f"{objtype!r} not in {record_object_types!r}" ) raise ValueError(msg) annotation = _stable_abi_annotation(record) @@ -245,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", @@ -372,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 1cb4f84471c8d2..e79fa33319a39b 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: @@ -1880,10 +1882,13 @@ 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 ############################################################## @@ -2242,8 +2247,10 @@ [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 ############################################################# @@ -2471,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 6967f8c249bdcf..5f70a706d139b6 100644 --- a/Tools/build/stable_abi.py +++ b/Tools/build/stable_abi.py @@ -49,17 +49,6 @@ UNIXY = MACOS or (sys.platform == "linux") # XXX should this be "not Windows"? -# "Macros" implemented as static inline functions, documented as macros -# by Misc/stable_abi.toml, and not listed by gcc_get_limited_api_macros() -STATIC_INLINE_FUNCTIONS = { - 'Py_INCREF', - 'Py_SET_REFCNT', - 'Py_SET_TYPE', - 'Py_XDECREF', - 'Py_XINCREF', -} - - # The stable ABI manifest (Misc/stable_abi.toml) exists only to fill the # following dataclasses. # Feel free to change its syntax (and the `parse_manifest` function) @@ -127,7 +116,6 @@ def decorator(cls): return decorator @itemclass('function') -@itemclass('macro') @itemclass('data') @itemclass('const') @itemclass('typedef') @@ -155,6 +143,11 @@ class Struct(ABIItem): struct_abi_kind: str members: list = None +@itemclass('macro') +@dataclasses.dataclass +class Macro(ABIItem): + is_static_inline_function: bool = False + def parse_manifest(file): """Parse the given file (iterable of lines) to a Manifest""" @@ -238,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') @@ -256,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, @@ -276,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, }) @@ -415,12 +407,14 @@ def do_unixy_check(manifest, args): # Get all macros first: we'll need feature macros like HAVE_FORK and # MS_WINDOWS for everything else present_macros = gcc_get_limited_api_macros(['Include/Python.h']) - present_macros |= STATIC_INLINE_FUNCTIONS feature_macros = {m.name for m in manifest.select({'feature_macro'})} 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,