From c29a7818d3b6806a457af698aec446d3d28d4f80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= Date: Sun, 14 Jun 2020 13:45:21 +0200 Subject: [PATCH] Always bind Cython functions in py3 Rebased for cython 0.29.x, and made conditional to Python 3. This does not solve the original staticmethod problem in Python 2 but it does resolve classmethod problems in Python 3.9. Therefore, it unbreaks other packages on Python 3.9, improves overall state for Python 3 and does not introduce regressions in Python 2. --- Cython/Utility/CythonFunction.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Cython/Utility/CythonFunction.c b/Cython/Utility/CythonFunction.c index a65c8eee36..33d0a4750a 100644 --- a/Cython/Utility/CythonFunction.c +++ b/Cython/Utility/CythonFunction.c @@ -548,6 +548,7 @@ static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit, static PyObject *__Pyx_CyFunction_descr_get(PyObject *func, PyObject *obj, PyObject *type) { +#if PY_MAJOR_VERSION < 3 __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; if (m->flags & __Pyx_CYFUNCTION_STATICMETHOD) { @@ -563,6 +564,7 @@ static PyObject *__Pyx_CyFunction_descr_get(PyObject *func, PyObject *obj, PyObj if (obj == Py_None) obj = NULL; +#endif return __Pyx_PyMethod_New(func, obj, type); }