From 4cbbcbaf4f4d08ec49a01af4905dbb69a69f097714f51b5b8e8cbef7a328d781 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20=C4=8Ciha=C5=99?= Date: Wed, 22 Apr 2015 13:54:51 +0000 Subject: [PATCH] Accepting request 298594 from home:Nijel:branches:devel:languages:python - Add python-numpy as BuildRequires to have more complete test coverage - Fix doctests in 32-bit environment (fix-32bit.patch) - Update to 0.22: Features added * C functions can coerce to Python functions, which allows passing them around as callable objects. * C arrays can be assigned by value and auto-coerce from Python iterables and to Python lists (and tuples). * Extern C functions can now be declared as cpdef to export them to the module's Python namespace. Extern C functions in pxd files export their values to their own module, iff it exists. * Anonymous C tuple types can be declared as (ctype1, ctype2, ...). * PEP 479: turn accidental StopIteration exceptions that exit generators into a RuntimeError, activated with future import "generator_stop". See http://legacy.python.org/dev/peps/pep-0479/ * Looping over ``reversed(range())`` is optimised in the same way as ``range()``. Patch by Favian Contreras. Bugs fixed * Mismatching 'except' declarations on signatures in .pxd and .pyx files failed to produce a compile error. * Failure to find any files for the path pattern(s) passed into ``cythonize()`` is now an error to more easily detect accidental typos. * The ``logaddexp`` family of functions in ``numpy.math`` now has correct declarations. * In Py2.6/7 and Py3.2, simple Cython memory views could accidentally be interpreted as non-contiguous by CPython, which could trigger a CPython bug when copying data from them, thus leading to data corruption. See CPython issues 12834 and 23349. OBS-URL: https://build.opensuse.org/request/show/298594 OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-Cython?expand=0&rev=56 --- Cython-0.21.1.tar.gz | 3 -- Cython-0.22.tar.gz | 3 ++ fix-32bit.patch | 122 ++++++++++++++++++++++++++++++++++++++++++ python-Cython.changes | 47 ++++++++++++++++ python-Cython.spec | 11 ++-- 5 files changed, 180 insertions(+), 6 deletions(-) delete mode 100644 Cython-0.21.1.tar.gz create mode 100644 Cython-0.22.tar.gz create mode 100644 fix-32bit.patch diff --git a/Cython-0.21.1.tar.gz b/Cython-0.21.1.tar.gz deleted file mode 100644 index 74094f9..0000000 --- a/Cython-0.21.1.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:43f64d225186ec7601249ebd1e8f8a7c33767974b493de6783c5b3dd0415bf35 -size 2743480 diff --git a/Cython-0.22.tar.gz b/Cython-0.22.tar.gz new file mode 100644 index 0000000..0fad07b --- /dev/null +++ b/Cython-0.22.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:14307e7a69af9a0d0e0024d446af7e51cc0e3e4d0dfb10d36ba837e5e5844015 +size 1584483 diff --git a/fix-32bit.patch b/fix-32bit.patch new file mode 100644 index 0000000..68c9a77 --- /dev/null +++ b/fix-32bit.patch @@ -0,0 +1,122 @@ +From 65408e6c70074c4fec128805888d18c7e933895a Mon Sep 17 00:00:00 2001 +From: Stefan Behnel +Date: Fri, 13 Feb 2015 14:38:32 +0100 +Subject: [PATCH] fix doctests in 32bit Py2.x + +--- + tests/run/carray_coercion.pyx | 23 +++++++++++++++++++---- + tests/run/reversed_iteration.pyx | 35 +++++++++++++++++++++++------------ + 2 files changed, 42 insertions(+), 16 deletions(-) + +diff --git a/tests/run/carray_coercion.pyx b/tests/run/carray_coercion.pyx +index d73fcf4..f04f820 100644 +--- a/tests/run/carray_coercion.pyx ++++ b/tests/run/carray_coercion.pyx +@@ -1,3 +1,18 @@ ++# mode: run ++ ++import sys ++IS_PY3 = sys.version_info[0] >= 3 ++IS_32BIT_PY2 = not IS_PY3 and sys.maxint < 2**32 ++ ++ ++def unlongify(v): ++ # on 32bit Py2.x platforms, 'unsigned int' coerces to a Python long => fix doctest output here. ++ s = repr(v) ++ if IS_32BIT_PY2: ++ assert s.count('L') == s.count(',') + 1, s ++ s = s.replace('L', '') ++ return s ++ + + def from_int_array(): + """ +@@ -30,8 +45,8 @@ cdef extern from "stdint.h": + + def from_typedef_int_array(): + """ +- >>> from_typedef_int_array() +- [1, 2, 3] ++ >>> unlongify(from_typedef_int_array()) ++ '[1, 2, 3]' + """ + cdef uint32_t[3] v + v[0] = 1 +@@ -42,8 +57,8 @@ def from_typedef_int_array(): + + cpdef tuple tuple_from_typedef_int_array(): + """ +- >>> tuple_from_typedef_int_array() +- (1, 2, 3) ++ >>> unlongify(tuple_from_typedef_int_array()) ++ '(1, 2, 3)' + """ + cdef uint32_t[3] v + v[0] = 1 +diff --git a/tests/run/reversed_iteration.pyx b/tests/run/reversed_iteration.pyx +index 585d0df..0f55060 100644 +--- a/tests/run/reversed_iteration.pyx ++++ b/tests/run/reversed_iteration.pyx +@@ -5,6 +5,17 @@ cimport cython + + import sys + IS_PY3 = sys.version_info[0] >= 3 ++IS_32BIT_PY2 = not IS_PY3 and sys.maxint < 2**32 ++ ++ ++def unlongify(v): ++ # on 32bit Py2.x platforms, 'unsigned int' coerces to a Python long => fix doctest output here. ++ s = repr(v) ++ if IS_32BIT_PY2: ++ assert s.count('L') == s.count(',') + 1, s ++ s = s.replace('L', '') ++ return s ++ + + def _reversed(it): + return list(it)[::-1] +@@ -764,10 +775,10 @@ def reversed_bytes_slice_step_only(bytes s): + @cython.test_assert_path_exists('//ForFromStatNode') + def reversed_unsigned(int a, int b): + """ +- >>> reversed_unsigned(0, 5) +- [4, 3, 2, 1, 0] +- >>> reversed_unsigned(1, 5) +- [4, 3, 2, 1] ++ >>> unlongify(reversed_unsigned(0, 5)) ++ '[4, 3, 2, 1, 0]' ++ >>> unlongify(reversed_unsigned(1, 5)) ++ '[4, 3, 2, 1]' + >>> reversed_unsigned(1, 1) + [] + """ +@@ -777,10 +788,10 @@ def reversed_unsigned(int a, int b): + @cython.test_assert_path_exists('//ForFromStatNode') + def reversed_unsigned_by_3(int a, int b): + """ +- >>> reversed_unsigned_by_3(0, 5) +- [3, 0] +- >>> reversed_unsigned_by_3(0, 7) +- [6, 3, 0] ++ >>> unlongify(reversed_unsigned_by_3(0, 5)) ++ '[3, 0]' ++ >>> unlongify(reversed_unsigned_by_3(0, 7)) ++ '[6, 3, 0]' + """ + cdef unsigned int i + return [i for i in reversed(range(a, b, 3))] +@@ -788,10 +799,10 @@ def reversed_unsigned_by_3(int a, int b): + @cython.test_assert_path_exists('//ForFromStatNode') + def range_unsigned_by_neg_3(int a, int b): + """ +- >>> range_unsigned_by_neg_3(-1, 6) +- [6, 3, 0] +- >>> range_unsigned_by_neg_3(0, 7) +- [7, 4, 1] ++ >>> unlongify(range_unsigned_by_neg_3(-1, 6)) ++ '[6, 3, 0]' ++ >>> unlongify(range_unsigned_by_neg_3(0, 7)) ++ '[7, 4, 1]' + """ + cdef unsigned int i + return [i for i in range(b, a, -3)] diff --git a/python-Cython.changes b/python-Cython.changes index e6e5a6a..82a563e 100644 --- a/python-Cython.changes +++ b/python-Cython.changes @@ -1,3 +1,50 @@ +------------------------------------------------------------------- +Wed Apr 22 11:52:03 UTC 2015 - mcihar@suse.cz + +- Add python-numpy as BuildRequires to have more complete test coverage + +------------------------------------------------------------------- +Wed Apr 22 11:01:47 UTC 2015 - mcihar@suse.cz + +- Fix doctests in 32-bit environment (fix-32bit.patch) + +------------------------------------------------------------------- +Wed Apr 22 09:10:30 UTC 2015 - mcihar@suse.cz + +- Update to 0.22: + Features added + * C functions can coerce to Python functions, which allows passing them + around as callable objects. + * C arrays can be assigned by value and auto-coerce from Python iterables + and to Python lists (and tuples). + * Extern C functions can now be declared as cpdef to export them to + the module's Python namespace. Extern C functions in pxd files export + their values to their own module, iff it exists. + * Anonymous C tuple types can be declared as (ctype1, ctype2, ...). + * PEP 479: turn accidental StopIteration exceptions that exit generators + into a RuntimeError, activated with future import "generator_stop". + See http://legacy.python.org/dev/peps/pep-0479/ + * Looping over ``reversed(range())`` is optimised in the same way as + ``range()``. Patch by Favian Contreras. + Bugs fixed + * Mismatching 'except' declarations on signatures in .pxd and .pyx files failed + to produce a compile error. + * Failure to find any files for the path pattern(s) passed into ``cythonize()`` + is now an error to more easily detect accidental typos. + * The ``logaddexp`` family of functions in ``numpy.math`` now has correct + declarations. + * In Py2.6/7 and Py3.2, simple Cython memory views could accidentally be + interpreted as non-contiguous by CPython, which could trigger a CPython + bug when copying data from them, thus leading to data corruption. + See CPython issues 12834 and 23349. + Other changes + * Preliminary support for defining the Cython language with a formal grammar. + To try parsing your files against this grammar, use the --formal_grammar directive. + Experimental. + * ``_`` is no longer considered a cacheable builtin as it could interfere with + gettext. + * Cythonize-computed metadata now cached in the generated C files. + ------------------------------------------------------------------- Thu Feb 5 11:35:45 UTC 2015 - hpj@urpla.net diff --git a/python-Cython.spec b/python-Cython.spec index 776e51e..860c5d5 100644 --- a/python-Cython.spec +++ b/python-Cython.spec @@ -1,7 +1,7 @@ # # spec file for package python-Cython # -# Copyright (c) 2015 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,7 +17,7 @@ Name: python-Cython -Version: 0.21.1 +Version: 0.22 Release: 0 Url: http://www.cython.org Summary: The Cython compiler for writing C extensions for the Python language @@ -25,10 +25,14 @@ License: Apache-2.0 Group: Development/Languages/Python Source: http://pypi.python.org/packages/source/C/Cython/Cython-%{version}.tar.gz Source1: python-Cython-rpmlintrc +# PATCH-FIX-UPSTREAM -- https://github.com/cython/cython/commit/65408e6c70074c4fec128805888d18c7e933895a +Patch0: fix-32bit.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRequires: fdupes BuildRequires: gcc-c++ BuildRequires: python-devel +BuildRequires: python-numpy +BuildRequires: python-numpy-devel BuildRequires: python-xml Provides: python-cython = %{version} Obsoletes: python-cython < %{version} @@ -60,6 +64,7 @@ code. sed -i "s|^#!.*||" Cython/Debugger/{libpython,Cygdb}.py cython.py # Fix EOL encoding sed -i "s|\r||" Demos/callback/{README.txt,cheesefinder.h} Demos/embed/Makefile.{unix,msc.static} Doc/primes.c +%patch0 -p1 %build CFLAGS="%{optflags}" python setup.py build @@ -79,7 +84,7 @@ rm -rf %{buildroot}%{python_sitearch}/__pycache__/ # avoid conflicts with python 2 version %check -python runtests.py +python runtests.py -vv %post %_sbindir/update-alternatives \