18#if PY_VERSION_HEX >= 0x030d0000
19# define PY_ARG_PARSER_HEAD_COMPAT()
20#elif PY_VERSION_HEX >= 0x030c0000
22# define PY_ARG_PARSER_HEAD_COMPAT() 0,
24# define PY_ARG_PARSER_HEAD_COMPAT()
28#if PY_VERSION_HEX < 0x030d0000
29# define PyObject_GetOptionalAttr _PyObject_LookupAttr
32 PyObject_GetOptionalAttrString(PyObject *obj, const
char *
name, PyObject **
result)
34 PyObject *oname = PyUnicode_FromString(
name);
35 if (oname ==
nullptr) {
44# define Py_IsFinalizing _Py_IsFinalizing
48#if PY_VERSION_HEX < 0x030e0000
49# define Py_HashPointer _Py_HashPointer
50# define PyThreadState_GetUnchecked _PyThreadState_UncheckedGet
54#if PY_VERSION_HEX >= 0x030d0000
55int _PyArg_CheckPositional(
const char *
name, Py_ssize_t nargs, Py_ssize_t
min, Py_ssize_t
max);
Py_LOCAL_INLINE(int) PyObject_GetOptionalAttrString(PyObject *obj
#define PyObject_GetOptionalAttr