From ef9793d54fce077af777927c1d5f6dc246917e5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A9n=C3=A9dikt=20Tran?= <10796600+picnixz@users.noreply.github.com> Date: Sat, 30 Nov 2024 10:57:21 +0100 Subject: [PATCH 1/7] Update refcounts data with stable ABI functions. --- Doc/data/refcounts.dat | 700 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 700 insertions(+) diff --git a/Doc/data/refcounts.dat b/Doc/data/refcounts.dat index 6bfcc191b2270b..8135dedaabc569 100644 --- a/Doc/data/refcounts.dat +++ b/Doc/data/refcounts.dat @@ -37,6 +37,45 @@ PyAnySet_Check:PyObject*:p:0: PyAnySet_CheckExact:int::: PyAnySet_CheckExact:PyObject*:p:0: +PyArg_Parse:int::: +PyArg_Parse:PyObject *:args:0: +PyArg_Parse:const char *:format:: +PyArg_Parse::...:: + +PyArg_ParseTuple:int::: +PyArg_ParseTuple:PyObject *:args:0: +PyArg_ParseTuple:const char *:format:: +PyArg_ParseTuple::...:: + +PyArg_ParseTupleAndKeywords:int::: +PyArg_ParseTupleAndKeywords:PyObject *:args:0: +PyArg_ParseTupleAndKeywords:PyObject *:kw:0: +PyArg_ParseTupleAndKeywords:const char *:format:: +PyArg_ParseTupleAndKeywords:const char *:keywords:: +PyArg_ParseTupleAndKeywords::...:: + +PyArg_UnpackTuple:int::: +PyArg_UnpackTuple:PyObject*:args:0: +PyArg_UnpackTuple:const char*:name:0: +PyArg_UnpackTuple:Py_ssize_t:min:: +PyArg_UnpackTuple:Py_ssize_t:max:: +PyArg_UnpackTuple::...:: + +PyArg_VaParse:int::: +PyArg_VaParse:PyObject*:args:0: +PyArg_VaParse:const char*:format:0: +PyArg_VaParse:va_list:vargs:: + +PyArg_VaParseTupleAndKeywords:int::: +PyArg_VaParseTupleAndKeywords:PyObject *:args:0: +PyArg_VaParseTupleAndKeywords:PyObject *:kw:0: +PyArg_VaParseTupleAndKeywords:const char *:format:0: +PyArg_VaParseTupleAndKeywords:const char *:keywords:0: +PyArg_VaParseTupleAndKeywords:va_list:vargs:: + +PyArg_ValidateKeywordArguments:int::: +PyArg_ValidateKeywordArguments:PyObject *:kw:0: + PyBool_Check:int::: PyBool_Check:PyObject*:o:0: @@ -58,6 +97,16 @@ PyBuffer_FillInfo:Py_ssize_t:len:: PyBuffer_FillInfo:int:readonly:: PyBuffer_FillInfo:int:flags:: +PyBuffer_FromContiguous:int::: +PyBuffer_FromContiguous:const Py_buffer *:view:: +PyBuffer_FromContiguous:const void *:buf:: +PyBuffer_FromContiguous:Py_ssize_t:len:: +PyBuffer_FromContiguous:char:fort:: + +PyBuffer_GetPointer:void *::: +PyBuffer_GetPointer:const Py_buffer *:view:: +PyBuffer_GetPointer:const Py_ssize_t *:indices:: + PyBuffer_IsContiguous:int::: PyBuffer_IsContiguous:Py_buffer*:view:: PyBuffer_IsContiguous:char:order:: @@ -65,6 +114,9 @@ PyBuffer_IsContiguous:char:order:: PyBuffer_Release:void::: PyBuffer_Release:Py_buffer*:view:: +PyBuffer_SizeFromFormat:Py_ssize_t::: +PyBuffer_SizeFromFormat:const char *:format:: + PyBuffer_ToContiguous:int::: PyBuffer_ToContiguous:void*:buf:: PyBuffer_ToContiguous:Py_buffer*:src:: @@ -129,6 +181,13 @@ PyBytes_ConcatAndDel:void::: PyBytes_ConcatAndDel:PyObject**:bytes:0: PyBytes_ConcatAndDel:PyObject*:newpart:-1: +PyBytes_DecodeEscape:PyObject *::+1: +PyBytes_DecodeEscape:const char *:s:: +PyBytes_DecodeEscape:Py_ssize_t:len:: +PyBytes_DecodeEscape:const char *:errors:: +PyBytes_DecodeEscape:Py_ssize_t:unicode::unused +PyBytes_DecodeEscape:const char *:recode_encoding::unused + PyBytes_FromString:PyObject*::+1: PyBytes_FromString:const char*:v:: @@ -150,6 +209,10 @@ PyBytes_FromObject:PyObject*:o:0: PyBytes_GET_SIZE:Py_ssize_t::: PyBytes_GET_SIZE:PyObject*:o:0: +PyBytes_Repr:PyObject *::+1: +PyBytes_Repr:PyObject *:self:0: +PyBytes_Repr:int:smartquotes:: + PyBytes_Size:Py_ssize_t::: PyBytes_Size:PyObject*:o:0: @@ -277,6 +340,9 @@ PyCode_NewEmpty:int:firstlineno:: PyCodec_Register:int::: PyCodec_Register:PyObject*:search_function:+1: +PyCodec_Unregister:int::: +PyCodec_Unregister:PyObject *:search_function:0: + PyCodec_KnownEncoding:int::: PyCodec_KnownEncoding:const char*:encoding:: @@ -409,6 +475,9 @@ PyCFunction_NewEx:PyMethodDef*:ml:: PyCFunction_NewEx:PyObject*:self:+1: PyCFunction_NewEx:PyObject*:module:+1: +PyCFunction_GetFlags:int::: +PyCFunction_GetFlags:PyObject *:self:0: + PyCMethod_New:PyObject*::+1: PyCMethod_New:PyMethodDef*:ml:: PyCMethod_New:PyObject*:self:+1: @@ -525,6 +594,11 @@ PyDict_GetItem:PyObject*::0: PyDict_GetItem:PyObject*:p:0: PyDict_GetItem:PyObject*:key:0: +PyDict_GetItemRef:int::: +PyDict_GetItemRef:PyObject *:p:0: +PyDict_GetItemRef:PyObject *:key:0: +PyDict_GetItemRef:PyObject **:result:+1: + PyDict_GetItemWithError:PyObject*::0:0 PyDict_GetItemWithError:PyObject*:p:0: PyDict_GetItemWithError:PyObject*:key:0: @@ -533,6 +607,11 @@ PyDict_GetItemString:PyObject*::0: PyDict_GetItemString:PyObject*:p:0: PyDict_GetItemString:const char*:key:: +PyDict_GetItemStringRef:int::: +PyDict_GetItemStringRef:PyObject *:p:0: +PyDict_GetItemStringRef:const char *:key:: +PyDict_GetItemStringRef:PyObject **:result:+1: + PyDict_SetDefault:PyObject*::0: PyDict_SetDefault:PyObject*:p:0: PyDict_SetDefault:PyObject*:key:0:conditionally +1 if inserted into the dict @@ -596,6 +675,14 @@ PyErr_CheckSignals:int::: PyErr_Clear:void::: +PyErr_Display:void::: +PyErr_Display:PyObject *:dummy:0:unused +PyErr_Display:PyObject *:value:0: +PyErr_Display:PyObject *:tb:0: + +PyErr_DisplayException:void::: +PyErr_DisplayException:PyObject *:exc:0: + PyErr_ExceptionMatches:int::: PyErr_ExceptionMatches:PyObject*:exc:0: @@ -619,6 +706,12 @@ PyErr_GetExcInfo:PyObject**:ptype:+1: PyErr_GetExcInfo:PyObject**:pvalue:+1: PyErr_GetExcInfo:PyObject**:ptraceback:+1: +PyErr_GetHandledException:PyObject *::+1: + +PyErr_SetHandledException:void::: +# TODO(picnixz): is this correct? +PyErr_SetHandledException:PyObject *:exc:+1: + PyErr_GetRaisedException:PyObject*::+1: PyErr_SetRaisedException:::: @@ -651,6 +744,10 @@ PyErr_Print:void::: PyErr_PrintEx:void::: PyErr_PrintEx:int:set_sys_last_vars:: +PyErr_ProgramText:PyObject *:+1:: +PyErr_ProgramText:const char *:filename:: +PyErr_ProgramText:int:lineno:: + PyErr_ResourceWarning:int::: PyErr_ResourceWarning:PyObject*:source:0: PyErr_ResourceWarning:Py_ssize_t:stack_level:: @@ -722,6 +819,9 @@ PyErr_SetImportErrorSubclass:PyObject*:path:+1: PyErr_SetInterrupt:void::: +PyErr_SetInterruptEx:int::: +PyErr_SetInterruptEx:int:signum:: + PyErr_SetNone:void::: PyErr_SetNone:PyObject*:type:+1: @@ -797,6 +897,8 @@ PyEval_GetFrameGlobals:PyObject*::+1: PyEval_GetFuncDesc:const char*::: PyEval_GetFuncDesc:PyObject*:func:0: +PyEval_InitThreads:void:::deprecated + PyEval_GetFuncName:const char*::: PyEval_GetFuncName:PyObject*:func:0: @@ -863,6 +965,13 @@ PyException_GetContext:PyObject*:ex:0: PyException_GetTraceback:PyObject*::+1: PyException_GetTraceback:PyObject*:ex:0: +PyExceptionClass_Name:const char *::: +PyExceptionClass_Name:PyObject *:exc:0: + +PyException_SetArgs:void::: +PyException_SetArgs:PyObject *:exc:0: +PyException_SetArgs:PyObject *:args:+1: + PyException_SetCause:void::: PyException_SetCause:PyObject*:ex:0: PyException_SetCause:PyObject*:cause:+1: @@ -920,6 +1029,10 @@ PyFloat_FromString:PyObject*:str:0: PyFloat_GetInfo:PyObject*::+1: PyFloat_GetInfo::void:: +PyFloat_GetMax:double::: + +PyFloat_GetMin:double::: + PyFrame_GetBack:PyObject*::+1: PyFrame_GetBack:PyFrameObject*:frame:0: @@ -935,6 +1048,9 @@ PyFrame_GetGenerator:PyFrameObject*:frame:0: PyFrame_GetGlobals:PyObject*::+1: PyFrame_GetGlobals:PyFrameObject*:frame:0: +PyFrame_GetLineNumber:int::: +PyFrame_GetLineNumber:PyFrameObject *:frame:0: + PyFrame_GetLocals:PyObject*::+1: PyFrame_GetLocals:PyFrameObject*:frame:0: @@ -997,6 +1113,14 @@ PyFunction_SetDefaults:int::: PyFunction_SetDefaults:PyObject*:op:0: PyFunction_SetDefaults:PyObject*:defaults:+1: +PyGC_Collect:Py_ssize_t::: + +PyGC_Disable:int::: + +PyGC_Enable:int::: + +PyGC_IsEnabled:int::: + PyGen_Check:int::: PyGen_Check:PyObject*:ob:0: @@ -1019,6 +1143,13 @@ PyCoro_New:PyFrameObject*:frame:0: PyCoro_New:PyObject*:name:0: PyCoro_New:PyObject*:qualname:0: +PyGILState_Ensure:PyGILState_STATE::: + +PyGILState_GetThisThreadState:PyThreadState *::: + +PyGILState_Release:void::: +PyGILState_Release:PyGILState_STATE:gstate:: + PyImport_AddModuleRef:PyObject*::+1: PyImport_AddModuleRef:const char*:name:: @@ -1028,6 +1159,10 @@ PyImport_AddModule:const char*:name:: PyImport_AddModuleObject:PyObject*::0:reference borrowed from sys.modules PyImport_AddModuleObject:PyObject*:name:0: +PyImport_AppendInittab:int::: +PyImport_AppendInittab:const char *:name:: +PyImport_AppendInittab:PyObject *(*)(void):initfunc:: + PyImport_ExecCodeModule:PyObject*::+1: PyImport_ExecCodeModule:const char*:name:: PyImport_ExecCodeModule:PyObject*:co:0: @@ -1054,6 +1189,8 @@ PyImport_GetImporter:PyObject*:path:0: PyImport_GetMagicNumber:long::: +PyImport_GetMagicTag:const char *::: + PyImport_GetModule:PyObject*::+1: PyImport_GetModule:PyObject*:name:0: @@ -1118,6 +1255,11 @@ PyInterpreterState_Clear:PyInterpreterState*:interp:: PyInterpreterState_Delete:void::: PyInterpreterState_Delete:PyInterpreterState*:interp:: +PyInterpreterState_Get:PyInterpreterState *::: + +PyInterpreterState_GetDict:PyObject *:+1:: +PyInterpreterState_GetDict:PyInterpreterState *:interp:: + PyInterpreterState_GetID:int64_t::: PyInterpreterState_GetID:PyInterpreterState*:interp:: @@ -1210,6 +1352,17 @@ PyList_Sort:PyObject*:list:0: PyLong_AsDouble:double::: PyLong_AsDouble:PyObject*:pylong:0: +PyLong_AsInt:int::: +PyLong_AsInt:PyObject *:obj:0: + +PyLong_AsInt32:int::: +PyLong_AsInt32:PyObject *:obj:0: +PyLong_AsInt32:int32_t *:value:: + +PyLong_AsInt64:int::: +PyLong_AsInt64:PyObject *:obj:0: +PyLong_AsInt64:int64_t *:value:: + PyLong_AsLong:long::: PyLong_AsLong:PyObject*:pylong:0: @@ -1230,6 +1383,14 @@ PyLong_AsSize_t:PyObject*:pylong:0: PyLong_AsSsize_t:Py_ssize_t::: PyLong_AsSsize_t:PyObject*:pylong:0: +PyLong_AsUInt32:int::: +PyLong_AsUInt32:PyObject *:obj:0: +PyLong_AsUInt32:uint32_t *:value:: + +PyLong_AsUInt64:int::: +PyLong_AsUInt64:PyObject *:obj:0: +PyLong_AsUInt64:uint64_t *:value:: + PyLong_AsUnsignedLong:unsigned long::: PyLong_AsUnsignedLong:PyObject*:pylong:0: @@ -1254,6 +1415,12 @@ PyLong_CheckExact:PyObject*:p:0: PyLong_FromDouble:PyObject*::+1: PyLong_FromDouble:double:v:: +PyLong_FromInt32:PyObject *::+1: +PyLong_FromInt32:int32_t:value:: + +PyLong_FromInt64:PyObject *::+1: +PyLong_FromInt64:int64_t:value:: + PyLong_FromLong:PyObject*::+1: PyLong_FromLong:long:v:: @@ -1274,6 +1441,12 @@ PyLong_FromString:const char*:str:: PyLong_FromString:char**:pend:: PyLong_FromString:int:base:: +PyLong_FromUInt32:PyObject *::+1: +PyLong_FromUInt32:uint32_t:value:: + +PyLong_FromUInt64:PyObject *::+1: +PyLong_FromUInt64:uint64_t:value:: + PyLong_FromUnicodeObject:PyObject*::+1: PyLong_FromUnicodeObject:PyObject*:u:0: PyLong_FromUnicodeObject:int:base:: @@ -1293,6 +1466,8 @@ PyLong_IsNegative:PyObject*:obj:0: PyLong_IsZero:int::: PyLong_IsZero:PyObject*:obj:0: +PyLong_GetInfo:PyObject *::1: + PyLong_GetSign:int::: PyLong_GetSign:PyObject*:v:0: PyLong_GetSign:int*:sign:: @@ -1312,6 +1487,16 @@ PyMapping_GetItemString:PyObject*::+1: PyMapping_GetItemString:PyObject*:o:0: PyMapping_GetItemString:const char*:key:: +PyMapping_GetOptionalItem:int::: +PyMapping_GetOptionalItem:PyObject *:obj:0: +PyMapping_GetOptionalItem:PyObject *:key:0: +PyMapping_GetOptionalItem:PyObject **:result:+1: + +PyMapping_GetOptionalItemString:int::: +PyMapping_GetOptionalItemString:PyObject *:obj:0: +PyMapping_GetOptionalItemString:const char *:key:: +PyMapping_GetOptionalItemString:PyObject **:result:+1: + PyMapping_HasKey:int::: PyMapping_HasKey:PyObject*:o:0: PyMapping_HasKey:PyObject*:key:: @@ -1320,6 +1505,14 @@ PyMapping_HasKeyString:int::: PyMapping_HasKeyString:PyObject*:o:0: PyMapping_HasKeyString:const char*:key:: +PyMapping_HasKeyWithError:int::: +PyMapping_HasKeyWithError:PyObject *:o:0: +PyMapping_HasKeyWithError:PyObject *:key:0: + +PyMapping_HasKeyStringWithError:int::: +PyMapping_HasKeyStringWithError:PyObject *:o:0: +PyMapping_HasKeyStringWithError:const char *:key:: + PyMapping_Items:PyObject*::+1: PyMapping_Items:PyObject*:o:0: @@ -1354,6 +1547,41 @@ PyMarshal_WriteObjectToString:PyObject*::+1: PyMarshal_WriteObjectToString:PyObject*:value:0: PyMarshal_WriteObjectToString:int:version:: +PyMember_GetOne:PyObject *::+1: +PyMember_GetOne:const char *:obj_addr:: +PyMember_GetOne:struct PyMemberDef *:m:: + +PyMember_SetOne:int::: +PyMember_SetOne:char *:obj_addr:: +PyMember_SetOne:struct PyMemberDef *:m:: +PyMember_SetOne:PyObject *:o:0: + +PyMem_Calloc:void *::: +PyMem_Calloc:size_t:nelem:: +PyMem_Calloc:size_t:elsize:: + +PyMem_Malloc:void *::: +PyMem_Malloc:size_t:n:: + +PyMem_Realloc:void *::: +PyMem_Realloc:void *:p:: +PyMem_Realloc:size_t:n:: + +PyMem_Free:void *::: + +PyMem_RawCalloc:void *::: +PyMem_RawCalloc:size_t:nelem:: +PyMem_RawCalloc:size_t:elsize:: + +PyMem_RawMalloc:void *::: +PyMem_RawMalloc:size_t:n:: + +PyMem_RawRealloc:void *::: +PyMem_RawRealloc:void *:p:: +PyMem_RawRealloc:size_t:n:: + +PyMem_RawFree:void *::: + PyMemoryView_Check:int::: PyMemoryView_Check:PyObject*:obj:0: @@ -1399,6 +1627,11 @@ PyMethod_New:PyObject*:class:0: PyMethod_Self:PyObject*::0: PyMethod_Self:PyObject*:im:0: +PyModule_Add:int::: +PyModule_Add:PyObject *:module:0: +PyModule_Add:const char *:name:0: +PyModule_Add:PyObject *:value:0:stolen + PyModule_AddFunctions:int::: PyModule_AddFunctions:PyObject*:module:0: PyModule_AddFunctions:PyMethodDef*:functions:: @@ -1417,6 +1650,11 @@ PyModule_AddObject:PyObject*:module:0: PyModule_AddObject:const char*:name:: PyModule_AddObject:PyObject*:value:+1: +PyModule_AddObjectRef:int::: +PyModule_AddObjectRef:PyObject *:module:0: +PyModule_AddObjectRef:const char *:name:: +PyModule_AddObjectRef:PyObject *:value:+1: + PyModule_AddStringConstant:int::: PyModule_AddStringConstant:PyObject*:module:0: PyModule_AddStringConstant:const char*:name:: @@ -1426,6 +1664,10 @@ PyModule_AddStringMacro:int::: PyModule_AddStringMacro:PyObject*:module:0: PyModule_AddStringMacro::macro:: +PyModule_AddType:int::: +PyModule_AddType:PyObject *:module:0: +PyModule_AddType:PyTypeObject *:type:+1: + PyModule_Check:int::: PyModule_Check:PyObject*:p:0: @@ -1639,9 +1881,63 @@ PyOS_AfterFork_Parent:void::: PyOS_BeforeFork:void::: +PyOS_CheckStack:int::: + PyOS_FSPath:PyObject*::+1: PyOS_FSPath:PyObject*:path:0: +PyOS_InterruptOccurred:int::: + +PyOS_double_to_string:char *::: +PyOS_double_to_string:double:val:: +PyOS_double_to_string:char:format_code:: +PyOS_double_to_string:int:precision:: +PyOS_double_to_string:int:flags:: +PyOS_double_to_string:int *:ptype:: + +PyOS_getsig:PyOS_sighandler_t::: +PyOS_getsig:int:i:: + +PyOS_mystricmp:int::: +PyOS_mystricmp:const char *:s1:: +PyOS_mystricmp:const char *:s2:: + +PyOS_mystrnicmp:int::: +PyOS_mystrnicmp:const char *:s1:: +PyOS_mystrnicmp:const char *:s2:: +PyOS_mystrnicmp:Py_ssize_t:size:: + +PyOS_setsig:PyOS_sighandler_t::: +PyOS_setsig:int:i:: +PyOS_setsig:PyOS_sighandler_t:h:: + +PyOS_snprintf:int::: +PyOS_snprintf:char *:str:: +PyOS_snprintf:size_t:size:: +PyOS_snprintf:const char *:format:: +PyOS_snprintf::...:: + +PyOS_string_to_double:double::: +PyOS_string_to_double:const char *:s:: +PyOS_string_to_double:char **:endptr:: +PyOS_string_to_double:PyObject *:overflow_exception:+1: + +PyOS_strtol:long::: +PyOS_strtol:const char *:str:: +PyOS_strtol:char **:ptr:: +PyOS_strtol:int:base:: + +PyOS_strtoul:unsigned long::: +PyOS_strtoul:const char *:str:: +PyOS_strtoul:char **:ptr:: +PyOS_strtoul:int:base:: + +PyOS_vsnprintf:int::: +PyOS_vsnprintf:char *:str:: +PyOS_vsnprintf:size_t:size:: +PyOS_vsnprintf:const char *:format:: +PyOS_vsnprintf:va_list:va:: + PyObject_ASCII:PyObject*::+1: PyObject_ASCII:PyObject*:o:0: @@ -1690,6 +1986,13 @@ PyObject_CheckBuffer:PyObject*:obj:0: PyObject_CheckReadBuffer:int::: PyObject_CheckReadBuffer:PyObject*:o:0: +PyObject_ClearWeakRefs:void::: +PyObject_ClearWeakRefs:PyObject *:object:0: + +PyObject_CopyData:int::: +PyObject_CopyData:PyObject *:dest:0: +PyObject_CopyData:PyObject *:src:0: + PyObject_DelAttr:int::: PyObject_DelAttr:PyObject*:o:0: PyObject_DelAttr:PyObject*:attr_name:0: @@ -1702,12 +2005,29 @@ PyObject_DelItem:int::: PyObject_DelItem:PyObject*:o:0: PyObject_DelItem:PyObject*:key:0: +PyObject_DelItemString:int::: +PyObject_DelItemString:PyObject *:o:0: +PyObject_DelItemString:const char *:key:: + PyObject_Dir:PyObject*::+1: PyObject_Dir:PyObject*:o:0: +PyObject_Format:PyObject *::+1: +PyObject_Format:PyObject *:obj:0: +PyObject_Format:PyObject *:format_spec:0: + +PyObject_Free:void::: +PyObject_Free:void *:p:: + PyObject_GC_Del:void::: PyObject_GC_Del:void*:op:: +PyObject_GC_IsFinalized:int::: +PyObject_GC_IsFinalized:PyObject *:op:0: + +PyObject_GC_IsTracked:int::: +PyObject_GC_IsTracked:PyObject *:op:0: + PyObject_GC_New:TYPE*::+1: PyObject_GC_New::TYPE:: PyObject_GC_New:PyTypeObject*:type:0: @@ -1754,6 +2074,16 @@ PyObject_GetAttrString:PyObject*::+1: PyObject_GetAttrString:PyObject*:o:0: PyObject_GetAttrString:const char*:attr_name:: +PyObject_GetOptionalAttr:int::: +PyObject_GetOptionalAttr:PyObject *:obj:0: +PyObject_GetOptionalAttr:PyObject *:attr_name:0: +PyObject_GetOptionalAttr:PyObject **:result:+1: + +PyObject_GetOptionalAttrString:int::: +PyObject_GetOptionalAttrString:PyObject *:obj:0: +PyObject_GetOptionalAttrString:const char *:attr_name:: +PyObject_GetOptionalAttrString:PyObject **:result:+1: + PyObject_GetBuffer:int::: PyObject_GetBuffer:PyObject*:exporter:0: PyObject_GetBuffer:Py_buffer*:view:: @@ -1769,14 +2099,26 @@ PyObject_GetIter:PyObject*:o:0: PyObject_GetAIter:PyObject*::+1: PyObject_GetAIter:PyObject*:o:0: +PyObject_GetTypeData:void *::: +PyObject_GetTypeData:PyObject *:o:0: +PyObject_GetTypeData:PyTypeObject *:cls:0: + PyObject_HasAttr:int::: PyObject_HasAttr:PyObject*:o:0: PyObject_HasAttr:PyObject*:attr_name:0: +PyObject_HasAttrWithError:int::: +PyObject_HasAttrWithError:PyObject *:o:0: +PyObject_HasAttrWithError:PyObject *:attr_name:0: + PyObject_HasAttrString:int::: PyObject_HasAttrString:PyObject*:o:0: PyObject_HasAttrString:const char*:attr_name:: +PyObject_HasAttrWithError:int::: +PyObject_HasAttrStringWithError:PyObject *:o:0: +PyObject_HasAttrStringWithError:const char *:attr_name:0: + PyObject_Hash:int::: PyObject_Hash:PyObject*:o:0: @@ -1808,6 +2150,17 @@ PyObject_LengthHint:Py_ssize_t::: PyObject_LengthHint:PyObject*:o:0: PyObject_LengthHint:Py_ssize_t:default:: +PyObject_Calloc:void *::: +PyObject_Calloc:size_t:nelem:: +PyObject_Calloc:size_t:elsize:: + +PyObject_Malloc:void *::: +PyObject_Malloc:size_t:n:: + +PyObject_Realloc:void *::: +PyObject_Realloc:void *:p:: +PyObject_Realloc:size_t:n:: + PyObject_NEW:PyObject*::+1: PyObject_NEW::TYPE:: PyObject_NEW:PyTypeObject*:type:0: @@ -1857,6 +2210,9 @@ PyObject_SetAttrString:PyObject*:o:0: PyObject_SetAttrString:const char*:attr_name:: PyObject_SetAttrString:PyObject*:v:+1: +PyObject_SelfIter:PyObject *::+1: +PyObject_SelfIter:PyObject *:self:0: + PyObject_SetItem:int::: PyObject_SetItem:PyObject*:o:0: PyObject_SetItem:PyObject*:key:0: @@ -1878,6 +2234,26 @@ PyObject_TypeCheck:int::: PyObject_TypeCheck:PyObject*:o:0: PyObject_TypeCheck:PyTypeObject*:type:0: +PyObject_Vectorcall:PyObject *::+1: +PyObject_Vectorcall:PyObject *:callable:0: +PyObject_Vectorcall:PyObject *const *:args:0: +PyObject_Vectorcall:size_t:nargsf:: +PyObject_Vectorcall:PyObject *:kwnames:0: + +PyObject_VectorcallMethod:PyObject *::+1: +PyObject_VectorcallMethod:PyObject *:name:0: +PyObject_VectorcallMethod:PyObject *const *:args:0: +PyObject_VectorcallMethod:size_t:nargsf:: +PyObject_VectorcallMethod:PyObject *:kwnames:0: + +PyVectorcall_Call:PyObject *::+1: +PyVectorcall_Call:PyObject *:callable:0: +PyVectorcall_Call:PyObject *:tuple:0: +PyVectorcall_Call:PyObject *:dict:0: + +PyVectorcall_NARGS:Py_ssize_t::: +PyVectorcall_NARGS:size_t:nargsf:: + PyRun_AnyFile:int::: PyRun_AnyFile:FILE*:fp:: PyRun_AnyFile:const char*:filename:: @@ -2056,6 +2432,9 @@ PySequence_ITEM:PyObject*::+1: PySequence_ITEM:PyObject*:o:0: PySequence_ITEM:Py_ssize_t:i:: +PySequence_Length:Py_ssize_t::: +PySequence_Length:PyObject *:o:0: + PySequence_Repeat:PyObject*::+1: PySequence_Repeat:PyObject*:o:0: PySequence_Repeat:Py_ssize_t:count:: @@ -2199,6 +2578,15 @@ PySys_AddWarnOptionUnicode:PyObject*:unicode:0: PySys_AddXOption:void::: PySys_AddXOption:const wchar_t*:s:: +PySys_Audit:int::: +PySys_Audit:const char *:event:: +PySys_Audit:const char *:format:: +PySys_Audit::...:: + +PySys_AuditTuple:int::: +PySys_AuditTuple:const char *:event:: +PySys_AuditTuple:PyObject *:args:0: + PySys_FormatStderr:void::: PySys_FormatStderr:const char*:format:: PySys_FormatStderr::...:: @@ -2245,6 +2633,15 @@ PyThreadState_Get:PyThreadState*::: PyThreadState_GetDict:PyObject*::0: +PyThreadState_GetFrame:PyFrameObject *::+1: +PyThreadState_GetFrame:PyThreadState *:tstate:: + +PyThreadState_GetID:uint64_t::: +PyThreadState_GetID:PyThreadState *:tstate:: + +PyThreadState_GetInterpreter:PyInterpreterState *::: +PyThreadState_GetInterpreter:PyThreadState *:tstate:: + PyThreadState_New:PyThreadState*::: PyThreadState_New:PyInterpreterState*:interp:: @@ -2255,6 +2652,59 @@ PyThreadState_SetAsyncExc:PyObject*:exc:+1: PyThreadState_Swap:PyThreadState*::: PyThreadState_Swap:PyThreadState*:tstate:: +PyThread_acquire_lock:int::: +PyThread_acquire_lock:PyThread_type_lock:lock:: +PyThread_acquire_lock:int:waitflag:: + +PyThread_acquire_lock_timed:PyLockStatus::: +PyThread_acquire_lock_timed:PyThread_type_lock:lock:: +PyThread_acquire_lock_timed:PY_TIMEOUT_T:microseconds:: +PyThread_acquire_lock_timed:int:intr_flag:: + +PyThread_allocate_lock:PyThread_type_lock::: + +PyThread_create_key:int:::deprecated + +PyThread_delete_key:void:::deprecated +PyThread_delete_key:int:key:: + +PyThread_delete_key_value:void:::deprecated +PyThread_delete_key_value:int:key:: + +PyThread_exit_thread:void:::deprecated + +PyThread_free_lock:void::: +PyThread_free_lock:PyThread_type_lock:lock:: + +PyThread_GetInfo:PyObject *::: + +PyThread_get_key_value:void *:::deprecated +PyThread_get_key_value:int:key:: + +PyThread_get_stacksize:size_t::: + +PyThread_get_thread_ident:unsigned long::: + +PyThread_get_thread_native_id:unsigned long::: + +PyThread_init_thread:void::: + +PyThread_ReInitTLS:void:::deprecated + +PyThread_release_lock:void::: +PyThread_release_lock:PyThread_type_lock:lock:: + +PyThread_set_key_value:int:::deprecated +PyThread_set_key_value:int:key:: +PyThread_set_key_value:void:value:: + +PyThread_set_stacksize:int::: +PyThread_set_stacksize:size_t:size:: + +PyThread_start_new_thread:unsigned long::: +PyThread_start_new_thread:void (*)(void *):func:: +PyThread_start_new_thread:void *:arg:: + PyThread_tss_alloc:Py_tss_t*::: PyThread_tss_create:int::: @@ -2295,6 +2745,13 @@ PyTime_FromTimeAndFold:int:second:: PyTime_FromTimeAndFold:int:usecond:: PyTime_FromTimeAndFold:int:fold:: +PyTraceBack_Here:int::: +PyTraceBack_Here:PyFrameObject *:frame:+1: + +PyTraceBack_Print:int::: +PyTraceBack_Print:PyObject *:traceback:+1: +PyTraceBack_Print:PyObject *:filename:+1: + PyTraceMalloc_Track:int::: PyTraceMalloc_Track:unsigned int:domain:: PyTraceMalloc_Track:uintptr_t:ptr:: @@ -2352,10 +2809,22 @@ PyType_Check:PyObject*:o:0: PyType_CheckExact:int::: PyType_CheckExact:PyObject*:o:0: +PyType_ClearCache:unsigned int::: + +PyType_Freeze:int::: +PyType_Freeze:PyTypeObject *:type:0: + +PyType_FromMetaclass:PyObject *::+1: +PyType_FromMetaclass:PyTypeObject *:metaclass:0:: +PyType_FromMetaclass:PyObject *:module:0:: +PyType_FromMetaclass:PyType_Spec *:spec::: +PyType_FromMetaclass:PyObject *:bases:0:: + PyType_FromSpec:PyObject*::+1: PyType_FromSpec:PyType_Spec*:spec:: PyType_FromModuleAndSpec:PyObject*::+1: +# TODO(picnixz): is there really a +1 on 'module' here? PyType_FromModuleAndSpec:PyObject*:module:+1: PyType_FromModuleAndSpec:PyType_Spec*:spec:: PyType_FromModuleAndSpec:PyObject*:bases:0: @@ -2373,19 +2842,43 @@ PyType_GenericNew:PyObject*:type:0: PyType_GenericNew:PyObject*:args:0: PyType_GenericNew:PyObject*:kwds:0: +PyType_GetBaseByToken:int::: +PyType_GetBaseByToken:PyTypeObject *:type:0: +PyType_GetBaseByToken:void *:token:: +PyType_GetBaseByToken:PyTypeObject **:result:+1: + PyType_GetFlags:unsigned long::: PyType_GetFlags:PyTypeObject*:type:0: +PyType_GetFullyQualifiedName:PyObject *::+1: +PyType_GetFullyQualifiedName:PyTypeObject *:type:0: + PyType_GetName:PyObject*::+1: PyType_GetName:PyTypeObject*:type:0: PyType_GetQualName:PyObject*::+1: PyType_GetQualName:PyTypeObject*:type:0: +PyType_GetModule:PyObject *::+1: +PyType_GetModule:PyTypeObject *:type:0: + +PyType_GetModuleByDef:PyObject *::+1: +PyType_GetModuleByDef:PyTypeObject *:type:0: +PyType_GetModuleByDef:struct PyModuleDef *:def:: + +PyType_GetModuleName:PyObject *::+1: +PyType_GetModuleName:PyTypeObject *:type:0: + +PyType_GetModuleState:void *::: +PyType_GetModuleState:PyTypeObject *:type:0: + PyType_GetSlot:void*::: PyType_GetSlot:PyTypeObject*:type:0: PyType_GetSlot:int:slot:: +PyType_GetTypeDataSize:Py_ssize_t::: +PyType_GetTypeDataSize:PyTypeObject *:cls:0: + PyType_HasFeature:int::: PyType_HasFeature:PyTypeObject*:o:0: PyType_HasFeature:int:feature:: @@ -2406,6 +2899,24 @@ PyType_Ready:PyTypeObject*:type:0: PyUnicode_1BYTE_DATA:Py_UCS1*::: PyUnicode_1BYTE_DATA:PyObject*:o:0: +PyUnicode_Append:void::: +PyUnicode_Append:PyObject **:dst:+1: +PyUnicode_Append:PyObject *:src:0: + +PyUnicode_AppendAndDel:void::: +PyUnicode_AppendAndDel:PyObject **:dst:+1: +PyUnicode_AppendAndDel:PyObject *:src:-1: + +PyUnicode_BuildEncodingMap:PyObject *::+1: +PyUnicode_BuildEncodingMap:PyObject *:string:0: + +PyUnicode_DecodeCodePageStateful:PyObject *::+1: +PyUnicode_DecodeCodePageStateful:int:code_page:: +PyUnicode_DecodeCodePageStateful:const char *:string:: +PyUnicode_DecodeCodePageStateful:Py_ssize_t:length:: +PyUnicode_DecodeCodePageStateful:const char *:errors:: +PyUnicode_DecodeCodePageStateful:Py_ssize_t:consumed:: + PyUnicode_Check:int::: PyUnicode_Check:PyObject*:o:0: @@ -2483,6 +2994,26 @@ PyUnicode_FromEncodedObject:PyObject*:obj:0: PyUnicode_FromEncodedObject:const char*:encoding:: PyUnicode_FromEncodedObject:const char*:errors:: +PyUnicode_AsDecodedObject:PyObject *:::deprecated +PyUnicode_AsDecodedObject:PyObject *:unicode:0: +PyUnicode_AsDecodedObject:const char *:encoding:: +PyUnicode_AsDecodedObject:const char *:errors:: + +PyUnicode_AsEncodedObject:PyObject *:::deprecated +PyUnicode_AsEncodedObject:PyObject *:unicode:0: +PyUnicode_AsEncodedObject:const char *:encoding:: +PyUnicode_AsEncodedObject:const char *:errors:: + +PyUnicode_AsDecodedUnicode:PyObject *:::deprecated +PyUnicode_AsDecodedUnicode:PyObject *:unicode:0: +PyUnicode_AsDecodedUnicode:const char *:encoding:: +PyUnicode_AsDecodedUnicode:const char *:errors:: + +PyUnicode_AsEncodedUnicode:PyObject *:::deprecated +PyUnicode_AsEncodedUnicode:PyObject *:unicode:0: +PyUnicode_AsEncodedUnicode:const char *:encoding:: +PyUnicode_AsEncodedUnicode:const char *:errors:: + PyUnicode_FromWideChar:PyObject*::+1: PyUnicode_FromWideChar:const wchar_t*:w:: PyUnicode_FromWideChar:Py_ssize_t:size:: @@ -2700,6 +3231,19 @@ PyUnicode_RichCompare:PyObject*:left:0: PyUnicode_RichCompare:PyObject*:right:0: PyUnicode_RichCompare:int:op:: +PyUnicode_Equal:int::: +PyUnicode_Equal:PyObject *:a:0: +PyUnicode_Equal:PyObject *:b:0: + +PyUnicode_EqualToUTF8:int::: +PyUnicode_EqualToUTF8:PyObject *:unicode:0: +PyUnicode_EqualToUTF8:const char *:string:: + +PyUnicode_EqualToUTF8AndSize:int::: +PyUnicode_EqualToUTF8AndSize:PyObject *:unicode:0: +PyUnicode_EqualToUTF8AndSize:const char *:string:: +PyUnicode_EqualToUTF8AndSize:Py_ssize_t:size:: + PyUnicode_Format:PyObject*::+1: PyUnicode_Format:PyObject*:format:0: PyUnicode_Format:PyObject*:args:0: @@ -2714,6 +3258,9 @@ PyUnicode_InternInPlace:PyObject**:string:+1: PyUnicode_InternFromString:PyObject*::+1: PyUnicode_InternFromString:const char*:v:: +PyUnicode_IsIdentifier:int::: +PyUnicode_IsIdentifier:PyObject *:unicode:0: + PyUnicode_New:PyObject*::+1: PyUnicode_New:Py_ssize_t:size:: PyUnicode_New:Py_UCS4:maxchar:: @@ -2738,6 +3285,11 @@ PyUnicode_FromFormatV:PyObject*::+1: PyUnicode_FromFormatV:const char*:format:: PyUnicode_FromFormatV:va_list:args:: +PyUnicode_FromOrdinal:PyObject *::+1: +PyUnicode_FromOrdinal:int:ordinal:: + +PyUnicode_GetDefaultEncoding:const char *::: + PyUnicode_GetLength:Py_ssize_t::: PyUnicode_GetLength:PyObject*:unicode:0: @@ -2754,6 +3306,10 @@ PyUnicode_Fill:Py_ssize_t:start:: PyUnicode_Fill:Py_ssize_t:length:: PyUnicode_Fill:Py_UCS4:fill_char:: +PyUnicode_Partition:PyObject *::+1: +PyUnicode_Partition:PyObject *:unicode:0: +PyUnicode_Partition:PyObject *:sep:0: + PyUnicode_READ:Py_UCS4::: PyUnicode_READ:int:kind:: PyUnicode_READ:void*:data:: @@ -2781,6 +3337,19 @@ PyUnicode_WriteChar:Py_UCS4:character:: PyUnicode_READY:int::: PyUnicode_READY:PyObject*:o:0: +PyUnicode_Resize:int::: +PyUnicode_Resize:PyObject *:unicode:0: +PyUnicode_Resize:Py_ssize_t:length:: + +PyUnicode_RPartition:PyObject *::+1: +PyUnicode_RPartition:PyObject *:unicode:0: +PyUnicode_RPartition:PyObject *:sep:0: + +PyUnicode_RSplit:PyObject *::+1: +PyUnicode_RSplit:PyObject *:unicode:0: +PyUnicode_RSplit:PyObject *:sep:0: +PyUnicode_RSplit:Py_ssize_t:maxsplit:: + PyUnicode_Substring:PyObject*::+1: PyUnicode_Substring:PyObject*:str:0: PyUnicode_Substring:Py_ssize_t:start:: @@ -2863,6 +3432,61 @@ PyUnicodeDecodeError_SetStart:int::: PyUnicodeDecodeError_SetStart:PyObject*:exc:0: PyUnicodeDecodeError_SetStart:Py_ssize_t:start:: +PyUnicodeEncodeError_GetEncoding:PyObject *::+1: +PyUnicodeEncodeError_GetEncoding:PyObject *:exc:0: + +PyUnicodeEncodeError_GetEnd:Py_ssize_t::: +PyUnicodeEncodeError_GetEnd:PyObject *:exc:0: +PyUnicodeEncodeError_GetEnd:Py_ssize_t *:end:: + +PyUnicodeEncodeError_GetObject:PyObject *::+1: +PyUnicodeEncodeError_GetObject:PyObject *:exc:0: + +PyUnicodeEncodeError_GetReason:PyObject *::+1: +PyUnicodeEncodeError_GetReason:PyObject *:exc:0: + +PyUnicodeEncodeError_GetStart:Py_ssize_t::: +PyUnicodeEncodeError_GetStart:PyObject *:exc:0: +PyUnicodeEncodeError_GetStart:Py_ssize_t *:start:: + +PyUnicodeEncodeError_SetEnd:int::: +PyUnicodeEncodeError_SetEnd:PyObject *:exc:0: +PyUnicodeEncodeError_SetEnd:Py_ssize_t:end:: + +PyUnicodeEncodeError_SetReason:int::: +PyUnicodeEncodeError_SetReason:PyObject *:exc:0: +PyUnicodeEncodeError_SetReason:const char *:reason:: + +PyUnicodeEncodeError_SetStart:int::: +PyUnicodeEncodeError_SetStart:PyObject *:exc:0: +PyUnicodeEncodeError_SetStart:Py_ssize_t:start:: + +PyUnicodeTranslateError_GetEnd:Py_ssize_t::: +PyUnicodeTranslateError_GetEnd:PyObject *:exc:0: +PyUnicodeTranslateError_GetEnd:Py_ssize_t *:end:: + +PyUnicodeTranslateError_GetObject:PyObject *::+1: +PyUnicodeTranslateError_GetObject:PyObject *:exc:0: + +PyUnicodeTranslateError_GetReason:PyObject *::+1: +PyUnicodeTranslateError_GetReason:PyObject *:exc:0: + +PyUnicodeTranslateError_GetStart:Py_ssize_t::: +PyUnicodeTranslateError_GetStart:PyObject *:exc:0: +PyUnicodeTranslateError_GetStart:Py_ssize_t *:start:: + +PyUnicodeTranslateError_SetEnd:int::: +PyUnicodeTranslateError_SetEnd:PyObject *:exc:0: +PyUnicodeTranslateError_SetEnd:Py_ssize_t:end:: + +PyUnicodeTranslateError_SetReason:int::: +PyUnicodeTranslateError_SetReason:PyObject *:exc:0: +PyUnicodeTranslateError_SetReason:const char *:reason:: + +PyUnicodeTranslateError_SetStart:int::: +PyUnicodeTranslateError_SetStart:PyObject *:exc:0: +PyUnicodeTranslateError_SetStart:Py_ssize_t:start:: + PyWeakref_Check:int::: PyWeakref_Check:PyObject*:ob:: @@ -2894,6 +3518,10 @@ PyWrapper_New:PyObject*::+1: PyWrapper_New:PyObject*:d:0: PyWrapper_New:PyObject*:self:0: +Py_AddPendingCall:int::: +Py_AddPendingCall:int (*)(void *):func:: +Py_AddPendingCall:void *:arg:: + Py_AtExit:int::: Py_AtExit:void (*)():func:: @@ -2901,6 +3529,10 @@ Py_BuildValue:PyObject*::+1: Py_BuildValue:const char*:format:: Py_BuildValue::...:: +Py_BytesMain:int::: +Py_BytesMain:int:argc:: +Py_BytesMain:char **:argv:: + Py_VaBuildValue:PyObject*::+1: Py_VaBuildValue:const char*:format:: Py_VaBuildValue:va_list:vargs:: @@ -2933,12 +3565,26 @@ Py_CompileStringObject:int:start:: Py_CompileStringObject:PyCompilerFlags*:flags:: Py_CompileStringObject:int:optimize:: +Py_DecodeLocale:wchar_t *::: +Py_DecodeLocale:const char *:arg:: +Py_DecodeLocale:size_t *:size:: + Py_DECREF:void::: Py_DECREF:PyObject*:o:-1: +Py_DecRef:void::: +Py_DecRef:PyObject *:o:-1: + +Py_EncodeLocale:char *::: +Py_EncodeLocale:const wchar_t *:text:: +Py_EncodeLocale:size_t *:error_pos:: + Py_EndInterpreter:void::: Py_EndInterpreter:PyThreadState*:tstate:: +Py_EnterRecursiveCall:int::: +Py_EnterRecursiveCall:const char *:where:: + Py_Exit:void::: Py_Exit:int:status:: @@ -2951,12 +3597,24 @@ Py_FdIsInteractive:const char*:filename:: Py_Finalize:void::: +Py_FinalizeEx:int::: + +Py_GenericAlias:PyObject *::+1: +Py_GenericAlias:PyObject *:origin:0: +Py_GenericAlias:PyObject *:args:0: + Py_GetBuildInfo:const char*::: Py_GetCompiler:const char*::: Py_GetCopyright:const char*::: +Py_GetConstant:PyObject *:+1::: +Py_GetConstant:unsigned int:constant_id:: + +Py_GetConstantBorrowed:PyObject *:0::: +Py_GetConstantBorrowed:unsigned int:constant_id:: + Py_GetExecPrefix:wchar_t*::: Py_GetPath:wchar_t*::: @@ -2969,20 +3627,56 @@ Py_GetProgramFullPath:wchar_t*::: Py_GetProgramName:wchar_t*::: +Py_GetPythonHome:wchar_t *::: + +Py_GetRecursionLimit:int::: + Py_GetVersion:const char*::: Py_INCREF:void::: Py_INCREF:PyObject*:o:+1: +Py_IncRef:void::: +Py_IncRef:PyObject *:o:+1: + Py_NewRef:void::: Py_NewRef:PyObject*:o:+1: Py_Initialize:void::: +Py_InitializeEx:void::: +Py_InitializeEx:int:initsigs:: + Py_IsInitialized:int::: +Py_Is:int::: +Py_Is:PyObject *:x:0: +Py_Is:PyObject *:y:0: + +Py_IsFalse:int::: +Py_IsFalse:PyObject *:x:0: + +Py_IsFinalizing:int::: + +Py_IsNone:int::: +Py_IsNone:PyObject *:x:0: + +Py_IsTrue:int::: +Py_IsTrue:PyObject *:x:0: + +Py_LeaveRecursiveCall:void::: + +Py_Main:int::: +Py_Main:int:argc:: +Py_Main:wchar_t **:argv:: + +Py_MakePendingCalls:int::: + Py_NewInterpreter:PyThreadState*::: +Py_REFCNT:Py_ssize_t::: +Py_REFCNT:PyObject *:ob:0: + Py_ReprEnter:int::: Py_ReprEnter:PyObject*:object:+1: @@ -2992,6 +3686,12 @@ Py_ReprLeave:PyObject*:object:-1: Py_SetProgramName:void::: Py_SetProgramName:const wchar_t*:name:: +Py_SetPythonHome:void::: +Py_SetPythonHome:const wchar_t *:home:: + +Py_SetRecursionLimit:void::: +Py_SetRecursionLimit:int:limit:: + Py_XDECREF:void::: Py_XDECREF:PyObject*:o:-1:if o is not NULL From da56c717ab2323216978f41841fd7baccfbf3137 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A9n=C3=A9dikt=20Tran?= <10796600+picnixz@users.noreply.github.com> Date: Sat, 30 Nov 2024 14:14:51 +0100 Subject: [PATCH 2/7] address Serhiy's review --- Doc/data/refcounts.dat | 46 +++++++++++++++++++++--------------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/Doc/data/refcounts.dat b/Doc/data/refcounts.dat index 8135dedaabc569..c4d111ab848a8d 100644 --- a/Doc/data/refcounts.dat +++ b/Doc/data/refcounts.dat @@ -55,15 +55,15 @@ PyArg_ParseTupleAndKeywords:const char *:keywords:: PyArg_ParseTupleAndKeywords::...:: PyArg_UnpackTuple:int::: -PyArg_UnpackTuple:PyObject*:args:0: -PyArg_UnpackTuple:const char*:name:0: +PyArg_UnpackTuple:PyObject *:args:0: +PyArg_UnpackTuple:const char *:name:0: PyArg_UnpackTuple:Py_ssize_t:min:: PyArg_UnpackTuple:Py_ssize_t:max:: PyArg_UnpackTuple::...:: PyArg_VaParse:int::: -PyArg_VaParse:PyObject*:args:0: -PyArg_VaParse:const char*:format:0: +PyArg_VaParse:PyObject *:args:0: +PyArg_VaParse:const char *:format:0: PyArg_VaParse:va_list:vargs:: PyArg_VaParseTupleAndKeywords:int::: @@ -341,7 +341,7 @@ PyCodec_Register:int::: PyCodec_Register:PyObject*:search_function:+1: PyCodec_Unregister:int::: -PyCodec_Unregister:PyObject *:search_function:0: +PyCodec_Unregister:PyObject *:search_function:-1: PyCodec_KnownEncoding:int::: PyCodec_KnownEncoding:const char*:encoding:: @@ -1629,7 +1629,7 @@ PyMethod_Self:PyObject*:im:0: PyModule_Add:int::: PyModule_Add:PyObject *:module:0: -PyModule_Add:const char *:name:0: +PyModule_Add:const char *:name:: PyModule_Add:PyObject *:value:0:stolen PyModule_AddFunctions:int::: @@ -2115,7 +2115,7 @@ PyObject_HasAttrString:int::: PyObject_HasAttrString:PyObject*:o:0: PyObject_HasAttrString:const char*:attr_name:: -PyObject_HasAttrWithError:int::: +PyObject_HasAttrStringWithError:int::: PyObject_HasAttrStringWithError:PyObject *:o:0: PyObject_HasAttrStringWithError:const char *:attr_name:0: @@ -2749,8 +2749,8 @@ PyTraceBack_Here:int::: PyTraceBack_Here:PyFrameObject *:frame:+1: PyTraceBack_Print:int::: -PyTraceBack_Print:PyObject *:traceback:+1: -PyTraceBack_Print:PyObject *:filename:+1: +PyTraceBack_Print:PyObject *:traceback:0: +PyTraceBack_Print:PyObject *:filename:0: PyTraceMalloc_Track:int::: PyTraceMalloc_Track:unsigned int:domain:: @@ -2900,11 +2900,11 @@ PyUnicode_1BYTE_DATA:Py_UCS1*::: PyUnicode_1BYTE_DATA:PyObject*:o:0: PyUnicode_Append:void::: -PyUnicode_Append:PyObject **:dst:+1: +PyUnicode_Append:PyObject **:dst:0: PyUnicode_Append:PyObject *:src:0: PyUnicode_AppendAndDel:void::: -PyUnicode_AppendAndDel:PyObject **:dst:+1: +PyUnicode_AppendAndDel:PyObject **:dst:0: PyUnicode_AppendAndDel:PyObject *:src:-1: PyUnicode_BuildEncodingMap:PyObject *::+1: @@ -2994,22 +2994,22 @@ PyUnicode_FromEncodedObject:PyObject*:obj:0: PyUnicode_FromEncodedObject:const char*:encoding:: PyUnicode_FromEncodedObject:const char*:errors:: -PyUnicode_AsDecodedObject:PyObject *:::deprecated +PyUnicode_AsDecodedObject:PyObject *::+1:deprecated PyUnicode_AsDecodedObject:PyObject *:unicode:0: PyUnicode_AsDecodedObject:const char *:encoding:: PyUnicode_AsDecodedObject:const char *:errors:: -PyUnicode_AsEncodedObject:PyObject *:::deprecated +PyUnicode_AsEncodedObject:PyObject *::+1:deprecated PyUnicode_AsEncodedObject:PyObject *:unicode:0: PyUnicode_AsEncodedObject:const char *:encoding:: PyUnicode_AsEncodedObject:const char *:errors:: -PyUnicode_AsDecodedUnicode:PyObject *:::deprecated +PyUnicode_AsDecodedUnicode:PyObject *::+1:deprecated PyUnicode_AsDecodedUnicode:PyObject *:unicode:0: PyUnicode_AsDecodedUnicode:const char *:encoding:: PyUnicode_AsDecodedUnicode:const char *:errors:: -PyUnicode_AsEncodedUnicode:PyObject *:::deprecated +PyUnicode_AsEncodedUnicode:PyObject *::+1:deprecated PyUnicode_AsEncodedUnicode:PyObject *:unicode:0: PyUnicode_AsEncodedUnicode:const char *:encoding:: PyUnicode_AsEncodedUnicode:const char *:errors:: @@ -3406,7 +3406,7 @@ PyUnicodeDecodeError_Create:const char*:reason:: PyUnicodeDecodeError_GetEncoding:PyObject*::+1: PyUnicodeDecodeError_GetEncoding:PyObject*:exc:0: -PyUnicodeDecodeError_GetEnd:Py_ssize_t::: +PyUnicodeDecodeError_GetEnd:int::: PyUnicodeDecodeError_GetEnd:PyObject*:exc:0: PyUnicodeDecodeError_GetEnd:Py_ssize_t*:end:: @@ -3416,7 +3416,7 @@ PyUnicodeDecodeError_GetObject:PyObject*:exc:0: PyUnicodeDecodeError_GetReason:PyObject*::+1: PyUnicodeDecodeError_GetReason:PyObject*:exc:0: -PyUnicodeDecodeError_GetStart:Py_ssize_t::: +PyUnicodeDecodeError_GetStart:int::: PyUnicodeDecodeError_GetStart:PyObject*:exc:0: PyUnicodeDecodeError_GetStart:Py_ssize_t*:start:: @@ -3435,7 +3435,7 @@ PyUnicodeDecodeError_SetStart:Py_ssize_t:start:: PyUnicodeEncodeError_GetEncoding:PyObject *::+1: PyUnicodeEncodeError_GetEncoding:PyObject *:exc:0: -PyUnicodeEncodeError_GetEnd:Py_ssize_t::: +PyUnicodeEncodeError_GetEnd:int::: PyUnicodeEncodeError_GetEnd:PyObject *:exc:0: PyUnicodeEncodeError_GetEnd:Py_ssize_t *:end:: @@ -3445,7 +3445,7 @@ PyUnicodeEncodeError_GetObject:PyObject *:exc:0: PyUnicodeEncodeError_GetReason:PyObject *::+1: PyUnicodeEncodeError_GetReason:PyObject *:exc:0: -PyUnicodeEncodeError_GetStart:Py_ssize_t::: +PyUnicodeEncodeError_GetStart:int::: PyUnicodeEncodeError_GetStart:PyObject *:exc:0: PyUnicodeEncodeError_GetStart:Py_ssize_t *:start:: @@ -3461,7 +3461,7 @@ PyUnicodeEncodeError_SetStart:int::: PyUnicodeEncodeError_SetStart:PyObject *:exc:0: PyUnicodeEncodeError_SetStart:Py_ssize_t:start:: -PyUnicodeTranslateError_GetEnd:Py_ssize_t::: +PyUnicodeTranslateError_GetEnd:int::: PyUnicodeTranslateError_GetEnd:PyObject *:exc:0: PyUnicodeTranslateError_GetEnd:Py_ssize_t *:end:: @@ -3471,7 +3471,7 @@ PyUnicodeTranslateError_GetObject:PyObject *:exc:0: PyUnicodeTranslateError_GetReason:PyObject *::+1: PyUnicodeTranslateError_GetReason:PyObject *:exc:0: -PyUnicodeTranslateError_GetStart:Py_ssize_t::: +PyUnicodeTranslateError_GetStart:int::: PyUnicodeTranslateError_GetStart:PyObject *:exc:0: PyUnicodeTranslateError_GetStart:Py_ssize_t *:start:: @@ -3639,8 +3639,8 @@ Py_INCREF:PyObject*:o:+1: Py_IncRef:void::: Py_IncRef:PyObject *:o:+1: -Py_NewRef:void::: -Py_NewRef:PyObject*:o:+1: +Py_NewRef:PyObject *:o:0: +Py_NewRef:PyObject *:o:+1: Py_Initialize:void::: From f0ea3df3386d6df8c1632e3ef4e3ae459ca31386 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A9n=C3=A9dikt=20Tran?= <10796600+picnixz@users.noreply.github.com> Date: Sun, 1 Dec 2024 08:46:28 +0100 Subject: [PATCH 3/7] address Peter's review --- Doc/data/refcounts.dat | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/Doc/data/refcounts.dat b/Doc/data/refcounts.dat index c4d111ab848a8d..fa8621340679b5 100644 --- a/Doc/data/refcounts.dat +++ b/Doc/data/refcounts.dat @@ -56,21 +56,21 @@ PyArg_ParseTupleAndKeywords::...:: PyArg_UnpackTuple:int::: PyArg_UnpackTuple:PyObject *:args:0: -PyArg_UnpackTuple:const char *:name:0: +PyArg_UnpackTuple:const char *:name:: PyArg_UnpackTuple:Py_ssize_t:min:: PyArg_UnpackTuple:Py_ssize_t:max:: PyArg_UnpackTuple::...:: PyArg_VaParse:int::: PyArg_VaParse:PyObject *:args:0: -PyArg_VaParse:const char *:format:0: +PyArg_VaParse:const char *:format:: PyArg_VaParse:va_list:vargs:: PyArg_VaParseTupleAndKeywords:int::: PyArg_VaParseTupleAndKeywords:PyObject *:args:0: PyArg_VaParseTupleAndKeywords:PyObject *:kw:0: -PyArg_VaParseTupleAndKeywords:const char *:format:0: -PyArg_VaParseTupleAndKeywords:const char *:keywords:0: +PyArg_VaParseTupleAndKeywords:const char *:format:: +PyArg_VaParseTupleAndKeywords:const char *:keywords:: PyArg_VaParseTupleAndKeywords:va_list:vargs:: PyArg_ValidateKeywordArguments:int::: @@ -744,7 +744,7 @@ PyErr_Print:void::: PyErr_PrintEx:void::: PyErr_PrintEx:int:set_sys_last_vars:: -PyErr_ProgramText:PyObject *:+1:: +PyErr_ProgramText:PyObject *::+1: PyErr_ProgramText:const char *:filename:: PyErr_ProgramText:int:lineno:: @@ -1257,7 +1257,7 @@ PyInterpreterState_Delete:PyInterpreterState*:interp:: PyInterpreterState_Get:PyInterpreterState *::: -PyInterpreterState_GetDict:PyObject *:+1:: +PyInterpreterState_GetDict:PyObject *::+1: PyInterpreterState_GetDict:PyInterpreterState *:interp:: PyInterpreterState_GetID:int64_t::: @@ -2117,7 +2117,7 @@ PyObject_HasAttrString:const char*:attr_name:: PyObject_HasAttrStringWithError:int::: PyObject_HasAttrStringWithError:PyObject *:o:0: -PyObject_HasAttrStringWithError:const char *:attr_name:0: +PyObject_HasAttrStringWithError:const char *:attr_name:: PyObject_Hash:int::: PyObject_Hash:PyObject*:o:0: @@ -3609,10 +3609,10 @@ Py_GetCompiler:const char*::: Py_GetCopyright:const char*::: -Py_GetConstant:PyObject *:+1::: +Py_GetConstant:PyObject *::+1: Py_GetConstant:unsigned int:constant_id:: -Py_GetConstantBorrowed:PyObject *:0::: +Py_GetConstantBorrowed:PyObject *::0: Py_GetConstantBorrowed:unsigned int:constant_id:: Py_GetExecPrefix:wchar_t*::: @@ -3639,7 +3639,7 @@ Py_INCREF:PyObject*:o:+1: Py_IncRef:void::: Py_IncRef:PyObject *:o:+1: -Py_NewRef:PyObject *:o:0: +Py_NewRef:PyObject *::0: Py_NewRef:PyObject *:o:+1: Py_Initialize:void::: From 3aa16c9a5fcf1abbae4072085e66abe266f45a9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A9n=C3=A9dikt=20Tran?= <10796600+picnixz@users.noreply.github.com> Date: Sun, 1 Dec 2024 08:52:57 +0100 Subject: [PATCH 4/7] Address Peter's review (round 2) --- Doc/data/refcounts.dat | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Doc/data/refcounts.dat b/Doc/data/refcounts.dat index fa8621340679b5..593b128c51e027 100644 --- a/Doc/data/refcounts.dat +++ b/Doc/data/refcounts.dat @@ -2676,7 +2676,7 @@ PyThread_exit_thread:void:::deprecated PyThread_free_lock:void::: PyThread_free_lock:PyThread_type_lock:lock:: -PyThread_GetInfo:PyObject *::: +PyThread_GetInfo:PyObject *::+1: PyThread_get_key_value:void *:::deprecated PyThread_get_key_value:int:key:: From f30c34ce47e507bb5d892151875f81c5c54dc352 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A9n=C3=A9dikt=20Tran?= <10796600+picnixz@users.noreply.github.com> Date: Sun, 1 Dec 2024 10:35:38 +0100 Subject: [PATCH 5/7] add missing stable ABI entries --- Doc/data/refcounts.dat | 60 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/Doc/data/refcounts.dat b/Doc/data/refcounts.dat index 593b128c51e027..0da8b81c117cef 100644 --- a/Doc/data/refcounts.dat +++ b/Doc/data/refcounts.dat @@ -478,6 +478,11 @@ PyCFunction_NewEx:PyObject*:module:+1: PyCFunction_GetFlags:int::: PyCFunction_GetFlags:PyObject *:self:0: +# The following are deprecated but still part of the stable ABI +# TODO: PyCFunction_Call +# TODO: PyCFunction_GetFunction +# TODO: PyCFunction_GetSelf + PyCMethod_New:PyObject*::+1: PyCMethod_New:PyMethodDef*:ml:: PyCMethod_New:PyObject*:self:+1: @@ -880,6 +885,11 @@ PyErr_WriteUnraisable:PyObject*:obj:0: PyEval_AcquireThread:void::: PyEval_AcquireThread:PyThreadState*:tstate:: +# TODO: PyEval_AcquireLock +# TODO: PyEval_CallFunction +# TODO: PyEval_CallMethod +# TODO: PyEval_CallObjectWithKeywords + PyEval_GetBuiltins:PyObject*::0: PyEval_GetLocals:PyObject*::0: @@ -905,6 +915,8 @@ PyEval_GetFuncName:PyObject*:func:0: PyEval_ReleaseThread:void::: PyEval_ReleaseThread:PyThreadState*:tstate:: +# TODO: PyEval_ReleaseLock + PyEval_RestoreThread:void::: PyEval_RestoreThread:PyThreadState*:tstate:: @@ -954,6 +966,8 @@ PyEval_EvalFrameEx:int:throwflag:: PyEval_MergeCompilerFlags:int::: PyEval_MergeCompilerFlags:PyCompilerFlags*:cf:: +# TODO: PyEval_ThreadsInitialized + PyException_GetArgs:PyObject*::+1: PyException_GetCause:PyObject*::+1: @@ -1873,6 +1887,10 @@ PyNumber_Xor:PyObject*:o2:0: PyObject_AsFileDescriptor:int::: PyObject_AsFileDescriptor:PyObject*:o:0: +# TODO: PyObject_AsCharBuffer +# TODO: PyObject_AsReadBuffer +# TODO: PyObject_AsWriteBuffer + PyOS_AfterFork:void::: PyOS_AfterFork_Child:void::: @@ -2600,6 +2618,8 @@ PySys_GetObject:const char*:name:: PySys_GetXOptions:PyObject*::0: +# TODO: PySys_HasWarnOptions + PySys_SetArgv:void::: PySys_SetArgv:int:argc:: PySys_SetArgv:wchar_t**:argv:: @@ -2613,6 +2633,8 @@ PySys_SetObject:int::: PySys_SetObject:const char*:name:: PySys_SetObject:PyObject*:v:+1: +# TODO: PySys_SetPath + PySys_ResetWarnOptions:void::: PySys_WriteStdout:void::: @@ -2629,6 +2651,8 @@ PyThreadState_Clear:PyThreadState*:tstate:: PyThreadState_Delete:void::: PyThreadState_Delete:PyThreadState*:tstate:: +# TODO: PyThreadState_DeleteCurrent + PyThreadState_Get:PyThreadState*::: PyThreadState_GetDict:PyObject*::0: @@ -3255,6 +3279,8 @@ PyUnicode_Contains:PyObject*:element:0: PyUnicode_InternInPlace:void::: PyUnicode_InternInPlace:PyObject**:string:+1: +# TODO: PyUnicode_InternImmortal + PyUnicode_InternFromString:PyObject*::+1: PyUnicode_InternFromString:const char*:v:: @@ -3293,6 +3319,8 @@ PyUnicode_GetDefaultEncoding:const char *::: PyUnicode_GetLength:Py_ssize_t::: PyUnicode_GetLength:PyObject*:unicode:0: +# TODO: PyUnicode_GetSize + PyUnicode_CopyCharacters:Py_ssize_t::: PyUnicode_CopyCharacters:PyObject*:to:0: PyUnicode_CopyCharacters:Py_ssize_t:to_start:: @@ -3603,6 +3631,8 @@ Py_GenericAlias:PyObject *::+1: Py_GenericAlias:PyObject *:origin:0: Py_GenericAlias:PyObject *:args:0: +# TODO: Py_GetArgcArgv + Py_GetBuildInfo:const char*::: Py_GetCompiler:const char*::: @@ -3683,6 +3713,8 @@ Py_ReprEnter:PyObject*:object:+1: Py_ReprLeave:void::: Py_ReprLeave:PyObject*:object:-1: +# TODO: Py_SetPath + Py_SetProgramName:void::: Py_SetProgramName:const wchar_t*:name:: @@ -3701,6 +3733,14 @@ Py_XINCREF:PyObject*:o:+1:if o is not NULL Py_XNewRef:void::: Py_XNewRef:PyObject*:o:+1:if o is not NULL +# TODO: _PyArg_ParseTupleAndKeywords_SizeT +# TODO: _PyArg_ParseTuple_SizeT +# TODO: _PyArg_Parse_SizeT +# TODO: _PyArg_VaParseTupleAndKeywords_SizeT +# TODO: _PyArg_VaParse_SizeT + +# TODO: _PyErr_BadInternalCall + _PyImport_Fini:void::: _PyObject_New:PyObject*::+1: @@ -3714,10 +3754,23 @@ _PyBytes_Resize:int::: _PyBytes_Resize:PyObject**:bytes:0: _PyBytes_Resize:Py_ssize_t:newsize:: +# TODO: _PyObject_CallFunction_SizeT +# TODO: _PyObject_CallMethod_SizeT +# TODO: _PyObject_GC_New +# TODO: _PyObject_GC_NewVar +# TODO: _PyObject_GC_Resize + +# TODO: _PyState_AddModule +# TODO: _PyThreadState_Init +# TODO: _PyThreadState_Prealloc + _PyTuple_Resize:int::: _PyTuple_Resize:PyObject**:p:0: _PyTuple_Resize:Py_ssize_t:new:: +# TODO: _Py_BuildValue_SizeT +# TODO: _Py_CheckRecursiveCall + _Py_c_diff:Py_complex::: _Py_c_diff:Py_complex:left:: _Py_c_diff:Py_complex:right:: @@ -3740,3 +3793,10 @@ _Py_c_quot:Py_complex:divisor:: _Py_c_sum:Py_complex::: _Py_c_sum:Py_complex:left:: _Py_c_sum:Py_complex:right:: + +# TODO: _Py_Dealloc +# TODO: _Py_DecRef +# TODO: _Py_IncRef +# TODO: _Py_NegativeRefcount +# TODO: _Py_SetRefcnt +# TODO: _Py_VaBuildValue_SizeT From d9fa7b90a55ca6744a959e30875fd84bda93fad9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A9n=C3=A9dikt=20Tran?= <10796600+picnixz@users.noreply.github.com> Date: Sun, 1 Dec 2024 11:08:46 +0100 Subject: [PATCH 6/7] complete TODOs --- Doc/data/refcounts.dat | 190 +++++++++++++++++++++++++++++++---------- 1 file changed, 146 insertions(+), 44 deletions(-) diff --git a/Doc/data/refcounts.dat b/Doc/data/refcounts.dat index 0da8b81c117cef..8df865def4210e 100644 --- a/Doc/data/refcounts.dat +++ b/Doc/data/refcounts.dat @@ -466,6 +466,11 @@ PyContextVar_Reset:int::: PyContextVar_Reset:PyObject*:var:0: PyContextVar_Reset:PyObject*:token:-1: +PyCFunction_Call:PyObject*::+1:deprecated +PyCFunction_Call:PyObject*:callable_object:0: +PyCFunction_Call:PyObject*:args:0: +PyCFunction_Call:PyObject*:kw:0: + PyCFunction_New:PyObject*::+1: PyCFunction_New:PyMethodDef*:ml:: PyCFunction_New:PyObject*:self:+1: @@ -478,10 +483,11 @@ PyCFunction_NewEx:PyObject*:module:+1: PyCFunction_GetFlags:int::: PyCFunction_GetFlags:PyObject *:self:0: -# The following are deprecated but still part of the stable ABI -# TODO: PyCFunction_Call -# TODO: PyCFunction_GetFunction -# TODO: PyCFunction_GetSelf +PyCFunction_GetFunction:PyCFunction::: +PyCFunction_GetFunction:PyObject *:op:0: + +PyCFunction_GetSelf:PyObject *::0: +PyCFunction_GetSelf:PyObject *:op:0: PyCMethod_New:PyObject*::+1: PyCMethod_New:PyMethodDef*:ml:: @@ -885,10 +891,23 @@ PyErr_WriteUnraisable:PyObject*:obj:0: PyEval_AcquireThread:void::: PyEval_AcquireThread:PyThreadState*:tstate:: -# TODO: PyEval_AcquireLock -# TODO: PyEval_CallFunction -# TODO: PyEval_CallMethod -# TODO: PyEval_CallObjectWithKeywords +PyEval_AcquireLock:void:::deprecated + +PyEval_CallFunction:PyObject *::+1:deprecated +PyEval_CallFunction:PyObject *:callable:0: +PyEval_CallFunction:const char *:format:: +PyEval_CallFunction::...:: + +PyEval_CallMethod:PyObject *::+1:deprecated +PyEval_CallMethod:PyObject *:obj:0: +PyEval_CallMethod:const char *:name:: +PyEval_CallMethod:const char *:format:: +PyEval_CallMethod::...:: + +PyEval_CallObjectWithKeywords:PyObject *::+1:deprecated +PyEval_CallObjectWithKeywords:PyObject *:callable:0: +PyEval_CallObjectWithKeywords:PyObject *:args:0: +PyEval_CallObjectWithKeywords:PyObject *:kwargs:0: PyEval_GetBuiltins:PyObject*::0: @@ -915,7 +934,7 @@ PyEval_GetFuncName:PyObject*:func:0: PyEval_ReleaseThread:void::: PyEval_ReleaseThread:PyThreadState*:tstate:: -# TODO: PyEval_ReleaseLock +PyEval_ReleaseLock:void:::deprecated PyEval_RestoreThread:void::: PyEval_RestoreThread:PyThreadState*:tstate:: @@ -966,7 +985,7 @@ PyEval_EvalFrameEx:int:throwflag:: PyEval_MergeCompilerFlags:int::: PyEval_MergeCompilerFlags:PyCompilerFlags*:cf:: -# TODO: PyEval_ThreadsInitialized +PyEval_ThreadsInitialized:void:::deprecated PyException_GetArgs:PyObject*::+1: @@ -1887,9 +1906,20 @@ PyNumber_Xor:PyObject*:o2:0: PyObject_AsFileDescriptor:int::: PyObject_AsFileDescriptor:PyObject*:o:0: -# TODO: PyObject_AsCharBuffer -# TODO: PyObject_AsReadBuffer -# TODO: PyObject_AsWriteBuffer +PyObject_AsCharBuffer:int:::abi_only +PyObject_AsCharBuffer:PyObject *:obj:0: +PyObject_AsCharBuffer:const char **:buffer:: +PyObject_AsCharBuffer:Py_ssize_t *:buffer_len:: + +PyObject_AsReadBuffer:int:::abi_only +PyObject_AsReadBuffer:PyObject *:obj:0: +PyObject_AsReadBuffer:const void **:buffer:: +PyObject_AsReadBuffer:Py_ssize_t *:buffer_len:: + +PyObject_AsWriteBuffer:int:::abi_only +PyObject_AsWriteBuffer:PyObject *:obj:0: +PyObject_AsWriteBuffer:void **:buffer:: +PyObject_AsWriteBuffer:Py_ssize_t *:buffer_len:: PyOS_AfterFork:void::: @@ -2618,7 +2648,7 @@ PySys_GetObject:const char*:name:: PySys_GetXOptions:PyObject*::0: -# TODO: PySys_HasWarnOptions +PySys_HasWarnOptions:int:::deprecated(3.13) PySys_SetArgv:void::: PySys_SetArgv:int:argc:: @@ -2633,7 +2663,8 @@ PySys_SetObject:int::: PySys_SetObject:const char*:name:: PySys_SetObject:PyObject*:v:+1: -# TODO: PySys_SetPath +PySys_SetPath:void:::deprecated(3.13) +PySys_SetPath:const wchar_t *:path:: PySys_ResetWarnOptions:void::: @@ -2651,7 +2682,7 @@ PyThreadState_Clear:PyThreadState*:tstate:: PyThreadState_Delete:void::: PyThreadState_Delete:PyThreadState*:tstate:: -# TODO: PyThreadState_DeleteCurrent +PyThreadState_DeleteCurrent:void::: PyThreadState_Get:PyThreadState*::: @@ -3279,7 +3310,8 @@ PyUnicode_Contains:PyObject*:element:0: PyUnicode_InternInPlace:void::: PyUnicode_InternInPlace:PyObject**:string:+1: -# TODO: PyUnicode_InternImmortal +PyUnicode_InternImmortal:void:::deprecated(3.10) +PyUnicode_InternImmortal:PyObject **:p:+1: PyUnicode_InternFromString:PyObject*::+1: PyUnicode_InternFromString:const char*:v:: @@ -3319,8 +3351,6 @@ PyUnicode_GetDefaultEncoding:const char *::: PyUnicode_GetLength:Py_ssize_t::: PyUnicode_GetLength:PyObject*:unicode:0: -# TODO: PyUnicode_GetSize - PyUnicode_CopyCharacters:Py_ssize_t::: PyUnicode_CopyCharacters:PyObject*:to:0: PyUnicode_CopyCharacters:Py_ssize_t:to_start:: @@ -3631,7 +3661,9 @@ Py_GenericAlias:PyObject *::+1: Py_GenericAlias:PyObject *:origin:0: Py_GenericAlias:PyObject *:args:0: -# TODO: Py_GetArgcArgv +Py_GetArgcArgv:void::: +Py_GetArgcArgv:int *:argc:: +Py_GetArgcArgv:wchar_t **:argv:: Py_GetBuildInfo:const char*::: @@ -3713,7 +3745,8 @@ Py_ReprEnter:PyObject*:object:+1: Py_ReprLeave:void::: Py_ReprLeave:PyObject*:object:-1: -# TODO: Py_SetPath +Py_SetPath:void:::deprecated(3.13) +Py_SetPath:const wchar_t *:path:: Py_SetProgramName:void::: Py_SetProgramName:const wchar_t*:name:: @@ -3733,13 +3766,38 @@ Py_XINCREF:PyObject*:o:+1:if o is not NULL Py_XNewRef:void::: Py_XNewRef:PyObject*:o:+1:if o is not NULL -# TODO: _PyArg_ParseTupleAndKeywords_SizeT -# TODO: _PyArg_ParseTuple_SizeT -# TODO: _PyArg_Parse_SizeT -# TODO: _PyArg_VaParseTupleAndKeywords_SizeT -# TODO: _PyArg_VaParse_SizeT - -# TODO: _PyErr_BadInternalCall +_PyArg_ParseTupleAndKeywords_SizeT:int::: +_PyArg_ParseTupleAndKeywords_SizeT:PyObject *:args:0: +_PyArg_ParseTupleAndKeywords_SizeT:PyObject *:keywords:0: +_PyArg_ParseTupleAndKeywords_SizeT:const char *:format:: +_PyArg_ParseTupleAndKeywords_SizeT:const char * const *:kwlist:: +_PyArg_ParseTupleAndKeywords_SizeT::...:: + +_PyArg_ParseTuple_SizeT:int::: +_PyArg_ParseTuple_SizeT:PyObject *:args:0: +_PyArg_ParseTuple_SizeT:const char *:format:: +_PyArg_ParseTuple_SizeT::...:: + +_PyArg_Parse_SizeT:int::: +_PyArg_Parse_SizeT:PyObject *:args:0: +_PyArg_Parse_SizeT:const char *:format:: +_PyArg_Parse_SizeT::...:: + +_PyArg_VaParseTupleAndKeywords_SizeT:int::: +_PyArg_VaParseTupleAndKeywords_SizeT:PyObject *:args:0: +_PyArg_VaParseTupleAndKeywords_SizeT:PyObject *:keywords:0: +_PyArg_VaParseTupleAndKeywords_SizeT:const char *:format:: +_PyArg_VaParseTupleAndKeywords_SizeT:const char * const *:kwlist:: +_PyArg_VaParseTupleAndKeywords_SizeT:va_list:va:: + +_PyArg_VaParse_SizeT:int::: +_PyArg_VaParse_SizeT:PyObject *:args:0: +_PyArg_VaParse_SizeT:const char *:format:: +_PyArg_VaParse_SizeT:va_list:va:: + +_PyErr_BadInternalCall:void::: +_PyErr_BadInternalCall:const char *:filename:: +_PyErr_BadInternalCall:int:lineno:: _PyImport_Fini:void::: @@ -3754,22 +3812,49 @@ _PyBytes_Resize:int::: _PyBytes_Resize:PyObject**:bytes:0: _PyBytes_Resize:Py_ssize_t:newsize:: -# TODO: _PyObject_CallFunction_SizeT -# TODO: _PyObject_CallMethod_SizeT -# TODO: _PyObject_GC_New -# TODO: _PyObject_GC_NewVar -# TODO: _PyObject_GC_Resize +_PyObject_CallFunction_SizeT:PyObject *::+1:abi-only +_PyObject_CallFunction_SizeT:PyObject *:callable:0: +_PyObject_CallFunction_SizeT:const char *:format:: +_PyObject_CallFunction_SizeT::...:: + +_PyObject_CallMethod_SizeT:PyObject *::+1:abi-only +_PyObject_CallMethod_SizeT:PyObject *:obj:0: +_PyObject_CallMethod_SizeT:const char *:name:: +_PyObject_CallMethod_SizeT:const char *:format:: +_PyObject_CallMethod_SizeT::...:: + +_PyObject_GC_New:PyObject *::+1: +_PyObject_GC_New:PyTypeObject *:tp:0: -# TODO: _PyState_AddModule -# TODO: _PyThreadState_Init -# TODO: _PyThreadState_Prealloc +_PyObject_GC_NewVar:PyObject *::+1: +_PyObject_GC_NewVar:PyTypeObject *:tp:0: +_PyObject_GC_NewVar:Py_ssize_t:size:: + +_PyObject_GC_Resize:PyVarObject *::0: +_PyObject_GC_Resize:PyVarObject *:op:0: +_PyObject_GC_Resize:Py_ssize_t:nitems:: + +_PyState_AddModule:int:::abi-only(removed) +_PyState_AddModule:PyThreadState *:tstate:: +_PyState_AddModule:PyObject *:module:0: +_PyState_AddModule:PyModuleDef *:def:: + +_PyThreadState_Init:void:::UNUSABLE + +_PyThreadState_Prealloc:PyThreadState *:::abi-only +_PyThreadState_Prealloc:PyInterpreterState *:interp:: _PyTuple_Resize:int::: _PyTuple_Resize:PyObject**:p:0: _PyTuple_Resize:Py_ssize_t:new:: -# TODO: _Py_BuildValue_SizeT -# TODO: _Py_CheckRecursiveCall +_Py_BuildValue_SizeT:PyObject *::0:abi-only +_Py_BuildValue_SizeT:const char *:format:: +_Py_BuildValue_SizeT::...:: + +_Py_CheckRecursiveCall:int:::abi-only(internal) +_Py_CheckRecursiveCall:PyThreadState *:tstate:: +_Py_CheckRecursiveCall:const char *:where:: _Py_c_diff:Py_complex::: _Py_c_diff:Py_complex:left:: @@ -3794,9 +3879,26 @@ _Py_c_sum:Py_complex::: _Py_c_sum:Py_complex:left:: _Py_c_sum:Py_complex:right:: -# TODO: _Py_Dealloc -# TODO: _Py_DecRef -# TODO: _Py_IncRef -# TODO: _Py_NegativeRefcount -# TODO: _Py_SetRefcnt -# TODO: _Py_VaBuildValue_SizeT +_Py_Dealloc:void::: +_Py_Dealloc:PyObject *:op:0: + +_Py_DecRef:void:::internal +_Py_DecRef:PyObject *:op:-1: + +_Py_IncRef:void:::internal +_Py_IncRef:PyObject *:op:+1: + +_Py_NegativeRefcount:void::: +_Py_NegativeRefcount:const char *:filename:: +_Py_NegativeRefcount:int:lineno:: +_Py_NegativeRefcount:PyObject *:op:0: + +# The refcount is changed dynamically, so to ease +# the syntax, we mark the refcount delta to be 0. +_Py_SetRefcnt:void::: +_Py_SetRefcnt:PyObject *:op:0: +_Py_SetRefcnt:Py_ssize_t:refcnt:: + +_Py_VaBuildValue_SizeT:PyObject *::+1:abi-only +_Py_VaBuildValue_SizeT:const char *:format:: +_Py_VaBuildValue_SizeT:va_list:va:: From ac344b9a19e38afc9f9d05e6ef8ed8874e511847 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A9n=C3=A9dikt=20Tran?= <10796600+picnixz@users.noreply.github.com> Date: Sun, 1 Dec 2024 11:16:41 +0100 Subject: [PATCH 7/7] Resolve some TODOs. In PyErr_SetHandledException, the exception's reference count is incremented by 1 since it's being used as `Py_XSETREF(..., Py_NewRef(exc))`. In PyType_FromModuleAndSpec, the module's reference count is incremented by 1 since it's being stored in the new class being created. --- Doc/data/refcounts.dat | 2 -- 1 file changed, 2 deletions(-) diff --git a/Doc/data/refcounts.dat b/Doc/data/refcounts.dat index 8df865def4210e..68ebf6e00e22f1 100644 --- a/Doc/data/refcounts.dat +++ b/Doc/data/refcounts.dat @@ -720,7 +720,6 @@ PyErr_GetExcInfo:PyObject**:ptraceback:+1: PyErr_GetHandledException:PyObject *::+1: PyErr_SetHandledException:void::: -# TODO(picnixz): is this correct? PyErr_SetHandledException:PyObject *:exc:+1: PyErr_GetRaisedException:PyObject*::+1: @@ -2879,7 +2878,6 @@ PyType_FromSpec:PyObject*::+1: PyType_FromSpec:PyType_Spec*:spec:: PyType_FromModuleAndSpec:PyObject*::+1: -# TODO(picnixz): is there really a +1 on 'module' here? PyType_FromModuleAndSpec:PyObject*:module:+1: PyType_FromModuleAndSpec:PyType_Spec*:spec:: PyType_FromModuleAndSpec:PyObject*:bases:0: