#26 [DO NOT MERGE YET] Backport patch to add Python 3.10 support
Closed 3 years ago by churchyard. Opened 3 years ago by thrnciar.
rpms/ thrnciar/Cython backport-python3.10-fix  into  rawhide

file modified
+1
@@ -45,3 +45,4 @@ 

  /Cython-0.29.17.tar.gz

  /Cython-0.29.19.tar.gz

  /Cython-0.29.21.tar.gz

+ /5300b74134a777c7590ac8bce04ece94debac2fe.tar.gz

file modified
+3 -12
@@ -1,7 +1,7 @@ 

  %global srcname Cython

  %global upname cython

  

- %bcond_without tests

+ %bcond_with tests

  

  Name:           Cython

  Version:        0.29.21
@@ -11,16 +11,7 @@ 

  

  License:        ASL 2.0

  URL:            http://www.cython.org

- Source:         https://github.com/cython/cython/archive/%{upver}/%{srcname}-%{version}.tar.gz

- 

- # Partially work around issues with class and static methods

- # See https://bugzilla.redhat.com/show_bug.cgi?id=1788506

- # Mostly backported from upstream: https://github.com/cython/cython/pull/3106

- # This also:

- # - Removes staticmethod optimizations for normal functions

- # - Removes failing test for staticmethod fused functions, which still fail

- #   See also: https://github.com/cython/cython/issues/3614

- Patch3106:      class-static-method-workaround.patch

+ Source:         https://github.com/cython/cython/archive/5300b74134a777c7590ac8bce04ece94debac2fe.tar.gz

  

  BuildRequires:  gcc

  %if %{with tests}
@@ -67,7 +58,7 @@ 

  cython-mode is an Emacs major mode for editing Cython source files.

  

  %prep

- %autosetup -n %{upname}-%{upver} -p1

+ %autosetup -n cython-5300b74134a777c7590ac8bce04ece94debac2fe -p1

  

  %build

  %py3_build

@@ -1,114 +0,0 @@ 

- diff -U3 -r cython-0.29.17.orig/Cython/Compiler/ExprNodes.py cython-0.29.17/Cython/Compiler/ExprNodes.py

- --- cython-0.29.17.orig/Cython/Compiler/ExprNodes.py	2020-04-26 13:48:48.000000000 +0200

- +++ cython-0.29.17/Cython/Compiler/ExprNodes.py	2020-05-15 17:44:55.157172257 +0200

- @@ -2295,8 +2295,10 @@

-                  setter = 'PyDict_SetItem'

-                  namespace = Naming.moddict_cname

-              elif entry.is_pyclass_attr:

- -                code.globalstate.use_utility_code(UtilityCode.load_cached("SetNameInClass", "ObjectHandling.c"))

- -                setter = '__Pyx_SetNameInClass'

- +                # Special-case setting __new__

- +                n = "SetNewInClass" if self.name == "__new__" else "SetNameInClass"

- +                code.globalstate.use_utility_code(UtilityCode.load_cached(n, "ObjectHandling.c"))

- +                setter = '__Pyx_' + n

-              else:

-                  assert False, repr(entry)

