chore: some minor CPython API cleanup (#6005)
* chore: use PyType_GetFlags
Signed-off-by: Henry Schreiner <henryfs@princeton.edu>
* chore: use public VectorCall in 3.9+
Signed-off-by: Henry Schreiner <henryfs@princeton.edu>
---------
Signed-off-by: Henry Schreiner <henryfs@princeton.edu>
diff --git a/include/pybind11/attr.h b/include/pybind11/attr.h
index b4486dc..d337595 100644
--- a/include/pybind11/attr.h
+++ b/include/pybind11/attr.h
@@ -378,7 +378,7 @@
#ifdef PYBIND11_BACKWARD_COMPATIBILITY_TP_DICTOFFSET
dynamic_attr |= base_info->type->tp_dictoffset != 0;
#else
- dynamic_attr |= (base_info->type->tp_flags & Py_TPFLAGS_MANAGED_DICT) != 0;
+ dynamic_attr |= (PyType_GetFlags(base_info->type) & Py_TPFLAGS_MANAGED_DICT) != 0;
#endif
if (caster) {
diff --git a/include/pybind11/cast.h b/include/pybind11/cast.h
index 6d0e851..9c8cdd0 100644
--- a/include/pybind11/cast.h
+++ b/include/pybind11/cast.h
@@ -2240,8 +2240,13 @@
if (m_names) {
nargs -= m_names.size();
}
- PyObject *result = _PyObject_Vectorcall(
- ptr, m_args.data() + 1, nargs | PY_VECTORCALL_ARGUMENTS_OFFSET, m_names.ptr());
+ PyObject *result =
+#if PY_VERSION_HEX >= 0x03090000
+ PyObject_Vectorcall(
+#else
+ _PyObject_Vectorcall(
+#endif
+ ptr, m_args.data() + 1, nargs | PY_VECTORCALL_ARGUMENTS_OFFSET, m_names.ptr());
if (!result) {
throw error_already_set();
}