Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Port requirements to PEP735 #29281

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: main
Choose a base branch
Loading
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions 4 .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -103,10 +103,10 @@ commands:
- run:
name: Install Python dependencies
command: |
python -m pip install --user -r requirements/dev/build-requirements.txt
python -m pip install --user --group build
python -m pip install --user \
numpy<< parameters.numpy_version >> \
-r requirements/doc/doc-requirements.txt
--group doc
python -m pip install --no-deps --user \
git+https://github.com/matplotlib/mpl-sphinx-theme.git

Expand Down
8 changes: 3 additions & 5 deletions 8 .github/workflows/cygwin.yml
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@ jobs:
uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3
with:
path: C:\cygwin\home\runneradmin\.cache\pip
key: Cygwin-py3.${{ matrix.python-minor-version }}-pip-${{ hashFiles('requirements/*/*.txt') }}
key: Cygwin-py3.${{ matrix.python-minor-version }}-pip-${{ hashFiles('pyproject.toml') }}
restore-keys: ${{ matrix.os }}-py3.${{ matrix.python-minor-version }}-pip-

- name: Cache ccache
Expand Down Expand Up @@ -174,15 +174,13 @@ jobs:
- name: Install Python dependencies
shell: bash.exe -eo pipefail -o igncr "{0}"
run: |
python -m pip install --upgrade pip setuptools wheel
python -m pip install --group build
python -m pip install kiwisolver 'numpy>=1.22,<1.26' pillow importlib_resources
grep -v -F -e psutil requirements/testing/all.txt >requirements_test.txt
python -m pip install meson-python pybind11
export PATH="/usr/local/bin:$PATH"
python -m pip install --no-build-isolation 'contourpy>=1.0.1'
python -m pip install --upgrade cycler fonttools \
packaging pyparsing python-dateutil setuptools-scm \
-r requirements_test.txt sphinx ipython
--group test sphinx ipython
python -m pip install --upgrade pycairo 'cairocffi>=0.8' PyGObject &&
python -c 'import gi; gi.require_version("Gtk", "3.0"); from gi.repository import Gtk' &&
echo 'PyGObject is available' ||
Expand Down
2 changes: 1 addition & 1 deletion 2 .github/workflows/reviewdog.yml
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ jobs:
python-version: '3.11'

- name: Install mypy
run: pip3 install -r requirements/testing/mypy.txt -r requirements/testing/all.txt
run: pip3 install --group typing
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

does this also need group "test"?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm hoping not, so we can reduce the install set.


- name: Set up reviewdog
uses: reviewdog/action-setup@e04ffabe3898a0af8d0fb1af00c188831c4b5893 # v1.3.9
Expand Down
16 changes: 6 additions & 10 deletions 16 .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -50,12 +50,12 @@ jobs:
- name-suffix: "(Minimum Versions)"
os: ubuntu-22.04
python-version: '3.11'
extra-requirements: '-c requirements/testing/minver.txt'
extra-requirements: 'python -m pip install --upgrade $PRE --group test-minver'
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why the addition of $PRE here?

delete-font-cache: true
- os: ubuntu-22.04
python-version: '3.11'
CFLAGS: "-fno-lto" # Ensure that disabling LTO works.
extra-requirements: '-r requirements/testing/extra.txt'
extra-requirements: 'python -m pip install --upgrade $PRE --prefer-binary --group test-extra'
- os: ubuntu-22.04-arm
python-version: '3.12'
- os: ubuntu-22.04
Expand Down Expand Up @@ -170,15 +170,15 @@ jobs:
if: startsWith(runner.os, 'Linux')
with:
path: ~/.cache/pip
key: ${{ matrix.os }}-py${{ matrix.python-version }}-pip-${{ hashFiles('requirements/*/*.txt') }}
key: ${{ matrix.os }}-py${{ matrix.python-version }}-pip-${{ hashFiles('pyproject.toml') }}
restore-keys: |
${{ matrix.os }}-py${{ matrix.python-version }}-pip-
- name: Cache pip
uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3
if: startsWith(runner.os, 'macOS')
with:
path: ~/Library/Caches/pip
key: ${{ matrix.os }}-py${{ matrix.python-version }}-pip-${{ hashFiles('requirements/*/*.txt') }}
key: ${{ matrix.os }}-py${{ matrix.python-version }}-pip-${{ hashFiles('pyproject.toml') }}
restore-keys: |
${{ matrix.os }}-py${{ matrix.python-version }}-pip-
- name: Cache ccache
Expand Down Expand Up @@ -215,12 +215,8 @@ jobs:

