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