@@ -203,6 +203,9 @@ typedef PySliceObject PySliceObject_T;
203203# define PySys_GetObject py3_PySys_GetObject
204204# define PySys_SetArgv py3_PySys_SetArgv
205205# define PyType_Ready py3_PyType_Ready
206+ # if PY_VERSION_HEX >= 0x030900b0
207+ # define PyType_GetFlags py3_PyType_GetFlags
208+ # endif
206209#undef Py_BuildValue
207210# define Py_BuildValue py3_Py_BuildValue
208211# define Py_SetPythonHome py3_Py_SetPythonHome
@@ -233,6 +236,9 @@ typedef PySliceObject PySliceObject_T;
233236# define PyBytes_FromString py3_PyBytes_FromString
234237# undef PyBytes_FromStringAndSize
235238# define PyBytes_FromStringAndSize py3_PyBytes_FromStringAndSize
239+ # if defined(Py_DEBUG ) || PY_VERSION_HEX >= 0x030900b0
240+ # define _Py_Dealloc py3__Py_Dealloc
241+ # endif
236242# define PyFloat_FromDouble py3_PyFloat_FromDouble
237243# define PyFloat_AsDouble py3_PyFloat_AsDouble
238244# define PyObject_GenericGetAttr py3_PyObject_GenericGetAttr
@@ -247,7 +253,6 @@ typedef PySliceObject PySliceObject_T;
247253# ifdef Py_DEBUG
248254# define _Py_NegativeRefcount py3__Py_NegativeRefcount
249255# define _Py_RefTotal (*py3__Py_RefTotal)
250- # define _Py_Dealloc py3__Py_Dealloc
251256# define PyModule_Create2TraceRefs py3_PyModule_Create2TraceRefs
252257# else
253258# define PyModule_Create2 py3_PyModule_Create2
@@ -287,6 +292,10 @@ typedef PySliceObject PySliceObject_T;
287292# define PyObject_NEW (type , typeobj ) \
288293( (type *) PyObject_Init( \
289294 (PyObject *) _PyObject_DebugMalloc( _PyObject_SIZE(typeobj) ), (typeobj)) )
295+ # elif PY_VERSION_HEX >= 0x030900b0
296+ # undef PyObject_NEW
297+ # define PyObject_NEW (type , typeobj ) \
298+ ((type *)py3__PyObject_New(typeobj))
290299# endif
291300
292301/*
@@ -352,6 +361,9 @@ static PyObject* (*py3_PyObject_Repr)(PyObject *);
352361static PyObject * (* py3_PyObject_GetItem )(PyObject * , PyObject * );
353362static int (* py3_PyObject_IsTrue )(PyObject * );
354363static PyObject * (* py3_Py_BuildValue )(char * , ...);
364+ # if PY_VERSION_HEX >= 0x030900b0
365+ static int (* py3_PyType_GetFlags )(PyTypeObject * o );
366+ # endif
355367static int (* py3_PyType_Ready )(PyTypeObject * type );
356368static int (* py3_PyDict_SetItemString )(PyObject * dp , char * key , PyObject * item );
357369static PyObject * (* py3_PyUnicode_FromString )(const char * u );
@@ -396,6 +408,12 @@ static char* (*py3_PyBytes_AsString)(PyObject *bytes);
396408static int (* py3_PyBytes_AsStringAndSize )(PyObject * bytes , char * * buffer , Py_ssize_t * length );
397409static PyObject * (* py3_PyBytes_FromString )(char * str );
398410static PyObject * (* py3_PyBytes_FromStringAndSize )(char * str , Py_ssize_t length );
411+ # if defined(Py_DEBUG ) || PY_VERSION_HEX >= 0x030900b0
412+ static void (* py3__Py_Dealloc )(PyObject * obj );
413+ # endif
414+ # if PY_VERSION_HEX >= 0x030900b0
415+ static PyObject * (* py3__PyObject_New )(PyTypeObject * );
416+ # endif
399417static PyObject * (* py3_PyFloat_FromDouble )(double num );
400418static double (* py3_PyFloat_AsDouble )(PyObject * );
401419static PyObject * (* py3_PyObject_GenericGetAttr )(PyObject * obj , PyObject * name );
@@ -414,7 +432,6 @@ static void* (*py3_PyCapsule_GetPointer)(PyObject *, char *);
414432# ifdef Py_DEBUG
415433static void (* py3__Py_NegativeRefcount )(const char * fname , int lineno , PyObject * op );
416434static Py_ssize_t * py3__Py_RefTotal ;
417- static void (* py3__Py_Dealloc )(PyObject * obj );
418435static PyObject * (* py3_PyModule_Create2TraceRefs )(struct PyModuleDef * module , int module_api_version );
419436# else
420437static PyObject * (* py3_PyModule_Create2 )(struct PyModuleDef * module , int module_api_version );
@@ -525,6 +542,9 @@ static struct
525542 {"PyObject_IsTrue" , (PYTHON_PROC * )& py3_PyObject_IsTrue },
526543 {"PyLong_FromLong" , (PYTHON_PROC * )& py3_PyLong_FromLong },
527544 {"PyDict_New" , (PYTHON_PROC * )& py3_PyDict_New },
545+ # if PY_VERSION_HEX >= 0x030900b0
546+ {"PyType_GetFlags" , (PYTHON_PROC * )& py3_PyType_GetFlags },
547+ # endif
528548 {"PyType_Ready" , (PYTHON_PROC * )& py3_PyType_Ready },
529549 {"PyDict_SetItemString" , (PYTHON_PROC * )& py3_PyDict_SetItemString },
530550 {"PyLong_AsLong" , (PYTHON_PROC * )& py3_PyLong_AsLong },
@@ -562,6 +582,12 @@ static struct
562582 {"PyBytes_AsStringAndSize" , (PYTHON_PROC * )& py3_PyBytes_AsStringAndSize },
563583 {"PyBytes_FromString" , (PYTHON_PROC * )& py3_PyBytes_FromString },
564584 {"PyBytes_FromStringAndSize" , (PYTHON_PROC * )& py3_PyBytes_FromStringAndSize },
585+ # if defined(Py_DEBUG ) || PY_VERSION_HEX >= 0x030900b0
586+ {"_Py_Dealloc" , (PYTHON_PROC * )& py3__Py_Dealloc },
587+ # endif
588+ # if PY_VERSION_HEX >= 0x030900b0
589+ {"_PyObject_New" , (PYTHON_PROC * )& py3__PyObject_New },
590+ # endif
565591 {"PyFloat_FromDouble" , (PYTHON_PROC * )& py3_PyFloat_FromDouble },
566592 {"PyFloat_AsDouble" , (PYTHON_PROC * )& py3_PyFloat_AsDouble },
567593 {"PyObject_GenericGetAttr" , (PYTHON_PROC * )& py3_PyObject_GenericGetAttr },
@@ -578,7 +604,6 @@ static struct
578604# ifdef Py_DEBUG
579605 {"_Py_NegativeRefcount" , (PYTHON_PROC * )& py3__Py_NegativeRefcount },
580606 {"_Py_RefTotal" , (PYTHON_PROC * )& py3__Py_RefTotal },
581- {"_Py_Dealloc" , (PYTHON_PROC * )& py3__Py_Dealloc },
582607 {"PyModule_Create2TraceRefs" , (PYTHON_PROC * )& py3_PyModule_Create2TraceRefs },
583608# else
584609 {"PyModule_Create2" , (PYTHON_PROC * )& py3_PyModule_Create2 },
@@ -634,6 +659,15 @@ py3__Py_XDECREF(PyObject *op)
634659# define Py_XDECREF (op ) py3__Py_XDECREF(_PyObject_CAST(op))
635660# endif
636661
662+ # if PY_VERSION_HEX >= 0x030900b0
663+ static inline int
664+ py3_PyType_HasFeature (PyTypeObject * type , unsigned long feature )
665+ {
666+ return ((PyType_GetFlags (type ) & feature ) != 0 );
667+ }
668+ # define PyType_HasFeature (t ,f ) py3_PyType_HasFeature(t,f)
669+ # endif
670+
637671/*
638672 * Load library and get all pointers.
639673 * Parameter 'libname' provides name of DLL.
0 commit comments