From e8d42b1b7bf698615adfdefbcdaa17df660e721d Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Fri, 16 Feb 2024 12:11:16 +0100 Subject: [PATCH] Use new PyCFunctionFastWithKeywords and PyCFunctionFast in Python 3.13a4 (GH-6003) Python 3.13a4 adds a public PyCFunctionFastWithKeywords and PyCFunctionFast types and removes the private _PyCFunctionFastWithKeywords and _PyCFunctionFast types: * https://github.com/python/cpython/commit/9e3729bbd77fb9dcaea6a06ac760160136d80b79 * https://github.com/python/cpython/pull/114627 * https://github.com/capi-workgroup/decisions/issues/11 --- Cython/Utility/CythonFunction.c | 2 +- Cython/Utility/ModuleSetupCode.c | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/Cython/Utility/CythonFunction.c b/Cython/Utility/CythonFunction.c index 2f8efc9e8b5..2ca461f6654 100644 --- a/Cython/Utility/CythonFunction.c +++ b/Cython/Utility/CythonFunction.c @@ -1058,7 +1058,7 @@ static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS(PyObject *func, return NULL; } - return ((_PyCFunctionFastWithKeywords)(void(*)(void))def->ml_meth)(self, args, nargs, kwnames); + return ((__Pyx_PyCFunctionFastWithKeywords)(void(*)(void))def->ml_meth)(self, args, nargs, kwnames); } static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) diff --git a/Cython/Utility/ModuleSetupCode.c b/Cython/Utility/ModuleSetupCode.c index 33e7abe0614..122f8560d40 100644 --- a/Cython/Utility/ModuleSetupCode.c +++ b/Cython/Utility/ModuleSetupCode.c @@ -873,8 +873,13 @@ class __Pyx_FakeReference { typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames); #else - #define __Pyx_PyCFunctionFast _PyCFunctionFast - #define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords + #if PY_VERSION_HEX >= 0x030d00A4 + # define __Pyx_PyCFunctionFast PyCFunctionFast + # define __Pyx_PyCFunctionFastWithKeywords PyCFunctionFastWithKeywords + #else + # define __Pyx_PyCFunctionFast _PyCFunctionFast + # define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords + #endif #endif #if CYTHON_METH_FASTCALL