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