Skip to content
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
7 changes: 6 additions & 1 deletion .github/workflows/spec_zero.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,12 @@ jobs:
python-version: '3.12'
- run: pip install packaging requests tomlkit
- run: python tools/dev/spec_zero_update_versions.py
- run: |
- name: Create lockfile for old CI
# uv pip compile requires setting the python version explicitly in the command :(
# run: uv pip compile --python "3.10" --python-platform "x86_64-unknown-linux-gnu" --group test --resolution lowest-direct --format pylock.toml --output-file tools/pylock.old-ci.toml
run: uv export --format pylock.toml --group test --resolution lowest-direct --output-file tools/pylock.old-ci.toml
- name: check if files changed
run: |
git diff && git status --porcelain
if [[ $(git status --porcelain) ]]; then
echo "dirty=true" >> $GITHUB_OUTPUT
Expand Down
4 changes: 3 additions & 1 deletion .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -151,8 +151,10 @@ jobs:
create-args: >-
python=${{ env.PYTHON_VERSION }}
-v
if: ${{ !startswith(matrix.kind, 'pip') }}
if: matrix.kind == 'conda' || matrix.kind == 'mamba'
timeout-minutes: 20
- uses: astral-sh/setup-uv@v1
if: matrix.kind == 'old'
- run: bash ./tools/github_actions_dependencies.sh
# Minimal commands on Linux (macOS stalls)
- run: bash ./tools/get_minimal_commands.sh
Expand Down
20 changes: 10 additions & 10 deletions environment.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,32 +7,32 @@ dependencies:
- antio >=0.5.0
- curryreader >=0.1.2
- darkdetect
- decorator
- decorator >=3.5
- defusedxml
- dipy
- dipy >=0.8
- edfio >=0.4.10
- eeglabio
- filelock >=3.18.0
- h5io >=0.2.4
- h5py
- h5py >=2.4
- imageio >=2.6.1
- imageio-ffmpeg >=0.4.1
- ipyevents
- ipympl
- ipython !=8.7.0
- ipython >=2.0,!=8.7.0
- ipywidgets
- jinja2
- joblib
- jinja2 >=2.7
- joblib >=0.8
- jupyter
- lazy_loader >=0.3
- mamba
- matplotlib >=3.8
- mffpy >=0.5.7
- mne-qt-browser
- nibabel
- nibabel >=2.0
- nilearn
- nomkl
- numba
- numba >=0.35
- numpy >=1.26,<3
- openmeeg >=2.5.7
- packaging
Expand All @@ -45,7 +45,7 @@ dependencies:
- pymatreader
- PySide6 !=6.9.1
- python-neo
- python-picard
- python-picard >=0.4
- pyvista >=0.43
- pyvistaqt >=0.11
- qdarkstyle !=3.2.2
Expand All @@ -54,7 +54,7 @@ dependencies:
- scipy >=1.11
- sip
- snirf
- statsmodels
- statsmodels >=0.6
- threadpoolctl
- tqdm
- traitlets
Expand Down
43 changes: 23 additions & 20 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,21 +1,21 @@
[build-system]
build-backend = "hatchling.build"
requires = ["hatch-vcs", "hatchling"]
requires = ["hatch-vcs", "hatchling >= 1.27"]

