diff --git a/.travis.yml b/.travis.yml index e478d71a5c350..f8302f4718ef2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,5 @@ sudo: false language: python -# Default Python version is usually 2.7 python: 3.5 # To turn off cached cython files and compiler cache @@ -36,14 +35,6 @@ matrix: env: - JOB="3.7" ENV_FILE="ci/deps/travis-37.yaml" PATTERN="(not slow and not network)" - - dist: trusty - env: - - JOB="2.7" ENV_FILE="ci/deps/travis-27.yaml" PATTERN="(not slow or (single and db))" - addons: - apt: - packages: - - python-gtk2 - - 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/README.md b/README.md index 633673d5cd04f..dcf39864e46e2 100644 --- a/README.md +++ b/README.md @@ -166,7 +166,7 @@ pip install pandas ## Dependencies - [NumPy](https://www.numpy.org): 1.12.0 or higher - [python-dateutil](https://labix.org/python-dateutil): 2.5.0 or higher -- [pytz](https://pythonhosted.org/pytz): 2011k or higher +- [pytz](https://pythonhosted.org/pytz): 2015.4 or higher See the [full installation instructions](https://pandas.pydata.org/pandas-docs/stable/install.html#dependencies) for recommended and optional dependencies. diff --git a/azure-pipelines.yml b/azure-pipelines.yml index f0567d76659b6..6c30ec641f292 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -10,7 +10,6 @@ jobs: name: Linux vmImage: ubuntu-16.04 -# Windows Python 2.7 needs VC 9.0 installed, handled in the template - template: ci/azure/windows.yml parameters: name: Windows diff --git a/ci/azure/posix.yml b/ci/azure/posix.yml index b9e0cd0b9258c..65f78c2786927 100644 --- a/ci/azure/posix.yml +++ b/ci/azure/posix.yml @@ -9,24 +9,12 @@ jobs: strategy: matrix: ${{ if eq(parameters.name, 'macOS') }}: - py35_np_120: + py35_macos: ENV_FILE: ci/deps/azure-macos-35.yaml CONDA_PY: "35" PATTERN: "not slow and not network" ${{ if eq(parameters.name, 'Linux') }}: - py27_np_120: - ENV_FILE: ci/deps/azure-27-compat.yaml - CONDA_PY: "27" - PATTERN: "not slow and not network" - - py27_locale_slow_old_np: - ENV_FILE: ci/deps/azure-27-locale.yaml - CONDA_PY: "27" - 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 cece002024936..13f2442806422 100644 --- a/ci/azure/windows.yml +++ b/ci/azure/windows.yml @@ -12,23 +12,12 @@ jobs: ENV_FILE: ci/deps/azure-windows-36.yaml CONDA_PY: "36" - py27_np121: - ENV_FILE: ci/deps/azure-windows-27.yaml - CONDA_PY: "27" - steps: - task: CondaEnvironment@1 inputs: updateConda: no packageSpecs: '' - - powershell: | - $wc = New-Object net.webclient - $wc.Downloadfile("https://download.microsoft.com/download/7/9/6/796EF2E4-801B-4FC4-AB28-B59FBF6D907B/VCForPython27.msi", "VCForPython27.msi") - Start-Process "VCForPython27.msi" /qn -Wait - displayName: 'Install VC 9.0 only for Python 2.7' - condition: eq(variables.CONDA_PY, '27') - - script: | ci\\incremental\\setup_conda_environment.cmd displayName: 'Before Install' diff --git a/ci/deps/azure-27-compat.yaml b/ci/deps/azure-27-compat.yaml deleted file mode 100644 index a7784f17d1956..0000000000000 --- a/ci/deps/azure-27-compat.yaml +++ /dev/null @@ -1,28 +0,0 @@ -name: pandas-dev -channels: - - defaults - - conda-forge -dependencies: - - bottleneck=1.2.0 - - cython=0.28.2 - - jinja2=2.8 - - numexpr=2.6.1 - - numpy=1.12.0 - - openpyxl=2.5.5 - - pytables=3.4.2 - - python-dateutil=2.5.0 - - python=2.7* - - pytz=2013b - - scipy=0.18.1 - - xlrd=1.0.0 - - xlsxwriter=0.5.2 - - xlwt=0.7.5 - # universal - - pytest>=4.0.2 - - pytest-xdist - - pytest-mock - - isort - - pip: - - html5lib==1.0b2 - - beautifulsoup4==4.2.1 - - hypothesis>=3.58.0 diff --git a/ci/deps/azure-27-locale.yaml b/ci/deps/azure-27-locale.yaml deleted file mode 100644 index 8636a63d02fed..0000000000000 --- a/ci/deps/azure-27-locale.yaml +++ /dev/null @@ -1,30 +0,0 @@ -name: pandas-dev -channels: - - defaults - - conda-forge -dependencies: - - 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=2.7 - - pytz - - pytz=2013b - - scipy - - sqlalchemy=0.8.1 - - xlrd=1.0.0 - - xlsxwriter=0.5.2 - - xlwt=0.7.5 - # universal - - pytest>=4.0.2 - - pytest-xdist - - pytest-mock - - hypothesis>=3.58.0 - - isort - - pip: - - html5lib==1.0b2 - - beautifulsoup4==4.2.1 diff --git a/ci/deps/azure-windows-27.yaml b/ci/deps/azure-windows-27.yaml deleted file mode 100644 index f40efdfca3cbd..0000000000000 --- a/ci/deps/azure-windows-27.yaml +++ /dev/null @@ -1,33 +0,0 @@ -name: pandas-dev -channels: - - defaults - - conda-forge -dependencies: - - beautifulsoup4 - - bottleneck - - dateutil - - gcsfs - - html5lib - - jinja2=2.8 - - lxml - - matplotlib=2.0.1 - - numexpr - - numpy=1.12* - - openpyxl - - pytables - - python=2.7.* - - 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/azure-windows-36.yaml b/ci/deps/azure-windows-36.yaml index 8517d340f2ba8..5ce55a4cb4c0e 100644 --- a/ci/deps/azure-windows-36.yaml +++ b/ci/deps/azure-windows-36.yaml @@ -15,7 +15,7 @@ dependencies: - pyarrow - pytables - python-dateutil - - python=3.6.6 + - python=3.6.* - pytz - scipy - xlrd diff --git a/ci/deps/travis-27.yaml b/ci/deps/travis-27.yaml deleted file mode 100644 index a910af36a6b10..0000000000000 --- a/ci/deps/travis-27.yaml +++ /dev/null @@ -1,51 +0,0 @@ -name: pandas-dev -channels: - - defaults - - conda-forge -dependencies: - - beautifulsoup4 - - bottleneck - - cython=0.28.2 - - fastparquet>=0.2.1 - - gcsfs - - html5lib - - ipython - - jemalloc=4.5.0.post - - 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.3 - - pytables - - blosc=1.14.3 - - python-blosc - - python-dateutil=2.5.0 - - python=2.7* - - pytz=2013b - - s3fs - - scipy - - sqlalchemy=0.9.6 - - xarray=0.9.6 - - xlrd=1.0.0 - - xlsxwriter=0.5.2 - - xlwt=0.7.5 - # universal - - pytest>=4.0.2 - - pytest-xdist - - pytest-mock - - moto==1.3.4 - - hypothesis>=3.58.0 - - isort - - pip: - - backports.lzma - - pandas-gbq - - pathlib diff --git a/ci/deps/travis-36-doc.yaml b/ci/deps/travis-36-doc.yaml index 6f33bc58a8b21..8015f7bdc81c6 100644 --- a/ci/deps/travis-36-doc.yaml +++ b/ci/deps/travis-36-doc.yaml @@ -15,12 +15,12 @@ dependencies: - ipywidgets - lxml - matplotlib - - nbconvert + - nbconvert>=5.4.1 - nbformat - nbsphinx - - notebook + - notebook>=5.7.5 - numexpr - - numpy=1.13* + - numpy - numpydoc - openpyxl - pandoc diff --git a/ci/run_with_env.cmd b/ci/run_with_env.cmd index 848f4608c8627..0661039a21fae 100644 --- a/ci/run_with_env.cmd +++ b/ci/run_with_env.cmd @@ -1,5 +1,5 @@ :: EXPECTED ENV VARS: PYTHON_ARCH (either x86 or x64) -:: CONDA_PY (either 27, 33, 35 etc. - only major version is extracted) +:: CONDA_PY (either 35, 36 etc. - only major version is extracted) :: :: :: To build extensions for 64 bit Python 3, we need to configure environment @@ -45,7 +45,7 @@ SET WIN_SDK_ROOT=C:\Program Files\Microsoft SDKs\Windows SET MAJOR_PYTHON_VERSION=%CONDA_PY:~0,1% IF "%CONDA_PY:~2,1%" == "" ( - :: CONDA_PY style, such as 27, 34 etc. + :: CONDA_PY style, such as 36, 37 etc. SET MINOR_PYTHON_VERSION=%CONDA_PY:~1,1% ) ELSE ( IF "%CONDA_PY:~3,1%" == "." ( diff --git a/doc/source/install.rst b/doc/source/install.rst index 5310667c403e5..9ecd78c9c19fa 100644 --- a/doc/source/install.rst +++ b/doc/source/install.rst @@ -226,7 +226,7 @@ Dependencies * `setuptools `__: 24.2.0 or higher * `NumPy `__: 1.12.0 or higher * `python-dateutil `__: 2.5.0 or higher -* `pytz `__ +* `pytz `__: 2015.4 or higher .. _install.recommended_dependencies: @@ -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 0.8.1 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.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: * `psycopg2 `__: for PostgreSQL * `pymysql `__: for MySQL. @@ -298,7 +298,7 @@ Optional Dependencies .. note:: - If using BeautifulSoup4 a minimum version of 4.2.1 is required + If using BeautifulSoup4 a minimum version of 4.4.1 is required * `BeautifulSoup4`_ and `html5lib`_ (Any recent version of `html5lib`_ is okay.) diff --git a/doc/source/whatsnew/v0.25.0.rst b/doc/source/whatsnew/v0.25.0.rst index ddc5e543c6165..1d2466adf9265 100644 --- a/doc/source/whatsnew/v0.25.0.rst +++ b/doc/source/whatsnew/v0.25.0.rst @@ -70,12 +70,27 @@ is respected in indexing. (:issue:`24076`, :issue:`16785`) Increased minimum versions for dependencies ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -We have updated our minimum supported versions of dependencies (:issue:`23519`). +Due to dropping support for Python 2.7, a number of optional dependencies have updated minimum versions. +Independently, some minimum supported versions of dependencies were updated (:issue:`23519`, :issue:`24942`). If installed, we now require: +-----------------+-----------------+----------+ | Package | Minimum Version | Required | +=================+=================+==========+ +| beautifulsoup4 | 4.4.1 | | ++-----------------+-----------------+----------+ +| openpyxl | 2.2.6 | | ++-----------------+-----------------+----------+ +| pymysql | 0.6.6 | | ++-----------------+-----------------+----------+ +| pytz | 2015.4 | | ++-----------------+-----------------+----------+ +| sqlalchemy | 1.0.8 | | ++-----------------+-----------------+----------+ +| xlsxwriter | 0.7.7 | | ++-----------------+-----------------+----------+ +| xlwt | 1.0.0 | | ++-----------------+-----------------+----------+ | pytest (dev) | 4.0.2 | | +-----------------+-----------------+----------+ diff --git a/setup.py b/setup.py index a83e07b50ed57..d58d444f9a481 100755 --- a/setup.py +++ b/setup.py @@ -34,7 +34,7 @@ def is_platform_mac(): setuptools_kwargs = { 'install_requires': [ 'python-dateutil >= 2.5.0', - 'pytz >= 2011k', + 'pytz >= 2015.4', 'numpy >= {numpy_ver}'.format(numpy_ver=min_numpy_ver), ], 'setup_requires': ['numpy >= {numpy_ver}'.format(numpy_ver=min_numpy_ver)], diff --git a/tox.ini b/tox.ini deleted file mode 100644 index f055251581a93..0000000000000 --- a/tox.ini +++ /dev/null @@ -1,82 +0,0 @@ -# Tox (http://tox.testrun.org/) is a tool for running tests -# in multiple virtualenvs. This configuration file will run the -# test suite on all supported python versions. To use it, "pip install tox" -# and then run "tox" from this directory. - -[tox] -envlist = py27, py35, py36 - -[testenv] -deps = - cython - nose - pytest - pytz>=2011k - python-dateutil - beautifulsoup4 - lxml - xlsxwriter - xlrd - six - sqlalchemy - moto - -# cd to anything but the default {toxinidir} which -# contains the pandas subdirectory and confuses -# nose away from the fresh install in site-packages -changedir = {envdir} - -commands = - # TODO: --exe because of GH #761 - {envbindir}/pytest pandas {posargs:-A "not network and not disabled"} - # cleanup the temp. build dir created by the tox build -# /bin/rm -rf {toxinidir}/build - - # quietly rollback the install. - # Note this line will only be reached if the - # previous lines succeed (in particular, the tests), - # but an uninstall is really only required when - # files are removed from the source tree, in which case, - # stale versions of files will will remain in the venv - # until the next time uninstall is run. - # - # tox should provide a preinstall-commands hook. - pip uninstall pandas -qy - -[testenv:py27] -deps = - numpy==1.8.1 - boto - bigquery - {[testenv]deps} - -[testenv:py35] -deps = - numpy==1.10.0 - {[testenv]deps} - -[testenv:py36] -deps = - numpy - {[testenv]deps} - -[testenv:openpyxl1] -usedevelop = True -deps = - {[testenv]deps} - openpyxl<2.0.0 -commands = {envbindir}/pytest {toxinidir}/pandas/io/tests/test_excel.py - -[testenv:openpyxl20] -usedevelop = True -deps = - {[testenv]deps} - openpyxl<2.2.0 -commands = {envbindir}/pytest {posargs} {toxinidir}/pandas/io/tests/test_excel.py - -[testenv:openpyxl22] -usedevelop = True -deps = - {[testenv]deps} - openpyxl>=2.2.0 -commands = {envbindir}/pytest {posargs} {toxinidir}/pandas/io/tests/test_excel.py