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..adae9bc761a42 --- /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.4.0 + - 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-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/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-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 ccf5c43280765..aaa50d798fb7f 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 | | +| pymysql | 0.7.9 | | +-----------------+-----------------+----------+ | pytz | 2015.4 | | +-----------------+-----------------+----------+ -| sqlalchemy | 1.0.8 | | +| sqlalchemy | 1.1.4 | | +-----------------+-----------------+----------+ | xlsxwriter | 0.7.7 | | +-----------------+-----------------+----------+ diff --git a/pandas/tests/test_algos.py b/pandas/tests/test_algos.py index b8226bc2f8269..e6c00e11d42a9 100644 --- a/pandas/tests/test_algos.py +++ b/pandas/tests/test_algos.py @@ -20,7 +20,7 @@ import pandas as pd from pandas import ( Categorical, CategoricalIndex, DatetimeIndex, Index, IntervalIndex, Series, - Timestamp, compat) + Timestamp, _np_version_under1p14, compat) import pandas.core.algorithms as algos from pandas.core.arrays import DatetimeArray import pandas.core.common as com @@ -228,9 +228,11 @@ 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 c753b5531fde7..14b5f1cb509fa 100644 --- a/pandas/tests/test_sorting.py +++ b/pandas/tests/test_sorting.py @@ -7,7 +7,8 @@ import pytest from pandas import ( - DataFrame, MultiIndex, Series, compat, concat, merge, to_datetime) + DataFrame, MultiIndex, Series, _np_version_under1p14, compat, concat, + merge, to_datetime) from pandas.core import common as com from pandas.core.sorting import ( decons_group_index, get_group_index, is_int64_overflow_possible, @@ -413,10 +414,13 @@ def test_mixed_integer_from_list(self): 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'") + ) with pytest.raises(TypeError, match=msg): safe_sort(arr)