@@ -24,10 +24,9 @@ classifiers=[
2424
2525# When updating the list of dependencies, add an api_changes/development
2626# entry and also update the following places:
27+ # - the `build` and `test-minver` dependency groups below
2728# - lib/matplotlib/__init__.py (matplotlib._check_versions())
28- # - requirements/testing/minver.txt
2929# - doc/devel/dependencies.rst
30- # - .github/workflows/tests.yml
3130# - environment.yml
3231dependencies = [
3332 " contourpy >= 1.0.1" ,
@@ -43,20 +42,6 @@ dependencies = [
4342# Also keep in sync with find_program of meson.build.
4443requires-python = " >=3.11"
4544
46- [project .optional-dependencies ]
47- # Should be a copy of the build dependencies below.
48- dev = [
49- " meson-python>=0.13.1,!=0.17.*" ,
50- " pybind11>=2.13.2,!=2.13.3" ,
51- " setuptools_scm>=7" ,
52- # Not required by us but setuptools_scm without a version, cso _if_
53- # installed, then setuptools_scm 8 requires at least this version.
54- # Unfortunately, we can't do a sort of minimum-if-installed dependency, so
55- # we need to keep this for now until setuptools_scm _fully_ drops
56- # setuptools.
57- " setuptools>=64" ,
58- ]
59-
6045[project .urls ]
6146"Homepage" = " https://matplotlib.org"
6247"Download" = " https://matplotlib.org/stable/install/index.html"
@@ -68,7 +53,7 @@ dev = [
6853
6954[build-system ]
7055build-backend = " mesonpy"
71- # Also keep in sync with optional dependencies above .
56+ # Also keep in sync with dependency groups below .
7257requires = [
7358 # meson-python 0.17.x breaks symlinks in sdists. You can remove this pin if
7459 # you really need it and aren't using an sdist.
@@ -77,6 +62,129 @@ requires = [
7762 " setuptools_scm>=7" ,
7863]
7964
65+ [dependency-groups ]
66+ build = [
67+ # Should be the same as `[project] dependencies` above.
68+ " contourpy >= 1.0.1" ,
69+ " cycler >= 0.10" ,
70+ " fonttools >= 4.22.0" ,
71+ " kiwisolver >= 1.3.1" ,
72+ " numpy >= 1.25" ,
73+ " packaging >= 20.0" ,
74+ " pillow >= 9" ,
75+ " pyparsing >= 3" ,
76+ " python-dateutil >= 2.7" ,
77+
78+ # Should be the same as `[build-system] requires` above.
79+ " meson-python>=0.13.1,!=0.17.*" ,
80+ " pybind11>=2.13.2,!=2.13.3" ,
81+ " setuptools_scm>=7" ,
82+ # Not required by us but setuptools_scm without a version, so _if_
83+ # installed, then setuptools_scm 8 requires at least this version.
84+ # Unfortunately, we can't do a sort of minimum-if-installed dependency, so
85+ # we need to keep this for now until setuptools_scm _fully_ drops
86+ # setuptools.
87+ " setuptools>=64" ,
88+ ]
89+ dev = [
90+ {include-group = " build" },
91+ {include-group = " doc" },
92+ {include-group = " test" },
93+ {include-group = " test-extra" },
94+ " pre-commit" ,
95+ ]
96+ # Requirements for building docs
97+ #
98+ # You will first need a matching Matplotlib installation
99+ # e.g (from the Matplotlib root directory)
100+ # pip install --group build --no-build-isolation --editable .
101+ #
102+ # Install the documentation requirements with:
103+ # pip install --group doc
104+ #
105+ doc = [
106+ " sphinx>=5.1.0,!=6.1.2" ,
107+ " colorspacious" ,
108+ " ipython" ,
109+ " ipywidgets" ,
110+ " ipykernel" ,
111+ " numpydoc>=1.0" ,
112+ " pydata-sphinx-theme~=0.15.0" ,
113+ " mpl-sphinx-theme~=3.9.0" ,
114+ " pyyaml" ,
115+ " PyStemmer" ,
116+ " sphinxcontrib-svg2pdfconverter>=1.1.0" ,
117+ " sphinxcontrib-video>=0.2.1" ,
118+ " sphinx-copybutton" ,
119+ " sphinx-design" ,
120+ " sphinx-gallery[parallel]>=0.12.0" ,
121+ " sphinx-tags>=0.4.0" ,
122+ ]
123+
124+ # pip requirements for all the CI builds
125+ test = [
126+ " black<24" ,
127+ " certifi" ,
128+ " coverage!=6.3" ,
129+ " psutil; sys_platform != 'cygwin'" ,
130+ " pytest!=4.6.0,!=5.4.0,!=8.1.0" ,
131+ " pytest-cov" ,
132+ " pytest-rerunfailures" ,
133+ " pytest-timeout" ,
134+ " pytest-xdist" ,
135+ " pytest-xvfb" ,
136+ " tornado" ,
137+ ]
138+
139+ # Extra pip requirements
140+ test-extra = [
141+ " ipykernel" ,
142+ # jupyter/nbconvert#1970 for the 7.3 series exclusions
143+ " nbconvert[execute]!=6.0.0,!=6.0.1,!=7.3.0,!=7.3.1" ,
144+ " nbformat!=5.0.0,!=5.0.1" ,
145+ " pandas!=0.25.0" ,
146+ " pikepdf" ,
147+ " pytz" ,
148+ " pywin32; sys_platform == 'win32'" ,
149+ " xarray" ,
150+ ]
151+
152+ # Extra pip requirements for the minimum-version CI run
153+ test-minver = [
154+ " contourpy==1.0.1" ,
155+ " cycler==0.10" ,
156+ " fonttools==4.22.0" ,
157+ " importlib-resources==3.2.0" ,
158+ " kiwisolver==1.3.2" ,
159+ " meson-python==0.13.1" ,
160+ " meson==1.1.0" ,
161+ " numpy==1.25.0" ,
162+ " packaging==20.0" ,
163+ " pillow==9.0.1" ,
164+ " pyparsing==3.0.0" ,
165+ " pytest==7.0.0" ,
166+ " python-dateutil==2.7" ,
167+ # Test ipython/matplotlib-inline before backend mapping moved to mpl.
168+ # This should be tested for a reasonably long transition period,
169+ # but we will eventually remove the test when we no longer support
170+ # ipython/matplotlib-inline versions from before the transition.
171+ " ipython==7.29.0" ,
172+ " ipykernel==5.5.6" ,
173+ " matplotlib-inline<0.1.7" ,
174+ ]
175+
176+ # Extra pip requirements for the GitHub Actions mypy build
177+ typing = [
178+ " mypy>=1.9" ,
179+ " typing-extensions>=4.6" ,
180+ # Extra stubs distributed separately from the main pypi package
181+ " pandas-stubs" ,
182+ " types-pillow" ,
183+ " types-python-dateutil" ,
184+ " types-psutil" ,
185+ " sphinx" ,
186+ ]
187+
80188[tool .meson-python .args ]
81189install = [' --tags=data,python-runtime,runtime' ]
82190
0 commit comments