commit: 3e1e36e8d5a944cfc98584c8353da76f80a69bbd Author: Michał Górny <mgorny <AT> gentoo <DOT> org> AuthorDate: Mon Jun 15 11:03:57 2020 +0000 Commit: Michał Górny <mgorny <AT> gentoo <DOT> org> CommitDate: Mon Jun 15 13:17:28 2020 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=3e1e36e8
dev-python/cython: Improve py39 patch to avoid breaking py27 Signed-off-by: Michał Górny <mgorny <AT> gentoo.org> ...-0.29.20-r1.ebuild => cython-0.29.20-r2.ebuild} | 0 .../files/cython-0.29.20-py39-classmeth.patch | 69 +++++++--------------- 2 files changed, 22 insertions(+), 47 deletions(-) diff --git a/dev-python/cython/cython-0.29.20-r1.ebuild b/dev-python/cython/cython-0.29.20-r2.ebuild similarity index 100% rename from dev-python/cython/cython-0.29.20-r1.ebuild rename to dev-python/cython/cython-0.29.20-r2.ebuild 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 index e82982472e8..914269a5a23 100644 --- a/dev-python/cython/files/cython-0.29.20-py39-classmeth.patch +++ b/dev-python/cython/files/cython-0.29.20-py39-classmeth.patch @@ -1,59 +1,34 @@ -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 +From c29a7818d3b6806a457af698aec446d3d28d4f80 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <[email protected]> +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 | 15 --------------- - tests/run/cyfunction.pyx | 12 ++++++++++++ - 2 files changed, 12 insertions(+), 15 deletions(-) + Cython/Utility/CythonFunction.c | 2 ++ + 1 file changed, 2 insertions(+) diff --git a/Cython/Utility/CythonFunction.c b/Cython/Utility/CythonFunction.c -index 01ff1e0dd4..0758548cb3 100644 +index a65c8eee36..33d0a4750a 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, +@@ -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) { -- __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); - } ++#if PY_MAJOR_VERSION < 3 + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; -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 + 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); + } -+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()