[dependency-groups]
dev = ["pip >= 25.1", "rcssmin", {include-group = "doc"}, {include-group = "test_extra"}]
dev = ["pip >= 25.1", "rcssmin >= 1.1", {include-group = "doc"}, {include-group = "test_extra"}]
# Dependencies for building the documentation
doc = [
"graphviz",
"intersphinx_registry >= 0.2405.27",
"ipython != 8.7.0", # also in "full-no-qt" and "test"
"memory_profiler",
"memory_profiler >= 0.16",
"mne-bids",
"mne-connectivity",
"mne-gui-addons",
"neo",
"numpydoc",
"openneuro-py",
"numpydoc >= 0.5",
"openneuro-py >= 2020.1",
"psutil",
"pydata_sphinx_theme >= 0.15.2",
"pygments >= 2.13",
Expand All @@ -24,7 +24,7 @@ doc = [
"pyxdf",
"pyzmq != 24.0.0",
"scikit-learn",
"seaborn != 0.11.2",
"seaborn >= 0.5, != 0.11.2",
"selenium >= 4.27.1",
"sphinx >= 6",
"sphinx-design",
Expand All @@ -37,20 +37,20 @@ doc = [
test = [
"codespell",
"ipython != 8.7.0", # for testing notebook backend; also in "full-no-qt" and "doc"
"mypy",
"mypy >= 0.14",
"numpydoc",
"pre-commit",
"pytest >= 8.0",
"pytest-cov",
"pytest-qt",
"pytest-qt >= 1.1",
"pytest-rerunfailures",
"pytest-timeout",
"ruff",
"toml-sort",
"tomli; python_version<'3.11'",
"twine",
"vulture",
"wheel",
"wheel >= 0.21",
]
# Dependencies for being able to run additional tests (rare/CIs/advanced devs)
# Changes here should be reflected in the mne/utils/config.py dev dependencies section
Expand All @@ -64,7 +64,7 @@ test_extra = [
"nbclient",
"nbformat",
"neo",
"nitime",
"nitime >= 0.7",
"pybv",
"snirf",
"sphinx-gallery",
Expand All @@ -90,8 +90,8 @@ classifiers = [
"Topic :: Software Development",
]
dependencies = [
"decorator",
"jinja2",
"decorator >= 3.5",
"jinja2 >= 2.7",
"lazy_loader >= 0.3",
"matplotlib >= 3.8", # released 2023-09-15, will become 3.9 on 2026-05-15
"numpy >= 1.26, < 3", # released 2023-09-16, will become 2.0 on 2026-06-16
Expand All @@ -117,6 +117,9 @@ maintainers = [{email = "dan@mccloy.info", name = "Dan McCloy"}]
name = "mne"
readme = {content-type = "text/x-rst", file = "README.rst"}
requires-python = ">= 3.10"
# ↑↑↑↑↑↑↑↑↑↑↑ when this changes, bump the `--python-version` in the `uv pip compile ...`
# command in `.github/workflows/spec_zero.yaml` (astral-sh/uv/#16333), and also the
# `--python` version in the `uv venv` command in `tools/github_actions_dependencies.sh`
scripts = {mne = "mne.commands.utils:main"}

[project.optional-dependencies]
Expand All @@ -133,42 +136,42 @@ full-no-qt = [
"curryreader >= 0.1.2",
"darkdetect",
"defusedxml",
"dipy",
"dipy >= 0.8",
"edfio >= 0.4.10",
"eeglabio",
"filelock >= 3.18.0",
"h5py",
"h5py >= 2.4",
"imageio >= 2.6.1",
"imageio-ffmpeg >= 0.4.1",
"ipyevents",
"ipympl",
"ipython != 8.7.0", # for notebook backend; also in "doc" and "test"
"ipython >= 2.0, != 8.7.0", # for notebook backend; also in "doc" and "test"
"ipywidgets",
"joblib",
"joblib >= 0.8",
"jupyter",
"mffpy >= 0.5.7",
"mne-qt-browser",
"mne[hdf5]",
"neo",
"nest-asyncio2",
"nibabel",
"nibabel >= 2.0",
"nilearn",
"numba",
"numba >= 0.35",
"openmeeg >= 2.5.7",
"pandas >= 2.1", # released 2023-08-30, will become 2.2 on 2026-01-19
"pillow", # for `Brain.save_image` and `mne.Report`
"pyarrow", # only needed to avoid a deprecation warning in pandas
"pybv",
"pyobjc-framework-Cocoa >= 5.2.0; platform_system == 'Darwin'",
"python-picard",
"python-picard >= 0.4",
"pyvista >= 0.43", # released 2023-12-07, will become 0.44 on 2026-07-07
"pyvistaqt >= 0.11", # released 2023-06-30, no newer version available
"qdarkstyle != 3.2.2",
"qtpy",
"scikit-learn >= 1.3", # released 2023-06-30, will become 1.4 on 2026-01-17
"sip",
"snirf",
"statsmodels",
"statsmodels >= 0.6",
"threadpoolctl",
"traitlets",
"trame",
Expand Down
7 changes: 7 additions & 0 deletions tools/github_actions_dependencies.sh
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,13 @@ if [ ! -z "$CONDA_ENV" ]; then
GROUP="test_extra"
EXTRAS="[hdf5]"
fi
elif [[ ${MNE_CI_KIND} == "old" ]]; then
GROUP="" # group "test" already included when pylock file generated
EXTRAS=""
STD_ARGS="--progress-bar off"
uv venv --python 3.10
uv pip sync ${SCRIPT_DIR}/pylock.ci-old.toml
source .venv/bin/activate
elif [[ "${MNE_CI_KIND}" == "pip" ]]; then
GROUP="test_extra"
EXTRAS="[full-pyside6]"
Expand Down
11 changes: 5 additions & 6 deletions tools/github_actions_env_vars.sh
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,13 @@ if [[ "$MNE_CI_KIND" == "pip"* ]]; then
else
echo "MNE_QT_BACKEND=PySide6" | tee -a $GITHUB_ENV
fi
elif [[ "$MNE_CI_KIND" == "old" ]]; then
echo "MNE_IGNORE_WARNINGS_IN_TESTS=true" | tee -a $GITHUB_ENV
echo "MNE_SKIP_NETWORK_TESTS=1" | tee -a $GITHUB_ENV
echo "MNE_QT_BACKEND=PyQt5" | tee -a $GITHUB_ENV
else # conda-like
echo "Setting conda env vars for $MNE_CI_KIND"
if [[ "$MNE_CI_KIND" == "old" ]]; then
echo "CONDA_ENV=tools/environment_old.yml" | tee -a $GITHUB_ENV
echo "MNE_IGNORE_WARNINGS_IN_TESTS=true" | tee -a $GITHUB_ENV
echo "MNE_SKIP_NETWORK_TESTS=1" | tee -a $GITHUB_ENV
echo "MNE_QT_BACKEND=PyQt5" | tee -a $GITHUB_ENV
elif [[ "$MNE_CI_KIND" == "minimal" ]]; then
if [[ "$MNE_CI_KIND" == "minimal" ]]; then
echo "CONDA_ENV=tools/environment_minimal.yml" | tee -a $GITHUB_ENV
echo "MNE_QT_BACKEND=PySide6" | tee -a $GITHUB_ENV
else # conda, mamba (use warning level for completeness)
Expand Down
Loading
Loading