From 8cb95fcb172dbbde1228330edc8a2df2a59f36e3 Mon Sep 17 00:00:00 2001 From: "H. Vetinari" Date: Sun, 17 Mar 2019 16:27:32 +0100 Subject: [PATCH 1/9] Restore PY35 CI --- .travis.yml | 4 +++ ci/azure/posix.yml | 12 +++++++++ ci/azure/windows.yml | 4 +++ ci/deps/azure-35-compat.yaml | 29 +++++++++++++++++++++ ci/deps/azure-36-locale.yaml | 29 +++++++++++++++++++++ ci/deps/azure-windows-37.yaml | 33 ++++++++++++++++++++++++ ci/deps/travis-35.yaml | 48 +++++++++++++++++++++++++++++++++++ pandas/tests/io/test_excel.py | 2 ++ pandas/tests/io/test_sql.py | 4 +++ pandas/tests/test_algos.py | 14 +++++----- pandas/tests/test_sorting.py | 14 +++++----- 11 files changed, 181 insertions(+), 12 deletions(-) create mode 100644 ci/deps/azure-35-compat.yaml create mode 100644 ci/deps/azure-36-locale.yaml create mode 100644 ci/deps/azure-windows-37.yaml create mode 100644 ci/deps/travis-35.yaml diff --git a/.travis.yml b/.travis.yml index f8302f4718ef2..ab8ccf393da65 100644 --- a/.travis.yml +++ b/.travis.yml @@ -35,6 +35,10 @@ matrix: env: - JOB="3.7" ENV_FILE="ci/deps/travis-37.yaml" PATTERN="(not slow and not network)" + - dist: trusty + env: + - JOB="3.5" ENV_FILE="ci/deps/travis-35.yaml" PATTERN="(not slow or (single and db))" + - dist: trusty env: - JOB="3.6, locale" ENV_FILE="ci/deps/travis-36-locale.yaml" PATTERN="((not slow and not network) or (single and db))" LOCALE_OVERRIDE="zh_CN.UTF-8" diff --git a/ci/azure/posix.yml b/ci/azure/posix.yml index 65f78c2786927..7119054cf2f53 100644 --- a/ci/azure/posix.yml +++ b/ci/azure/posix.yml @@ -15,6 +15,18 @@ jobs: PATTERN: "not slow and not network" ${{ if eq(parameters.name, 'Linux') }}: + py35_compat: + ENV_FILE: ci/deps/azure-35-compat.yaml + CONDA_PY: "35" + PATTERN: "not slow and not network" + + py36_locale_slow_old_np: + ENV_FILE: ci/deps/azure-36-locale.yaml + CONDA_PY: "36" + PATTERN: "slow" + LOCALE_OVERRIDE: "zh_CN.UTF-8" + EXTRA_APT: "language-pack-zh-hans" + py36_locale_slow: ENV_FILE: ci/deps/azure-36-locale_slow.yaml CONDA_PY: "36" diff --git a/ci/azure/windows.yml b/ci/azure/windows.yml index 13f2442806422..cd5879bf55e4b 100644 --- a/ci/azure/windows.yml +++ b/ci/azure/windows.yml @@ -12,6 +12,10 @@ jobs: ENV_FILE: ci/deps/azure-windows-36.yaml CONDA_PY: "36" + py37_np141: + ENV_FILE: ci/deps/azure-windows-37.yaml + CONDA_PY: "37" + steps: - task: CondaEnvironment@1 inputs: diff --git a/ci/deps/azure-35-compat.yaml b/ci/deps/azure-35-compat.yaml new file mode 100644 index 0000000000000..05436e79910fb --- /dev/null +++ b/ci/deps/azure-35-compat.yaml @@ -0,0 +1,29 @@ +name: pandas-dev +channels: + - defaults + - conda-forge +dependencies: + - beautifulsoup4==4.4.1 + - bottleneck=1.2.0 + - cython=0.28.2 + - hypothesis>=3.58.0 + - jinja2=2.8 + - numexpr=2.6.1 + - numpy=1.12.0 + - openpyxl=2.2.6 + - pytables=3.4.2 + - python-dateutil=2.5.0 + - python=3.5* + - pytz=2015.4 + - scipy=0.18.1 + - xlrd=1.0.0 + - xlsxwriter=0.7.7 + - xlwt=1.0.0 + # universal + - pytest-xdist + - pytest-mock + - isort + - pip: + # for python 3.5, pytest>=4.0.2 is not available in conda + - pytest>=4.0.2 + - html5lib==1.0b2 diff --git a/ci/deps/azure-36-locale.yaml b/ci/deps/azure-36-locale.yaml new file mode 100644 index 0000000000000..c74d56443be5d --- /dev/null +++ b/ci/deps/azure-36-locale.yaml @@ -0,0 +1,29 @@ +name: pandas-dev +channels: + - defaults + - conda-forge +dependencies: + - beautifulsoup4==4.5.1 + - bottleneck=1.2.0 + - cython=0.28.2 + - lxml + - matplotlib=2.0.0 + - numpy=1.12.0 + - openpyxl=2.4.0 + - python-dateutil + - python-blosc + - python=3.6 + - pytz=2016.10 + - scipy + - sqlalchemy=1.1.4 + - xlrd=1.0.0 + - xlsxwriter=0.9.4 + - xlwt=1.2.0 + # universal + - pytest>=4.0.2 + - pytest-xdist + - pytest-mock + - hypothesis>=3.58.0 + - isort + - pip: + - html5lib==1.0b2 diff --git a/ci/deps/azure-windows-37.yaml b/ci/deps/azure-windows-37.yaml new file mode 100644 index 0000000000000..96ddc1d6293d8 --- /dev/null +++ b/ci/deps/azure-windows-37.yaml @@ -0,0 +1,33 @@ +name: pandas-dev +channels: + - defaults + - conda-forge +dependencies: + - beautifulsoup4 + - bottleneck + - gcsfs + - html5lib + - jinja2 + - lxml + - matplotlib=3.0.1 + - numexpr + - numpy=1.14.* + - openpyxl + - pytables + - python=3.7.* + - python-dateutil + - pytz + - s3fs + - scipy + - sqlalchemy + - xlrd + - xlsxwriter + - xlwt + # universal + - cython>=0.28.2 + - pytest>=4.0.2 + - pytest-xdist + - pytest-mock + - moto + - hypothesis>=3.58.0 + - isort diff --git a/ci/deps/travis-35.yaml b/ci/deps/travis-35.yaml new file mode 100644 index 0000000000000..8ae0bf6a0449b --- /dev/null +++ b/ci/deps/travis-35.yaml @@ -0,0 +1,48 @@ +name: pandas-dev +channels: + - defaults + - conda-forge +dependencies: + - beautifulsoup4 + - bottleneck + - cython=0.28.2 + - gcsfs + - html5lib + - ipython + - jinja2=2.8 + - lxml + - matplotlib=2.2.2 + - mock + - nomkl + - numexpr + - numpy=1.13* + - openpyxl=2.4.0 + - patsy + - psycopg2 + - py + - pyarrow=0.9.0 + - PyCrypto + - pymysql=0.6.6 + - pytables + - blosc=1.14.3 + - python-blosc + - python-dateutil=2.5.0 + - python=3.5* + - pytz=2015.4 + - scipy + - sqlalchemy=1.0.8 + - s3fs + - xarray=0.9.6 + - xlrd=1.0.0 + - xlsxwriter=0.7.7 + - xlwt=1.0.0 + # universal + - pytest-xdist + - pytest-mock + - moto + - hypothesis>=3.58.0 + - isort + - pip: + # not available for python 3.5 through conda + - pandas-gbq + - pytest>=4.0.2 diff --git a/pandas/tests/io/test_excel.py b/pandas/tests/io/test_excel.py index 04c9c58a326a4..2de816f41ead5 100644 --- a/pandas/tests/io/test_excel.py +++ b/pandas/tests/io/test_excel.py @@ -2182,6 +2182,8 @@ def test_write_cells_merge_styled(self, merge_cells, ext, engine): assert xcell_b1.font == openpyxl_sty_merged assert xcell_a2.font == openpyxl_sty_merged + @pytest.mark.xfail(not PY36, reason='only fails on Linux?', + strict=False) @pytest.mark.parametrize("mode,expected", [ ('w', ['baz']), ('a', ['foo', 'bar', 'baz'])]) def test_write_append_mode(self, merge_cells, ext, engine, mode, expected): diff --git a/pandas/tests/io/test_sql.py b/pandas/tests/io/test_sql.py index d51d9418a370b..40a9aa465a32b 100644 --- a/pandas/tests/io/test_sql.py +++ b/pandas/tests/io/test_sql.py @@ -924,6 +924,7 @@ def test_read_sql_delegate(self): iris_frame2 = sql.read_sql('iris', self.conn) tm.assert_frame_equal(iris_frame1, iris_frame2) + @pytest.mark.xfail(not PY36, reason='too many warnings?') def test_not_reflect_all_tables(self): # create invalid table qry = """CREATE TABLE invalid (x INTEGER, y UNKNOWN);""" @@ -940,6 +941,7 @@ def test_not_reflect_all_tables(self): # Verify some things assert len(w) == 0 + @pytest.mark.xfail(not PY36, reason='too many warnings?') def test_warning_case_insensitive_table_name(self): # see gh-7815 # @@ -1773,6 +1775,7 @@ def test_default_date_load(self): # IMPORTANT - sqlite has no native date type, so shouldn't parse, but assert not issubclass(df.DateCol.dtype.type, np.datetime64) + @pytest.mark.xfail(not PY36, reason='too many warnings?') def test_bigint_warning(self): # test no warning for BIGINT (to support int64) is raised (GH7433) df = DataFrame({'a': [1, 2]}, dtype='int64') @@ -1819,6 +1822,7 @@ def test_default_type_conversion(self): # Bool column with NA = int column with NA values => becomes float assert issubclass(df.BoolColWithNull.dtype.type, np.floating) + @pytest.mark.xfail(not PY36, reason='unkown; also flaky', strict=False) def test_read_procedure(self): import pymysql # see GH7324. Although it is more an api test, it is added to the diff --git a/pandas/tests/test_algos.py b/pandas/tests/test_algos.py index 083307371b699..44d3d716f21e4 100644 --- a/pandas/tests/test_algos.py +++ b/pandas/tests/test_algos.py @@ -11,8 +11,9 @@ from pandas._libs import ( algos as libalgos, groupby as libgroupby, hashtable as ht) -from pandas.compat import PY2, lrange, range -from pandas.compat.numpy import np_array_datetime64_compat +from pandas.compat import lrange, range +from pandas.compat.numpy import ( + _np_version_under1p14, np_array_datetime64_compat) import pandas.util._test_decorators as td from pandas.core.dtypes.dtypes import CategoricalDtype as CDT @@ -224,14 +225,15 @@ def test_factorize_tuple_list(self, data, expected_label, expected_level): dtype=object) tm.assert_numpy_array_equal(result[1], expected_level_array) - @pytest.mark.skipif(PY2, reason="pytest.raises match regex fails") def test_complex_sorting(self): # gh 12666 - check no segfault x17 = np.array([complex(i) for i in range(17)], dtype=object) - msg = (r"'(<|>)' not supported between instances of 'complex' and" - r" 'complex'|" - r"unorderable types: complex\(\) > complex\(\)") + msg = (r"unorderable types: {0} [<>] {0}".format(r"complex\(\)") + if _np_version_under1p14 else + r"'[<>]' not supported between instances of {0} and {0}".format( + "'complex'") + ) with pytest.raises(TypeError, match=msg): algos.factorize(x17[::-1], sort=True) diff --git a/pandas/tests/test_sorting.py b/pandas/tests/test_sorting.py index fa8fbddd59118..2ee9b065f144f 100644 --- a/pandas/tests/test_sorting.py +++ b/pandas/tests/test_sorting.py @@ -7,7 +7,7 @@ from numpy import nan import pytest -from pandas.compat import PY2 +from pandas.compat.numpy import _np_version_under1p14 from pandas import ( DataFrame, MultiIndex, Series, compat, concat, merge, to_datetime) @@ -413,14 +413,16 @@ def test_mixed_integer_from_list(self): expected = np.array([0, 0, 1, 'a', 'b', 'b'], dtype=object) tm.assert_numpy_array_equal(result, expected) - @pytest.mark.skipif(PY2, reason="pytest.raises match regex fails") def test_unsortable(self): # GH 13714 arr = np.array([1, 2, datetime.now(), 0, 3], dtype=object) - msg = (r"'(<|>)' not supported between instances of ('" - r"datetime\.datetime' and 'int'|'int' and 'datetime\.datetime" - r"')|" - r"unorderable types: int\(\) > datetime\.datetime\(\)") + msg = (r"unorderable types: ({0} [<>] {1}|{1} [<>] {0})".format( + r"int\(\)", r"datetime\.datetime\(\)") # noqa: E126 + if _np_version_under1p14 else + (r"'[<>]' not supported between instances of " + r"({0} and {1}|{1} and {0})").format( + "'int'", r"'datetime\.datetime'") + ) if compat.PY2: # RuntimeWarning: tp_compare didn't return -1 or -2 for exception with warnings.catch_warnings(): From 4dab8ff2c7f864efcaa32cae84f8727e4ddb21f3 Mon Sep 17 00:00:00 2001 From: "H. Vetinari" Date: Thu, 21 Mar 2019 01:09:49 +0100 Subject: [PATCH 2/9] Review (jreback) --- .travis.yml | 4 ---- ci/deps/travis-35.yaml | 48 ------------------------------------------ 2 files changed, 52 deletions(-) delete mode 100644 ci/deps/travis-35.yaml diff --git a/.travis.yml b/.travis.yml index ab8ccf393da65..f8302f4718ef2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -35,10 +35,6 @@ matrix: env: - JOB="3.7" ENV_FILE="ci/deps/travis-37.yaml" PATTERN="(not slow and not network)" - - dist: trusty - env: - - JOB="3.5" ENV_FILE="ci/deps/travis-35.yaml" PATTERN="(not slow or (single and db))" - - dist: trusty env: - JOB="3.6, locale" ENV_FILE="ci/deps/travis-36-locale.yaml" PATTERN="((not slow and not network) or (single and db))" LOCALE_OVERRIDE="zh_CN.UTF-8" diff --git a/ci/deps/travis-35.yaml b/ci/deps/travis-35.yaml deleted file mode 100644 index 8ae0bf6a0449b..0000000000000 --- a/ci/deps/travis-35.yaml +++ /dev/null @@ -1,48 +0,0 @@ -name: pandas-dev -channels: - - defaults - - conda-forge -dependencies: - - beautifulsoup4 - - bottleneck - - cython=0.28.2 - - gcsfs - - html5lib - - ipython - - jinja2=2.8 - - lxml - - matplotlib=2.2.2 - - mock - - nomkl - - numexpr - - numpy=1.13* - - openpyxl=2.4.0 - - patsy - - psycopg2 - - py - - pyarrow=0.9.0 - - PyCrypto - - pymysql=0.6.6 - - pytables - - blosc=1.14.3 - - python-blosc - - python-dateutil=2.5.0 - - python=3.5* - - pytz=2015.4 - - scipy - - sqlalchemy=1.0.8 - - s3fs - - xarray=0.9.6 - - xlrd=1.0.0 - - xlsxwriter=0.7.7 - - xlwt=1.0.0 - # universal - - pytest-xdist - - pytest-mock - - moto - - hypothesis>=3.58.0 - - isort - - pip: - # not available for python 3.5 through conda - - pandas-gbq - - pytest>=4.0.2 From fa5b4c21c4541fb673befd2b2fb7174e9d4456f6 Mon Sep 17 00:00:00 2001 From: "H. Vetinari" Date: Fri, 15 Mar 2019 00:15:02 +0100 Subject: [PATCH 3/9] Tentatively remove xfails --- pandas/tests/io/test_excel.py | 2 -- pandas/tests/io/test_sql.py | 4 ---- 2 files changed, 6 deletions(-) diff --git a/pandas/tests/io/test_excel.py b/pandas/tests/io/test_excel.py index 2de816f41ead5..04c9c58a326a4 100644 --- a/pandas/tests/io/test_excel.py +++ b/pandas/tests/io/test_excel.py @@ -2182,8 +2182,6 @@ def test_write_cells_merge_styled(self, merge_cells, ext, engine): assert xcell_b1.font == openpyxl_sty_merged assert xcell_a2.font == openpyxl_sty_merged - @pytest.mark.xfail(not PY36, reason='only fails on Linux?', - strict=False) @pytest.mark.parametrize("mode,expected", [ ('w', ['baz']), ('a', ['foo', 'bar', 'baz'])]) def test_write_append_mode(self, merge_cells, ext, engine, mode, expected): diff --git a/pandas/tests/io/test_sql.py b/pandas/tests/io/test_sql.py index 40a9aa465a32b..d51d9418a370b 100644 --- a/pandas/tests/io/test_sql.py +++ b/pandas/tests/io/test_sql.py @@ -924,7 +924,6 @@ def test_read_sql_delegate(self): iris_frame2 = sql.read_sql('iris', self.conn) tm.assert_frame_equal(iris_frame1, iris_frame2) - @pytest.mark.xfail(not PY36, reason='too many warnings?') def test_not_reflect_all_tables(self): # create invalid table qry = """CREATE TABLE invalid (x INTEGER, y UNKNOWN);""" @@ -941,7 +940,6 @@ def test_not_reflect_all_tables(self): # Verify some things assert len(w) == 0 - @pytest.mark.xfail(not PY36, reason='too many warnings?') def test_warning_case_insensitive_table_name(self): # see gh-7815 # @@ -1775,7 +1773,6 @@ def test_default_date_load(self): # IMPORTANT - sqlite has no native date type, so shouldn't parse, but assert not issubclass(df.DateCol.dtype.type, np.datetime64) - @pytest.mark.xfail(not PY36, reason='too many warnings?') def test_bigint_warning(self): # test no warning for BIGINT (to support int64) is raised (GH7433) df = DataFrame({'a': [1, 2]}, dtype='int64') @@ -1822,7 +1819,6 @@ def test_default_type_conversion(self): # Bool column with NA = int column with NA values => becomes float assert issubclass(df.BoolColWithNull.dtype.type, np.floating) - @pytest.mark.xfail(not PY36, reason='unkown; also flaky', strict=False) def test_read_procedure(self): import pymysql # see GH7324. Although it is more an api test, it is added to the From e3aafd02331eae60576ba1c41e96829c33ab0922 Mon Sep 17 00:00:00 2001 From: "H. Vetinari" Date: Thu, 21 Mar 2019 02:03:57 +0100 Subject: [PATCH 4/9] Re-add last necessary xfail --- pandas/tests/io/test_excel.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pandas/tests/io/test_excel.py b/pandas/tests/io/test_excel.py index 04c9c58a326a4..3ac1e5e8a7d11 100644 --- a/pandas/tests/io/test_excel.py +++ b/pandas/tests/io/test_excel.py @@ -2182,6 +2182,8 @@ def test_write_cells_merge_styled(self, merge_cells, ext, engine): assert xcell_b1.font == openpyxl_sty_merged assert xcell_a2.font == openpyxl_sty_merged + @pytest.mark.xfail(not PY36, reason='only fails on Linux', + strict=False) @pytest.mark.parametrize("mode,expected", [ ('w', ['baz']), ('a', ['foo', 'bar', 'baz'])]) def test_write_append_mode(self, merge_cells, ext, engine, mode, expected): From ddb1ea7f6650d6b7387a24970b9760558705a13c Mon Sep 17 00:00:00 2001 From: "H. Vetinari" Date: Fri, 22 Mar 2019 23:47:24 +0100 Subject: [PATCH 5/9] Correctly sort imports --- pandas/tests/test_algos.py | 4 ++-- pandas/tests/test_sorting.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pandas/tests/test_algos.py b/pandas/tests/test_algos.py index 21bb999ef7384..c2d40cc2f67e9 100644 --- a/pandas/tests/test_algos.py +++ b/pandas/tests/test_algos.py @@ -19,8 +19,8 @@ import pandas as pd from pandas import ( - _np_version_under1p14, Categorical, CategoricalIndex, DatetimeIndex, Index, - IntervalIndex, Series, Timestamp, compat) + Categorical, CategoricalIndex, DatetimeIndex, Index, IntervalIndex, Series, + Timestamp, _np_version_under1p14, compat) import pandas.core.algorithms as algos from pandas.core.arrays import DatetimeArray import pandas.core.common as com diff --git a/pandas/tests/test_sorting.py b/pandas/tests/test_sorting.py index fccd2d5268279..14b5f1cb509fa 100644 --- a/pandas/tests/test_sorting.py +++ b/pandas/tests/test_sorting.py @@ -7,7 +7,7 @@ import pytest from pandas import ( - _np_version_under1p14, DataFrame, MultiIndex, Series, compat, concat, + DataFrame, MultiIndex, Series, _np_version_under1p14, compat, concat, merge, to_datetime) from pandas.core import common as com from pandas.core.sorting import ( From e993eebc97fa681745578e4c417cbdf0a9b4183b Mon Sep 17 00:00:00 2001 From: "H. Vetinari" Date: Sun, 24 Mar 2019 00:10:26 +0100 Subject: [PATCH 6/9] Unpin openpyxl for azure-35-macos job --- ci/deps/azure-macos-35.yaml | 2 +- ci/deps/travis-36-locale.yaml | 2 +- doc/source/whatsnew/v0.25.0.rst | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ci/deps/azure-macos-35.yaml b/ci/deps/azure-macos-35.yaml index 2326e8092cc85..38625c6563753 100644 --- a/ci/deps/azure-macos-35.yaml +++ b/ci/deps/azure-macos-35.yaml @@ -12,7 +12,7 @@ dependencies: - nomkl - numexpr - numpy=1.12.0 - - openpyxl=2.5.5 + - openpyxl - pyarrow - pytables - python=3.5* diff --git a/ci/deps/travis-36-locale.yaml b/ci/deps/travis-36-locale.yaml index 34b289e6c0c2f..694740d58d355 100644 --- a/ci/deps/travis-36-locale.yaml +++ b/ci/deps/travis-36-locale.yaml @@ -15,7 +15,7 @@ dependencies: - numpy - openpyxl - psycopg2 - - pymysql + - pymysql=0.6.6 - pytables - python-dateutil - python=3.6* diff --git a/doc/source/whatsnew/v0.25.0.rst b/doc/source/whatsnew/v0.25.0.rst index b56c03cc8e8f7..d469cc4da1d48 100644 --- a/doc/source/whatsnew/v0.25.0.rst +++ b/doc/source/whatsnew/v0.25.0.rst @@ -123,13 +123,13 @@ If installed, we now require: +=================+=================+==========+ | beautifulsoup4 | 4.4.1 | | +-----------------+-----------------+----------+ -| openpyxl | 2.2.6 | | +| openpyxl | 2.4.0 | | +-----------------+-----------------+----------+ | pymysql | 0.6.6 | | +-----------------+-----------------+----------+ | pytz | 2015.4 | | +-----------------+-----------------+----------+ -| sqlalchemy | 1.0.8 | | +| sqlalchemy | 1.1.4 | | +-----------------+-----------------+----------+ | xlsxwriter | 0.7.7 | | +-----------------+-----------------+----------+ From 6cdb0aac60556057a64d2cb1607fbee3c295cd7d Mon Sep 17 00:00:00 2001 From: "H. Vetinari" Date: Sun, 24 Mar 2019 15:09:34 +0100 Subject: [PATCH 7/9] Unpin unsatifiable pymysql --- ci/deps/travis-36-locale.yaml | 2 +- doc/source/whatsnew/v0.25.0.rst | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ci/deps/travis-36-locale.yaml b/ci/deps/travis-36-locale.yaml index 694740d58d355..34b289e6c0c2f 100644 --- a/ci/deps/travis-36-locale.yaml +++ b/ci/deps/travis-36-locale.yaml @@ -15,7 +15,7 @@ dependencies: - numpy - openpyxl - psycopg2 - - pymysql=0.6.6 + - pymysql - pytables - python-dateutil - python=3.6* diff --git a/doc/source/whatsnew/v0.25.0.rst b/doc/source/whatsnew/v0.25.0.rst index df96234b2ef50..a2f49feb4e7f1 100644 --- a/doc/source/whatsnew/v0.25.0.rst +++ b/doc/source/whatsnew/v0.25.0.rst @@ -123,7 +123,7 @@ If installed, we now require: +=================+=================+==========+ | beautifulsoup4 | 4.4.1 | | +-----------------+-----------------+----------+ -| openpyxl | 2.4.0 | | +| openpyxl | 2.2.6 | | +-----------------+-----------------+----------+ | pymysql | 0.6.6 | | +-----------------+-----------------+----------+ From 05b123d23b112d25ccb110f0dc06020fcac3321c Mon Sep 17 00:00:00 2001 From: "H. Vetinari" Date: Sun, 24 Mar 2019 15:11:02 +0100 Subject: [PATCH 8/9] Try removing xfail again after unpinning openpyxl --- pandas/tests/io/test_excel.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/pandas/tests/io/test_excel.py b/pandas/tests/io/test_excel.py index eded681e8e388..d508049ed5c4c 100644 --- a/pandas/tests/io/test_excel.py +++ b/pandas/tests/io/test_excel.py @@ -2182,8 +2182,6 @@ def test_write_cells_merge_styled(self, merge_cells, ext, engine): assert xcell_b1.font == openpyxl_sty_merged assert xcell_a2.font == openpyxl_sty_merged - @pytest.mark.xfail(not PY36, reason='only fails on Linux', - strict=False) @pytest.mark.parametrize("mode,expected", [ ('w', ['baz']), ('a', ['foo', 'bar', 'baz'])]) def test_write_append_mode(self, merge_cells, ext, engine, mode, expected): From f733451c3072fa4c86609e1872f6fc8cc75dc3c5 Mon Sep 17 00:00:00 2001 From: "H. Vetinari" Date: Sun, 24 Mar 2019 20:45:01 +0100 Subject: [PATCH 9/9] Updates --- ci/deps/azure-35-compat.yaml | 2 +- ci/deps/travis-36-locale.yaml | 2 +- doc/source/install.rst | 2 +- doc/source/whatsnew/v0.25.0.rst | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/ci/deps/azure-35-compat.yaml b/ci/deps/azure-35-compat.yaml index 05436e79910fb..adae9bc761a42 100644 --- a/ci/deps/azure-35-compat.yaml +++ b/ci/deps/azure-35-compat.yaml @@ -10,7 +10,7 @@ dependencies: - jinja2=2.8 - numexpr=2.6.1 - numpy=1.12.0 - - openpyxl=2.2.6 + - openpyxl=2.4.0 - pytables=3.4.2 - python-dateutil=2.5.0 - python=3.5* diff --git a/ci/deps/travis-36-locale.yaml b/ci/deps/travis-36-locale.yaml index 34b289e6c0c2f..fb0401958f05a 100644 --- a/ci/deps/travis-36-locale.yaml +++ b/ci/deps/travis-36-locale.yaml @@ -15,7 +15,7 @@ dependencies: - numpy - openpyxl - psycopg2 - - pymysql + - pymysql=0.7.9 - pytables - python-dateutil - python=3.6* diff --git a/doc/source/install.rst b/doc/source/install.rst index 7bcee84ad4025..5df633e8dd984 100644 --- a/doc/source/install.rst +++ b/doc/source/install.rst @@ -259,7 +259,7 @@ Optional Dependencies * `PyTables `__: necessary for HDF5-based storage, Version 3.4.2 or higher * `pyarrow `__ (>= 0.9.0): necessary for feather-based storage. * `Apache Parquet `__, either `pyarrow `__ (>= 0.7.0) or `fastparquet `__ (>= 0.2.1) for parquet-based storage. The `snappy `__ and `brotli `__ are available for compression support. -* `SQLAlchemy `__: for SQL database support. Version 1.0.8 or higher recommended. Besides SQLAlchemy, you also need a database specific driver. You can find an overview of supported drivers for each SQL dialect in the `SQLAlchemy docs `__. Some common drivers are: +* `SQLAlchemy `__: for SQL database support. Version 1.1.4 or higher recommended. Besides SQLAlchemy, you also need a database specific driver. You can find an overview of supported drivers for each SQL dialect in the `SQLAlchemy docs `__. Some common drivers are: * `psycopg2 `__: for PostgreSQL * `pymysql `__: for MySQL. diff --git a/doc/source/whatsnew/v0.25.0.rst b/doc/source/whatsnew/v0.25.0.rst index a2f49feb4e7f1..aaa50d798fb7f 100644 --- a/doc/source/whatsnew/v0.25.0.rst +++ b/doc/source/whatsnew/v0.25.0.rst @@ -123,9 +123,9 @@ If installed, we now require: +=================+=================+==========+ | beautifulsoup4 | 4.4.1 | | +-----------------+-----------------+----------+ -| openpyxl | 2.2.6 | | +| openpyxl | 2.4.0 | | +-----------------+-----------------+----------+ -| pymysql | 0.6.6 | | +| pymysql | 0.7.9 | | +-----------------+-----------------+----------+ | pytz | 2015.4 | | +-----------------+-----------------+----------+