commit:     14b141814617fb383f7caa03399ffef34dc0945d
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sun Jun 14 09:17:19 2020 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sun Jun 14 09:31:50 2020 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=14b14181

dev-python/cython: Backport py3.9 classmethod fix

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 ...hon-0.29.20.ebuild => cython-0.29.20-r1.ebuild} |  1 +
 .../files/cython-0.29.20-py39-classmeth.patch      | 59 ++++++++++++++++++++++
 2 files changed, 60 insertions(+)

diff --git a/dev-python/cython/cython-0.29.20.ebuild 
b/dev-python/cython/cython-0.29.20-r1.ebuild
similarity index 98%
rename from dev-python/cython/cython-0.29.20.ebuild
rename to dev-python/cython/cython-0.29.20-r1.ebuild
index 8b4b6e7acc6..c1f45f653d2 100644
--- a/dev-python/cython/cython-0.29.20.ebuild
+++ b/dev-python/cython/cython-0.29.20-r1.ebuild
@@ -31,6 +31,7 @@ BDEPEND="${RDEPEND}
 
 PATCHES=(
        "${FILESDIR}/cython-0.29.14-sphinx-update.patch"
+       "${FILESDIR}"/${P}-py39-classmeth.patch
 )
 
 SITEFILE=50cython-gentoo.el

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 00000000000..e82982472e8
--- /dev/null
+++ b/dev-python/cython/files/cython-0.29.20-py39-classmeth.patch
@@ -0,0 +1,59 @@
+From 1bb26b964060392ecb08c3b6c8ca4626e5c1eec7 Mon Sep 17 00:00:00 2001
+From: Jeroen Demeyer <[email protected]>
+Date: Wed, 28 Aug 2019 10:56:28 +0200
+Subject: [PATCH] Always bind Cython functions
+
+---
+ Cython/Utility/CythonFunction.c | 15 ---------------
+ tests/run/cyfunction.pyx        | 12 ++++++++++++
+ 2 files changed, 12 insertions(+), 15 deletions(-)
+
+diff --git a/Cython/Utility/CythonFunction.c b/Cython/Utility/CythonFunction.c
+index 01ff1e0dd4..0758548cb3 100644
+--- a/Cython/Utility/CythonFunction.c
++++ b/Cython/Utility/CythonFunction.c
+@@ -552,21 +552,6 @@ static int 
__Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit,
+ 
+ static PyObject *__Pyx_CyFunction_descr_get(PyObject *func, PyObject *obj, 
PyObject *type)
+ {
+-    __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
+-
+-    if (m->flags & __Pyx_CYFUNCTION_STATICMETHOD) {
+-        Py_INCREF(func);
+-        return func;
+-    }
+-
+-    if (m->flags & __Pyx_CYFUNCTION_CLASSMETHOD) {
+-        if (type == NULL)
+-            type = (PyObject *)(Py_TYPE(obj));
+-        return __Pyx_PyMethod_New(func, type, (PyObject *)(Py_TYPE(type)));
+-    }
+-
+-    if (obj == Py_None)
+-        obj = NULL;
+     return __Pyx_PyMethod_New(func, obj, type);
+ }
+ 
+diff --git a/tests/run/cyfunction.pyx b/tests/run/cyfunction.pyx
+index cbce48bcfc..bbd2cefb83 100644
+--- a/tests/run/cyfunction.pyx
++++ b/tests/run/cyfunction.pyx
+@@ -376,6 +376,18 @@ class TestUnboundMethod:
+     def meth(self): pass
+ 
+ 
++class TestStaticmethod(object):
++    """
++    >>> x = TestStaticmethod()
++    >>> x.staticmeth(42)
++    42
++    >>> x.staticmeth.__get__(42)()
++    42
++    """
++    @staticmethod
++    def staticmeth(arg): return arg
++
++
+ cdef class TestOptimisedBuiltinMethod:
+     """
+     >>> obj = TestOptimisedBuiltinMethod()

Reply via email to