-              code.put_error_if_neg(

- diff -U3 -r cython-0.29.17.orig/Cython/Compiler/Nodes.py cython-0.29.17/Cython/Compiler/Nodes.py

- --- cython-0.29.17.orig/Cython/Compiler/Nodes.py	2020-04-26 13:48:48.000000000 +0200

- +++ cython-0.29.17/Cython/Compiler/Nodes.py	2020-05-15 17:44:55.159172253 +0200

- @@ -2872,7 +2872,6 @@

-                  func = decorator.decorator

-                  if func.is_name:

-                      self.is_classmethod |= func.name == 'classmethod'

- -                    self.is_staticmethod |= func.name == 'staticmethod'

-  

-          if self.is_classmethod and env.lookup_here('classmethod'):

-              # classmethod() was overridden - not much we can do here ...

- diff -U3 -r cython-0.29.17.orig/Cython/Utility/ObjectHandling.c cython-0.29.17/Cython/Utility/ObjectHandling.c

- --- cython-0.29.17.orig/Cython/Utility/ObjectHandling.c	2020-04-26 13:48:48.000000000 +0200

- +++ cython-0.29.17/Cython/Utility/ObjectHandling.c	2020-05-15 17:44:55.160172251 +0200

- @@ -1163,6 +1163,30 @@

-  #define __Pyx_SetNameInClass(ns, name, value)  PyObject_SetItem(ns, name, value)

-  #endif

-  

- +/////////////// SetNewInClass.proto ///////////////

- +

- +static int __Pyx_SetNewInClass(PyObject *ns, PyObject *name, PyObject *value);

- +

- +/////////////// SetNewInClass ///////////////

- +//@requires: SetNameInClass

- +

- +// Special-case setting __new__: if it's a Cython function, wrap it in a

- +// staticmethod. This is similar to what Python does for a Python function

- +// called __new__.

- +static int __Pyx_SetNewInClass(PyObject *ns, PyObject *name, PyObject *value) {

- +#ifdef __Pyx_CyFunction_USED

- +    int ret;

- +    if (__Pyx_CyFunction_Check(value)) {

- +        PyObject *staticnew = PyStaticMethod_New(value);

- +        if (unlikely(!staticnew)) return -1;

- +        ret = __Pyx_SetNameInClass(ns, name, staticnew);

- +        Py_DECREF(staticnew);

- +        return ret;

- +    }

- +#endif

- +    return __Pyx_SetNameInClass(ns, name, value);

- +}

- +

-  

-  /////////////// GetModuleGlobalName.proto ///////////////

-  //@requires: PyDictVersioning

- Only in cython-0.29.17.orig: cython-0.29.17

- diff -U3 -r cython-0.29.17.orig/tests/run/cyfunction.pyx cython-0.29.17/tests/run/cyfunction.pyx

- --- cython-0.29.17.orig/tests/run/cyfunction.pyx	2020-04-26 13:48:48.000000000 +0200

- +++ cython-0.29.17/tests/run/cyfunction.pyx	2020-05-15 17:44:55.160172251 +0200

- @@ -376,6 +376,18 @@

-      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()

- diff -U3 -r cython-0.29.17.orig/tests/run/fused_def.pyx cython-0.29.17/tests/run/fused_def.pyx

- --- cython-0.29.17.orig/tests/run/fused_def.pyx	2020-04-26 13:48:48.000000000 +0200

- +++ cython-0.29.17/tests/run/fused_def.pyx	2020-05-15 18:03:39.436752174 +0200

- @@ -268,14 +268,6 @@

-  def test_fused_def_super():

-      """

-      >>> test_fused_def_super()

- -    long 10

- -    long 11

- -    long 11

- -    long 12

- -    short 12

- -    long 13

- -    short 13

- -    long 14

-      <class 'fused_def.SubClass'> long 14

-      <class 'fused_def.SubClass'> long 15

-      <class 'fused_def.SubClass'> long 15

- @@ -296,11 +288,6 @@

-      obj = SubClass()

-      cls = SubClass

-  

- -    obj.mystaticmethod(obj, 10)

- -    cls.mystaticmethod(obj, 11)

- -    obj.mystaticmethod[cy.short](obj, 12)

- -    cls.mystaticmethod[cy.short](obj, 13)

- -

-      obj.myclassmethod(14)

-      cls.myclassmethod(15)

-      obj.myclassmethod[cy.short](16)

file modified
+1 -1
@@ -1,1 +1,1 @@ 

- SHA512 (Cython-0.29.21.tar.gz) = 2c0c3e3fff07106eb98862f71cd5dec9ff29460cf9b9e4de74537ca5e033f7523989beb5fbdc14723beaf94a535976f75c803e791b87e017961d9694b8c37679

+ SHA512 (5300b74134a777c7590ac8bce04ece94debac2fe.tar.gz) = 24a45386586dc2f0e8648465ee252339ca095651620fea20a7f7ae09aa7a159c4f341965c1fed8abb0327120d12e00ffddbd42a202bfb75c5efee344219ac799

Builds alright without tests in Python 3.10 COPR.
Tests fail with the same errors as previously with PR#24.

rebased onto 6b91afa68858d209bb3e671691e71e9f7eeefd5f

3 years ago

rebased onto 5d4696ceafe0c0c78e907469eda8c8545000a361

3 years ago

rebased onto 21d7a150c5073a61915ad451b350e89b74e99b6c

3 years ago

rebased onto f6d0f569fdac250d04fa7d73f21a57303794dca4

3 years ago

rebased onto fca957626dddf609dd09425d262a40151877f8cd

3 years ago

rebased onto a5e2f7c62d3a885a8782a7411b912b057fa4d9c8

3 years ago

rebased onto 1b43b9f

3 years ago

Pull-Request has been closed by churchyard

3 years ago