diff --git a/.appveyor.yml b/.appveyor.yml index 668c5391de65..49611c66a254 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -23,13 +23,14 @@ environment: # In theory we could use a single CONDA_INSTALL_LOCN because we construct # the envs anyway. But using one for the right python version hopefully # making things faster due to package caching. - - PYTHON_VERSION: "3.6" - CONDA_INSTALL_LOCN: "C:\\Miniconda36-x64" + - PYTHON_VERSION: "3.7" + CONDA_INSTALL_LOCN: "C:\\Miniconda37-x64" TEST_ALL: "no" EXTRAREQS: "-r requirements/testing/travis_extra.txt" - - PYTHON_VERSION: "3.7" + - PYTHON_VERSION: "3.8" CONDA_INSTALL_LOCN: "C:\\Miniconda37-x64" TEST_ALL: "no" + EXTRAREQS: "-r requirements/testing/travis_extra.txt" # We always use a 64-bit machine, but can build x86 distributions # with the PYTHON_ARCH variable @@ -55,19 +56,15 @@ install: # For building, use a new environment - conda create -q -n test-environment python=%PYTHON_VERSION% tk - activate test-environment + # pull pywin32 from conda because on py38 there is something wrong with finding + # the dlls when insalled from pip + - conda install -c conda-forge pywin32 - echo %PYTHON_VERSION% %TARGET_ARCH% # Install dependencies from PyPI. - python -mpip install --upgrade -r requirements/testing/travis_all.txt %EXTRAREQS% %PINNEDVERS% # Install optional dependencies from PyPI. # Sphinx is needed to run sphinxext tests - python -mpip install --upgrade sphinx - - # Apply patch to `subprocess` on Python versions > 2 and < 3.6.3 - # https://github.com/matplotlib/matplotlib/issues/9176 - - python -c "import sys; sys.exit(not (3,) < sys.version_info < (3,6,3))" && ( - curl -sL https://github.com/python/cpython/pull/1224.patch | - patch -fsup 1 -d %CONDA_PREFIX% ) || cmd /c "exit /b 0" - # Show the installed packages + versions - conda list diff --git a/.circleci/config.yml b/.circleci/config.yml index f0201de420c2..48275404c92e 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -110,17 +110,17 @@ commands: # jobs: - docs-python36: + docs-python37: docker: - - image: circleci/python:3.6 + - image: circleci/python:3.7 steps: - checkout - apt-install - fonts-install - pip-install - - deps-install: - numpy_version: "==1.13.0" + + - deps-install - mpl-install - doc-build @@ -130,9 +130,9 @@ jobs: - store_artifacts: path: doc/build/html - docs-python37: + docs-python38-min: docker: - - image: circleci/python:3.7 + - image: circleci/python:3.8 steps: - checkout @@ -140,7 +140,8 @@ jobs: - fonts-install - pip-install - - deps-install + - deps-install: + numpy_version: "==1.16.0" - mpl-install - doc-build @@ -185,6 +186,6 @@ workflows: version: 2 build: jobs: - - docs-python36 - docs-python37 - docs-python38 + - docs-python38-min diff --git a/.travis.yml b/.travis.yml index c40219b982a2..2c2aab29175c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -73,9 +73,9 @@ env: matrix: include: - - python: 3.6 + - python: 3.7 env: - - PINNEDVERS='-c requirements/testing/travis36minver.txt' + - PINNEDVERS='-c requirements/testing/minver.txt' - DELETE_FONT_CACHE=1 - python: 3.7 env: diff --git a/INSTALL.rst b/INSTALL.rst index d7d4ff594c8b..0145863cfbcc 100644 --- a/INSTALL.rst +++ b/INSTALL.rst @@ -143,14 +143,14 @@ Matplotlib will automatically install dependencies when you install with Matplotlib requires the following dependencies: -* `Python `_ (>= 3.6) -* `NumPy `_ (>= 1.15) +* `Python `_ (>= 3.7) +* `NumPy `_ (>= 1.16) * `setuptools `_ * `cycler `_ (>= 0.10.0) -* `dateutil `_ (>= 2.1) -* `kiwisolver `_ (>= 1.0.0) +* `dateutil `_ (>= 2.7) +* `kiwisolver `_ (>= 1.0.1) * `Pillow `_ (>= 6.2) -* `pyparsing `_ (>=2.0.3) +* `pyparsing `_ (>=2.2.1) Optionally, you can also install a number of packages to enable better user interface toolkits. See :ref:`what-is-a-backend` for more details on the diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 91e510d27b52..a5c8544b7e88 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -5,27 +5,18 @@ strategy: matrix: - Linux_py36: - vmImage: 'ubuntu-16.04' - python.version: '3.6' Linux_py37: vmImage: 'ubuntu-16.04' python.version: '3.7' Linux_py38: vmImage: 'ubuntu-16.04' python.version: '3.8' - macOS_py36: - vmImage: 'macOS-10.14' - python.version: '3.6' macOS_py37: vmImage: 'macOS-10.15' python.version: '3.7' macOS_py38: vmImage: 'macOS-latest' python.version: '3.8' - Windows_py36: - vmImage: 'vs2017-win2016' - python.version: '3.6' Windows_py37: vmImage: 'vs2017-win2016' python.version: '3.7' diff --git a/doc/api/next_api_changes/deprecations/17662-TAC.rst b/doc/api/next_api_changes/deprecations/17662-TAC.rst new file mode 100644 index 000000000000..61791346679a --- /dev/null +++ b/doc/api/next_api_changes/deprecations/17662-TAC.rst @@ -0,0 +1,22 @@ +Increase minimum supported versions of Python and dependencies +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +For Maptlotlib 3.4 the :ref:`minimum supported versions +` are being bumped + ++------------+-----------------+---------------+ +| Dependency | min in mpl3.3 | min in mpl3.4 | ++============+=================+===============+ +| Python | 3.6 | 3.7 | ++------------+-----------------+---------------+ +| dateutil | 2.1 | 2.2.1 | ++------------+-----------------+---------------+ +| numpy | 1.15 | 1.16 | ++------------+-----------------+---------------+ +| pyparsing | 2.0.3 | 2.2.1 | ++------------+-----------------+---------------+ + + +This consistent with our :ref:`min_deps_policy` and `NEP29 +`__ diff --git a/doc/devel/coding_guide.rst b/doc/devel/coding_guide.rst index e39761e608a1..cced9549aaf3 100644 --- a/doc/devel/coding_guide.rst +++ b/doc/devel/coding_guide.rst @@ -255,7 +255,7 @@ The current active branches are *master* The current development version. Future minor releases (*v3.N.0*) will be - branched from this. Supports Python 3.6+. + branched from this. Supports Python 3.7+. *v3.N.x* Maintenance branch for Matplotlib 3.N. Future patch releases will be diff --git a/doc/devel/min_dep_policy.rst b/doc/devel/min_dep_policy.rst index e4921a756018..45cee59e34a3 100644 --- a/doc/devel/min_dep_policy.rst +++ b/doc/devel/min_dep_policy.rst @@ -83,7 +83,8 @@ specification of the dependencies. ========== ======== ====== Matplotlib Python NumPy ========== ======== ====== -3.3 3.6 1.15.0 +3.4 3.7 1.16.0 +`3.3`_ 3.6 1.15.0 `3.2`_ 3.6 1.11.0 `3.1`_ 3.6 1.11.0 `3.0`_ 3.5 1.10.0 @@ -98,6 +99,7 @@ Matplotlib Python NumPy 1.0 2.4 1.1 ========== ======== ====== +.. _`3.3`: https://matplotlib.org/3.3.0/users/installing.html#dependencies .. _`3.2`: https://matplotlib.org/3.2.0/users/installing.html#dependencies .. _`3.1`: https://matplotlib.org/3.1.0/users/installing.html#dependencies .. _`3.0`: https://matplotlib.org/3.0.0/users/installing.html#dependencies diff --git a/doc/devel/testing.rst b/doc/devel/testing.rst index d1187d3ecfb1..2fc16c57122d 100644 --- a/doc/devel/testing.rst +++ b/doc/devel/testing.rst @@ -243,7 +243,7 @@ You can also run tox on a subset of environments: .. code-block:: bash - $ tox -e py36,py37 + $ tox -e py37,py38 Tox processes everything serially so it can take a long time to test several environments. To speed it up, you might try using a new, diff --git a/doc/faq/installing_faq.rst b/doc/faq/installing_faq.rst index 529e1be7aca2..7ced5c063218 100644 --- a/doc/faq/installing_faq.rst +++ b/doc/faq/installing_faq.rst @@ -105,7 +105,7 @@ the form of wheels. pip is installed by default with python.org and Homebrew Python, but needs to be manually installed on Macports with :: - sudo port install py36-pip + sudo port install py38-pip Once pip is installed, you can install Matplotlib and all its dependencies with from the Terminal.app command line:: diff --git a/requirements/testing/minver.txt b/requirements/testing/minver.txt new file mode 100644 index 000000000000..3cd31922c17a --- /dev/null +++ b/requirements/testing/minver.txt @@ -0,0 +1,7 @@ +# Extra pip requirements for the minimum-version travis run + +cycler==0.10 +python-dateutil==2.7 +numpy==1.16.0 +pyparsing==2.2.1 +kiwisolver==1.0.1 diff --git a/requirements/testing/travis36minver.txt b/requirements/testing/travis36minver.txt deleted file mode 100644 index 2b012c01a6ce..000000000000 --- a/requirements/testing/travis36minver.txt +++ /dev/null @@ -1,6 +0,0 @@ -# Extra pip requirements for the first travis python 3.6 build - -cycler==0.10 -python-dateutil==2.1 -numpy==1.15.0 -pyparsing==2.0.3 diff --git a/setup.py b/setup.py index 7c0d85d7f4ba..cc8738a4a752 100644 --- a/setup.py +++ b/setup.py @@ -8,7 +8,7 @@ # and/or pip. import sys -min_version = (3, 6) +min_version = (3, 7) if sys.version_info < min_version: error = """ @@ -280,10 +280,10 @@ def build_extensions(self): install_requires=[ "cycler>=0.10", "kiwisolver>=1.0.1", - "numpy>=1.15", + "numpy>=1.16", "pillow>=6.2.0", - "pyparsing>=2.0.3,!=2.0.4,!=2.1.2,!=2.1.6", - "python-dateutil>=2.1", + "pyparsing>=2.2.1", + "python-dateutil>=2.7", ], cmdclass=cmdclass, diff --git a/tox.ini b/tox.ini index 8696a8e0a91a..b6b94c41b5fc 100644 --- a/tox.ini +++ b/tox.ini @@ -4,7 +4,7 @@ # and then run "tox" from this directory. [tox] -envlist = py36, py37, py38 +envlist = py37, py38 [testenv] changedir = /tmp