# Install dependencies from PyPI.
# Preinstall build requirements to enable no-build-isolation builds.
python -m pip install --upgrade $PRE \
'contourpy>=1.0.1' cycler fonttools kiwisolver importlib_resources \
packaging pillow 'pyparsing!=3.1.0' python-dateutil setuptools-scm \
'meson-python>=0.13.1' 'pybind11>=2.13.2' \
-r requirements/testing/all.txt \
${{ matrix.extra-requirements }}
python -m pip install --upgrade $PRE --group build --group test
${{ matrix.extra-requirements }}

# Install optional dependencies from PyPI.
# Sphinx is needed to run sphinxext tests
Expand Down
5 changes: 3 additions & 2 deletions 5 azure-pipelines.yml
Original file line number Diff line number Diff line change
Expand Up @@ -74,8 +74,9 @@ stages:

- bash: |
python -m pip install --upgrade pip
python -m pip install --upgrade -r requirements/dev/build-requirements.txt
python -m pip install -r requirements/testing/all.txt -r requirements/testing/extra.txt
python -m pip install --upgrade --group build
python -m pip install --group test
python -m pip install --prefer-binary --group test-extra
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Worth a comment explaining the reason for using --prefer-binary just for test-extra?

displayName: 'Install dependencies with pip'

- bash: |
Expand Down
2 changes: 1 addition & 1 deletion 2 doc/devel/development_setup.rst
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,7 @@ setup.

Install the Python dependencies with ::

pip install -r requirements/dev/dev-requirements.txt
pip install --group dev

Remember to activate the environment whenever you start working on Matplotlib!

Expand Down
2 changes: 1 addition & 1 deletion 2 doc/devel/release_guide.rst
Original file line number Diff line number Diff line change
Expand Up @@ -420,7 +420,7 @@ To build the documentation you must have the tagged version installed, but
build the docs from the ``ver-doc`` branch. An easy way to arrange this is::

pip install matplotlib
pip install -r requirements/doc/doc-requirements.txt
pip install --group doc
git checkout v3.7.0-doc
git clean -xfd
make -Cdoc O="-t release -j$(nproc)" html latexpdf LATEXMKOPTS="-silent -f"
Expand Down
14 changes: 4 additions & 10 deletions 14 doc/install/dependencies.rst
Original file line number Diff line number Diff line change
Expand Up @@ -396,17 +396,11 @@ Documentation dependencies
Python
------

The additional Python packages required to build the
:ref:`documentation <documenting-matplotlib>` are listed in
:file:`doc-requirements.txt` and can be installed using ::

pip install -r requirements/doc/doc-requirements.txt

The content of :file:`doc-requirements.txt` is also shown below:

.. include:: ../../requirements/doc/doc-requirements.txt
:literal:
The additional Python packages required to build the :ref:`documentation
<documenting-matplotlib>` are listed in :file:`pyproject.toml` and can be
installed using ::

pip install --group doc

.. _doc-dependencies-external:

