From dd61ed19d05edcf9a919c73e657c512dc8f6d265 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Wed, 17 Jun 2020 15:53:43 -0400 Subject: [PATCH 1/5] MNT: bump minimum python-dateutil version to 2.7 This was release in March 2018 and is the first version of python-dateutil that does not have deprecation warnings due to the collections -> collections.abc change in CPython. --- INSTALL.rst | 2 +- requirements/testing/travis36minver.txt | 4 ++-- setup.py | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/INSTALL.rst b/INSTALL.rst index d7d4ff594c8b..503aafe5cff4 100644 --- a/INSTALL.rst +++ b/INSTALL.rst @@ -147,7 +147,7 @@ Matplotlib requires the following dependencies: * `NumPy `_ (>= 1.15) * `setuptools `_ * `cycler `_ (>= 0.10.0) -* `dateutil `_ (>= 2.1) +* `dateutil `_ (>= 2.7) * `kiwisolver `_ (>= 1.0.0) * `Pillow `_ (>= 6.2) * `pyparsing `_ (>=2.0.3) diff --git a/requirements/testing/travis36minver.txt b/requirements/testing/travis36minver.txt index 2b012c01a6ce..5cd72277421c 100644 --- a/requirements/testing/travis36minver.txt +++ b/requirements/testing/travis36minver.txt @@ -1,6 +1,6 @@ -# Extra pip requirements for the first travis python 3.6 build +# Extra pip requirements for the minimum-version travis run cycler==0.10 -python-dateutil==2.1 +python-dateutil==2.7 numpy==1.15.0 pyparsing==2.0.3 diff --git a/setup.py b/setup.py index 7c0d85d7f4ba..2124c30b3bc5 100644 --- a/setup.py +++ b/setup.py @@ -283,7 +283,7 @@ def build_extensions(self): "numpy>=1.15", "pillow>=6.2.0", "pyparsing>=2.0.3,!=2.0.4,!=2.1.2,!=2.1.6", - "python-dateutil>=2.1", + "python-dateutil>=2.7", ], cmdclass=cmdclass, From cfccfb8203d2bf4c6243872850975d493e773161 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Wed, 17 Jun 2020 16:07:17 -0400 Subject: [PATCH 2/5] MNT: bump minimum pyparsing to 2.2.1 This is released in Sept 2018 and is the earliest version to not warn due to the collections -> collections.abc change in CPython. --- INSTALL.rst | 2 +- requirements/testing/travis36minver.txt | 2 +- setup.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/INSTALL.rst b/INSTALL.rst index 503aafe5cff4..878caa2d41da 100644 --- a/INSTALL.rst +++ b/INSTALL.rst @@ -150,7 +150,7 @@ Matplotlib requires the following dependencies: * `dateutil `_ (>= 2.7) * `kiwisolver `_ (>= 1.0.0) * `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/requirements/testing/travis36minver.txt b/requirements/testing/travis36minver.txt index 5cd72277421c..54b45531c28e 100644 --- a/requirements/testing/travis36minver.txt +++ b/requirements/testing/travis36minver.txt @@ -3,4 +3,4 @@ cycler==0.10 python-dateutil==2.7 numpy==1.15.0 -pyparsing==2.0.3 +pyparsing==2.2.1 diff --git a/setup.py b/setup.py index 2124c30b3bc5..7fab333d3f85 100644 --- a/setup.py +++ b/setup.py @@ -282,7 +282,7 @@ def build_extensions(self): "kiwisolver>=1.0.1", "numpy>=1.15", "pillow>=6.2.0", - "pyparsing>=2.0.3,!=2.0.4,!=2.1.2,!=2.1.6", + "pyparsing>=2.2.1", "python-dateutil>=2.7", ], From 60b03f1571c775f60bbd701d3381357a31eaf8bb Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Wed, 17 Jun 2020 21:52:40 -0400 Subject: [PATCH 3/5] MNT: bump minimum numpy version to 1.16 --- INSTALL.rst | 2 +- requirements/testing/travis36minver.txt | 2 +- setup.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/INSTALL.rst b/INSTALL.rst index 878caa2d41da..562890fc61f6 100644 --- a/INSTALL.rst +++ b/INSTALL.rst @@ -144,7 +144,7 @@ Matplotlib will automatically install dependencies when you install with Matplotlib requires the following dependencies: * `Python `_ (>= 3.6) -* `NumPy `_ (>= 1.15) +* `NumPy `_ (>= 1.16) * `setuptools `_ * `cycler `_ (>= 0.10.0) * `dateutil `_ (>= 2.7) diff --git a/requirements/testing/travis36minver.txt b/requirements/testing/travis36minver.txt index 54b45531c28e..6fde528b59e2 100644 --- a/requirements/testing/travis36minver.txt +++ b/requirements/testing/travis36minver.txt @@ -2,5 +2,5 @@ cycler==0.10 python-dateutil==2.7 -numpy==1.15.0 +numpy==1.16.0 pyparsing==2.2.1 diff --git a/setup.py b/setup.py index 7fab333d3f85..f714721a4945 100644 --- a/setup.py +++ b/setup.py @@ -280,7 +280,7 @@ 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.2.1", "python-dateutil>=2.7", From 0828a91d09704893b99462a2103b9fb3d706b2ec Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Wed, 17 Jun 2020 16:27:13 -0400 Subject: [PATCH 4/5] DOC/TST: correctly document the minimum kiwisolver and test --- INSTALL.rst | 2 +- requirements/testing/travis36minver.txt | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/INSTALL.rst b/INSTALL.rst index 562890fc61f6..c321982544b2 100644 --- a/INSTALL.rst +++ b/INSTALL.rst @@ -148,7 +148,7 @@ Matplotlib requires the following dependencies: * `setuptools `_ * `cycler `_ (>= 0.10.0) * `dateutil `_ (>= 2.7) -* `kiwisolver `_ (>= 1.0.0) +* `kiwisolver `_ (>= 1.0.1) * `Pillow `_ (>= 6.2) * `pyparsing `_ (>=2.2.1) diff --git a/requirements/testing/travis36minver.txt b/requirements/testing/travis36minver.txt index 6fde528b59e2..3cd31922c17a 100644 --- a/requirements/testing/travis36minver.txt +++ b/requirements/testing/travis36minver.txt @@ -4,3 +4,4 @@ cycler==0.10 python-dateutil==2.7 numpy==1.16.0 pyparsing==2.2.1 +kiwisolver==1.0.1 From 2295a0ebc52cca545d83c078973f5586907ecd5a Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Wed, 17 Jun 2020 12:32:47 -0400 Subject: [PATCH 5/5] API: bump minimum version of Python to 3.7 for mpl 3.4 This is consistent with our policy and NEP29 --- .appveyor.yml | 17 ++++++-------- .circleci/config.yml | 17 +++++++------- .travis.yml | 4 ++-- INSTALL.rst | 2 +- azure-pipelines.yml | 9 -------- .../deprecations/17662-TAC.rst | 22 +++++++++++++++++++ doc/devel/coding_guide.rst | 2 +- doc/devel/min_dep_policy.rst | 4 +++- doc/devel/testing.rst | 2 +- doc/faq/installing_faq.rst | 2 +- .../{travis36minver.txt => minver.txt} | 0 setup.py | 2 +- tox.ini | 2 +- 13 files changed, 49 insertions(+), 36 deletions(-) create mode 100644 doc/api/next_api_changes/deprecations/17662-TAC.rst rename requirements/testing/{travis36minver.txt => minver.txt} (100%) 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 c321982544b2..0145863cfbcc 100644 --- a/INSTALL.rst +++ b/INSTALL.rst @@ -143,7 +143,7 @@ Matplotlib will automatically install dependencies when you install with Matplotlib requires the following dependencies: -* `Python `_ (>= 3.6) +* `Python `_ (>= 3.7) * `NumPy `_ (>= 1.16) * `setuptools `_ * `cycler `_ (>= 0.10.0) 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/travis36minver.txt b/requirements/testing/minver.txt similarity index 100% rename from requirements/testing/travis36minver.txt rename to requirements/testing/minver.txt diff --git a/setup.py b/setup.py index f714721a4945..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 = """ 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