@@ -1540,29 +1540,34 @@ async def afunc():
15401540 [(1 ,1 ,3 )])
15411541
15421542if check_impl_detail (cpython = True ) and ctypes is not None :
1543- py = ctypes .pythonapi
1544- freefunc = ctypes .CFUNCTYPE (None ,ctypes .c_voidp )
1545-
1546- RequestCodeExtraIndex = py .PyUnstable_Eval_RequestCodeExtraIndex
1547- RequestCodeExtraIndex .argtypes = (freefunc ,)
1548- RequestCodeExtraIndex .restype = ctypes .c_ssize_t
1549-
1550- SetExtra = py .PyUnstable_Code_SetExtra
1551- SetExtra .argtypes = (ctypes .py_object , ctypes .c_ssize_t , ctypes .c_voidp )
1552- SetExtra .restype = ctypes .c_int
1553-
1554- GetExtra = py .PyUnstable_Code_GetExtra
1555- GetExtra .argtypes = (ctypes .py_object , ctypes .c_ssize_t ,
1556- ctypes .POINTER (ctypes .c_voidp ))
1557- GetExtra .restype = ctypes .c_int
1543+ import ctypes .util
1544+ freefunc = ctypes .CFUNCTYPE (None , ctypes .c_voidp )
1545+
1546+ @ctypes .util .wrap_dll_function (ctypes .pythonapi )
1547+ def PyUnstable_Eval_RequestCodeExtraIndex (free : freefunc ) -> ctypes .c_ssize_t :
1548+ pass
1549+
1550+ @ctypes .util .wrap_dll_function (ctypes .pythonapi )
1551+ def PyUnstable_Code_SetExtra (code : ctypes .py_object ,
1552+ index : ctypes .c_ssize_t ,
1553+ extra : ctypes .c_voidp ) -> ctypes .c_int :
1554+ pass
1555+ SetExtra = PyUnstable_Code_SetExtra
1556+
1557+ @ctypes .util .wrap_dll_function (ctypes .pythonapi )
1558+ def PyUnstable_Code_GetExtra (code : ctypes .py_object ,
1559+ index : ctypes .c_ssize_t ,
1560+ extra : ctypes .POINTER (ctypes .c_voidp )) -> ctypes .c_int :
1561+ pass
1562+ GetExtra = PyUnstable_Code_GetExtra
15581563
15591564 LAST_FREED = None
15601565 def myfree (ptr ):
15611566 global LAST_FREED
15621567 LAST_FREED = ptr
15631568
15641569 FREE_FUNC = freefunc (myfree )
1565- FREE_INDEX = RequestCodeExtraIndex (FREE_FUNC )
1570+ FREE_INDEX = PyUnstable_Eval_RequestCodeExtraIndex (FREE_FUNC )
15661571 # Make sure myfree sticks around at least as long as the interpreter,
15671572 # since we (currently) can't unregister the function and leaving a
15681573 # dangling pointer will cause a crash on deallocation of code objects if
0 commit comments