From f8f60cdb66ad808c7a4e04a12a383743e2faf2ef Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Tue, 6 Oct 2026 00:18:59 +0200 Subject: [PATCH 1/9] gh-158886: Add macros of the limited C API to stable_abi.toml --- ...-10-06-00-31-36.gh-issue-158886.OILfLN.rst | 2 + Misc/stable_abi.toml | 273 ++++++++++++++++++ 2 files changed, 275 insertions(+) create mode 100644 Misc/NEWS.d/next/C_API/2026-10-06-00-31-36.gh-issue-158886.OILfLN.rst diff --git a/Misc/NEWS.d/next/C_API/2026-10-06-00-31-36.gh-issue-158886.OILfLN.rst b/Misc/NEWS.d/next/C_API/2026-10-06-00-31-36.gh-issue-158886.OILfLN.rst new file mode 100644 index 000000000000000..06b158b1bac68c1 --- /dev/null +++ b/Misc/NEWS.d/next/C_API/2026-10-06-00-31-36.gh-issue-158886.OILfLN.rst @@ -0,0 +1,2 @@ +Add all old macros of the limited C API to ``Misc/stable_abi.toml``. Patch +by Victor Stinner. diff --git a/Misc/stable_abi.toml b/Misc/stable_abi.toml index 0425fba42cbe2c7..2557bc643241634 100644 --- a/Misc/stable_abi.toml +++ b/Misc/stable_abi.toml @@ -1872,6 +1872,213 @@ [function.PyThread_start_new_thread] added = '3.2' +# Python 3.2 macros + +[function.PyAnySet_Check] + added = '3.2' +[function.PyAnySet_CheckExact] + added = '3.2' +[function.PyBool_Check] + added = '3.2' +[function.PyByteArray_Check] + added = '3.2' +[function.PyByteArray_CheckExact] + added = '3.2' +[function.PyBytes_Check] + added = '3.2' +[function.PyBytes_CheckExact] + added = '3.2' +[function.PyCFunction_Check] + added = '3.2' +[function.PyCallIter_Check] + added = '3.2' +[function.PyCapsule_CheckExact] + added = '3.2' +[function.PyComplex_Check] + added = '3.2' +[function.PyComplex_CheckExact] + added = '3.2' +[function.PyCursesWindow_Check] + added = '3.2' +[function.PyDictItems_Check] + added = '3.2' +[function.PyDictKeys_Check] + added = '3.2' +[function.PyDictValues_Check] + added = '3.2' +[function.PyDictViewSet_Check] + added = '3.2' +[function.PyDict_Check] + added = '3.2' +[function.PyDict_CheckExact] + added = '3.2' +[function.PyExceptionClass_Check] + added = '3.2' +[function.PyExceptionInstance_Check] + added = '3.2' +[function.PyFloat_Check] + added = '3.2' +[function.PyFloat_CheckExact] + added = '3.2' +[function.PyFrozenSet_Check] + added = '3.2' +[function.PyFrozenSet_CheckExact] + added = '3.2' +[function.PyImport_ImportModuleEx] + added = '3.2' +[function.PyList_Check] + added = '3.2' +[function.PyList_CheckExact] + added = '3.2' +[function.PyLong_AS_LONG] + added = '3.2' +[function.PyLong_Check] + added = '3.2' +[function.PyLong_CheckExact] + added = '3.2' +[function.PyMapping_DelItem] + added = '3.2' +[function.PyMapping_DelItemString] + added = '3.2' +[function.PyMem_Del] + added = '3.2' +[function.PyMemoryView_Check] + added = '3.2' +[function.PyModule_Check] + added = '3.2' +[function.PyModule_CheckExact] + added = '3.2' +[function.PyModule_Create] + added = '3.2' +[function.PyObject_New] + added = '3.2' +[function.PyObject_NewVar] + added = '3.2' +[function.PyObject_TypeCheck] + added = '3.2' +[function.PyRange_Check] + added = '3.2' +[function.PySeqIter_Check] + added = '3.2' +[function.PySet_Check] + added = '3.2' +[function.PySlice_Check] + added = '3.2' +[function.PyTraceBack_Check] + added = '3.2' +[function.PyTuple_Check] + added = '3.2' +[function.PyTuple_CheckExact] + added = '3.2' +[function.PyType_Check] + added = '3.2' +[function.PyType_CheckExact] + added = '3.2' +[function.PyType_FastSubclass] + added = '3.2' +[function.PyType_IS_GC] + added = '3.2' +[function.PyUnicode_Check] + added = '3.2' +[function.PyUnicode_CheckExact] + added = '3.2' +[function.PyWeakref_Check] + added = '3.2' +[function.PyWeakref_CheckProxy] + added = '3.2' +[function.PyWeakref_CheckRef] + added = '3.2' +[function.PyWeakref_CheckRefExact] + added = '3.2' +[function.Py_CLEAR] + added = '3.2' +[function.Py_DECREF] + added = '3.2' +[function.Py_INCREF] + added = '3.2' +[function.Py_XDECREF] + added = '3.2' +[function.Py_XINCREF] + added = '3.2' +[macro.PyAPI_DATA] + added = '3.2' +[macro.PyAPI_FUNC] + added = '3.2' +[macro.PyExceptionInstance_Class] + added = '3.2' +[macro.PyMem_DEL] + added = '3.2' +[macro.PyMem_FREE] + added = '3.2' +[macro.PyMem_MALLOC] + added = '3.2' +[macro.PyMem_NEW] + added = '3.2' +[macro.PyMem_New] + added = '3.2' +[macro.PyMem_REALLOC] + added = '3.2' +[macro.PyMem_RESIZE] + added = '3.2' +[macro.PyMem_Resize] + added = '3.2' +[macro.PyModule_AddIntMacro] + added = '3.2' +[macro.PyModule_AddStringMacro] + added = '3.2' +[macro.PyObject_GC_New] + added = '3.2' +[macro.PyObject_GC_NewVar] + added = '3.2' +[macro.PyObject_GC_Resize] + added = '3.2' +[macro.PyObject_HEAD_INIT] + added = '3.2' +[macro.PyObject_INIT] + added = '3.2' +[macro.PyObject_INIT_VAR] + added = '3.2' +[macro.PyObject_NEW] + added = '3.2' +[macro.PyObject_NEW_VAR] + added = '3.2' +[macro.PyThreadState_GET] + added = '3.2' +[macro.PyVarObject_HEAD_INIT] + added = '3.2' +[macro.Py_ABS] + added = '3.2' +[macro.Py_ALIGNED] + added = '3.2' +[macro.Py_ARITHMETIC_RIGHT_SHIFT] + added = '3.2' +[macro.Py_DEPRECATED] + added = '3.2' +[macro.Py_FORCE_EXPANSION] + added = '3.2' +[macro.Py_GCC_ATTRIBUTE] + added = '3.2' +[macro.Py_IS_FINITE] + added = '3.2' +[macro.Py_IS_INFINITY] + added = '3.2' +[macro.Py_IS_NAN] + added = '3.2' +[macro.Py_LL] + added = '3.2' +[macro.Py_LOCAL] + added = '3.2' +[macro.Py_LOCAL_INLINE] + added = '3.2' +[macro.Py_RETURN_INF] + added = '3.2' +[macro.Py_SAFE_DOWNCAST] + added = '3.2' +[macro.Py_ULL] + added = '3.2' +[macro.Py_VISIT] + added = '3.2' + ### Python 3.3 ############################################################## @@ -1904,6 +2111,27 @@ [function.PyThread_GetInfo] added = '3.3' +# Python 3.3 macros + +[macro.PyDoc_STR] + added = '3.3' +[macro.PyDoc_STRVAR] + added = '3.3' +[macro.PyDoc_VAR] + added = '3.3' +[macro.Py_ARRAY_LENGTH] + added = '3.3' +[macro.Py_BUILD_ASSERT] + added = '3.3' +[macro.Py_BUILD_ASSERT_EXPR] + added = '3.3' +[macro.Py_CHARMASK] + added = '3.3' +[macro.Py_MAX] + added = '3.3' +[macro.Py_MIN] + added = '3.3' + ### Python 3.4 ############################################################## @@ -1915,6 +2143,11 @@ [function.PyType_GetSlot] added = '3.4' +# Python 3.4 macro + +[macro.Py_UNUSED] + added = '3.4' + ### Python 3.5 ############################################################## @@ -1956,6 +2189,13 @@ [const.Py_tp_finalize] added = '3.5' +# Python 3.5 macros + +[function.PyModule_FromDefAndSpec] + added = '3.5' +[macro.Py_STRINGIFY] + added = '3.5' + ### Python 3.6 ############################################################## @@ -1973,6 +2213,11 @@ [data.PyExc_ModuleNotFoundError] added = '3.6' +# Python 3.6 macro + +[macro.Py_MEMBER_SIZE] + added = '3.6' + ### Python 3.7 ############################################################## @@ -2171,6 +2416,13 @@ [const.METH_METHOD] added = '3.7' +# Python 3.7 macros + +[macro.Py_RETURN_RICHCOMPARE] + added = '3.7' +[macro.Py_UNREACHABLE] + added = '3.7' + ### Python 3.8 ############################################################## @@ -2225,6 +2477,15 @@ [function.PyObject_GC_IsTracked] added = '3.9' +# Python 3.9 macros + +[function.PyCFunction_CheckExact] + added = '3.9' +[function.Py_SET_REFCNT] + added = '3.9' +[function.Py_SET_TYPE] + added = '3.9' + ### Python 3.10 ############################################################# @@ -2313,6 +2574,11 @@ [const.Py_am_send] added = '3.10' +# Python 3.10 macro + +[function.PySet_CheckExact] + added = '3.10' + # New GC control functions in Python 3.10 (https://github.com/python/cpython/issues/72441) @@ -2423,6 +2689,13 @@ [function.PyErr_SetHandledException] added = '3.11' +# Python 3.11 macros + +[macro.PyBUF_CONTIG_RO] + added = '3.11' +[macro.PyBUF_STRIDED_RO] + added = '3.11' + ### Python 3.12 ############################################################# From abfbbf1990fa1b416c26cb617cb0aa0b277c7e7f Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Tue, 6 Oct 2026 00:37:10 +0200 Subject: [PATCH 2/9] Remove duplicates --- Misc/stable_abi.toml | 7 ------- 1 file changed, 7 deletions(-) diff --git a/Misc/stable_abi.toml b/Misc/stable_abi.toml index 2557bc643241634..0e7efffcf48ba6a 100644 --- a/Misc/stable_abi.toml +++ b/Misc/stable_abi.toml @@ -2689,13 +2689,6 @@ [function.PyErr_SetHandledException] added = '3.11' -# Python 3.11 macros - -[macro.PyBUF_CONTIG_RO] - added = '3.11' -[macro.PyBUF_STRIDED_RO] - added = '3.11' - ### Python 3.12 ############################################################# From f625aa651a22fc070a39a4988e391d262c443035 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Tue, 6 Oct 2026 00:37:24 +0200 Subject: [PATCH 3/9] Run make regen-limited-abi --- Doc/data/stable_abi.dat | 121 +++++++++++++++++++++++++++++ Lib/test/test_stable_abi_ctypes.py | 68 ++++++++++++++++ PC/python3dll.c | 68 ++++++++++++++++ 3 files changed, 257 insertions(+) diff --git a/Doc/data/stable_abi.dat b/Doc/data/stable_abi.dat index 82447cc98cd8d03..57dbb3947a22cce 100644 --- a/Doc/data/stable_abi.dat +++ b/Doc/data/stable_abi.dat @@ -18,6 +18,10 @@ macro,PyABIInfo_GIL,3.15,, macro,PyABIInfo_STABLE,3.15,, macro,PyABIInfo_VAR,3.15,, func,PyAIter_Check,3.10,, +macro,PyAPI_DATA,3.2,, +macro,PyAPI_FUNC,3.2,, +func,PyAnySet_Check,3.2,, +func,PyAnySet_CheckExact,3.2,, func,PyArg_Parse,3.2,, func,PyArg_ParseTuple,3.2,, func,PyArg_ParseTupleAndKeywords,3.2,, @@ -46,6 +50,7 @@ macro,PyBUF_STRIDES,3.11,, macro,PyBUF_WRITABLE,3.11,, macro,PyBUF_WRITE,3.11,, data,PyBaseObject_Type,3.2,, +func,PyBool_Check,3.2,, func,PyBool_FromLong,3.2,, data,PyBool_Type,3.2,, func,PyBuffer_FillContiguousStrides,3.11,, @@ -58,6 +63,8 @@ func,PyBuffer_SizeFromFormat,3.11,, func,PyBuffer_ToContiguous,3.11,, data,PyByteArrayIter_Type,3.2,, func,PyByteArray_AsString,3.2,, +func,PyByteArray_Check,3.2,, +func,PyByteArray_CheckExact,3.2,, func,PyByteArray_Concat,3.2,, func,PyByteArray_FromObject,3.2,, func,PyByteArray_FromStringAndSize,3.2,, @@ -67,6 +74,8 @@ data,PyByteArray_Type,3.2,, data,PyBytesIter_Type,3.2,, func,PyBytes_AsString,3.2,, func,PyBytes_AsStringAndSize,3.2,, +func,PyBytes_Check,3.2,, +func,PyBytes_CheckExact,3.2,, func,PyBytes_Concat,3.2,, func,PyBytes_ConcatAndDel,3.2,, func,PyBytes_DecodeEscape,3.2,, @@ -82,6 +91,8 @@ type,PyCFunction,3.2,, type,PyCFunctionFast,3.13,, type,PyCFunctionFastWithKeywords,3.13,, type,PyCFunctionWithKeywords,3.2,, +func,PyCFunction_Check,3.2,, +func,PyCFunction_CheckExact,3.9,, func,PyCFunction_GetFlags,3.2,, func,PyCFunction_GetFunction,3.2,, func,PyCFunction_GetSelf,3.2,, @@ -89,9 +100,11 @@ func,PyCFunction_New,3.4,, func,PyCFunction_NewEx,3.2,, data,PyCFunction_Type,3.2,, func,PyCMethod_New,3.9,, +func,PyCallIter_Check,3.2,, func,PyCallIter_New,3.2,, data,PyCallIter_Type,3.2,, func,PyCallable_Check,3.2,, +func,PyCapsule_CheckExact,3.2,, type,PyCapsule_Destructor,3.2,, func,PyCapsule_GetContext,3.2,, func,PyCapsule_GetDestructor,3.2,, @@ -125,6 +138,8 @@ func,PyCodec_StreamWriter,3.2,, func,PyCodec_StrictErrors,3.2,, func,PyCodec_Unregister,3.10,, func,PyCodec_XMLCharRefReplaceErrors,3.2,, +func,PyComplex_Check,3.2,, +func,PyComplex_CheckExact,3.2,, func,PyComplex_FromDoubles,3.2,, func,PyComplex_ImagAsDouble,3.2,, func,PyComplex_RealAsDouble,3.2,, @@ -135,21 +150,28 @@ func,PyCriticalSection2_Begin,3.15,, func,PyCriticalSection2_End,3.15,, func,PyCriticalSection_Begin,3.15,, func,PyCriticalSection_End,3.15,, +func,PyCursesWindow_Check,3.2,, func,PyDescr_NewClassMethod,3.2,, func,PyDescr_NewGetSet,3.2,, func,PyDescr_NewMember,3.2,, func,PyDescr_NewMethod,3.2,, +func,PyDictItems_Check,3.2,, data,PyDictItems_Type,3.2,, data,PyDictIterItem_Type,3.2,, data,PyDictIterKey_Type,3.2,, data,PyDictIterValue_Type,3.2,, +func,PyDictKeys_Check,3.2,, data,PyDictKeys_Type,3.2,, func,PyDictProxy_New,3.2,, data,PyDictProxy_Type,3.2,, data,PyDictRevIterItem_Type,3.8,, data,PyDictRevIterKey_Type,3.8,, data,PyDictRevIterValue_Type,3.8,, +func,PyDictValues_Check,3.2,, data,PyDictValues_Type,3.2,, +func,PyDictViewSet_Check,3.2,, +func,PyDict_Check,3.2,, +func,PyDict_CheckExact,3.2,, func,PyDict_Clear,3.2,, func,PyDict_Contains,3.2,, func,PyDict_Copy,3.2,, @@ -173,6 +195,9 @@ func,PyDict_Size,3.2,, data,PyDict_Type,3.2,, func,PyDict_Update,3.2,, func,PyDict_Values,3.2,, +macro,PyDoc_STR,3.3,, +macro,PyDoc_STRVAR,3.3,, +macro,PyDoc_VAR,3.3,, data,PyEllipsis_Type,3.2,, data,PyEnum_Type,3.2,, func,PyErr_BadArgument,3.2,, @@ -311,7 +336,10 @@ data,PyExc_ValueError,3.2,, data,PyExc_Warning,3.2,, data,PyExc_WindowsError,3.7,on Windows, data,PyExc_ZeroDivisionError,3.2,, +func,PyExceptionClass_Check,3.2,, func,PyExceptionClass_Name,3.8,, +func,PyExceptionInstance_Check,3.2,, +macro,PyExceptionInstance_Class,3.2,, func,PyException_GetArgs,3.12,, func,PyException_GetCause,3.2,, func,PyException_GetContext,3.2,, @@ -326,6 +354,8 @@ func,PyFile_WriteObject,3.2,, func,PyFile_WriteString,3.2,, data,PyFilter_Type,3.2,, func,PyFloat_AsDouble,3.2,, +func,PyFloat_Check,3.2,, +func,PyFloat_CheckExact,3.2,, func,PyFloat_FromDouble,3.2,, func,PyFloat_FromString,3.2,, func,PyFloat_GetInfo,3.2,, @@ -335,6 +365,8 @@ data,PyFloat_Type,3.2,, type,PyFrameObject,3.2,,opaque func,PyFrame_GetCode,3.10,, func,PyFrame_GetLineNumber,3.10,, +func,PyFrozenSet_Check,3.2,, +func,PyFrozenSet_CheckExact,3.2,, func,PyFrozenSet_New,3.2,, data,PyFrozenSet_Type,3.2,, func,PyGC_Collect,3.2,, @@ -364,6 +396,7 @@ func,PyImport_Import,3.2,, func,PyImport_ImportFrozenModule,3.2,, func,PyImport_ImportFrozenModuleObject,3.7,, func,PyImport_ImportModule,3.2,, +func,PyImport_ImportModuleEx,3.2,, func,PyImport_ImportModuleLevel,3.2,, func,PyImport_ImportModuleLevelObject,3.7,, func,PyImport_ReloadModule,3.2,, @@ -391,6 +424,8 @@ data,PyListIter_Type,3.2,, data,PyListRevIter_Type,3.2,, func,PyList_Append,3.2,, func,PyList_AsTuple,3.2,, +func,PyList_Check,3.2,, +func,PyList_CheckExact,3.2,, func,PyList_GetItem,3.2,, func,PyList_GetItemRef,3.13,, func,PyList_GetSlice,3.2,, @@ -410,6 +445,7 @@ type,PyLongWriter,3.15,,opaque func,PyLongWriter_Create,3.15,, func,PyLongWriter_Discard,3.15,, func,PyLongWriter_Finish,3.15,, +func,PyLong_AS_LONG,3.2,, func,PyLong_AsDouble,3.2,, func,PyLong_AsInt,3.13,, func,PyLong_AsInt32,3.14,, @@ -428,6 +464,8 @@ func,PyLong_AsUnsignedLongLong,3.2,, func,PyLong_AsUnsignedLongLongMask,3.2,, func,PyLong_AsUnsignedLongMask,3.2,, func,PyLong_AsVoidPtr,3.2,, +func,PyLong_Check,3.2,, +func,PyLong_CheckExact,3.2,, func,PyLong_Export,3.15,, func,PyLong_FreeExport,3.15,, func,PyLong_FromDouble,3.2,, @@ -451,6 +489,8 @@ data,PyLong_Type,3.2,, macro,PyMODEXPORT_FUNC,3.15,, data,PyMap_Type,3.2,, func,PyMapping_Check,3.2,, +func,PyMapping_DelItem,3.2,, +func,PyMapping_DelItemString,3.2,, func,PyMapping_GetItemString,3.2,, func,PyMapping_GetOptionalItem,3.13,, func,PyMapping_GetOptionalItemString,3.13,, @@ -465,17 +505,27 @@ func,PyMapping_SetItemString,3.2,, func,PyMapping_Size,3.2,, func,PyMapping_Values,3.2,, func,PyMem_Calloc,3.7,, +macro,PyMem_DEL,3.2,, +func,PyMem_Del,3.2,, +macro,PyMem_FREE,3.2,, func,PyMem_Free,3.2,, +macro,PyMem_MALLOC,3.2,, func,PyMem_Malloc,3.2,, +macro,PyMem_NEW,3.2,, +macro,PyMem_New,3.2,, +macro,PyMem_REALLOC,3.2,, +macro,PyMem_RESIZE,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,, +macro,PyMem_Resize,3.2,, type,PyMemberDef,3.2,,full-abi data,PyMemberDescr_Type,3.2,, func,PyMember_GetOne,3.2,, func,PyMember_SetOne,3.2,, +func,PyMemoryView_Check,3.2,, func,PyMemoryView_FromBuffer,3.11,, func,PyMemoryView_FromMemory,3.7,, func,PyMemoryView_FromObject,3.2,, @@ -491,13 +541,19 @@ data,PyModuleDef_Type,3.5,, func,PyModule_Add,3.13,, func,PyModule_AddFunctions,3.7,, func,PyModule_AddIntConstant,3.2,, +macro,PyModule_AddIntMacro,3.2,, func,PyModule_AddObject,3.2,, func,PyModule_AddObjectRef,3.10,, func,PyModule_AddStringConstant,3.2,, +macro,PyModule_AddStringMacro,3.2,, func,PyModule_AddType,3.10,, +func,PyModule_Check,3.2,, +func,PyModule_CheckExact,3.2,, +func,PyModule_Create,3.2,, func,PyModule_Create2,3.2,, func,PyModule_Exec,3.15,, func,PyModule_ExecDef,3.7,, +func,PyModule_FromDefAndSpec,3.5,, func,PyModule_FromDefAndSpec2,3.7,, func,PyModule_FromSlotsAndSpec,3.15,, func,PyModule_GetDef,3.2,, @@ -599,6 +655,9 @@ func,PyObject_Free,3.2,, func,PyObject_GC_Del,3.2,, func,PyObject_GC_IsFinalized,3.9,, func,PyObject_GC_IsTracked,3.9,, +macro,PyObject_GC_New,3.2,, +macro,PyObject_GC_NewVar,3.2,, +macro,PyObject_GC_Resize,3.2,, func,PyObject_GC_Track,3.2,, func,PyObject_GC_UnTrack,3.2,, func,PyObject_GenericGetAttr,3.2,, @@ -615,12 +674,15 @@ func,PyObject_GetOptionalAttr,3.13,, func,PyObject_GetOptionalAttrString,3.13,, func,PyObject_GetTypeData,3.12,, func,PyObject_GetTypeData_DuringGC,3.15,, +macro,PyObject_HEAD_INIT,3.2,, 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,, +macro,PyObject_INIT,3.2,, +macro,PyObject_INIT_VAR,3.2,, func,PyObject_Init,3.2,, func,PyObject_InitVar,3.2,, func,PyObject_IsInstance,3.2,, @@ -628,6 +690,10 @@ func,PyObject_IsSubclass,3.2,, func,PyObject_IsTrue,3.2,, func,PyObject_Length,3.2,, func,PyObject_Malloc,3.2,, +macro,PyObject_NEW,3.2,, +macro,PyObject_NEW_VAR,3.2,, +func,PyObject_New,3.2,, +func,PyObject_NewVar,3.2,, func,PyObject_Not,3.2,, func,PyObject_Realloc,3.2,, func,PyObject_Repr,3.2,, @@ -640,12 +706,15 @@ func,PyObject_SetItem,3.2,, func,PyObject_Size,3.2,, func,PyObject_Str,3.2,, func,PyObject_Type,3.2,, +func,PyObject_TypeCheck,3.2,, func,PyObject_Vectorcall,3.12,, func,PyObject_VectorcallMethod,3.12,, data,PyProperty_Type,3.2,, data,PyRangeIter_Type,3.2,, +func,PyRange_Check,3.2,, data,PyRange_Type,3.2,, data,PyReversed_Type,3.2,, +func,PySeqIter_Check,3.2,, func,PySeqIter_New,3.2,, data,PySeqIter_Type,3.2,, func,PySequence_Check,3.2,, @@ -670,6 +739,8 @@ func,PySequence_Size,3.2,, func,PySequence_Tuple,3.2,, data,PySetIter_Type,3.2,, func,PySet_Add,3.2,, +func,PySet_Check,3.2,, +func,PySet_CheckExact,3.10,, func,PySet_Clear,3.2,, func,PySet_Contains,3.2,, func,PySet_Discard,3.2,, @@ -678,6 +749,7 @@ func,PySet_Pop,3.2,, func,PySet_Size,3.2,, data,PySet_Type,3.2,, func,PySlice_AdjustIndices,3.7,, +func,PySlice_Check,3.2,, func,PySlice_GetIndices,3.2,, func,PySlice_GetIndicesEx,3.2,, func,PySlice_New,3.2,, @@ -726,6 +798,7 @@ func,PyThreadState_Clear,3.2,, func,PyThreadState_Delete,3.2,, func,PyThreadState_Ensure,3.15,, func,PyThreadState_EnsureFromView,3.15,, +macro,PyThreadState_GET,3.2,, func,PyThreadState_Get,3.2,, func,PyThreadState_GetDict,3.2,, func,PyThreadState_GetFrame,3.10,, @@ -761,10 +834,13 @@ 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_Check,3.2,, func,PyTraceBack_Here,3.2,, func,PyTraceBack_Print,3.2,, data,PyTraceBack_Type,3.2,, data,PyTupleIter_Type,3.2,, +func,PyTuple_Check,3.2,, +func,PyTuple_CheckExact,3.2,, func,PyTuple_GetItem,3.2,, func,PyTuple_GetSlice,3.2,, func,PyTuple_New,3.2,, @@ -773,7 +849,10 @@ func,PyTuple_SetItem,3.2,, func,PyTuple_Size,3.2,, data,PyTuple_Type,3.2,, type,PyTypeObject,3.2,,opaque +func,PyType_Check,3.2,, +func,PyType_CheckExact,3.2,, func,PyType_ClearCache,3.2,, +func,PyType_FastSubclass,3.2,, func,PyType_Freeze,3.14,, func,PyType_FromMetaclass,3.12,, func,PyType_FromModuleAndSpec,3.10,, @@ -798,6 +877,7 @@ func,PyType_GetName,3.11,, func,PyType_GetQualName,3.11,, func,PyType_GetSlot,3.4,, func,PyType_GetTypeDataSize,3.12,, +func,PyType_IS_GC,3.2,, func,PyType_IsSubtype,3.2,, func,PyType_Modified,3.2,, func,PyType_Ready,3.2,, @@ -847,6 +927,8 @@ func,PyUnicode_AsUnicodeEscapeString,3.2,, func,PyUnicode_AsWideChar,3.2,, func,PyUnicode_AsWideCharString,3.7,, func,PyUnicode_BuildEncodingMap,3.2,, +func,PyUnicode_Check,3.2,, +func,PyUnicode_CheckExact,3.2,, func,PyUnicode_Compare,3.2,, func,PyUnicode_CompareWithASCIIString,3.2,, func,PyUnicode_Concat,3.2,, @@ -915,15 +997,24 @@ func,PyUnicode_WriteChar,3.7,, type,PyVarObject,3.2,,members member,PyVarObject.ob_base,3.2,, member,PyVarObject.ob_size,3.2,, +macro,PyVarObject_HEAD_INIT,3.2,, func,PyVectorcall_Call,3.12,, func,PyVectorcall_NARGS,3.12,, type,PyWeakReference,3.2,,opaque +func,PyWeakref_Check,3.2,, +func,PyWeakref_CheckProxy,3.2,, +func,PyWeakref_CheckRef,3.2,, +func,PyWeakref_CheckRefExact,3.2,, func,PyWeakref_GetRef,3.13,, func,PyWeakref_NewProxy,3.2,, func,PyWeakref_NewRef,3.2,, data,PyWrapperDescr_Type,3.2,, func,PyWrapper_New,3.2,, data,PyZip_Type,3.2,, +macro,Py_ABS,3.2,, +macro,Py_ALIGNED,3.2,, +macro,Py_ARITHMETIC_RIGHT_SHIFT,3.2,, +macro,Py_ARRAY_LENGTH,3.3,, macro,Py_ASNATIVEBYTES_ALLOW_INDEX,3.14,, macro,Py_ASNATIVEBYTES_BIG_ENDIAN,3.14,, macro,Py_ASNATIVEBYTES_DEFAULTS,3.14,, @@ -938,9 +1029,15 @@ 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,, +macro,Py_BUILD_ASSERT,3.3,, +macro,Py_BUILD_ASSERT_EXPR,3.3,, func,Py_BuildValue,3.2,, func,Py_BytesMain,3.8,, +macro,Py_CHARMASK,3.3,, +func,Py_CLEAR,3.2,, func,Py_CompileString,3.2,, +func,Py_DECREF,3.2,, +macro,Py_DEPRECATED,3.2,, func,Py_DecRef,3.2,, func,Py_DecodeLocale,3.7,, macro,Py_END_ALLOW_THREADS,3.2,, @@ -950,9 +1047,11 @@ func,Py_EncodeLocale,3.7,, func,Py_EndInterpreter,3.2,, func,Py_EnterRecursiveCall,3.9,, func,Py_Exit,3.2,, +macro,Py_FORCE_EXPANSION,3.2,, func,Py_FatalError,3.2,, func,Py_Finalize,3.2,, func,Py_FinalizeEx,3.6,, +macro,Py_GCC_ATTRIBUTE,3.2,, func,Py_GenericAlias,3.9,, data,Py_GenericAliasType,3.9,, func,Py_GetBuildInfo,3.2,, @@ -964,6 +1063,10 @@ func,Py_GetPlatform,3.2,, func,Py_GetRecursionLimit,3.2,, func,Py_GetVersion,3.2,, func,Py_HashBuffer,3.16,, +func,Py_INCREF,3.2,, +macro,Py_IS_FINITE,3.2,, +macro,Py_IS_INFINITY,3.2,, +macro,Py_IS_NAN,3.2,, func,Py_IS_TYPE,3.15,, func,Py_IncRef,3.2,, func,Py_Initialize,3.2,, @@ -974,7 +1077,13 @@ func,Py_IsFinalizing,3.13,, func,Py_IsInitialized,3.2,, func,Py_IsNone,3.10,, func,Py_IsTrue,3.10,, +macro,Py_LL,3.2,, +macro,Py_LOCAL,3.2,, +macro,Py_LOCAL_INLINE,3.2,, func,Py_LeaveRecursiveCall,3.9,, +macro,Py_MAX,3.3,, +macro,Py_MEMBER_SIZE,3.6,, +macro,Py_MIN,3.3,, func,Py_Main,3.2,, func,Py_MakePendingCalls,3.2,, func,Py_NewInterpreter,3.2,, @@ -984,10 +1093,16 @@ func,Py_PACK_VERSION,3.14,, macro,Py_READONLY,3.12,, func,Py_REFCNT,3.14,, macro,Py_RELATIVE_OFFSET,3.12,, +macro,Py_RETURN_INF,3.2,, +macro,Py_RETURN_RICHCOMPARE,3.7,, func,Py_ReprEnter,3.2,, func,Py_ReprLeave,3.2,, +macro,Py_SAFE_DOWNCAST,3.2,, +func,Py_SET_REFCNT,3.9,, func,Py_SET_SIZE,3.15,, +func,Py_SET_TYPE,3.9,, func,Py_SIZE,3.15,, +macro,Py_STRINGIFY,3.5,, func,Py_SetRecursionLimit,3.2,, macro,Py_TPFLAGS_BASETYPE,3.2,, macro,Py_TPFLAGS_DEFAULT,3.2,, @@ -1016,9 +1131,15 @@ 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_ULL,3.2,, macro,Py_UNBLOCK_THREADS,3.2,, +macro,Py_UNREACHABLE,3.7,, +macro,Py_UNUSED,3.4,, +macro,Py_VISIT,3.2,, func,Py_VaBuildValue,3.2,, data,Py_Version,3.11,, +func,Py_XDECREF,3.2,, +func,Py_XINCREF,3.2,, func,Py_XNewRef,3.10,, macro,Py_am_aiter,3.5,, macro,Py_am_anext,3.5,, diff --git a/Lib/test/test_stable_abi_ctypes.py b/Lib/test/test_stable_abi_ctypes.py index aed7451e89b1563..27ecedf59ea72d3 100644 --- a/Lib/test/test_stable_abi_ctypes.py +++ b/Lib/test/test_stable_abi_ctypes.py @@ -47,6 +47,8 @@ def test_windows_feature_macros(self): "PyABIInfo_Check", "PyAIter_Check", + "PyAnySet_Check", + "PyAnySet_CheckExact", "PyArg_Parse", "PyArg_ParseTuple", "PyArg_ParseTupleAndKeywords", @@ -55,6 +57,7 @@ def test_windows_feature_macros(self): "PyArg_VaParseTupleAndKeywords", "PyArg_ValidateKeywordArguments", "PyBaseObject_Type", + "PyBool_Check", "PyBool_FromLong", "PyBool_Type", "PyBuffer_FillContiguousStrides", @@ -67,6 +70,8 @@ def test_windows_feature_macros(self): "PyBuffer_ToContiguous", "PyByteArrayIter_Type", "PyByteArray_AsString", + "PyByteArray_Check", + "PyByteArray_CheckExact", "PyByteArray_Concat", "PyByteArray_FromObject", "PyByteArray_FromStringAndSize", @@ -76,6 +81,8 @@ def test_windows_feature_macros(self): "PyBytesIter_Type", "PyBytes_AsString", "PyBytes_AsStringAndSize", + "PyBytes_Check", + "PyBytes_CheckExact", "PyBytes_Concat", "PyBytes_ConcatAndDel", "PyBytes_DecodeEscape", @@ -88,6 +95,8 @@ def test_windows_feature_macros(self): "PyBytes_Size", "PyBytes_Type", "PyCFunction_Call", + "PyCFunction_Check", + "PyCFunction_CheckExact", "PyCFunction_GetFlags", "PyCFunction_GetFunction", "PyCFunction_GetSelf", @@ -95,9 +104,11 @@ def test_windows_feature_macros(self): "PyCFunction_NewEx", "PyCFunction_Type", "PyCMethod_New", + "PyCallIter_Check", "PyCallIter_New", "PyCallIter_Type", "PyCallable_Check", + "PyCapsule_CheckExact", "PyCapsule_GetContext", "PyCapsule_GetDestructor", "PyCapsule_GetName", @@ -130,6 +141,8 @@ def test_windows_feature_macros(self): "PyCodec_StrictErrors", "PyCodec_Unregister", "PyCodec_XMLCharRefReplaceErrors", + "PyComplex_Check", + "PyComplex_CheckExact", "PyComplex_FromDoubles", "PyComplex_ImagAsDouble", "PyComplex_RealAsDouble", @@ -138,21 +151,28 @@ def test_windows_feature_macros(self): "PyCriticalSection2_End", "PyCriticalSection_Begin", "PyCriticalSection_End", + "PyCursesWindow_Check", "PyDescr_NewClassMethod", "PyDescr_NewGetSet", "PyDescr_NewMember", "PyDescr_NewMethod", + "PyDictItems_Check", "PyDictItems_Type", "PyDictIterItem_Type", "PyDictIterKey_Type", "PyDictIterValue_Type", + "PyDictKeys_Check", "PyDictKeys_Type", "PyDictProxy_New", "PyDictProxy_Type", "PyDictRevIterItem_Type", "PyDictRevIterKey_Type", "PyDictRevIterValue_Type", + "PyDictValues_Check", "PyDictValues_Type", + "PyDictViewSet_Check", + "PyDict_Check", + "PyDict_CheckExact", "PyDict_Clear", "PyDict_Contains", "PyDict_Copy", @@ -314,7 +334,9 @@ def test_windows_feature_macros(self): "PyExc_ValueError", "PyExc_Warning", "PyExc_ZeroDivisionError", + "PyExceptionClass_Check", "PyExceptionClass_Name", + "PyExceptionInstance_Check", "PyException_GetArgs", "PyException_GetCause", "PyException_GetContext", @@ -329,6 +351,8 @@ def test_windows_feature_macros(self): "PyFile_WriteString", "PyFilter_Type", "PyFloat_AsDouble", + "PyFloat_Check", + "PyFloat_CheckExact", "PyFloat_FromDouble", "PyFloat_FromString", "PyFloat_GetInfo", @@ -337,6 +361,8 @@ def test_windows_feature_macros(self): "PyFloat_Type", "PyFrame_GetCode", "PyFrame_GetLineNumber", + "PyFrozenSet_Check", + "PyFrozenSet_CheckExact", "PyFrozenSet_New", "PyFrozenSet_Type", "PyGC_Collect", @@ -364,6 +390,7 @@ def test_windows_feature_macros(self): "PyImport_ImportFrozenModule", "PyImport_ImportFrozenModuleObject", "PyImport_ImportModule", + "PyImport_ImportModuleEx", "PyImport_ImportModuleLevel", "PyImport_ImportModuleLevelObject", "PyImport_ImportModuleNoBlock", @@ -389,6 +416,8 @@ def test_windows_feature_macros(self): "PyListRevIter_Type", "PyList_Append", "PyList_AsTuple", + "PyList_Check", + "PyList_CheckExact", "PyList_GetItem", "PyList_GetItemRef", "PyList_GetSlice", @@ -404,6 +433,7 @@ def test_windows_feature_macros(self): "PyLongWriter_Create", "PyLongWriter_Discard", "PyLongWriter_Finish", + "PyLong_AS_LONG", "PyLong_AsDouble", "PyLong_AsInt", "PyLong_AsInt32", @@ -422,6 +452,8 @@ def test_windows_feature_macros(self): "PyLong_AsUnsignedLongLongMask", "PyLong_AsUnsignedLongMask", "PyLong_AsVoidPtr", + "PyLong_Check", + "PyLong_CheckExact", "PyLong_Export", "PyLong_FreeExport", "PyLong_FromDouble", @@ -444,6 +476,8 @@ def test_windows_feature_macros(self): "PyLong_Type", "PyMap_Type", "PyMapping_Check", + "PyMapping_DelItem", + "PyMapping_DelItemString", "PyMapping_GetItemString", "PyMapping_GetOptionalItem", "PyMapping_GetOptionalItemString", @@ -460,6 +494,7 @@ def test_windows_feature_macros(self): "PyMarshal_ReadObjectFromString", "PyMarshal_WriteObjectToString", "PyMem_Calloc", + "PyMem_Del", "PyMem_Free", "PyMem_Malloc", "PyMem_RawCalloc", @@ -470,6 +505,7 @@ def test_windows_feature_macros(self): "PyMemberDescr_Type", "PyMember_GetOne", "PyMember_SetOne", + "PyMemoryView_Check", "PyMemoryView_FromBuffer", "PyMemoryView_FromMemory", "PyMemoryView_FromObject", @@ -485,9 +521,13 @@ def test_windows_feature_macros(self): "PyModule_AddObjectRef", "PyModule_AddStringConstant", "PyModule_AddType", + "PyModule_Check", + "PyModule_CheckExact", + "PyModule_Create", "PyModule_Create2", "PyModule_Exec", "PyModule_ExecDef", + "PyModule_FromDefAndSpec", "PyModule_FromDefAndSpec2", "PyModule_FromSlotsAndSpec", "PyModule_GetDef", @@ -613,6 +653,8 @@ def test_windows_feature_macros(self): "PyObject_IsTrue", "PyObject_Length", "PyObject_Malloc", + "PyObject_New", + "PyObject_NewVar", "PyObject_Not", "PyObject_Realloc", "PyObject_Repr", @@ -625,12 +667,15 @@ def test_windows_feature_macros(self): "PyObject_Size", "PyObject_Str", "PyObject_Type", + "PyObject_TypeCheck", "PyObject_Vectorcall", "PyObject_VectorcallMethod", "PyProperty_Type", "PyRangeIter_Type", + "PyRange_Check", "PyRange_Type", "PyReversed_Type", + "PySeqIter_Check", "PySeqIter_New", "PySeqIter_Type", "PySequence_Check", @@ -655,6 +700,8 @@ def test_windows_feature_macros(self): "PySequence_Tuple", "PySetIter_Type", "PySet_Add", + "PySet_Check", + "PySet_CheckExact", "PySet_Clear", "PySet_Contains", "PySet_Discard", @@ -663,6 +710,7 @@ def test_windows_feature_macros(self): "PySet_Size", "PySet_Type", "PySlice_AdjustIndices", + "PySlice_Check", "PySlice_GetIndices", "PySlice_GetIndicesEx", "PySlice_New", @@ -737,10 +785,13 @@ def test_windows_feature_macros(self): "PyThread_tss_get", "PyThread_tss_is_created", "PyThread_tss_set", + "PyTraceBack_Check", "PyTraceBack_Here", "PyTraceBack_Print", "PyTraceBack_Type", "PyTupleIter_Type", + "PyTuple_Check", + "PyTuple_CheckExact", "PyTuple_GetItem", "PyTuple_GetSlice", "PyTuple_New", @@ -748,7 +799,10 @@ def test_windows_feature_macros(self): "PyTuple_SetItem", "PyTuple_Size", "PyTuple_Type", + "PyType_Check", + "PyType_CheckExact", "PyType_ClearCache", + "PyType_FastSubclass", "PyType_Freeze", "PyType_FromMetaclass", "PyType_FromModuleAndSpec", @@ -773,6 +827,7 @@ def test_windows_feature_macros(self): "PyType_GetQualName", "PyType_GetSlot", "PyType_GetTypeDataSize", + "PyType_IS_GC", "PyType_IsSubtype", "PyType_Modified", "PyType_Ready", @@ -823,6 +878,8 @@ def test_windows_feature_macros(self): "PyUnicode_AsWideChar", "PyUnicode_AsWideCharString", "PyUnicode_BuildEncodingMap", + "PyUnicode_Check", + "PyUnicode_CheckExact", "PyUnicode_Compare", "PyUnicode_CompareWithASCIIString", "PyUnicode_Concat", @@ -888,6 +945,10 @@ def test_windows_feature_macros(self): "PyUnicode_WriteChar", "PyVectorcall_Call", "PyVectorcall_NARGS", + "PyWeakref_Check", + "PyWeakref_CheckProxy", + "PyWeakref_CheckRef", + "PyWeakref_CheckRefExact", "PyWeakref_GetObject", "PyWeakref_GetRef", "PyWeakref_NewProxy", @@ -899,7 +960,9 @@ def test_windows_feature_macros(self): "Py_AtExit", "Py_BuildValue", "Py_BytesMain", + "Py_CLEAR", "Py_CompileString", + "Py_DECREF", "Py_DecRef", "Py_DecodeLocale", "Py_EncodeLocale", @@ -930,6 +993,7 @@ def test_windows_feature_macros(self): "Py_GetVersion", "Py_HasFileSystemDefaultEncoding", "Py_HashBuffer", + "Py_INCREF", "Py_IS_TYPE", "Py_IncRef", "Py_Initialize", @@ -950,7 +1014,9 @@ def test_windows_feature_macros(self): "Py_REFCNT", "Py_ReprEnter", "Py_ReprLeave", + "Py_SET_REFCNT", "Py_SET_SIZE", + "Py_SET_TYPE", "Py_SIZE", "Py_SetPath", "Py_SetProgramName", @@ -960,6 +1026,8 @@ def test_windows_feature_macros(self): "Py_UTF8Mode", "Py_VaBuildValue", "Py_Version", + "Py_XDECREF", + "Py_XINCREF", "Py_XNewRef", "_PyArg_ParseTupleAndKeywords_SizeT", "_PyArg_ParseTuple_SizeT", diff --git a/PC/python3dll.c b/PC/python3dll.c index d1b7bafe6abb3cb..67942a57b48462a 100755 --- a/PC/python3dll.c +++ b/PC/python3dll.c @@ -41,8 +41,10 @@ EXPORT_FUNC(Py_AddPendingCall) EXPORT_FUNC(Py_AtExit) EXPORT_FUNC(Py_BuildValue) EXPORT_FUNC(Py_BytesMain) +EXPORT_FUNC(Py_CLEAR) EXPORT_FUNC(Py_CompileString) EXPORT_FUNC(Py_DecodeLocale) +EXPORT_FUNC(Py_DECREF) EXPORT_FUNC(Py_DecRef) EXPORT_FUNC(Py_EncodeLocale) EXPORT_FUNC(Py_EndInterpreter) @@ -68,6 +70,7 @@ EXPORT_FUNC(Py_GetPythonHome) EXPORT_FUNC(Py_GetRecursionLimit) EXPORT_FUNC(Py_GetVersion) EXPORT_FUNC(Py_HashBuffer) +EXPORT_FUNC(Py_INCREF) EXPORT_FUNC(Py_IncRef) EXPORT_FUNC(Py_Initialize) EXPORT_FUNC(Py_InitializeEx) @@ -88,7 +91,9 @@ EXPORT_FUNC(Py_PACK_VERSION) EXPORT_FUNC(Py_REFCNT) EXPORT_FUNC(Py_ReprEnter) EXPORT_FUNC(Py_ReprLeave) +EXPORT_FUNC(Py_SET_REFCNT) EXPORT_FUNC(Py_SET_SIZE) +EXPORT_FUNC(Py_SET_TYPE) EXPORT_FUNC(Py_SetPath) EXPORT_FUNC(Py_SetProgramName) EXPORT_FUNC(Py_SetPythonHome) @@ -96,9 +101,13 @@ EXPORT_FUNC(Py_SetRecursionLimit) EXPORT_FUNC(Py_SIZE) EXPORT_FUNC(Py_TYPE) EXPORT_FUNC(Py_VaBuildValue) +EXPORT_FUNC(Py_XDECREF) +EXPORT_FUNC(Py_XINCREF) EXPORT_FUNC(Py_XNewRef) EXPORT_FUNC(PyABIInfo_Check) EXPORT_FUNC(PyAIter_Check) +EXPORT_FUNC(PyAnySet_Check) +EXPORT_FUNC(PyAnySet_CheckExact) EXPORT_FUNC(PyArg_Parse) EXPORT_FUNC(PyArg_ParseTuple) EXPORT_FUNC(PyArg_ParseTupleAndKeywords) @@ -106,6 +115,7 @@ EXPORT_FUNC(PyArg_UnpackTuple) EXPORT_FUNC(PyArg_ValidateKeywordArguments) EXPORT_FUNC(PyArg_VaParse) EXPORT_FUNC(PyArg_VaParseTupleAndKeywords) +EXPORT_FUNC(PyBool_Check) EXPORT_FUNC(PyBool_FromLong) EXPORT_FUNC(PyBuffer_FillContiguousStrides) EXPORT_FUNC(PyBuffer_FillInfo) @@ -116,6 +126,8 @@ EXPORT_FUNC(PyBuffer_Release) EXPORT_FUNC(PyBuffer_SizeFromFormat) EXPORT_FUNC(PyBuffer_ToContiguous) EXPORT_FUNC(PyByteArray_AsString) +EXPORT_FUNC(PyByteArray_Check) +EXPORT_FUNC(PyByteArray_CheckExact) EXPORT_FUNC(PyByteArray_Concat) EXPORT_FUNC(PyByteArray_FromObject) EXPORT_FUNC(PyByteArray_FromStringAndSize) @@ -123,6 +135,8 @@ EXPORT_FUNC(PyByteArray_Resize) EXPORT_FUNC(PyByteArray_Size) EXPORT_FUNC(PyBytes_AsString) EXPORT_FUNC(PyBytes_AsStringAndSize) +EXPORT_FUNC(PyBytes_Check) +EXPORT_FUNC(PyBytes_CheckExact) EXPORT_FUNC(PyBytes_Concat) EXPORT_FUNC(PyBytes_ConcatAndDel) EXPORT_FUNC(PyBytes_DecodeEscape) @@ -134,7 +148,9 @@ EXPORT_FUNC(PyBytes_FromStringAndSize) EXPORT_FUNC(PyBytes_Repr) EXPORT_FUNC(PyBytes_Size) EXPORT_FUNC(PyCallable_Check) +EXPORT_FUNC(PyCallIter_Check) EXPORT_FUNC(PyCallIter_New) +EXPORT_FUNC(PyCapsule_CheckExact) EXPORT_FUNC(PyCapsule_GetContext) EXPORT_FUNC(PyCapsule_GetDestructor) EXPORT_FUNC(PyCapsule_GetName) @@ -147,6 +163,8 @@ EXPORT_FUNC(PyCapsule_SetDestructor) EXPORT_FUNC(PyCapsule_SetName) EXPORT_FUNC(PyCapsule_SetPointer) EXPORT_FUNC(PyCFunction_Call) +EXPORT_FUNC(PyCFunction_Check) +EXPORT_FUNC(PyCFunction_CheckExact) EXPORT_FUNC(PyCFunction_GetFlags) EXPORT_FUNC(PyCFunction_GetFunction) EXPORT_FUNC(PyCFunction_GetSelf) @@ -172,6 +190,8 @@ EXPORT_FUNC(PyCodec_StreamWriter) EXPORT_FUNC(PyCodec_StrictErrors) EXPORT_FUNC(PyCodec_Unregister) EXPORT_FUNC(PyCodec_XMLCharRefReplaceErrors) +EXPORT_FUNC(PyComplex_Check) +EXPORT_FUNC(PyComplex_CheckExact) EXPORT_FUNC(PyComplex_FromDoubles) EXPORT_FUNC(PyComplex_ImagAsDouble) EXPORT_FUNC(PyComplex_RealAsDouble) @@ -179,10 +199,13 @@ EXPORT_FUNC(PyCriticalSection2_Begin) EXPORT_FUNC(PyCriticalSection2_End) EXPORT_FUNC(PyCriticalSection_Begin) EXPORT_FUNC(PyCriticalSection_End) +EXPORT_FUNC(PyCursesWindow_Check) EXPORT_FUNC(PyDescr_NewClassMethod) EXPORT_FUNC(PyDescr_NewGetSet) EXPORT_FUNC(PyDescr_NewMember) EXPORT_FUNC(PyDescr_NewMethod) +EXPORT_FUNC(PyDict_Check) +EXPORT_FUNC(PyDict_CheckExact) EXPORT_FUNC(PyDict_Clear) EXPORT_FUNC(PyDict_Contains) EXPORT_FUNC(PyDict_Copy) @@ -205,7 +228,11 @@ EXPORT_FUNC(PyDict_SetItemString) EXPORT_FUNC(PyDict_Size) EXPORT_FUNC(PyDict_Update) EXPORT_FUNC(PyDict_Values) +EXPORT_FUNC(PyDictItems_Check) +EXPORT_FUNC(PyDictKeys_Check) EXPORT_FUNC(PyDictProxy_New) +EXPORT_FUNC(PyDictValues_Check) +EXPORT_FUNC(PyDictViewSet_Check) EXPORT_FUNC(PyErr_BadArgument) EXPORT_FUNC(PyErr_BadInternalCall) EXPORT_FUNC(PyErr_CheckSignals) @@ -288,12 +315,16 @@ EXPORT_FUNC(PyException_SetArgs) EXPORT_FUNC(PyException_SetCause) EXPORT_FUNC(PyException_SetContext) EXPORT_FUNC(PyException_SetTraceback) +EXPORT_FUNC(PyExceptionClass_Check) EXPORT_FUNC(PyExceptionClass_Name) +EXPORT_FUNC(PyExceptionInstance_Check) EXPORT_FUNC(PyFile_FromFd) EXPORT_FUNC(PyFile_GetLine) EXPORT_FUNC(PyFile_WriteObject) EXPORT_FUNC(PyFile_WriteString) EXPORT_FUNC(PyFloat_AsDouble) +EXPORT_FUNC(PyFloat_Check) +EXPORT_FUNC(PyFloat_CheckExact) EXPORT_FUNC(PyFloat_FromDouble) EXPORT_FUNC(PyFloat_FromString) EXPORT_FUNC(PyFloat_GetInfo) @@ -301,6 +332,8 @@ EXPORT_FUNC(PyFloat_GetMax) EXPORT_FUNC(PyFloat_GetMin) EXPORT_FUNC(PyFrame_GetCode) EXPORT_FUNC(PyFrame_GetLineNumber) +EXPORT_FUNC(PyFrozenSet_Check) +EXPORT_FUNC(PyFrozenSet_CheckExact) EXPORT_FUNC(PyFrozenSet_New) EXPORT_FUNC(PyGC_Collect) EXPORT_FUNC(PyGC_Disable) @@ -326,6 +359,7 @@ EXPORT_FUNC(PyImport_Import) EXPORT_FUNC(PyImport_ImportFrozenModule) EXPORT_FUNC(PyImport_ImportFrozenModuleObject) EXPORT_FUNC(PyImport_ImportModule) +EXPORT_FUNC(PyImport_ImportModuleEx) EXPORT_FUNC(PyImport_ImportModuleLevel) EXPORT_FUNC(PyImport_ImportModuleLevelObject) EXPORT_FUNC(PyImport_ImportModuleNoBlock) @@ -349,6 +383,8 @@ EXPORT_FUNC(PyIter_NextItem) EXPORT_FUNC(PyIter_Send) EXPORT_FUNC(PyList_Append) EXPORT_FUNC(PyList_AsTuple) +EXPORT_FUNC(PyList_Check) +EXPORT_FUNC(PyList_CheckExact) EXPORT_FUNC(PyList_GetItem) EXPORT_FUNC(PyList_GetItemRef) EXPORT_FUNC(PyList_GetSlice) @@ -359,6 +395,7 @@ EXPORT_FUNC(PyList_SetItem) EXPORT_FUNC(PyList_SetSlice) EXPORT_FUNC(PyList_Size) EXPORT_FUNC(PyList_Sort) +EXPORT_FUNC(PyLong_AS_LONG) EXPORT_FUNC(PyLong_AsDouble) EXPORT_FUNC(PyLong_AsInt) EXPORT_FUNC(PyLong_AsInt32) @@ -377,6 +414,8 @@ EXPORT_FUNC(PyLong_AsUnsignedLongLong) EXPORT_FUNC(PyLong_AsUnsignedLongLongMask) EXPORT_FUNC(PyLong_AsUnsignedLongMask) EXPORT_FUNC(PyLong_AsVoidPtr) +EXPORT_FUNC(PyLong_Check) +EXPORT_FUNC(PyLong_CheckExact) EXPORT_FUNC(PyLong_Export) EXPORT_FUNC(PyLong_FreeExport) EXPORT_FUNC(PyLong_FromDouble) @@ -400,6 +439,8 @@ EXPORT_FUNC(PyLongWriter_Create) EXPORT_FUNC(PyLongWriter_Discard) EXPORT_FUNC(PyLongWriter_Finish) EXPORT_FUNC(PyMapping_Check) +EXPORT_FUNC(PyMapping_DelItem) +EXPORT_FUNC(PyMapping_DelItemString) EXPORT_FUNC(PyMapping_GetItemString) EXPORT_FUNC(PyMapping_GetOptionalItem) EXPORT_FUNC(PyMapping_GetOptionalItemString) @@ -416,6 +457,7 @@ EXPORT_FUNC(PyMapping_Values) EXPORT_FUNC(PyMarshal_ReadObjectFromString) EXPORT_FUNC(PyMarshal_WriteObjectToString) EXPORT_FUNC(PyMem_Calloc) +EXPORT_FUNC(PyMem_Del) EXPORT_FUNC(PyMem_Free) EXPORT_FUNC(PyMem_Malloc) EXPORT_FUNC(PyMem_RawCalloc) @@ -425,6 +467,7 @@ EXPORT_FUNC(PyMem_RawRealloc) EXPORT_FUNC(PyMem_Realloc) EXPORT_FUNC(PyMember_GetOne) EXPORT_FUNC(PyMember_SetOne) +EXPORT_FUNC(PyMemoryView_Check) EXPORT_FUNC(PyMemoryView_FromBuffer) EXPORT_FUNC(PyMemoryView_FromMemory) EXPORT_FUNC(PyMemoryView_FromObject) @@ -436,9 +479,13 @@ EXPORT_FUNC(PyModule_AddObject) EXPORT_FUNC(PyModule_AddObjectRef) EXPORT_FUNC(PyModule_AddStringConstant) EXPORT_FUNC(PyModule_AddType) +EXPORT_FUNC(PyModule_Check) +EXPORT_FUNC(PyModule_CheckExact) +EXPORT_FUNC(PyModule_Create) EXPORT_FUNC(PyModule_Create2) EXPORT_FUNC(PyModule_Exec) EXPORT_FUNC(PyModule_ExecDef) +EXPORT_FUNC(PyModule_FromDefAndSpec) EXPORT_FUNC(PyModule_FromDefAndSpec2) EXPORT_FUNC(PyModule_FromSlotsAndSpec) EXPORT_FUNC(PyModule_GetDef) @@ -551,6 +598,8 @@ EXPORT_FUNC(PyObject_IsSubclass) EXPORT_FUNC(PyObject_IsTrue) EXPORT_FUNC(PyObject_Length) EXPORT_FUNC(PyObject_Malloc) +EXPORT_FUNC(PyObject_New) +EXPORT_FUNC(PyObject_NewVar) EXPORT_FUNC(PyObject_Not) EXPORT_FUNC(PyObject_Realloc) EXPORT_FUNC(PyObject_Repr) @@ -563,6 +612,7 @@ EXPORT_FUNC(PyObject_SetItem) EXPORT_FUNC(PyObject_Size) EXPORT_FUNC(PyObject_Str) EXPORT_FUNC(PyObject_Type) +EXPORT_FUNC(PyObject_TypeCheck) EXPORT_FUNC(PyObject_Vectorcall) EXPORT_FUNC(PyObject_VectorcallMethod) EXPORT_FUNC(PyOS_CheckStack) @@ -578,6 +628,8 @@ EXPORT_FUNC(PyOS_string_to_double) EXPORT_FUNC(PyOS_strtol) EXPORT_FUNC(PyOS_strtoul) EXPORT_FUNC(PyOS_vsnprintf) +EXPORT_FUNC(PyRange_Check) +EXPORT_FUNC(PySeqIter_Check) EXPORT_FUNC(PySeqIter_New) EXPORT_FUNC(PySequence_Check) EXPORT_FUNC(PySequence_Concat) @@ -600,6 +652,8 @@ EXPORT_FUNC(PySequence_SetSlice) EXPORT_FUNC(PySequence_Size) EXPORT_FUNC(PySequence_Tuple) EXPORT_FUNC(PySet_Add) +EXPORT_FUNC(PySet_Check) +EXPORT_FUNC(PySet_CheckExact) EXPORT_FUNC(PySet_Clear) EXPORT_FUNC(PySet_Contains) EXPORT_FUNC(PySet_Discard) @@ -607,6 +661,7 @@ EXPORT_FUNC(PySet_New) EXPORT_FUNC(PySet_Pop) EXPORT_FUNC(PySet_Size) EXPORT_FUNC(PySlice_AdjustIndices) +EXPORT_FUNC(PySlice_Check) EXPORT_FUNC(PySlice_GetIndices) EXPORT_FUNC(PySlice_GetIndicesEx) EXPORT_FUNC(PySlice_New) @@ -679,15 +734,21 @@ EXPORT_FUNC(PyThreadState_New) EXPORT_FUNC(PyThreadState_Release) EXPORT_FUNC(PyThreadState_SetAsyncExc) EXPORT_FUNC(PyThreadState_Swap) +EXPORT_FUNC(PyTraceBack_Check) EXPORT_FUNC(PyTraceBack_Here) EXPORT_FUNC(PyTraceBack_Print) +EXPORT_FUNC(PyTuple_Check) +EXPORT_FUNC(PyTuple_CheckExact) EXPORT_FUNC(PyTuple_GetItem) EXPORT_FUNC(PyTuple_GetSlice) EXPORT_FUNC(PyTuple_New) EXPORT_FUNC(PyTuple_Pack) EXPORT_FUNC(PyTuple_SetItem) EXPORT_FUNC(PyTuple_Size) +EXPORT_FUNC(PyType_Check) +EXPORT_FUNC(PyType_CheckExact) EXPORT_FUNC(PyType_ClearCache) +EXPORT_FUNC(PyType_FastSubclass) EXPORT_FUNC(PyType_Freeze) EXPORT_FUNC(PyType_FromMetaclass) EXPORT_FUNC(PyType_FromModuleAndSpec) @@ -712,6 +773,7 @@ EXPORT_FUNC(PyType_GetName) EXPORT_FUNC(PyType_GetQualName) EXPORT_FUNC(PyType_GetSlot) EXPORT_FUNC(PyType_GetTypeDataSize) +EXPORT_FUNC(PyType_IS_GC) EXPORT_FUNC(PyType_IsSubtype) EXPORT_FUNC(PyType_Modified) EXPORT_FUNC(PyType_Ready) @@ -737,6 +799,8 @@ EXPORT_FUNC(PyUnicode_AsUTF8String) EXPORT_FUNC(PyUnicode_AsWideChar) EXPORT_FUNC(PyUnicode_AsWideCharString) EXPORT_FUNC(PyUnicode_BuildEncodingMap) +EXPORT_FUNC(PyUnicode_Check) +EXPORT_FUNC(PyUnicode_CheckExact) EXPORT_FUNC(PyUnicode_Compare) EXPORT_FUNC(PyUnicode_CompareWithASCIIString) EXPORT_FUNC(PyUnicode_Concat) @@ -829,6 +893,10 @@ EXPORT_FUNC(PyUnicodeTranslateError_SetReason) EXPORT_FUNC(PyUnicodeTranslateError_SetStart) EXPORT_FUNC(PyVectorcall_Call) EXPORT_FUNC(PyVectorcall_NARGS) +EXPORT_FUNC(PyWeakref_Check) +EXPORT_FUNC(PyWeakref_CheckProxy) +EXPORT_FUNC(PyWeakref_CheckRef) +EXPORT_FUNC(PyWeakref_CheckRefExact) EXPORT_FUNC(PyWeakref_GetObject) EXPORT_FUNC(PyWeakref_GetRef) EXPORT_FUNC(PyWeakref_NewProxy) From f76ca14d9758da312e61ca64e6f75a37e5615a74 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Tue, 6 Oct 2026 00:49:25 +0200 Subject: [PATCH 4/9] Document all macros as macros, not as functions --- Doc/data/stable_abi.dat | 136 ++++++++++---------- Lib/test/test_stable_abi_ctypes.py | 68 ---------- Misc/stable_abi.toml | 192 ++++++++++++++--------------- PC/python3dll.c | 68 ---------- 4 files changed, 164 insertions(+), 300 deletions(-) diff --git a/Doc/data/stable_abi.dat b/Doc/data/stable_abi.dat index 57dbb3947a22cce..a5afda223cabbc7 100644 --- a/Doc/data/stable_abi.dat +++ b/Doc/data/stable_abi.dat @@ -20,8 +20,8 @@ macro,PyABIInfo_VAR,3.15,, func,PyAIter_Check,3.10,, macro,PyAPI_DATA,3.2,, macro,PyAPI_FUNC,3.2,, -func,PyAnySet_Check,3.2,, -func,PyAnySet_CheckExact,3.2,, +macro,PyAnySet_Check,3.2,, +macro,PyAnySet_CheckExact,3.2,, func,PyArg_Parse,3.2,, func,PyArg_ParseTuple,3.2,, func,PyArg_ParseTupleAndKeywords,3.2,, @@ -50,7 +50,7 @@ macro,PyBUF_STRIDES,3.11,, macro,PyBUF_WRITABLE,3.11,, macro,PyBUF_WRITE,3.11,, data,PyBaseObject_Type,3.2,, -func,PyBool_Check,3.2,, +macro,PyBool_Check,3.2,, func,PyBool_FromLong,3.2,, data,PyBool_Type,3.2,, func,PyBuffer_FillContiguousStrides,3.11,, @@ -63,8 +63,8 @@ func,PyBuffer_SizeFromFormat,3.11,, func,PyBuffer_ToContiguous,3.11,, data,PyByteArrayIter_Type,3.2,, func,PyByteArray_AsString,3.2,, -func,PyByteArray_Check,3.2,, -func,PyByteArray_CheckExact,3.2,, +macro,PyByteArray_Check,3.2,, +macro,PyByteArray_CheckExact,3.2,, func,PyByteArray_Concat,3.2,, func,PyByteArray_FromObject,3.2,, func,PyByteArray_FromStringAndSize,3.2,, @@ -74,8 +74,8 @@ data,PyByteArray_Type,3.2,, data,PyBytesIter_Type,3.2,, func,PyBytes_AsString,3.2,, func,PyBytes_AsStringAndSize,3.2,, -func,PyBytes_Check,3.2,, -func,PyBytes_CheckExact,3.2,, +macro,PyBytes_Check,3.2,, +macro,PyBytes_CheckExact,3.2,, func,PyBytes_Concat,3.2,, func,PyBytes_ConcatAndDel,3.2,, func,PyBytes_DecodeEscape,3.2,, @@ -91,8 +91,8 @@ type,PyCFunction,3.2,, type,PyCFunctionFast,3.13,, type,PyCFunctionFastWithKeywords,3.13,, type,PyCFunctionWithKeywords,3.2,, -func,PyCFunction_Check,3.2,, -func,PyCFunction_CheckExact,3.9,, +macro,PyCFunction_Check,3.2,, +macro,PyCFunction_CheckExact,3.9,, func,PyCFunction_GetFlags,3.2,, func,PyCFunction_GetFunction,3.2,, func,PyCFunction_GetSelf,3.2,, @@ -100,11 +100,11 @@ func,PyCFunction_New,3.4,, func,PyCFunction_NewEx,3.2,, data,PyCFunction_Type,3.2,, func,PyCMethod_New,3.9,, -func,PyCallIter_Check,3.2,, +macro,PyCallIter_Check,3.2,, func,PyCallIter_New,3.2,, data,PyCallIter_Type,3.2,, func,PyCallable_Check,3.2,, -func,PyCapsule_CheckExact,3.2,, +macro,PyCapsule_CheckExact,3.2,, type,PyCapsule_Destructor,3.2,, func,PyCapsule_GetContext,3.2,, func,PyCapsule_GetDestructor,3.2,, @@ -138,8 +138,8 @@ func,PyCodec_StreamWriter,3.2,, func,PyCodec_StrictErrors,3.2,, func,PyCodec_Unregister,3.10,, func,PyCodec_XMLCharRefReplaceErrors,3.2,, -func,PyComplex_Check,3.2,, -func,PyComplex_CheckExact,3.2,, +macro,PyComplex_Check,3.2,, +macro,PyComplex_CheckExact,3.2,, func,PyComplex_FromDoubles,3.2,, func,PyComplex_ImagAsDouble,3.2,, func,PyComplex_RealAsDouble,3.2,, @@ -150,28 +150,28 @@ func,PyCriticalSection2_Begin,3.15,, func,PyCriticalSection2_End,3.15,, func,PyCriticalSection_Begin,3.15,, func,PyCriticalSection_End,3.15,, -func,PyCursesWindow_Check,3.2,, +macro,PyCursesWindow_Check,3.2,, func,PyDescr_NewClassMethod,3.2,, func,PyDescr_NewGetSet,3.2,, func,PyDescr_NewMember,3.2,, func,PyDescr_NewMethod,3.2,, -func,PyDictItems_Check,3.2,, +macro,PyDictItems_Check,3.2,, data,PyDictItems_Type,3.2,, data,PyDictIterItem_Type,3.2,, data,PyDictIterKey_Type,3.2,, data,PyDictIterValue_Type,3.2,, -func,PyDictKeys_Check,3.2,, +macro,PyDictKeys_Check,3.2,, data,PyDictKeys_Type,3.2,, func,PyDictProxy_New,3.2,, data,PyDictProxy_Type,3.2,, data,PyDictRevIterItem_Type,3.8,, data,PyDictRevIterKey_Type,3.8,, data,PyDictRevIterValue_Type,3.8,, -func,PyDictValues_Check,3.2,, +macro,PyDictValues_Check,3.2,, data,PyDictValues_Type,3.2,, -func,PyDictViewSet_Check,3.2,, -func,PyDict_Check,3.2,, -func,PyDict_CheckExact,3.2,, +macro,PyDictViewSet_Check,3.2,, +macro,PyDict_Check,3.2,, +macro,PyDict_CheckExact,3.2,, func,PyDict_Clear,3.2,, func,PyDict_Contains,3.2,, func,PyDict_Copy,3.2,, @@ -336,9 +336,9 @@ data,PyExc_ValueError,3.2,, data,PyExc_Warning,3.2,, data,PyExc_WindowsError,3.7,on Windows, data,PyExc_ZeroDivisionError,3.2,, -func,PyExceptionClass_Check,3.2,, +macro,PyExceptionClass_Check,3.2,, func,PyExceptionClass_Name,3.8,, -func,PyExceptionInstance_Check,3.2,, +macro,PyExceptionInstance_Check,3.2,, macro,PyExceptionInstance_Class,3.2,, func,PyException_GetArgs,3.12,, func,PyException_GetCause,3.2,, @@ -354,8 +354,8 @@ func,PyFile_WriteObject,3.2,, func,PyFile_WriteString,3.2,, data,PyFilter_Type,3.2,, func,PyFloat_AsDouble,3.2,, -func,PyFloat_Check,3.2,, -func,PyFloat_CheckExact,3.2,, +macro,PyFloat_Check,3.2,, +macro,PyFloat_CheckExact,3.2,, func,PyFloat_FromDouble,3.2,, func,PyFloat_FromString,3.2,, func,PyFloat_GetInfo,3.2,, @@ -365,8 +365,8 @@ data,PyFloat_Type,3.2,, type,PyFrameObject,3.2,,opaque func,PyFrame_GetCode,3.10,, func,PyFrame_GetLineNumber,3.10,, -func,PyFrozenSet_Check,3.2,, -func,PyFrozenSet_CheckExact,3.2,, +macro,PyFrozenSet_Check,3.2,, +macro,PyFrozenSet_CheckExact,3.2,, func,PyFrozenSet_New,3.2,, data,PyFrozenSet_Type,3.2,, func,PyGC_Collect,3.2,, @@ -396,7 +396,7 @@ func,PyImport_Import,3.2,, func,PyImport_ImportFrozenModule,3.2,, func,PyImport_ImportFrozenModuleObject,3.7,, func,PyImport_ImportModule,3.2,, -func,PyImport_ImportModuleEx,3.2,, +macro,PyImport_ImportModuleEx,3.2,, func,PyImport_ImportModuleLevel,3.2,, func,PyImport_ImportModuleLevelObject,3.7,, func,PyImport_ReloadModule,3.2,, @@ -424,8 +424,8 @@ data,PyListIter_Type,3.2,, data,PyListRevIter_Type,3.2,, func,PyList_Append,3.2,, func,PyList_AsTuple,3.2,, -func,PyList_Check,3.2,, -func,PyList_CheckExact,3.2,, +macro,PyList_Check,3.2,, +macro,PyList_CheckExact,3.2,, func,PyList_GetItem,3.2,, func,PyList_GetItemRef,3.13,, func,PyList_GetSlice,3.2,, @@ -445,7 +445,7 @@ type,PyLongWriter,3.15,,opaque func,PyLongWriter_Create,3.15,, func,PyLongWriter_Discard,3.15,, func,PyLongWriter_Finish,3.15,, -func,PyLong_AS_LONG,3.2,, +macro,PyLong_AS_LONG,3.2,, func,PyLong_AsDouble,3.2,, func,PyLong_AsInt,3.13,, func,PyLong_AsInt32,3.14,, @@ -464,8 +464,8 @@ func,PyLong_AsUnsignedLongLong,3.2,, func,PyLong_AsUnsignedLongLongMask,3.2,, func,PyLong_AsUnsignedLongMask,3.2,, func,PyLong_AsVoidPtr,3.2,, -func,PyLong_Check,3.2,, -func,PyLong_CheckExact,3.2,, +macro,PyLong_Check,3.2,, +macro,PyLong_CheckExact,3.2,, func,PyLong_Export,3.15,, func,PyLong_FreeExport,3.15,, func,PyLong_FromDouble,3.2,, @@ -489,8 +489,8 @@ data,PyLong_Type,3.2,, macro,PyMODEXPORT_FUNC,3.15,, data,PyMap_Type,3.2,, func,PyMapping_Check,3.2,, -func,PyMapping_DelItem,3.2,, -func,PyMapping_DelItemString,3.2,, +macro,PyMapping_DelItem,3.2,, +macro,PyMapping_DelItemString,3.2,, func,PyMapping_GetItemString,3.2,, func,PyMapping_GetOptionalItem,3.13,, func,PyMapping_GetOptionalItemString,3.13,, @@ -506,7 +506,7 @@ func,PyMapping_Size,3.2,, func,PyMapping_Values,3.2,, func,PyMem_Calloc,3.7,, macro,PyMem_DEL,3.2,, -func,PyMem_Del,3.2,, +macro,PyMem_Del,3.2,, macro,PyMem_FREE,3.2,, func,PyMem_Free,3.2,, macro,PyMem_MALLOC,3.2,, @@ -525,7 +525,7 @@ type,PyMemberDef,3.2,,full-abi data,PyMemberDescr_Type,3.2,, func,PyMember_GetOne,3.2,, func,PyMember_SetOne,3.2,, -func,PyMemoryView_Check,3.2,, +macro,PyMemoryView_Check,3.2,, func,PyMemoryView_FromBuffer,3.11,, func,PyMemoryView_FromMemory,3.7,, func,PyMemoryView_FromObject,3.2,, @@ -547,13 +547,13 @@ func,PyModule_AddObjectRef,3.10,, func,PyModule_AddStringConstant,3.2,, macro,PyModule_AddStringMacro,3.2,, func,PyModule_AddType,3.10,, -func,PyModule_Check,3.2,, -func,PyModule_CheckExact,3.2,, -func,PyModule_Create,3.2,, +macro,PyModule_Check,3.2,, +macro,PyModule_CheckExact,3.2,, +macro,PyModule_Create,3.2,, func,PyModule_Create2,3.2,, func,PyModule_Exec,3.15,, func,PyModule_ExecDef,3.7,, -func,PyModule_FromDefAndSpec,3.5,, +macro,PyModule_FromDefAndSpec,3.5,, func,PyModule_FromDefAndSpec2,3.7,, func,PyModule_FromSlotsAndSpec,3.15,, func,PyModule_GetDef,3.2,, @@ -692,8 +692,8 @@ func,PyObject_Length,3.2,, func,PyObject_Malloc,3.2,, macro,PyObject_NEW,3.2,, macro,PyObject_NEW_VAR,3.2,, -func,PyObject_New,3.2,, -func,PyObject_NewVar,3.2,, +macro,PyObject_New,3.2,, +macro,PyObject_NewVar,3.2,, func,PyObject_Not,3.2,, func,PyObject_Realloc,3.2,, func,PyObject_Repr,3.2,, @@ -706,15 +706,15 @@ func,PyObject_SetItem,3.2,, func,PyObject_Size,3.2,, func,PyObject_Str,3.2,, func,PyObject_Type,3.2,, -func,PyObject_TypeCheck,3.2,, +macro,PyObject_TypeCheck,3.2,, func,PyObject_Vectorcall,3.12,, func,PyObject_VectorcallMethod,3.12,, data,PyProperty_Type,3.2,, data,PyRangeIter_Type,3.2,, -func,PyRange_Check,3.2,, +macro,PyRange_Check,3.2,, data,PyRange_Type,3.2,, data,PyReversed_Type,3.2,, -func,PySeqIter_Check,3.2,, +macro,PySeqIter_Check,3.2,, func,PySeqIter_New,3.2,, data,PySeqIter_Type,3.2,, func,PySequence_Check,3.2,, @@ -739,8 +739,8 @@ func,PySequence_Size,3.2,, func,PySequence_Tuple,3.2,, data,PySetIter_Type,3.2,, func,PySet_Add,3.2,, -func,PySet_Check,3.2,, -func,PySet_CheckExact,3.10,, +macro,PySet_Check,3.2,, +macro,PySet_CheckExact,3.10,, func,PySet_Clear,3.2,, func,PySet_Contains,3.2,, func,PySet_Discard,3.2,, @@ -749,7 +749,7 @@ func,PySet_Pop,3.2,, func,PySet_Size,3.2,, data,PySet_Type,3.2,, func,PySlice_AdjustIndices,3.7,, -func,PySlice_Check,3.2,, +macro,PySlice_Check,3.2,, func,PySlice_GetIndices,3.2,, func,PySlice_GetIndicesEx,3.2,, func,PySlice_New,3.2,, @@ -834,13 +834,13 @@ 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_Check,3.2,, +macro,PyTraceBack_Check,3.2,, func,PyTraceBack_Here,3.2,, func,PyTraceBack_Print,3.2,, data,PyTraceBack_Type,3.2,, data,PyTupleIter_Type,3.2,, -func,PyTuple_Check,3.2,, -func,PyTuple_CheckExact,3.2,, +macro,PyTuple_Check,3.2,, +macro,PyTuple_CheckExact,3.2,, func,PyTuple_GetItem,3.2,, func,PyTuple_GetSlice,3.2,, func,PyTuple_New,3.2,, @@ -849,10 +849,10 @@ func,PyTuple_SetItem,3.2,, func,PyTuple_Size,3.2,, data,PyTuple_Type,3.2,, type,PyTypeObject,3.2,,opaque -func,PyType_Check,3.2,, -func,PyType_CheckExact,3.2,, +macro,PyType_Check,3.2,, +macro,PyType_CheckExact,3.2,, func,PyType_ClearCache,3.2,, -func,PyType_FastSubclass,3.2,, +macro,PyType_FastSubclass,3.2,, func,PyType_Freeze,3.14,, func,PyType_FromMetaclass,3.12,, func,PyType_FromModuleAndSpec,3.10,, @@ -877,7 +877,7 @@ func,PyType_GetName,3.11,, func,PyType_GetQualName,3.11,, func,PyType_GetSlot,3.4,, func,PyType_GetTypeDataSize,3.12,, -func,PyType_IS_GC,3.2,, +macro,PyType_IS_GC,3.2,, func,PyType_IsSubtype,3.2,, func,PyType_Modified,3.2,, func,PyType_Ready,3.2,, @@ -927,8 +927,8 @@ func,PyUnicode_AsUnicodeEscapeString,3.2,, func,PyUnicode_AsWideChar,3.2,, func,PyUnicode_AsWideCharString,3.7,, func,PyUnicode_BuildEncodingMap,3.2,, -func,PyUnicode_Check,3.2,, -func,PyUnicode_CheckExact,3.2,, +macro,PyUnicode_Check,3.2,, +macro,PyUnicode_CheckExact,3.2,, func,PyUnicode_Compare,3.2,, func,PyUnicode_CompareWithASCIIString,3.2,, func,PyUnicode_Concat,3.2,, @@ -1001,10 +1001,10 @@ macro,PyVarObject_HEAD_INIT,3.2,, func,PyVectorcall_Call,3.12,, func,PyVectorcall_NARGS,3.12,, type,PyWeakReference,3.2,,opaque -func,PyWeakref_Check,3.2,, -func,PyWeakref_CheckProxy,3.2,, -func,PyWeakref_CheckRef,3.2,, -func,PyWeakref_CheckRefExact,3.2,, +macro,PyWeakref_Check,3.2,, +macro,PyWeakref_CheckProxy,3.2,, +macro,PyWeakref_CheckRef,3.2,, +macro,PyWeakref_CheckRefExact,3.2,, func,PyWeakref_GetRef,3.13,, func,PyWeakref_NewProxy,3.2,, func,PyWeakref_NewRef,3.2,, @@ -1034,9 +1034,9 @@ macro,Py_BUILD_ASSERT_EXPR,3.3,, func,Py_BuildValue,3.2,, func,Py_BytesMain,3.8,, macro,Py_CHARMASK,3.3,, -func,Py_CLEAR,3.2,, +macro,Py_CLEAR,3.2,, func,Py_CompileString,3.2,, -func,Py_DECREF,3.2,, +macro,Py_DECREF,3.2,, macro,Py_DEPRECATED,3.2,, func,Py_DecRef,3.2,, func,Py_DecodeLocale,3.7,, @@ -1063,7 +1063,7 @@ func,Py_GetPlatform,3.2,, func,Py_GetRecursionLimit,3.2,, func,Py_GetVersion,3.2,, func,Py_HashBuffer,3.16,, -func,Py_INCREF,3.2,, +macro,Py_INCREF,3.2,, macro,Py_IS_FINITE,3.2,, macro,Py_IS_INFINITY,3.2,, macro,Py_IS_NAN,3.2,, @@ -1098,9 +1098,9 @@ macro,Py_RETURN_RICHCOMPARE,3.7,, func,Py_ReprEnter,3.2,, func,Py_ReprLeave,3.2,, macro,Py_SAFE_DOWNCAST,3.2,, -func,Py_SET_REFCNT,3.9,, +macro,Py_SET_REFCNT,3.9,, func,Py_SET_SIZE,3.15,, -func,Py_SET_TYPE,3.9,, +macro,Py_SET_TYPE,3.9,, func,Py_SIZE,3.15,, macro,Py_STRINGIFY,3.5,, func,Py_SetRecursionLimit,3.2,, @@ -1138,8 +1138,8 @@ macro,Py_UNUSED,3.4,, macro,Py_VISIT,3.2,, func,Py_VaBuildValue,3.2,, data,Py_Version,3.11,, -func,Py_XDECREF,3.2,, -func,Py_XINCREF,3.2,, +macro,Py_XDECREF,3.2,, +macro,Py_XINCREF,3.2,, func,Py_XNewRef,3.10,, macro,Py_am_aiter,3.5,, macro,Py_am_anext,3.5,, diff --git a/Lib/test/test_stable_abi_ctypes.py b/Lib/test/test_stable_abi_ctypes.py index 27ecedf59ea72d3..aed7451e89b1563 100644 --- a/Lib/test/test_stable_abi_ctypes.py +++ b/Lib/test/test_stable_abi_ctypes.py @@ -47,8 +47,6 @@ def test_windows_feature_macros(self): "PyABIInfo_Check", "PyAIter_Check", - "PyAnySet_Check", - "PyAnySet_CheckExact", "PyArg_Parse", "PyArg_ParseTuple", "PyArg_ParseTupleAndKeywords", @@ -57,7 +55,6 @@ def test_windows_feature_macros(self): "PyArg_VaParseTupleAndKeywords", "PyArg_ValidateKeywordArguments", "PyBaseObject_Type", - "PyBool_Check", "PyBool_FromLong", "PyBool_Type", "PyBuffer_FillContiguousStrides", @@ -70,8 +67,6 @@ def test_windows_feature_macros(self): "PyBuffer_ToContiguous", "PyByteArrayIter_Type", "PyByteArray_AsString", - "PyByteArray_Check", - "PyByteArray_CheckExact", "PyByteArray_Concat", "PyByteArray_FromObject", "PyByteArray_FromStringAndSize", @@ -81,8 +76,6 @@ def test_windows_feature_macros(self): "PyBytesIter_Type", "PyBytes_AsString", "PyBytes_AsStringAndSize", - "PyBytes_Check", - "PyBytes_CheckExact", "PyBytes_Concat", "PyBytes_ConcatAndDel", "PyBytes_DecodeEscape", @@ -95,8 +88,6 @@ def test_windows_feature_macros(self): "PyBytes_Size", "PyBytes_Type", "PyCFunction_Call", - "PyCFunction_Check", - "PyCFunction_CheckExact", "PyCFunction_GetFlags", "PyCFunction_GetFunction", "PyCFunction_GetSelf", @@ -104,11 +95,9 @@ def test_windows_feature_macros(self): "PyCFunction_NewEx", "PyCFunction_Type", "PyCMethod_New", - "PyCallIter_Check", "PyCallIter_New", "PyCallIter_Type", "PyCallable_Check", - "PyCapsule_CheckExact", "PyCapsule_GetContext", "PyCapsule_GetDestructor", "PyCapsule_GetName", @@ -141,8 +130,6 @@ def test_windows_feature_macros(self): "PyCodec_StrictErrors", "PyCodec_Unregister", "PyCodec_XMLCharRefReplaceErrors", - "PyComplex_Check", - "PyComplex_CheckExact", "PyComplex_FromDoubles", "PyComplex_ImagAsDouble", "PyComplex_RealAsDouble", @@ -151,28 +138,21 @@ def test_windows_feature_macros(self): "PyCriticalSection2_End", "PyCriticalSection_Begin", "PyCriticalSection_End", - "PyCursesWindow_Check", "PyDescr_NewClassMethod", "PyDescr_NewGetSet", "PyDescr_NewMember", "PyDescr_NewMethod", - "PyDictItems_Check", "PyDictItems_Type", "PyDictIterItem_Type", "PyDictIterKey_Type", "PyDictIterValue_Type", - "PyDictKeys_Check", "PyDictKeys_Type", "PyDictProxy_New", "PyDictProxy_Type", "PyDictRevIterItem_Type", "PyDictRevIterKey_Type", "PyDictRevIterValue_Type", - "PyDictValues_Check", "PyDictValues_Type", - "PyDictViewSet_Check", - "PyDict_Check", - "PyDict_CheckExact", "PyDict_Clear", "PyDict_Contains", "PyDict_Copy", @@ -334,9 +314,7 @@ def test_windows_feature_macros(self): "PyExc_ValueError", "PyExc_Warning", "PyExc_ZeroDivisionError", - "PyExceptionClass_Check", "PyExceptionClass_Name", - "PyExceptionInstance_Check", "PyException_GetArgs", "PyException_GetCause", "PyException_GetContext", @@ -351,8 +329,6 @@ def test_windows_feature_macros(self): "PyFile_WriteString", "PyFilter_Type", "PyFloat_AsDouble", - "PyFloat_Check", - "PyFloat_CheckExact", "PyFloat_FromDouble", "PyFloat_FromString", "PyFloat_GetInfo", @@ -361,8 +337,6 @@ def test_windows_feature_macros(self): "PyFloat_Type", "PyFrame_GetCode", "PyFrame_GetLineNumber", - "PyFrozenSet_Check", - "PyFrozenSet_CheckExact", "PyFrozenSet_New", "PyFrozenSet_Type", "PyGC_Collect", @@ -390,7 +364,6 @@ def test_windows_feature_macros(self): "PyImport_ImportFrozenModule", "PyImport_ImportFrozenModuleObject", "PyImport_ImportModule", - "PyImport_ImportModuleEx", "PyImport_ImportModuleLevel", "PyImport_ImportModuleLevelObject", "PyImport_ImportModuleNoBlock", @@ -416,8 +389,6 @@ def test_windows_feature_macros(self): "PyListRevIter_Type", "PyList_Append", "PyList_AsTuple", - "PyList_Check", - "PyList_CheckExact", "PyList_GetItem", "PyList_GetItemRef", "PyList_GetSlice", @@ -433,7 +404,6 @@ def test_windows_feature_macros(self): "PyLongWriter_Create", "PyLongWriter_Discard", "PyLongWriter_Finish", - "PyLong_AS_LONG", "PyLong_AsDouble", "PyLong_AsInt", "PyLong_AsInt32", @@ -452,8 +422,6 @@ def test_windows_feature_macros(self): "PyLong_AsUnsignedLongLongMask", "PyLong_AsUnsignedLongMask", "PyLong_AsVoidPtr", - "PyLong_Check", - "PyLong_CheckExact", "PyLong_Export", "PyLong_FreeExport", "PyLong_FromDouble", @@ -476,8 +444,6 @@ def test_windows_feature_macros(self): "PyLong_Type", "PyMap_Type", "PyMapping_Check", - "PyMapping_DelItem", - "PyMapping_DelItemString", "PyMapping_GetItemString", "PyMapping_GetOptionalItem", "PyMapping_GetOptionalItemString", @@ -494,7 +460,6 @@ def test_windows_feature_macros(self): "PyMarshal_ReadObjectFromString", "PyMarshal_WriteObjectToString", "PyMem_Calloc", - "PyMem_Del", "PyMem_Free", "PyMem_Malloc", "PyMem_RawCalloc", @@ -505,7 +470,6 @@ def test_windows_feature_macros(self): "PyMemberDescr_Type", "PyMember_GetOne", "PyMember_SetOne", - "PyMemoryView_Check", "PyMemoryView_FromBuffer", "PyMemoryView_FromMemory", "PyMemoryView_FromObject", @@ -521,13 +485,9 @@ def test_windows_feature_macros(self): "PyModule_AddObjectRef", "PyModule_AddStringConstant", "PyModule_AddType", - "PyModule_Check", - "PyModule_CheckExact", - "PyModule_Create", "PyModule_Create2", "PyModule_Exec", "PyModule_ExecDef", - "PyModule_FromDefAndSpec", "PyModule_FromDefAndSpec2", "PyModule_FromSlotsAndSpec", "PyModule_GetDef", @@ -653,8 +613,6 @@ def test_windows_feature_macros(self): "PyObject_IsTrue", "PyObject_Length", "PyObject_Malloc", - "PyObject_New", - "PyObject_NewVar", "PyObject_Not", "PyObject_Realloc", "PyObject_Repr", @@ -667,15 +625,12 @@ def test_windows_feature_macros(self): "PyObject_Size", "PyObject_Str", "PyObject_Type", - "PyObject_TypeCheck", "PyObject_Vectorcall", "PyObject_VectorcallMethod", "PyProperty_Type", "PyRangeIter_Type", - "PyRange_Check", "PyRange_Type", "PyReversed_Type", - "PySeqIter_Check", "PySeqIter_New", "PySeqIter_Type", "PySequence_Check", @@ -700,8 +655,6 @@ def test_windows_feature_macros(self): "PySequence_Tuple", "PySetIter_Type", "PySet_Add", - "PySet_Check", - "PySet_CheckExact", "PySet_Clear", "PySet_Contains", "PySet_Discard", @@ -710,7 +663,6 @@ def test_windows_feature_macros(self): "PySet_Size", "PySet_Type", "PySlice_AdjustIndices", - "PySlice_Check", "PySlice_GetIndices", "PySlice_GetIndicesEx", "PySlice_New", @@ -785,13 +737,10 @@ def test_windows_feature_macros(self): "PyThread_tss_get", "PyThread_tss_is_created", "PyThread_tss_set", - "PyTraceBack_Check", "PyTraceBack_Here", "PyTraceBack_Print", "PyTraceBack_Type", "PyTupleIter_Type", - "PyTuple_Check", - "PyTuple_CheckExact", "PyTuple_GetItem", "PyTuple_GetSlice", "PyTuple_New", @@ -799,10 +748,7 @@ def test_windows_feature_macros(self): "PyTuple_SetItem", "PyTuple_Size", "PyTuple_Type", - "PyType_Check", - "PyType_CheckExact", "PyType_ClearCache", - "PyType_FastSubclass", "PyType_Freeze", "PyType_FromMetaclass", "PyType_FromModuleAndSpec", @@ -827,7 +773,6 @@ def test_windows_feature_macros(self): "PyType_GetQualName", "PyType_GetSlot", "PyType_GetTypeDataSize", - "PyType_IS_GC", "PyType_IsSubtype", "PyType_Modified", "PyType_Ready", @@ -878,8 +823,6 @@ def test_windows_feature_macros(self): "PyUnicode_AsWideChar", "PyUnicode_AsWideCharString", "PyUnicode_BuildEncodingMap", - "PyUnicode_Check", - "PyUnicode_CheckExact", "PyUnicode_Compare", "PyUnicode_CompareWithASCIIString", "PyUnicode_Concat", @@ -945,10 +888,6 @@ def test_windows_feature_macros(self): "PyUnicode_WriteChar", "PyVectorcall_Call", "PyVectorcall_NARGS", - "PyWeakref_Check", - "PyWeakref_CheckProxy", - "PyWeakref_CheckRef", - "PyWeakref_CheckRefExact", "PyWeakref_GetObject", "PyWeakref_GetRef", "PyWeakref_NewProxy", @@ -960,9 +899,7 @@ def test_windows_feature_macros(self): "Py_AtExit", "Py_BuildValue", "Py_BytesMain", - "Py_CLEAR", "Py_CompileString", - "Py_DECREF", "Py_DecRef", "Py_DecodeLocale", "Py_EncodeLocale", @@ -993,7 +930,6 @@ def test_windows_feature_macros(self): "Py_GetVersion", "Py_HasFileSystemDefaultEncoding", "Py_HashBuffer", - "Py_INCREF", "Py_IS_TYPE", "Py_IncRef", "Py_Initialize", @@ -1014,9 +950,7 @@ def test_windows_feature_macros(self): "Py_REFCNT", "Py_ReprEnter", "Py_ReprLeave", - "Py_SET_REFCNT", "Py_SET_SIZE", - "Py_SET_TYPE", "Py_SIZE", "Py_SetPath", "Py_SetProgramName", @@ -1026,8 +960,6 @@ def test_windows_feature_macros(self): "Py_UTF8Mode", "Py_VaBuildValue", "Py_Version", - "Py_XDECREF", - "Py_XINCREF", "Py_XNewRef", "_PyArg_ParseTupleAndKeywords_SizeT", "_PyArg_ParseTuple_SizeT", diff --git a/Misc/stable_abi.toml b/Misc/stable_abi.toml index 0e7efffcf48ba6a..cdd04ad3a5d7d8e 100644 --- a/Misc/stable_abi.toml +++ b/Misc/stable_abi.toml @@ -1874,177 +1874,167 @@ # Python 3.2 macros -[function.PyAnySet_Check] - added = '3.2' -[function.PyAnySet_CheckExact] - added = '3.2' -[function.PyBool_Check] - added = '3.2' -[function.PyByteArray_Check] - added = '3.2' -[function.PyByteArray_CheckExact] - added = '3.2' -[function.PyBytes_Check] +[macro.PyAPI_DATA] added = '3.2' -[function.PyBytes_CheckExact] +[macro.PyAPI_FUNC] added = '3.2' -[function.PyCFunction_Check] +[macro.PyAnySet_Check] added = '3.2' -[function.PyCallIter_Check] +[macro.PyAnySet_CheckExact] added = '3.2' -[function.PyCapsule_CheckExact] +[macro.PyBool_Check] added = '3.2' -[function.PyComplex_Check] +[macro.PyByteArray_Check] added = '3.2' -[function.PyComplex_CheckExact] +[macro.PyByteArray_CheckExact] added = '3.2' -[function.PyCursesWindow_Check] +[macro.PyBytes_Check] added = '3.2' -[function.PyDictItems_Check] +[macro.PyBytes_CheckExact] added = '3.2' -[function.PyDictKeys_Check] +[macro.PyCFunction_Check] added = '3.2' -[function.PyDictValues_Check] +[macro.PyCallIter_Check] added = '3.2' -[function.PyDictViewSet_Check] +[macro.PyCapsule_CheckExact] added = '3.2' -[function.PyDict_Check] +[macro.PyComplex_Check] added = '3.2' -[function.PyDict_CheckExact] +[macro.PyComplex_CheckExact] added = '3.2' -[function.PyExceptionClass_Check] +[macro.PyCursesWindow_Check] added = '3.2' -[function.PyExceptionInstance_Check] +[macro.PyDictItems_Check] added = '3.2' -[function.PyFloat_Check] +[macro.PyDictKeys_Check] added = '3.2' -[function.PyFloat_CheckExact] +[macro.PyDictValues_Check] added = '3.2' -[function.PyFrozenSet_Check] +[macro.PyDictViewSet_Check] added = '3.2' -[function.PyFrozenSet_CheckExact] +[macro.PyDict_Check] added = '3.2' -[function.PyImport_ImportModuleEx] +[macro.PyDict_CheckExact] added = '3.2' -[function.PyList_Check] +[macro.PyExceptionClass_Check] added = '3.2' -[function.PyList_CheckExact] +[macro.PyExceptionInstance_Check] added = '3.2' -[function.PyLong_AS_LONG] +[macro.PyExceptionInstance_Class] added = '3.2' -[function.PyLong_Check] +[macro.PyFloat_Check] added = '3.2' -[function.PyLong_CheckExact] +[macro.PyFloat_CheckExact] added = '3.2' -[function.PyMapping_DelItem] +[macro.PyFrozenSet_Check] added = '3.2' -[function.PyMapping_DelItemString] +[macro.PyFrozenSet_CheckExact] added = '3.2' -[function.PyMem_Del] +[macro.PyImport_ImportModuleEx] added = '3.2' -[function.PyMemoryView_Check] +[macro.PyList_Check] added = '3.2' -[function.PyModule_Check] +[macro.PyList_CheckExact] added = '3.2' -[function.PyModule_CheckExact] +[macro.PyLong_AS_LONG] added = '3.2' -[function.PyModule_Create] +[macro.PyLong_Check] added = '3.2' -[function.PyObject_New] +[macro.PyLong_CheckExact] added = '3.2' -[function.PyObject_NewVar] +[macro.PyMapping_DelItem] added = '3.2' -[function.PyObject_TypeCheck] +[macro.PyMapping_DelItemString] added = '3.2' -[function.PyRange_Check] +[macro.PyMem_DEL] added = '3.2' -[function.PySeqIter_Check] +[macro.PyMem_Del] added = '3.2' -[function.PySet_Check] +[macro.PyMem_FREE] added = '3.2' -[function.PySlice_Check] +[macro.PyMem_MALLOC] added = '3.2' -[function.PyTraceBack_Check] +[macro.PyMem_NEW] added = '3.2' -[function.PyTuple_Check] +[macro.PyMem_New] added = '3.2' -[function.PyTuple_CheckExact] +[macro.PyMem_REALLOC] added = '3.2' -[function.PyType_Check] +[macro.PyMem_RESIZE] added = '3.2' -[function.PyType_CheckExact] +[macro.PyMem_Resize] added = '3.2' -[function.PyType_FastSubclass] +[macro.PyMemoryView_Check] added = '3.2' -[function.PyType_IS_GC] +[macro.PyModule_AddIntMacro] added = '3.2' -[function.PyUnicode_Check] +[macro.PyModule_AddStringMacro] added = '3.2' -[function.PyUnicode_CheckExact] +[macro.PyModule_Check] added = '3.2' -[function.PyWeakref_Check] +[macro.PyModule_CheckExact] added = '3.2' -[function.PyWeakref_CheckProxy] +[macro.PyModule_Create] added = '3.2' -[function.PyWeakref_CheckRef] +[macro.PyObject_GC_New] added = '3.2' -[function.PyWeakref_CheckRefExact] +[macro.PyObject_GC_NewVar] added = '3.2' -[function.Py_CLEAR] +[macro.PyObject_GC_Resize] added = '3.2' -[function.Py_DECREF] +[macro.PyObject_HEAD_INIT] added = '3.2' -[function.Py_INCREF] +[macro.PyObject_INIT] added = '3.2' -[function.Py_XDECREF] +[macro.PyObject_INIT_VAR] added = '3.2' -[function.Py_XINCREF] +[macro.PyObject_NEW] added = '3.2' -[macro.PyAPI_DATA] +[macro.PyObject_NEW_VAR] added = '3.2' -[macro.PyAPI_FUNC] +[macro.PyObject_New] added = '3.2' -[macro.PyExceptionInstance_Class] +[macro.PyObject_NewVar] added = '3.2' -[macro.PyMem_DEL] +[macro.PyObject_TypeCheck] added = '3.2' -[macro.PyMem_FREE] +[macro.PyRange_Check] added = '3.2' -[macro.PyMem_MALLOC] +[macro.PySeqIter_Check] added = '3.2' -[macro.PyMem_NEW] +[macro.PySet_Check] added = '3.2' -[macro.PyMem_New] +[macro.PySlice_Check] added = '3.2' -[macro.PyMem_REALLOC] +[macro.PyThreadState_GET] added = '3.2' -[macro.PyMem_RESIZE] +[macro.PyTraceBack_Check] added = '3.2' -[macro.PyMem_Resize] +[macro.PyTuple_Check] added = '3.2' -[macro.PyModule_AddIntMacro] +[macro.PyTuple_CheckExact] added = '3.2' -[macro.PyModule_AddStringMacro] +[macro.PyType_Check] added = '3.2' -[macro.PyObject_GC_New] +[macro.PyType_CheckExact] added = '3.2' -[macro.PyObject_GC_NewVar] +[macro.PyType_FastSubclass] added = '3.2' -[macro.PyObject_GC_Resize] +[macro.PyType_IS_GC] added = '3.2' -[macro.PyObject_HEAD_INIT] +[macro.PyUnicode_Check] added = '3.2' -[macro.PyObject_INIT] +[macro.PyUnicode_CheckExact] added = '3.2' -[macro.PyObject_INIT_VAR] +[macro.PyVarObject_HEAD_INIT] added = '3.2' -[macro.PyObject_NEW] +[macro.PyWeakref_Check] added = '3.2' -[macro.PyObject_NEW_VAR] +[macro.PyWeakref_CheckProxy] added = '3.2' -[macro.PyThreadState_GET] +[macro.PyWeakref_CheckRef] added = '3.2' -[macro.PyVarObject_HEAD_INIT] +[macro.PyWeakref_CheckRefExact] added = '3.2' [macro.Py_ABS] added = '3.2' @@ -2052,12 +2042,18 @@ added = '3.2' [macro.Py_ARITHMETIC_RIGHT_SHIFT] added = '3.2' +[macro.Py_CLEAR] + added = '3.2' +[macro.Py_DECREF] + added = '3.2' [macro.Py_DEPRECATED] added = '3.2' [macro.Py_FORCE_EXPANSION] added = '3.2' [macro.Py_GCC_ATTRIBUTE] added = '3.2' +[macro.Py_INCREF] + added = '3.2' [macro.Py_IS_FINITE] added = '3.2' [macro.Py_IS_INFINITY] @@ -2078,6 +2074,10 @@ added = '3.2' [macro.Py_VISIT] added = '3.2' +[macro.Py_XDECREF] + added = '3.2' +[macro.Py_XINCREF] + added = '3.2' ### Python 3.3 ############################################################## @@ -2191,7 +2191,7 @@ # Python 3.5 macros -[function.PyModule_FromDefAndSpec] +[macro.PyModule_FromDefAndSpec] added = '3.5' [macro.Py_STRINGIFY] added = '3.5' @@ -2479,11 +2479,11 @@ # Python 3.9 macros -[function.PyCFunction_CheckExact] +[macro.PyCFunction_CheckExact] added = '3.9' -[function.Py_SET_REFCNT] +[macro.Py_SET_REFCNT] added = '3.9' -[function.Py_SET_TYPE] +[macro.Py_SET_TYPE] added = '3.9' @@ -2576,7 +2576,7 @@ # Python 3.10 macro -[function.PySet_CheckExact] +[macro.PySet_CheckExact] added = '3.10' diff --git a/PC/python3dll.c b/PC/python3dll.c index 67942a57b48462a..d1b7bafe6abb3cb 100755 --- a/PC/python3dll.c +++ b/PC/python3dll.c @@ -41,10 +41,8 @@ EXPORT_FUNC(Py_AddPendingCall) EXPORT_FUNC(Py_AtExit) EXPORT_FUNC(Py_BuildValue) EXPORT_FUNC(Py_BytesMain) -EXPORT_FUNC(Py_CLEAR) EXPORT_FUNC(Py_CompileString) EXPORT_FUNC(Py_DecodeLocale) -EXPORT_FUNC(Py_DECREF) EXPORT_FUNC(Py_DecRef) EXPORT_FUNC(Py_EncodeLocale) EXPORT_FUNC(Py_EndInterpreter) @@ -70,7 +68,6 @@ EXPORT_FUNC(Py_GetPythonHome) EXPORT_FUNC(Py_GetRecursionLimit) EXPORT_FUNC(Py_GetVersion) EXPORT_FUNC(Py_HashBuffer) -EXPORT_FUNC(Py_INCREF) EXPORT_FUNC(Py_IncRef) EXPORT_FUNC(Py_Initialize) EXPORT_FUNC(Py_InitializeEx) @@ -91,9 +88,7 @@ EXPORT_FUNC(Py_PACK_VERSION) EXPORT_FUNC(Py_REFCNT) EXPORT_FUNC(Py_ReprEnter) EXPORT_FUNC(Py_ReprLeave) -EXPORT_FUNC(Py_SET_REFCNT) EXPORT_FUNC(Py_SET_SIZE) -EXPORT_FUNC(Py_SET_TYPE) EXPORT_FUNC(Py_SetPath) EXPORT_FUNC(Py_SetProgramName) EXPORT_FUNC(Py_SetPythonHome) @@ -101,13 +96,9 @@ EXPORT_FUNC(Py_SetRecursionLimit) EXPORT_FUNC(Py_SIZE) EXPORT_FUNC(Py_TYPE) EXPORT_FUNC(Py_VaBuildValue) -EXPORT_FUNC(Py_XDECREF) -EXPORT_FUNC(Py_XINCREF) EXPORT_FUNC(Py_XNewRef) EXPORT_FUNC(PyABIInfo_Check) EXPORT_FUNC(PyAIter_Check) -EXPORT_FUNC(PyAnySet_Check) -EXPORT_FUNC(PyAnySet_CheckExact) EXPORT_FUNC(PyArg_Parse) EXPORT_FUNC(PyArg_ParseTuple) EXPORT_FUNC(PyArg_ParseTupleAndKeywords) @@ -115,7 +106,6 @@ EXPORT_FUNC(PyArg_UnpackTuple) EXPORT_FUNC(PyArg_ValidateKeywordArguments) EXPORT_FUNC(PyArg_VaParse) EXPORT_FUNC(PyArg_VaParseTupleAndKeywords) -EXPORT_FUNC(PyBool_Check) EXPORT_FUNC(PyBool_FromLong) EXPORT_FUNC(PyBuffer_FillContiguousStrides) EXPORT_FUNC(PyBuffer_FillInfo) @@ -126,8 +116,6 @@ EXPORT_FUNC(PyBuffer_Release) EXPORT_FUNC(PyBuffer_SizeFromFormat) EXPORT_FUNC(PyBuffer_ToContiguous) EXPORT_FUNC(PyByteArray_AsString) -EXPORT_FUNC(PyByteArray_Check) -EXPORT_FUNC(PyByteArray_CheckExact) EXPORT_FUNC(PyByteArray_Concat) EXPORT_FUNC(PyByteArray_FromObject) EXPORT_FUNC(PyByteArray_FromStringAndSize) @@ -135,8 +123,6 @@ EXPORT_FUNC(PyByteArray_Resize) EXPORT_FUNC(PyByteArray_Size) EXPORT_FUNC(PyBytes_AsString) EXPORT_FUNC(PyBytes_AsStringAndSize) -EXPORT_FUNC(PyBytes_Check) -EXPORT_FUNC(PyBytes_CheckExact) EXPORT_FUNC(PyBytes_Concat) EXPORT_FUNC(PyBytes_ConcatAndDel) EXPORT_FUNC(PyBytes_DecodeEscape) @@ -148,9 +134,7 @@ EXPORT_FUNC(PyBytes_FromStringAndSize) EXPORT_FUNC(PyBytes_Repr) EXPORT_FUNC(PyBytes_Size) EXPORT_FUNC(PyCallable_Check) -EXPORT_FUNC(PyCallIter_Check) EXPORT_FUNC(PyCallIter_New) -EXPORT_FUNC(PyCapsule_CheckExact) EXPORT_FUNC(PyCapsule_GetContext) EXPORT_FUNC(PyCapsule_GetDestructor) EXPORT_FUNC(PyCapsule_GetName) @@ -163,8 +147,6 @@ EXPORT_FUNC(PyCapsule_SetDestructor) EXPORT_FUNC(PyCapsule_SetName) EXPORT_FUNC(PyCapsule_SetPointer) EXPORT_FUNC(PyCFunction_Call) -EXPORT_FUNC(PyCFunction_Check) -EXPORT_FUNC(PyCFunction_CheckExact) EXPORT_FUNC(PyCFunction_GetFlags) EXPORT_FUNC(PyCFunction_GetFunction) EXPORT_FUNC(PyCFunction_GetSelf) @@ -190,8 +172,6 @@ EXPORT_FUNC(PyCodec_StreamWriter) EXPORT_FUNC(PyCodec_StrictErrors) EXPORT_FUNC(PyCodec_Unregister) EXPORT_FUNC(PyCodec_XMLCharRefReplaceErrors) -EXPORT_FUNC(PyComplex_Check) -EXPORT_FUNC(PyComplex_CheckExact) EXPORT_FUNC(PyComplex_FromDoubles) EXPORT_FUNC(PyComplex_ImagAsDouble) EXPORT_FUNC(PyComplex_RealAsDouble) @@ -199,13 +179,10 @@ EXPORT_FUNC(PyCriticalSection2_Begin) EXPORT_FUNC(PyCriticalSection2_End) EXPORT_FUNC(PyCriticalSection_Begin) EXPORT_FUNC(PyCriticalSection_End) -EXPORT_FUNC(PyCursesWindow_Check) EXPORT_FUNC(PyDescr_NewClassMethod) EXPORT_FUNC(PyDescr_NewGetSet) EXPORT_FUNC(PyDescr_NewMember) EXPORT_FUNC(PyDescr_NewMethod) -EXPORT_FUNC(PyDict_Check) -EXPORT_FUNC(PyDict_CheckExact) EXPORT_FUNC(PyDict_Clear) EXPORT_FUNC(PyDict_Contains) EXPORT_FUNC(PyDict_Copy) @@ -228,11 +205,7 @@ EXPORT_FUNC(PyDict_SetItemString) EXPORT_FUNC(PyDict_Size) EXPORT_FUNC(PyDict_Update) EXPORT_FUNC(PyDict_Values) -EXPORT_FUNC(PyDictItems_Check) -EXPORT_FUNC(PyDictKeys_Check) EXPORT_FUNC(PyDictProxy_New) -EXPORT_FUNC(PyDictValues_Check) -EXPORT_FUNC(PyDictViewSet_Check) EXPORT_FUNC(PyErr_BadArgument) EXPORT_FUNC(PyErr_BadInternalCall) EXPORT_FUNC(PyErr_CheckSignals) @@ -315,16 +288,12 @@ EXPORT_FUNC(PyException_SetArgs) EXPORT_FUNC(PyException_SetCause) EXPORT_FUNC(PyException_SetContext) EXPORT_FUNC(PyException_SetTraceback) -EXPORT_FUNC(PyExceptionClass_Check) EXPORT_FUNC(PyExceptionClass_Name) -EXPORT_FUNC(PyExceptionInstance_Check) EXPORT_FUNC(PyFile_FromFd) EXPORT_FUNC(PyFile_GetLine) EXPORT_FUNC(PyFile_WriteObject) EXPORT_FUNC(PyFile_WriteString) EXPORT_FUNC(PyFloat_AsDouble) -EXPORT_FUNC(PyFloat_Check) -EXPORT_FUNC(PyFloat_CheckExact) EXPORT_FUNC(PyFloat_FromDouble) EXPORT_FUNC(PyFloat_FromString) EXPORT_FUNC(PyFloat_GetInfo) @@ -332,8 +301,6 @@ EXPORT_FUNC(PyFloat_GetMax) EXPORT_FUNC(PyFloat_GetMin) EXPORT_FUNC(PyFrame_GetCode) EXPORT_FUNC(PyFrame_GetLineNumber) -EXPORT_FUNC(PyFrozenSet_Check) -EXPORT_FUNC(PyFrozenSet_CheckExact) EXPORT_FUNC(PyFrozenSet_New) EXPORT_FUNC(PyGC_Collect) EXPORT_FUNC(PyGC_Disable) @@ -359,7 +326,6 @@ EXPORT_FUNC(PyImport_Import) EXPORT_FUNC(PyImport_ImportFrozenModule) EXPORT_FUNC(PyImport_ImportFrozenModuleObject) EXPORT_FUNC(PyImport_ImportModule) -EXPORT_FUNC(PyImport_ImportModuleEx) EXPORT_FUNC(PyImport_ImportModuleLevel) EXPORT_FUNC(PyImport_ImportModuleLevelObject) EXPORT_FUNC(PyImport_ImportModuleNoBlock) @@ -383,8 +349,6 @@ EXPORT_FUNC(PyIter_NextItem) EXPORT_FUNC(PyIter_Send) EXPORT_FUNC(PyList_Append) EXPORT_FUNC(PyList_AsTuple) -EXPORT_FUNC(PyList_Check) -EXPORT_FUNC(PyList_CheckExact) EXPORT_FUNC(PyList_GetItem) EXPORT_FUNC(PyList_GetItemRef) EXPORT_FUNC(PyList_GetSlice) @@ -395,7 +359,6 @@ EXPORT_FUNC(PyList_SetItem) EXPORT_FUNC(PyList_SetSlice) EXPORT_FUNC(PyList_Size) EXPORT_FUNC(PyList_Sort) -EXPORT_FUNC(PyLong_AS_LONG) EXPORT_FUNC(PyLong_AsDouble) EXPORT_FUNC(PyLong_AsInt) EXPORT_FUNC(PyLong_AsInt32) @@ -414,8 +377,6 @@ EXPORT_FUNC(PyLong_AsUnsignedLongLong) EXPORT_FUNC(PyLong_AsUnsignedLongLongMask) EXPORT_FUNC(PyLong_AsUnsignedLongMask) EXPORT_FUNC(PyLong_AsVoidPtr) -EXPORT_FUNC(PyLong_Check) -EXPORT_FUNC(PyLong_CheckExact) EXPORT_FUNC(PyLong_Export) EXPORT_FUNC(PyLong_FreeExport) EXPORT_FUNC(PyLong_FromDouble) @@ -439,8 +400,6 @@ EXPORT_FUNC(PyLongWriter_Create) EXPORT_FUNC(PyLongWriter_Discard) EXPORT_FUNC(PyLongWriter_Finish) EXPORT_FUNC(PyMapping_Check) -EXPORT_FUNC(PyMapping_DelItem) -EXPORT_FUNC(PyMapping_DelItemString) EXPORT_FUNC(PyMapping_GetItemString) EXPORT_FUNC(PyMapping_GetOptionalItem) EXPORT_FUNC(PyMapping_GetOptionalItemString) @@ -457,7 +416,6 @@ EXPORT_FUNC(PyMapping_Values) EXPORT_FUNC(PyMarshal_ReadObjectFromString) EXPORT_FUNC(PyMarshal_WriteObjectToString) EXPORT_FUNC(PyMem_Calloc) -EXPORT_FUNC(PyMem_Del) EXPORT_FUNC(PyMem_Free) EXPORT_FUNC(PyMem_Malloc) EXPORT_FUNC(PyMem_RawCalloc) @@ -467,7 +425,6 @@ EXPORT_FUNC(PyMem_RawRealloc) EXPORT_FUNC(PyMem_Realloc) EXPORT_FUNC(PyMember_GetOne) EXPORT_FUNC(PyMember_SetOne) -EXPORT_FUNC(PyMemoryView_Check) EXPORT_FUNC(PyMemoryView_FromBuffer) EXPORT_FUNC(PyMemoryView_FromMemory) EXPORT_FUNC(PyMemoryView_FromObject) @@ -479,13 +436,9 @@ EXPORT_FUNC(PyModule_AddObject) EXPORT_FUNC(PyModule_AddObjectRef) EXPORT_FUNC(PyModule_AddStringConstant) EXPORT_FUNC(PyModule_AddType) -EXPORT_FUNC(PyModule_Check) -EXPORT_FUNC(PyModule_CheckExact) -EXPORT_FUNC(PyModule_Create) EXPORT_FUNC(PyModule_Create2) EXPORT_FUNC(PyModule_Exec) EXPORT_FUNC(PyModule_ExecDef) -EXPORT_FUNC(PyModule_FromDefAndSpec) EXPORT_FUNC(PyModule_FromDefAndSpec2) EXPORT_FUNC(PyModule_FromSlotsAndSpec) EXPORT_FUNC(PyModule_GetDef) @@ -598,8 +551,6 @@ EXPORT_FUNC(PyObject_IsSubclass) EXPORT_FUNC(PyObject_IsTrue) EXPORT_FUNC(PyObject_Length) EXPORT_FUNC(PyObject_Malloc) -EXPORT_FUNC(PyObject_New) -EXPORT_FUNC(PyObject_NewVar) EXPORT_FUNC(PyObject_Not) EXPORT_FUNC(PyObject_Realloc) EXPORT_FUNC(PyObject_Repr) @@ -612,7 +563,6 @@ EXPORT_FUNC(PyObject_SetItem) EXPORT_FUNC(PyObject_Size) EXPORT_FUNC(PyObject_Str) EXPORT_FUNC(PyObject_Type) -EXPORT_FUNC(PyObject_TypeCheck) EXPORT_FUNC(PyObject_Vectorcall) EXPORT_FUNC(PyObject_VectorcallMethod) EXPORT_FUNC(PyOS_CheckStack) @@ -628,8 +578,6 @@ EXPORT_FUNC(PyOS_string_to_double) EXPORT_FUNC(PyOS_strtol) EXPORT_FUNC(PyOS_strtoul) EXPORT_FUNC(PyOS_vsnprintf) -EXPORT_FUNC(PyRange_Check) -EXPORT_FUNC(PySeqIter_Check) EXPORT_FUNC(PySeqIter_New) EXPORT_FUNC(PySequence_Check) EXPORT_FUNC(PySequence_Concat) @@ -652,8 +600,6 @@ EXPORT_FUNC(PySequence_SetSlice) EXPORT_FUNC(PySequence_Size) EXPORT_FUNC(PySequence_Tuple) EXPORT_FUNC(PySet_Add) -EXPORT_FUNC(PySet_Check) -EXPORT_FUNC(PySet_CheckExact) EXPORT_FUNC(PySet_Clear) EXPORT_FUNC(PySet_Contains) EXPORT_FUNC(PySet_Discard) @@ -661,7 +607,6 @@ EXPORT_FUNC(PySet_New) EXPORT_FUNC(PySet_Pop) EXPORT_FUNC(PySet_Size) EXPORT_FUNC(PySlice_AdjustIndices) -EXPORT_FUNC(PySlice_Check) EXPORT_FUNC(PySlice_GetIndices) EXPORT_FUNC(PySlice_GetIndicesEx) EXPORT_FUNC(PySlice_New) @@ -734,21 +679,15 @@ EXPORT_FUNC(PyThreadState_New) EXPORT_FUNC(PyThreadState_Release) EXPORT_FUNC(PyThreadState_SetAsyncExc) EXPORT_FUNC(PyThreadState_Swap) -EXPORT_FUNC(PyTraceBack_Check) EXPORT_FUNC(PyTraceBack_Here) EXPORT_FUNC(PyTraceBack_Print) -EXPORT_FUNC(PyTuple_Check) -EXPORT_FUNC(PyTuple_CheckExact) EXPORT_FUNC(PyTuple_GetItem) EXPORT_FUNC(PyTuple_GetSlice) EXPORT_FUNC(PyTuple_New) EXPORT_FUNC(PyTuple_Pack) EXPORT_FUNC(PyTuple_SetItem) EXPORT_FUNC(PyTuple_Size) -EXPORT_FUNC(PyType_Check) -EXPORT_FUNC(PyType_CheckExact) EXPORT_FUNC(PyType_ClearCache) -EXPORT_FUNC(PyType_FastSubclass) EXPORT_FUNC(PyType_Freeze) EXPORT_FUNC(PyType_FromMetaclass) EXPORT_FUNC(PyType_FromModuleAndSpec) @@ -773,7 +712,6 @@ EXPORT_FUNC(PyType_GetName) EXPORT_FUNC(PyType_GetQualName) EXPORT_FUNC(PyType_GetSlot) EXPORT_FUNC(PyType_GetTypeDataSize) -EXPORT_FUNC(PyType_IS_GC) EXPORT_FUNC(PyType_IsSubtype) EXPORT_FUNC(PyType_Modified) EXPORT_FUNC(PyType_Ready) @@ -799,8 +737,6 @@ EXPORT_FUNC(PyUnicode_AsUTF8String) EXPORT_FUNC(PyUnicode_AsWideChar) EXPORT_FUNC(PyUnicode_AsWideCharString) EXPORT_FUNC(PyUnicode_BuildEncodingMap) -EXPORT_FUNC(PyUnicode_Check) -EXPORT_FUNC(PyUnicode_CheckExact) EXPORT_FUNC(PyUnicode_Compare) EXPORT_FUNC(PyUnicode_CompareWithASCIIString) EXPORT_FUNC(PyUnicode_Concat) @@ -893,10 +829,6 @@ EXPORT_FUNC(PyUnicodeTranslateError_SetReason) EXPORT_FUNC(PyUnicodeTranslateError_SetStart) EXPORT_FUNC(PyVectorcall_Call) EXPORT_FUNC(PyVectorcall_NARGS) -EXPORT_FUNC(PyWeakref_Check) -EXPORT_FUNC(PyWeakref_CheckProxy) -EXPORT_FUNC(PyWeakref_CheckRef) -EXPORT_FUNC(PyWeakref_CheckRefExact) EXPORT_FUNC(PyWeakref_GetObject) EXPORT_FUNC(PyWeakref_GetRef) EXPORT_FUNC(PyWeakref_NewProxy) From e789d5d18b420b51ff2965cb0301dea981d97b97 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Tue, 6 Oct 2026 00:59:27 +0200 Subject: [PATCH 5/9] PyDoc/Py_CHARMASK were added to 3.2 --- Doc/data/stable_abi.dat | 8 ++++---- Misc/stable_abi.toml | 16 ++++++++-------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/Doc/data/stable_abi.dat b/Doc/data/stable_abi.dat index a5afda223cabbc7..e488445b3dbcdf3 100644 --- a/Doc/data/stable_abi.dat +++ b/Doc/data/stable_abi.dat @@ -195,9 +195,9 @@ func,PyDict_Size,3.2,, data,PyDict_Type,3.2,, func,PyDict_Update,3.2,, func,PyDict_Values,3.2,, -macro,PyDoc_STR,3.3,, -macro,PyDoc_STRVAR,3.3,, -macro,PyDoc_VAR,3.3,, +macro,PyDoc_STR,3.2,, +macro,PyDoc_STRVAR,3.2,, +macro,PyDoc_VAR,3.2,, data,PyEllipsis_Type,3.2,, data,PyEnum_Type,3.2,, func,PyErr_BadArgument,3.2,, @@ -1033,7 +1033,7 @@ macro,Py_BUILD_ASSERT,3.3,, macro,Py_BUILD_ASSERT_EXPR,3.3,, func,Py_BuildValue,3.2,, func,Py_BytesMain,3.8,, -macro,Py_CHARMASK,3.3,, +macro,Py_CHARMASK,3.2,, macro,Py_CLEAR,3.2,, func,Py_CompileString,3.2,, macro,Py_DECREF,3.2,, diff --git a/Misc/stable_abi.toml b/Misc/stable_abi.toml index cdd04ad3a5d7d8e..4732ac9837cd5c7 100644 --- a/Misc/stable_abi.toml +++ b/Misc/stable_abi.toml @@ -1916,6 +1916,12 @@ added = '3.2' [macro.PyDict_CheckExact] added = '3.2' +[macro.PyDoc_STR] + added = '3.2' +[macro.PyDoc_STRVAR] + added = '3.2' +[macro.PyDoc_VAR] + added = '3.2' [macro.PyExceptionClass_Check] added = '3.2' [macro.PyExceptionInstance_Check] @@ -2042,6 +2048,8 @@ added = '3.2' [macro.Py_ARITHMETIC_RIGHT_SHIFT] added = '3.2' +[macro.Py_CHARMASK] + added = '3.2' [macro.Py_CLEAR] added = '3.2' [macro.Py_DECREF] @@ -2113,20 +2121,12 @@ # Python 3.3 macros -[macro.PyDoc_STR] - added = '3.3' -[macro.PyDoc_STRVAR] - added = '3.3' -[macro.PyDoc_VAR] - added = '3.3' [macro.Py_ARRAY_LENGTH] added = '3.3' [macro.Py_BUILD_ASSERT] added = '3.3' [macro.Py_BUILD_ASSERT_EXPR] added = '3.3' -[macro.Py_CHARMASK] - added = '3.3' [macro.Py_MAX] added = '3.3' [macro.Py_MIN] From fb8522a4e64e53cc5d9eceb86fcec0ce231b15b6 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Tue, 6 Oct 2026 01:10:26 +0200 Subject: [PATCH 6/9] 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 0e762042979c2b7..d7a20f70642e332 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 d025044ffbd2ec08a5995af0016bc927037f576c Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Tue, 6 Oct 2026 01:20:08 +0200 Subject: [PATCH 7/9] Document PyThreadState_GET() --- Doc/c-api/threads.rst | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Doc/c-api/threads.rst b/Doc/c-api/threads.rst index 70192207ecd1bbe..3a5faac0cdab128 100644 --- a/Doc/c-api/threads.rst +++ b/Doc/c-api/threads.rst @@ -599,6 +599,11 @@ C extensions. Hangs the current thread, rather than terminating it, if called while the interpreter is finalizing. +.. c:function:: PyThreadState* PyThreadState_GET() + + Alias to :c:func:`PyThreadState_Get`. + + .. c:function:: PyThreadState* PyThreadState_Get() Return the :term:`attached thread state`. If the thread has no attached From e2098c8db9b4a7ebab719a93f37ff5ab2310d2fc Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Tue, 6 Oct 2026 01:22:08 +0200 Subject: [PATCH 8/9] doc: Move PyThreadState_GET() alias after PyThreadState_Get() --- Doc/c-api/threads.rst | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/Doc/c-api/threads.rst b/Doc/c-api/threads.rst index 3a5faac0cdab128..5640f36e925fdd4 100644 --- a/Doc/c-api/threads.rst +++ b/Doc/c-api/threads.rst @@ -599,11 +599,6 @@ C extensions. Hangs the current thread, rather than terminating it, if called while the interpreter is finalizing. -.. c:function:: PyThreadState* PyThreadState_GET() - - Alias to :c:func:`PyThreadState_Get`. - - .. c:function:: PyThreadState* PyThreadState_Get() Return the :term:`attached thread state`. If the thread has no attached @@ -613,6 +608,10 @@ C extensions. See also :c:func:`PyThreadState_GetUnchecked`. +.. c:function:: PyThreadState* PyThreadState_GET() + + Alias to :c:func:`PyThreadState_Get`. + .. c:function:: PyThreadState* PyThreadState_GetUnchecked() Similar to :c:func:`PyThreadState_Get`, but don't kill the process with a From 1db4cb9da683d9ee489a13d23b99559b1b97abce Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Tue, 6 Oct 2026 01:30:04 +0200 Subject: [PATCH 9/9] Run prek to format the 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 d7a20f70642e332..d8e3829022d6392 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}"