summaryrefslogtreecommitdiff
path: root/dev-python/cython/files/cython-0.29.20-py39-classmeth.patch
diff options
context:
space:
mode:
Diffstat (limited to 'dev-python/cython/files/cython-0.29.20-py39-classmeth.patch')
-rw-r--r--dev-python/cython/files/cython-0.29.20-py39-classmeth.patch34
1 files changed, 34 insertions, 0 deletions
diff --git a/dev-python/cython/files/cython-0.29.20-py39-classmeth.patch b/dev-python/cython/files/cython-0.29.20-py39-classmeth.patch
new file mode 100644
index 000000000000..914269a5a232
--- /dev/null
+++ b/dev-python/cython/files/cython-0.29.20-py39-classmeth.patch
@@ -0,0 +1,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);
+ }
+