summaryrefslogtreecommitdiff
blob: 914269a5a2321f48b854c972ceeb8eca5e50e7b6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
From c29a7818d3b6806a457af698aec446d3d28d4f80 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@gentoo.org>
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);
 }