From 475e99d5a42ab900c24ecba2d1f24447055c45f6 Mon Sep 17 00:00:00 2001 From: "Korn, Uwe" Date: Fri, 29 Jun 2018 22:29:16 +0200 Subject: [PATCH 01/13] Accept constant memoryviews in HashTable.lookup --- pandas/_libs/hashtable_class_helper.pxi.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pandas/_libs/hashtable_class_helper.pxi.in b/pandas/_libs/hashtable_class_helper.pxi.in index 4d2b6f845eb71..66c60c2796d1a 100644 --- a/pandas/_libs/hashtable_class_helper.pxi.in +++ b/pandas/_libs/hashtable_class_helper.pxi.in @@ -379,7 +379,7 @@ cdef class {{name}}HashTable(HashTable): self.table.vals[k] = i @cython.boundscheck(False) - def lookup(self, {{dtype}}_t[:] values): + def lookup(self, const {{dtype}}_t[:] values): cdef: Py_ssize_t i, n = len(values) int ret = 0 From bcd13848390a4e37d2c8dca39a16d4a609b82af2 Mon Sep 17 00:00:00 2001 From: "Korn, Uwe" Date: Sat, 30 Jun 2018 22:20:12 +0200 Subject: [PATCH 02/13] Add const specifiers to remaining signatures --- pandas/_libs/hashtable_class_helper.pxi.in | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pandas/_libs/hashtable_class_helper.pxi.in b/pandas/_libs/hashtable_class_helper.pxi.in index 66c60c2796d1a..20f9f7a16950b 100644 --- a/pandas/_libs/hashtable_class_helper.pxi.in +++ b/pandas/_libs/hashtable_class_helper.pxi.in @@ -120,7 +120,7 @@ cdef class {{name}}Vector: append_data_{{dtype}}(self.data, x) - cdef extend(self, {{arg}}[:] x): + cdef extend(self, const {{arg}}[:] x): for i in range(len(x)): self.append(x[i]) @@ -351,7 +351,7 @@ cdef class {{name}}HashTable(HashTable): raise KeyError(key) @cython.boundscheck(False) - def map(self, {{dtype}}_t[:] keys, int64_t[:] values): + def map(self, const {{dtype}}_t[:] keys, const int64_t[:] values): cdef: Py_ssize_t i, n = len(values) int ret = 0 @@ -404,7 +404,7 @@ cdef class {{name}}HashTable(HashTable): return uniques.to_array(), labels @cython.boundscheck(False) - def get_labels(self, {{dtype}}_t[:] values, {{name}}Vector uniques, + def get_labels(self, const {{dtype}}_t[:] values, {{name}}Vector uniques, Py_ssize_t count_prior, Py_ssize_t na_sentinel, object na_value=None): cdef: @@ -461,7 +461,7 @@ cdef class {{name}}HashTable(HashTable): return np.asarray(labels) @cython.boundscheck(False) - def get_labels_groupby(self, {{dtype}}_t[:] values): + def get_labels_groupby(self, const {{dtype}}_t[:] values): cdef: Py_ssize_t i, n = len(values) int64_t[:] labels @@ -518,7 +518,7 @@ cdef class {{name}}HashTable(HashTable): {{unique_template}} @cython.boundscheck(False) - def unique_memview(self, {{dtype}}_t[:] values): + def unique_memview(self, const {{dtype}}_t[:] values): {{unique_template}} {{endfor}} From 081067cfedaff3703fd131c9f8981f188792c921 Mon Sep 17 00:00:00 2001 From: "Korn, Uwe" Date: Sat, 30 Jun 2018 22:20:28 +0200 Subject: [PATCH 03/13] Increase minimal Cython version to 0.28 --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 29b19fed0e2d4..218bdcf8acb19 100755 --- a/setup.py +++ b/setup.py @@ -32,7 +32,7 @@ def is_platform_mac(): return sys.platform == 'darwin' -min_cython_ver = '0.24' +min_cython_ver = '0.28' try: import Cython ver = Cython.__version__ From e42a718c30a8b5a49cdf5879f5fb473a4dc2af86 Mon Sep 17 00:00:00 2001 From: "Korn, Uwe" Date: Sat, 30 Jun 2018 22:25:24 +0200 Subject: [PATCH 04/13] Add whatsnew section --- doc/source/whatsnew/v0.24.0.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/source/whatsnew/v0.24.0.txt b/doc/source/whatsnew/v0.24.0.txt index 7362e11b22189..cd3b0771f2b09 100644 --- a/doc/source/whatsnew/v0.24.0.txt +++ b/doc/source/whatsnew/v0.24.0.txt @@ -416,6 +416,8 @@ Other ^^^^^ - :meth: `~pandas.io.formats.style.Styler.background_gradient` now takes a ``text_color_threshold`` parameter to automatically lighten the text color based on the luminance of the background color. This improves readability with dark background colors without the need to limit the background colormap range. (:issue:`21258`) +- Building pandas for development now requires ``cython >= 0.28`` +- Require at least 0.28 version of cython to support read-only memoryviews (:issue:`21688`) - - - From bf4eed78df7a462d29f9c8058ebf8c3ed5f1f161 Mon Sep 17 00:00:00 2001 From: "Korn, Uwe" Date: Sat, 30 Jun 2018 22:32:07 +0200 Subject: [PATCH 05/13] Add tests for readonly memoryviews --- pandas/tests/test_algos.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/pandas/tests/test_algos.py b/pandas/tests/test_algos.py index 46bd879c2db87..882c31cd0efad 100644 --- a/pandas/tests/test_algos.py +++ b/pandas/tests/test_algos.py @@ -1079,6 +1079,8 @@ class TestHashTable(object): def test_lookup_nan(self): xs = np.array([2.718, 3.14, np.nan, -7, 5, 2, 3]) + # GH 21688 ensure we can deal with readonly memory views + xs.setflags(write=False) m = ht.Float64HashTable() m.map_locations(xs) tm.assert_numpy_array_equal(m.lookup(xs), np.arange(len(xs), @@ -1086,6 +1088,8 @@ def test_lookup_nan(self): def test_lookup_overflow(self): xs = np.array([1, 2, 2**63], dtype=np.uint64) + # GH 21688 ensure we can deal with readonly memory views + xs.setflags(write=False) m = ht.UInt64HashTable() m.map_locations(xs) tm.assert_numpy_array_equal(m.lookup(xs), np.arange(len(xs), @@ -1102,6 +1106,8 @@ def test_vector_resize(self): def _test_vector_resize(htable, uniques, dtype, nvals, safely_resizes): vals = np.array(np.random.randn(1000), dtype=dtype) + # GH 21688 ensure we can deal with readonly memory views + vals.setflags(write=False) # get_labels may append to uniques htable.get_labels(vals[:nvals], uniques, 0, -1) # to_array() set an external_view_exists flag on uniques. From 6c9341b5a6dfb3b345dc9b9fafaee040caa94955 Mon Sep 17 00:00:00 2001 From: "Korn, Uwe" Date: Sun, 1 Jul 2018 20:43:02 +0200 Subject: [PATCH 06/13] Bump Cython version in CI to 0.28 --- ci/circle-27-compat.yaml | 2 +- ci/travis-27-locale.yaml | 2 +- ci/travis-27.yaml | 2 +- doc/source/install.rst | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ci/circle-27-compat.yaml b/ci/circle-27-compat.yaml index 81a48d4edf11c..3ed2e810f77f3 100644 --- a/ci/circle-27-compat.yaml +++ b/ci/circle-27-compat.yaml @@ -4,7 +4,7 @@ channels: - conda-forge dependencies: - bottleneck=1.0.0 - - cython=0.24 + - cython=0.28 - jinja2=2.8 - numexpr=2.4.4 # we test that we correctly don't use an unsupported numexpr - numpy=1.9.2 diff --git a/ci/travis-27-locale.yaml b/ci/travis-27-locale.yaml index 1312c1296d46a..09a0d7911801c 100644 --- a/ci/travis-27-locale.yaml +++ b/ci/travis-27-locale.yaml @@ -4,7 +4,7 @@ channels: - conda-forge dependencies: - bottleneck=1.0.0 - - cython=0.24 + - cython=0.28 - lxml - matplotlib=1.4.3 - numpy=1.9.2 diff --git a/ci/travis-27.yaml b/ci/travis-27.yaml index 482b888b88062..10be11ea23409 100644 --- a/ci/travis-27.yaml +++ b/ci/travis-27.yaml @@ -5,7 +5,7 @@ channels: dependencies: - beautifulsoup4 - bottleneck - - cython=0.24 + - cython=0.28 - fastparquet - feather-format - flake8=3.4.1 diff --git a/doc/source/install.rst b/doc/source/install.rst index a8c5194124829..14d14ea0befcf 100644 --- a/doc/source/install.rst +++ b/doc/source/install.rst @@ -253,7 +253,7 @@ Optional Dependencies ~~~~~~~~~~~~~~~~~~~~~ * `Cython `__: Only necessary to build development - version. Version 0.24 or higher. + version. Version 0.28 or higher. * `SciPy `__: miscellaneous statistical functions, Version 0.14.0 or higher * `xarray `__: pandas like handling for > 2 dims, needed for converting Panels to xarray objects. Version 0.7.0 or higher is recommended. * `PyTables `__: necessary for HDF5-based storage. Version 3.0.0 or higher required, Version 3.2.1 or higher highly recommended. From 6c335b02cc2154ea5552648b6ed6bd37f92ae04f Mon Sep 17 00:00:00 2001 From: "Korn, Uwe" Date: Sat, 7 Jul 2018 15:16:50 +0200 Subject: [PATCH 07/13] Apply modern fix for #18825 --- pandas/_libs/hashtable_class_helper.pxi.in | 98 +++++++++------------- 1 file changed, 39 insertions(+), 59 deletions(-) diff --git a/pandas/_libs/hashtable_class_helper.pxi.in b/pandas/_libs/hashtable_class_helper.pxi.in index 20f9f7a16950b..ff6570e2106b2 100644 --- a/pandas/_libs/hashtable_class_helper.pxi.in +++ b/pandas/_libs/hashtable_class_helper.pxi.in @@ -253,56 +253,10 @@ dtypes = [('Float64', 'float64', True, 'nan'), ('UInt64', 'uint64', False, 0), ('Int64', 'int64', False, 'iNaT')] -def get_dispatch(dtypes): - for (name, dtype, float_group, default_na_value) in dtypes: - unique_template = """\ - cdef: - Py_ssize_t i, n = len(values) - int ret = 0 - {dtype}_t val - khiter_t k - bint seen_na = 0 - {name}Vector uniques = {name}Vector() - {name}VectorData *ud - - ud = uniques.data - - with nogil: - for i in range(n): - val = values[i] - IF {float_group}: - if val == val: - k = kh_get_{dtype}(self.table, val) - if k == self.table.n_buckets: - kh_put_{dtype}(self.table, val, &ret) - if needs_resize(ud): - with gil: - uniques.resize() - append_data_{dtype}(ud, val) - elif not seen_na: - seen_na = 1 - if needs_resize(ud): - with gil: - uniques.resize() - append_data_{dtype}(ud, NAN) - ELSE: - k = kh_get_{dtype}(self.table, val) - if k == self.table.n_buckets: - kh_put_{dtype}(self.table, val, &ret) - if needs_resize(ud): - with gil: - uniques.resize() - append_data_{dtype}(ud, val) - return uniques.to_array() - """ - - unique_template = unique_template.format(name=name, dtype=dtype, float_group=float_group) - - yield (name, dtype, float_group, default_na_value, unique_template) }} -{{for name, dtype, float_group, default_na_value, unique_template in get_dispatch(dtypes)}} +{{for name, dtype, float_group, default_na_value in dtypes}} cdef class {{name}}HashTable(HashTable): @@ -506,20 +460,46 @@ cdef class {{name}}HashTable(HashTable): return np.asarray(labels), arr_uniques @cython.boundscheck(False) - def unique(self, ndarray[{{dtype}}_t, ndim=1] values): - if values.flags.writeable: - # If the value is writeable (mutable) then use memview - return self.unique_memview(values) + def unique(self, const {{dtype}}_t[:] values): + cdef: + Py_ssize_t i, n = len(values) + int ret = 0 + {{dtype}}_t val + khiter_t k + bint seen_na = 0 + {{name}}Vector uniques = {{name}}Vector() + {{name}}VectorData *ud - # We cannot use the memoryview version on readonly-buffers due to - # a limitation of Cython's typed memoryviews. Instead we can use - # the slightly slower Cython ndarray type directly. - # see https://github.com/cython/cython/issues/1605 -{{unique_template}} + ud = uniques.data - @cython.boundscheck(False) - def unique_memview(self, const {{dtype}}_t[:] values): -{{unique_template}} + with nogil: + for i in range(n): + val = values[i] + {{if float_group}} + if val == val: + k = kh_get_{{dtype}}(self.table, val) + if k == self.table.n_buckets: + kh_put_{{dtype}}(self.table, val, &ret) + if needs_resize(ud): + with gil: + uniques.resize() + append_data_{{dtype}}(ud, val) + elif not seen_na: + seen_na = 1 + if needs_resize(ud): + with gil: + uniques.resize() + append_data_{{dtype}}(ud, NAN) + {{else}} + k = kh_get_{{dtype}}(self.table, val) + if k == self.table.n_buckets: + kh_put_{{dtype}}(self.table, val, &ret) + if needs_resize(ud): + with gil: + uniques.resize() + append_data_{{dtype}}(ud, val) + {{endif}} + return uniques.to_array() {{endfor}} From 9deaf07112f3951be41d167af14ee5d4543ca2b1 Mon Sep 17 00:00:00 2001 From: "Korn, Uwe" Date: Sat, 7 Jul 2018 16:57:31 +0200 Subject: [PATCH 08/13] Start new section 'Build Changes' in whatsnew --- doc/source/whatsnew/v0.24.0.txt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/doc/source/whatsnew/v0.24.0.txt b/doc/source/whatsnew/v0.24.0.txt index cd3b0771f2b09..4acf0a3b9de57 100644 --- a/doc/source/whatsnew/v0.24.0.txt +++ b/doc/source/whatsnew/v0.24.0.txt @@ -410,13 +410,16 @@ Reshaping - - +Build Changes +^^^^^^^^^^^^^ + +- Building pandas for development now requires ``cython >= 0.28`` (:issue:`21688`) - Other ^^^^^ - :meth: `~pandas.io.formats.style.Styler.background_gradient` now takes a ``text_color_threshold`` parameter to automatically lighten the text color based on the luminance of the background color. This improves readability with dark background colors without the need to limit the background colormap range. (:issue:`21258`) -- Building pandas for development now requires ``cython >= 0.28`` - Require at least 0.28 version of cython to support read-only memoryviews (:issue:`21688`) - - From e0b709824c6a7c11019fd244c70c4fbb99eae2c2 Mon Sep 17 00:00:00 2001 From: "Korn, Uwe" Date: Sat, 7 Jul 2018 17:00:35 +0200 Subject: [PATCH 09/13] Test writable arrays with parameters --- pandas/tests/test_algos.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/pandas/tests/test_algos.py b/pandas/tests/test_algos.py index 882c31cd0efad..ea86eaf1524df 100644 --- a/pandas/tests/test_algos.py +++ b/pandas/tests/test_algos.py @@ -1077,19 +1077,21 @@ class TestGroupVarFloat32(GroupVarTestMixin): class TestHashTable(object): - def test_lookup_nan(self): + @pytest.mark.parametrize('writable', [True, False]) + def test_lookup_nan(self, writable): xs = np.array([2.718, 3.14, np.nan, -7, 5, 2, 3]) # GH 21688 ensure we can deal with readonly memory views - xs.setflags(write=False) + xs.setflags(write=writable) m = ht.Float64HashTable() m.map_locations(xs) tm.assert_numpy_array_equal(m.lookup(xs), np.arange(len(xs), dtype=np.int64)) - def test_lookup_overflow(self): + @pytest.mark.parametrize('writable', [True, False]) + def test_lookup_overflow(self, writable): xs = np.array([1, 2, 2**63], dtype=np.uint64) # GH 21688 ensure we can deal with readonly memory views - xs.setflags(write=False) + xs.setflags(write=writable) m = ht.UInt64HashTable() m.map_locations(xs) tm.assert_numpy_array_equal(m.lookup(xs), np.arange(len(xs), @@ -1100,14 +1102,15 @@ def test_get_unique(self): exp = np.array([1, 2, 2**63], dtype=np.uint64) tm.assert_numpy_array_equal(s.unique(), exp) - def test_vector_resize(self): + @pytest.mark.parametrize('writable', [True, False]) + def test_vector_resize(self, writable): # Test for memory errors after internal vector # reallocations (pull request #7157) def _test_vector_resize(htable, uniques, dtype, nvals, safely_resizes): vals = np.array(np.random.randn(1000), dtype=dtype) # GH 21688 ensure we can deal with readonly memory views - vals.setflags(write=False) + vals.setflags(write=writable) # get_labels may append to uniques htable.get_labels(vals[:nvals], uniques, 0, -1) # to_array() set an external_view_exists flag on uniques. From 20c181fd21da8df48ca21f3609dfa99c8d511e9b Mon Sep 17 00:00:00 2001 From: "Korn, Uwe" Date: Sat, 7 Jul 2018 17:03:59 +0200 Subject: [PATCH 10/13] Bump CI version for Cython to 0.28.2 --- ci/circle-27-compat.yaml | 2 +- ci/travis-27-locale.yaml | 2 +- ci/travis-27.yaml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ci/circle-27-compat.yaml b/ci/circle-27-compat.yaml index 3ed2e810f77f3..b5be569eb28a4 100644 --- a/ci/circle-27-compat.yaml +++ b/ci/circle-27-compat.yaml @@ -4,7 +4,7 @@ channels: - conda-forge dependencies: - bottleneck=1.0.0 - - cython=0.28 + - cython=0.28.2 - jinja2=2.8 - numexpr=2.4.4 # we test that we correctly don't use an unsupported numexpr - numpy=1.9.2 diff --git a/ci/travis-27-locale.yaml b/ci/travis-27-locale.yaml index 09a0d7911801c..78cbe8f59a8e0 100644 --- a/ci/travis-27-locale.yaml +++ b/ci/travis-27-locale.yaml @@ -4,7 +4,7 @@ channels: - conda-forge dependencies: - bottleneck=1.0.0 - - cython=0.28 + - cython=0.28.2 - lxml - matplotlib=1.4.3 - numpy=1.9.2 diff --git a/ci/travis-27.yaml b/ci/travis-27.yaml index 10be11ea23409..9cb20734dc63d 100644 --- a/ci/travis-27.yaml +++ b/ci/travis-27.yaml @@ -5,7 +5,7 @@ channels: dependencies: - beautifulsoup4 - bottleneck - - cython=0.28 + - cython=0.28.2 - fastparquet - feather-format - flake8=3.4.1 From 0552d6122dd8187e9626f61c0a6058d51a391a8d Mon Sep 17 00:00:00 2001 From: Jeff Reback Date: Sat, 7 Jul 2018 10:15:09 -0500 Subject: [PATCH 11/13] add writeable fixture & fix docs --- doc/source/install.rst | 2 +- doc/source/whatsnew/v0.24.0.txt | 4 ++-- pandas/conftest.py | 8 ++++++++ pandas/tests/test_algos.py | 3 --- 4 files changed, 11 insertions(+), 6 deletions(-) diff --git a/doc/source/install.rst b/doc/source/install.rst index 14d14ea0befcf..087bca0d5cd3c 100644 --- a/doc/source/install.rst +++ b/doc/source/install.rst @@ -253,7 +253,7 @@ Optional Dependencies ~~~~~~~~~~~~~~~~~~~~~ * `Cython `__: Only necessary to build development - version. Version 0.28 or higher. + version. Version 0.28.2 or higher. * `SciPy `__: miscellaneous statistical functions, Version 0.14.0 or higher * `xarray `__: pandas like handling for > 2 dims, needed for converting Panels to xarray objects. Version 0.7.0 or higher is recommended. * `PyTables `__: necessary for HDF5-based storage. Version 3.0.0 or higher required, Version 3.2.1 or higher highly recommended. diff --git a/doc/source/whatsnew/v0.24.0.txt b/doc/source/whatsnew/v0.24.0.txt index 4acf0a3b9de57..5e8d8fddea392 100644 --- a/doc/source/whatsnew/v0.24.0.txt +++ b/doc/source/whatsnew/v0.24.0.txt @@ -413,14 +413,14 @@ Reshaping Build Changes ^^^^^^^^^^^^^ -- Building pandas for development now requires ``cython >= 0.28`` (:issue:`21688`) +- Building pandas for development now requires ``cython >= 0.28.2`` (:issue:`21688`) - Other ^^^^^ - :meth: `~pandas.io.formats.style.Styler.background_gradient` now takes a ``text_color_threshold`` parameter to automatically lighten the text color based on the luminance of the background color. This improves readability with dark background colors without the need to limit the background colormap range. (:issue:`21258`) -- Require at least 0.28 version of cython to support read-only memoryviews (:issue:`21688`) +- Require at least 0.28.2 version of ``cython`` to support read-only memoryviews (:issue:`21688`) - - - diff --git a/pandas/conftest.py b/pandas/conftest.py index 255e0e165041b..84f1d8f29f1f1 100644 --- a/pandas/conftest.py +++ b/pandas/conftest.py @@ -138,6 +138,14 @@ def compression_only(request): return request.param +@pytest.fixture(params=[True, False]) +def writable(request): + """ + Fixture that an array is writable + """ + return request.param + + @pytest.fixture(scope='module') def datetime_tz_utc(): from datetime import timezone diff --git a/pandas/tests/test_algos.py b/pandas/tests/test_algos.py index ea86eaf1524df..de3c9574a4471 100644 --- a/pandas/tests/test_algos.py +++ b/pandas/tests/test_algos.py @@ -1077,7 +1077,6 @@ class TestGroupVarFloat32(GroupVarTestMixin): class TestHashTable(object): - @pytest.mark.parametrize('writable', [True, False]) def test_lookup_nan(self, writable): xs = np.array([2.718, 3.14, np.nan, -7, 5, 2, 3]) # GH 21688 ensure we can deal with readonly memory views @@ -1087,7 +1086,6 @@ def test_lookup_nan(self, writable): tm.assert_numpy_array_equal(m.lookup(xs), np.arange(len(xs), dtype=np.int64)) - @pytest.mark.parametrize('writable', [True, False]) def test_lookup_overflow(self, writable): xs = np.array([1, 2, 2**63], dtype=np.uint64) # GH 21688 ensure we can deal with readonly memory views @@ -1102,7 +1100,6 @@ def test_get_unique(self): exp = np.array([1, 2, 2**63], dtype=np.uint64) tm.assert_numpy_array_equal(s.unique(), exp) - @pytest.mark.parametrize('writable', [True, False]) def test_vector_resize(self, writable): # Test for memory errors after internal vector # reallocations (pull request #7157) From 64fd445ba062caac0de05dde46b20fa70da16fdf Mon Sep 17 00:00:00 2001 From: Jeff Reback Date: Sat, 7 Jul 2018 10:19:28 -0500 Subject: [PATCH 12/13] bump min version --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 218bdcf8acb19..8018d71b74655 100755 --- a/setup.py +++ b/setup.py @@ -32,7 +32,7 @@ def is_platform_mac(): return sys.platform == 'darwin' -min_cython_ver = '0.28' +min_cython_ver = '0.28.2' try: import Cython ver = Cython.__version__ From a4cb62960808931e209ce7b8392221d08c24d234 Mon Sep 17 00:00:00 2001 From: Jeff Reback Date: Sat, 7 Jul 2018 10:52:04 -0500 Subject: [PATCH 13/13] add min cython versions everywhere --- ci/appveyor-27.yaml | 2 +- ci/appveyor-36.yaml | 2 +- ci/circle-35-ascii.yaml | 2 +- ci/circle-36-locale.yaml | 2 +- ci/circle-36-locale_slow.yaml | 2 +- ci/environment-dev.yaml | 2 +- ci/travis-35-osx.yaml | 2 +- ci/travis-36-doc.yaml | 2 +- ci/travis-36-numpydev.yaml | 2 +- ci/travis-36-slow.yaml | 2 +- ci/travis-36.yaml | 2 +- ci/travis-37.yaml | 2 +- 12 files changed, 12 insertions(+), 12 deletions(-) diff --git a/ci/appveyor-27.yaml b/ci/appveyor-27.yaml index 10511ac0e00ca..114dcfb0c6440 100644 --- a/ci/appveyor-27.yaml +++ b/ci/appveyor-27.yaml @@ -24,7 +24,7 @@ dependencies: - xlsxwriter - xlwt # universal - - cython + - cython>=0.28.2 - pytest - pytest-xdist - moto diff --git a/ci/appveyor-36.yaml b/ci/appveyor-36.yaml index 868724419c464..63e45d0544ad9 100644 --- a/ci/appveyor-36.yaml +++ b/ci/appveyor-36.yaml @@ -22,6 +22,6 @@ dependencies: - xlsxwriter - xlwt # universal - - cython + - cython>=0.28.2 - pytest - pytest-xdist diff --git a/ci/circle-35-ascii.yaml b/ci/circle-35-ascii.yaml index 602c414b49bb2..745678791458d 100644 --- a/ci/circle-35-ascii.yaml +++ b/ci/circle-35-ascii.yaml @@ -2,7 +2,7 @@ name: pandas channels: - defaults dependencies: - - cython + - cython>=0.28.2 - nomkl - numpy - python-dateutil diff --git a/ci/circle-36-locale.yaml b/ci/circle-36-locale.yaml index cc852c1e2aeeb..091a5a637becd 100644 --- a/ci/circle-36-locale.yaml +++ b/ci/circle-36-locale.yaml @@ -4,7 +4,7 @@ channels: - conda-forge dependencies: - beautifulsoup4 - - cython + - cython>=0.28.2 - html5lib - ipython - jinja2 diff --git a/ci/circle-36-locale_slow.yaml b/ci/circle-36-locale_slow.yaml index f44e98e1ee09d..649f93f7aa427 100644 --- a/ci/circle-36-locale_slow.yaml +++ b/ci/circle-36-locale_slow.yaml @@ -4,7 +4,7 @@ channels: - conda-forge dependencies: - beautifulsoup4 - - cython + - cython>=0.28.2 - gcsfs - html5lib - ipython diff --git a/ci/environment-dev.yaml b/ci/environment-dev.yaml index 5733857b55dd4..797506547b773 100644 --- a/ci/environment-dev.yaml +++ b/ci/environment-dev.yaml @@ -3,7 +3,7 @@ channels: - defaults - conda-forge dependencies: - - Cython + - Cython>=0.28.2 - NumPy - flake8 - moto diff --git a/ci/travis-35-osx.yaml b/ci/travis-35-osx.yaml index e74abac4c9775..fff7acc64d537 100644 --- a/ci/travis-35-osx.yaml +++ b/ci/travis-35-osx.yaml @@ -4,7 +4,7 @@ channels: dependencies: - beautifulsoup4 - bottleneck - - cython + - cython>=0.28.2 - html5lib - jinja2 - lxml diff --git a/ci/travis-36-doc.yaml b/ci/travis-36-doc.yaml index c22dddbe0ba3f..153a81197a6c7 100644 --- a/ci/travis-36-doc.yaml +++ b/ci/travis-36-doc.yaml @@ -6,7 +6,7 @@ channels: dependencies: - beautifulsoup4 - bottleneck - - cython + - cython>=0.28.2 - fastparquet - feather-format - html5lib diff --git a/ci/travis-36-numpydev.yaml b/ci/travis-36-numpydev.yaml index 455d65feb4242..038c6537622dd 100644 --- a/ci/travis-36-numpydev.yaml +++ b/ci/travis-36-numpydev.yaml @@ -4,7 +4,7 @@ channels: dependencies: - python=3.6* - pytz - - Cython + - Cython>=0.28.2 # universal - pytest - pytest-xdist diff --git a/ci/travis-36-slow.yaml b/ci/travis-36-slow.yaml index 6c475dc48723c..f6738e3837186 100644 --- a/ci/travis-36-slow.yaml +++ b/ci/travis-36-slow.yaml @@ -4,7 +4,7 @@ channels: - conda-forge dependencies: - beautifulsoup4 - - cython + - cython>=0.28.2 - html5lib - lxml - matplotlib diff --git a/ci/travis-36.yaml b/ci/travis-36.yaml index ff4f1a4a86f99..7eceba76cab96 100644 --- a/ci/travis-36.yaml +++ b/ci/travis-36.yaml @@ -4,7 +4,7 @@ channels: - conda-forge dependencies: - beautifulsoup4 - - cython + - cython>=0.28.2 - dask - fastparquet - feather-format diff --git a/ci/travis-37.yaml b/ci/travis-37.yaml index 8b255c9e6ec72..1dc2930bf7287 100644 --- a/ci/travis-37.yaml +++ b/ci/travis-37.yaml @@ -5,7 +5,7 @@ channels: - c3i_test dependencies: - python=3.7 - - cython + - cython>=0.28.2 - numpy - python-dateutil - nomkl