Expand Down
143 changes: 126 additions & 17 deletions 143 pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,9 @@ classifiers=[

# When updating the list of dependencies, add an api_changes/development
# entry and also update the following places:
# - the `build` and `test-minver` dependency groups below
# - lib/matplotlib/__init__.py (matplotlib._check_versions())
# - requirements/testing/minver.txt
# - doc/devel/dependencies.rst
# - .github/workflows/tests.yml
# - environment.yml
dependencies = [
"contourpy >= 1.0.1",
Expand All @@ -42,20 +41,6 @@ dependencies = [
]
requires-python = ">=3.11"

[project.optional-dependencies]
# Should be a copy of the build dependencies below.
dev = [
"meson-python>=0.13.1,<0.17.0",
"pybind11>=2.13.2,!=2.13.3",
"setuptools_scm>=7",
# Not required by us but setuptools_scm without a version, cso _if_
# installed, then setuptools_scm 8 requires at least this version.
# Unfortunately, we can't do a sort of minimum-if-installed dependency, so
# we need to keep this for now until setuptools_scm _fully_ drops
# setuptools.
"setuptools>=64",
]

[project.urls]
"Homepage" = "https://matplotlib.org"
"Download" = "https://matplotlib.org/stable/install/index.html"
Expand All @@ -67,13 +52,137 @@ dev = [

[build-system]
build-backend = "mesonpy"
# Also keep in sync with optional dependencies above.
# Also keep in sync with dependency groups below.
requires = [
"meson-python>=0.13.1,<0.17.0",
"pybind11>=2.13.2,!=2.13.3",
"setuptools_scm>=7",
]

[dependency-groups]
build = [
# Should be the same as `[project] dependencies` above.
"contourpy >= 1.0.1",
"cycler >= 0.10",
"fonttools >= 4.22.0",
"kiwisolver >= 1.3.1",
"numpy >= 1.25",
"packaging >= 20.0",
"pillow >= 9",
"pyparsing >= 3",
"python-dateutil >= 2.7",

# Should be the same as `[build-system] requires` above.
"meson-python>=0.13.1,<0.17.0",
"pybind11>=2.13.2,!=2.13.3",
"setuptools_scm>=7",
# Not required by us but setuptools_scm without a version, so _if_
# installed, then setuptools_scm 8 requires at least this version.
# Unfortunately, we can't do a sort of minimum-if-installed dependency, so
# we need to keep this for now until setuptools_scm _fully_ drops
# setuptools.
"setuptools>=64",
]
dev = [
{include-group = "build"},
{include-group = "doc"},
{include-group = "test"},
{include-group = "test-extra"},
"ruff",
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

pre-commit should be added here, and perhaps ruff dropped since running pre-commit runs ruff.

]
# Requirements for building docs
#
# You will first need a matching Matplotlib installation
# e.g (from the Matplotlib root directory)
# pip install --group build --no-build-isolation --editable .
#
# Install the documentation requirements with:
# pip install --group doc
#
doc = [
"sphinx>=5.1.0,!=6.1.2",
"colorspacious",
"ipython",
"ipywidgets",
"ipykernel",
"numpydoc>=1.0",
"pydata-sphinx-theme~=0.15.0",
"mpl-sphinx-theme~=3.9.0",
"pyyaml",
"PyStemmer",
"sphinxcontrib-svg2pdfconverter>=1.1.0",
"sphinxcontrib-video>=0.2.1",
"sphinx-copybutton",
"sphinx-design",
"sphinx-gallery[parallel]>=0.12.0",
"sphinx-tags>=0.4.0",
]

# pip requirements for all the CI builds
test = [
"black<24",
"certifi",
"coverage!=6.3",
"psutil; sys_platform != 'cygwin'",
"pytest!=4.6.0,!=5.4.0,!=8.1.0",
"pytest-cov",
"pytest-rerunfailures",
"pytest-timeout",
"pytest-xdist",
"pytest-xvfb",
"tornado",
]

# Extra pip requirements
test-extra = [
"ipykernel",
# jupyter/nbconvert#1970 for the 7.3 series exclusions
"nbconvert[execute]!=6.0.0,!=6.0.1,!=7.3.0,!=7.3.1",
"nbformat!=5.0.0,!=5.0.1",
"pandas!=0.25.0",
"pikepdf",
"pytz",
"pywin32; sys_platform == 'win32'",
"xarray",
]

# Extra pip requirements for the minimum-version CI run
test-minver = [
"contourpy==1.0.1",
"cycler==0.10",
"fonttools==4.22.0",
"importlib-resources==3.2.0",
"kiwisolver==1.3.2",
"meson-python==0.13.1",
"meson==1.1.0",
"numpy==1.25.0",
"packaging==20.0",
"pillow==9.0.1",
"pyparsing==3.0.0",
"pytest==7.0.0",
"python-dateutil==2.7",
# Test ipython/matplotlib-inline before backend mapping moved to mpl.
# This should be tested for a reasonably long transition period,
# but we will eventually remove the test when we no longer support
# ipython/matplotlib-inline versions from before the transition.
"ipython==7.29.0",
"ipykernel==5.5.6",
"matplotlib-inline<0.1.7",
]

# Extra pip requirements for the GitHub Actions mypy build
typing = [
"mypy>=1.9",
"typing-extensions>=4.6",
# Extra stubs distributed separately from the main pypi package
"pandas-stubs",
"types-pillow",
"types-python-dateutil",
"types-psutil",
"sphinx",
{include-group = "build"},
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Given the doc and test groups dont' depend on build, I don't think typing should either, and the build group can be additionally specified during the CI install stage.

]

[tool.meson-python.args]
install = ['--tags=data,python-runtime,runtime']

Expand Down
3 changes: 0 additions & 3 deletions 3 requirements/dev/build-requirements.txt

This file was deleted.

5 changes: 0 additions & 5 deletions 5 requirements/dev/dev-requirements.txt

This file was deleted.

26 changes: 0 additions & 26 deletions 26 requirements/doc/doc-requirements.txt

This file was deleted.

13 changes: 0 additions & 13 deletions 13 requirements/testing/all.txt

This file was deleted.

12 changes: 0 additions & 12 deletions 12 requirements/testing/extra.txt

This file was deleted.

Loading
Loading
Morty Proxy This is a proxified and sanitized view of the page, visit original site.