11[build-system ]
22build-backend = " hatchling.build"
3- requires = [" hatch-vcs" , " hatchling" ]
3+ requires = [" hatch-vcs" , " hatchling >= 1.27 " ]
44
55[dependency-groups ]
6- dev = [" pip >= 25.1" , " rcssmin" , {include-group = " doc" }, {include-group = " test_extra" }]
6+ dev = [" pip >= 25.1" , " rcssmin >= 1.1 " , {include-group = " doc" }, {include-group = " test_extra" }]
77# Dependencies for building the documentation
88doc = [
99 " graphviz" ,
1010 " intersphinx_registry >= 0.2405.27" ,
1111 " ipython != 8.7.0" , # also in "full-no-qt" and "test"
12- " memory_profiler" ,
12+ " memory_profiler >= 0.16 " ,
1313 " mne-bids" ,
1414 " mne-connectivity" ,
1515 " mne-gui-addons" ,
1616 " neo" ,
17- " numpydoc" ,
18- " openneuro-py" ,
17+ " numpydoc >= 0.5 " ,
18+ " openneuro-py >= 2020.1 " ,
1919 " psutil" ,
2020 " pydata_sphinx_theme >= 0.15.2" ,
2121 " pygments >= 2.13" ,
2222 " pymef" ,
2323 " pytest" ,
24- " pyvistaqt" ,
24+ " pyvistaqt >= 0.11 " , # released 2023-06-30, no newer version available
2525 " pyxdf" ,
2626 " pyzmq != 24.0.0" ,
27- " scikit-learn" ,
28- " seaborn != 0.11.2" ,
27+ " scikit-learn >= 1.4 " , # released 2024-01-18, will become 1.5 on 2026-05-21
28+ " seaborn >= 0.5, != 0.11.2" ,
2929 " selenium >= 4.27.1" ,
3030 " sphinx >= 6" ,
3131 " sphinx-design" ,
3232 " sphinx-gallery >= 0.16" ,
3333 " sphinx_copybutton" ,
3434 " sphinxcontrib-bibtex >= 2.5" ,
35- " sphinxcontrib-towncrier >=0.5.0a0" ,
35+ " sphinxcontrib-towncrier >= 0.5.0a0" ,
3636 " sphinxcontrib-youtube" ,
3737]
38+ # Dependencies in a separate group for uv lockfile generation, currently only used for
39+ # the 'old' environment CI test run
40+ lockfile_extras = [
41+ " pandas >= 2.2" , # released 2024-01-20, will become 2.3 on 2027-06-05
42+ " scikit-learn >= 1.4" , # released 2024-01-18, will become 1.5 on 2026-05-21
43+ ]
3844test = [
3945 " codespell" ,
40- " ipython != 8.7.0" , # for testing notebook backend; also in "full-no-qt" and "doc"
41- " mypy" ,
42- " numpydoc" ,
46+ " ipython >= 8.20" , # for testing notebook backend; also in "full-no-qt" and "doc"
47+ " mypy >= 0.14" ,
48+ " numpydoc >= 1.6" ,
49+ " pillow >= 10.2" ,
4350 " pre-commit" ,
4451 " pytest >= 8.0" ,
45- " pytest-cov" ,
46- " pytest-qt" ,
52+ " pytest-cov >= 4.1 " ,
53+ " pytest-qt >= 4.3 " ,
4754 " pytest-rerunfailures" ,
48- " pytest-timeout" ,
49- " ruff" ,
55+ " pytest-timeout >= 2.2 " ,
56+ " ruff >= 0.1 " ,
5057 " toml-sort" ,
51- " tomli; python_version< '3.11'" ,
58+ " tomli; python_version < '3.11'" ,
5259 " twine" ,
5360 " vulture" ,
54- " wheel" ,
61+ " wheel >= 0.21 " ,
5562]
5663# Dependencies for being able to run additional tests (rare/CIs/advanced devs)
5764# Changes here should be reflected in the mne/utils/config.py dev dependencies section
@@ -65,7 +72,7 @@ test_extra = [
6572 " nbclient" ,
6673 " nbformat" ,
6774 " neo" ,
68- " nitime" ,
75+ " nitime >= 0.7 " ,
6976 " pybv" ,
7077 " pymef" ,
7178 " snirf" ,
@@ -92,15 +99,15 @@ classifiers = [
9299 " Topic :: Software Development" ,
93100]
94101dependencies = [
95- " decorator" ,
96- " jinja2" ,
102+ " decorator >= 5.1 " ,
103+ " jinja2 >= 3.1 " ,
97104 " lazy_loader >= 0.3" ,
98105 " matplotlib >= 3.8" , # released 2023-09-15, will become 3.9 on 2026-05-15
99106 " numpy >= 1.26, < 3" , # released 2023-09-16, will become 2.0 on 2026-06-16
100107 " packaging" ,
101108 " pooch >= 1.5" ,
102109 " scipy >= 1.12" , # released 2024-01-20, will become 1.13 on 2026-04-02
103- " tqdm" ,
110+ " tqdm >= 4.66 " ,
104111]
105112description = " MNE-Python project for MEG and EEG data analysis."
106113dynamic = [" version" ]
@@ -119,6 +126,9 @@ maintainers = [{email = "dan@mccloy.info", name = "Dan McCloy"}]
119126name = " mne"
120127readme = {content-type = " text/x-rst" , file = " README.rst" }
121128requires-python = " >= 3.10"
129+ # ↑↑↑↑↑↑↑↑↑↑↑ when this changes, bump the `--python-version` in the `uv pip compile ...`
130+ # command in `.github/workflows/spec_zero.yaml` (astral-sh/uv/#16333), and also the
131+ # `python` version for the `kind: old` matrix entry in `.github/workflows/tests.yaml`
122132scripts = {mne = " mne.commands.utils:main" }
123133
124134[project .optional-dependencies ]
@@ -135,43 +145,43 @@ full-no-qt = [
135145 " curryreader >= 0.1.2" ,
136146 " darkdetect" ,
137147 " defusedxml" ,
138- " dipy" ,
148+ " dipy >= 0.8 " ,
139149 " edfio >= 0.4.10" ,
140150 " eeglabio" ,
141151 " filelock >= 3.18.0" ,
142- " h5py" ,
152+ " h5py >= 2.4 " ,
143153 " imageio >= 2.6.1" ,
144154 " imageio-ffmpeg >= 0.4.1" ,
145155 " ipyevents" ,
146156 " ipympl" ,
147- " ipython != 8.7.0" , # for notebook backend; also in "doc" and "test"
157+ " ipython >= 2.0, != 8.7.0" , # for notebook backend; also in "doc" and "test"
148158 " ipywidgets" ,
149- " joblib" ,
159+ " joblib >= 0.8 " ,
150160 " jupyter" ,
151161 " mffpy >= 0.5.7" ,
152162 " mne-qt-browser" ,
153163 " mne[hdf5]" ,
154164 " neo" ,
155165 " nest-asyncio2" ,
156- " nibabel" ,
166+ " nibabel >= 2.0 " ,
157167 " nilearn" ,
158- " numba" ,
168+ " numba >= 0.35 " ,
159169 " openmeeg >= 2.5.7" ,
160170 " pandas >= 2.2" , # released 2024-01-20, will become 2.3 on 2027-06-05
161171 " pillow" , # for `Brain.save_image` and `mne.Report`
162172 " pyarrow" , # only needed to avoid a deprecation warning in pandas
163173 " pybv" ,
164174 " pymef" ,
165175 " pyobjc-framework-Cocoa >= 5.2.0; platform_system == 'Darwin'" ,
166- " python-picard" ,
176+ " python-picard >= 0.4 " ,
167177 " pyvista >= 0.43" , # released 2023-12-07, will become 0.44 on 2026-07-07
168178 " pyvistaqt >= 0.11" , # released 2023-06-30, no newer version available
169179 " qdarkstyle != 3.2.2" ,
170180 " qtpy" ,
171181 " scikit-learn >= 1.4" , # released 2024-01-18, will become 1.5 on 2026-05-21
172182 " sip" ,
173183 " snirf" ,
174- " statsmodels" ,
184+ " statsmodels >= 0.6 " ,
175185 " threadpoolctl" ,
176186 " traitlets" ,
177187 " trame" ,
0 commit comments