WIP Rework mne bids path match #5668
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: test_suite | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event.number }}-${{ github.event.ref }} | |
cancel-in-progress: true | |
on: | |
push: | |
branches: ['**'] | |
tags: ['**'] | |
pull_request: | |
branches: ['**'] | |
schedule: | |
- cron: "0 4 * * *" | |
jobs: | |
style: | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
python-version: ["3.12"] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
fetch-tags: true | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- uses: actions/cache@v4 | |
with: | |
path: ${{ env.pythonLocation }} | |
key: style-0-${{ env.pythonLocation }}-${{ hashFiles('pyproject.toml') }} | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
python -m pip install ruff | |
- name: Display versions and environment information | |
run: | | |
python --version | |
which python | |
- name: Run style & documentation tests | |
run: make pep | |
build: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest] | |
python-version: ["3.10", "3.12"] # Oldest and newest supported versions | |
steps: | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- uses: actions/cache@v4 | |
with: | |
path: ${{ env.pythonLocation }} | |
key: build-1-${{ env.pythonLocation }}-${{ hashFiles('pyproject.toml') }} | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
python -m pip install build twine | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
fetch-tags: true | |
- name: Build sdist | |
run: python -m build --sdist | |
- name: Check sdist | |
run: twine check --strict dist/* | |
- name: Install sdist | |
run: python -m pip install ./dist/mne_bids-* | |
- name: Clean up working directory | |
run: rm -rf ./* | |
- name: Try importing mne_bids | |
run: python -c 'import mne_bids; print(mne_bids.__version__)' | |
- name: Try cli mne_bids | |
run: mne_bids --version | |
- name: Remove sdist install | |
run: python -m pip uninstall -y mne-bids | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
fetch-tags: true | |
- name: Build wheel | |
run: python -m build --wheel | |
- name: Check wheel | |
run: twine check --strict dist/* | |
- name: Install wheel | |
run: python -m pip install ./dist/mne_bids-*.whl | |
- name: Clean up working directory | |
run: rm -rf ./* | |
- name: Try importing mne_bids | |
run: python -c 'import mne_bids; print(mne_bids.__version__)' | |
- name: Try cli mne_bids | |
run: mne_bids --version | |
- name: Remove wheel install | |
run: python -m pip uninstall -y mne-bids | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
fetch-tags: true | |
- name: Test extras install | |
run: | | |
python -m pip install .[full] | |
python -c 'import mne_bids; print(mne_bids.__version__)' | |
python -c 'import defusedxml; print(defusedxml.__version__)' | |
python -c 'import edfio; print(edfio.__version__)' | |
python -c 'import eeglabio; print(eeglabio.__version__)' | |
python -c 'import matplotlib; print(matplotlib.__version__)' | |
python -c 'import nibabel; print(nibabel.__version__)' | |
python -c 'import pandas; print(pandas.__version__)' | |
python -c 'import pybv; print(pybv.__version__)' | |
python -c 'import pymatreader; print(pymatreader.__version__)' | |
test: | |
# For GitHub "required" CI checks, add in branch protection: | |
# | |
# 8 checks: | |
# for each machine type (ubuntu, macos, macos-13, windows): | |
# (NOTE: macos-13=x86_64, macos>13=arm64) | |
# 3.10 / mne-stable / full / validator-stable | |
# 3.12 / mne-stable / full / validator-stable | |
# | |
# 3 additional checks with alternative MNE-Python and BIDS validator versions: | |
# ubuntu / 3.12 / mne-main / full / validator-main | |
# ubuntu / 3.10 / mne-prev / full / validator-stable | |
# ubuntu / 3.12 / mne-stable / minimal / validator-stable | |
timeout-minutes: 60 | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest, macos-latest, macos-13, windows-latest] | |
python-version: ["3.10", "3.12"] # Oldest and newest supported versions | |
mne-version: [mne-stable] | |
mne-bids-install: [full] | |
bids-validator-version: [validator-stable] | |
include: | |
# special test runs running only on single CI systems to save resources | |
# Test development versions | |
- os: ubuntu-latest | |
python-version: "3.12" | |
mne-version: mne-main | |
mne-bids-install: full | |
bids-validator-version: validator-main | |
# Test previous MNE stable version | |
- os: ubuntu-latest | |
python-version: "3.10" | |
mne-version: mne-prev-stable | |
mne-bids-install: full | |
bids-validator-version: validator-stable | |
# Test minimal mne-bids install | |
- os: ubuntu-latest | |
python-version: "3.12" | |
mne-version: mne-stable | |
mne-bids-install: minimal | |
bids-validator-version: validator-stable | |
env: | |
TZ: Europe/Berlin | |
FORCE_COLOR: true | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
fetch-tags: true | |
- name: Set up Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 20 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Restore cache | |
uses: actions/cache@v4 | |
with: | |
path: ${{ env.pythonLocation }} | |
key: test-0-${{ env.pythonLocation }}-${{ env.os }}-${{ hashFiles('pyproject.toml') }} | |
- name: Install Python dependencies using pip | |
# This would be nicer once this feature is implemented: https://github.com/pypa/pip/issues/11440 | |
run: | | |
python -m pip install --upgrade pip | |
python -m pip install -e .[test] | |
- name: Install MNE (stable) | |
if: matrix.mne-version == 'mne-stable' | |
run: | | |
git clone --single-branch --branch maint/1.8 https://github.com/mne-tools/mne-python.git | |
python -m pip install -e ./mne-python | |
- name: Install MNE (previous stable) | |
if: matrix.mne-version == 'mne-prev-stable' | |
# Have to install NumPy<2.1 here because of a change in positional arg handling + MNE 1.7 | |
# XXX: drop when mne < 1.8 is no longer supported | |
run: | | |
git clone --single-branch --branch maint/1.7 https://github.com/mne-tools/mne-python.git | |
python -m pip install -e ./mne-python "numpy<2.1" | |
- name: Install MNE (main) | |
if: matrix.mne-version == 'mne-main' | |
run: | | |
git clone --single-branch --branch main https://github.com/mne-tools/mne-python.git | |
python -m pip install -e ./mne-python | |
- name: Install BIDS validator (stable) | |
if: matrix.bids-validator-version == 'validator-stable' | |
run: | | |
npm install -g bids-validator | |
- name: Download BIDS validator (main) | |
if: matrix.bids-validator-version == 'validator-main' | |
run: | | |
pushd .. | |
git clone --depth 1 https://github.com/bids-standard/legacy-validator | |
popd | |
- name: Install BIDS validator (main) | |
if: matrix.bids-validator-version == 'validator-main' | |
run: | | |
pushd ../legacy-validator | |
# Generate the full development node_modules | |
npm install | |
# Build & bundle the bids-validator CLI package | |
npm -w bids-validator run build | |
# Generate a package to install globally | |
npm -w bids-validator pack | |
# Install the package globally | |
npm install -g bids-validator-*.tgz | |
popd | |
- name: Display versions and environment information | |
run: | | |
echo $TZ | |
date | |
echo "npm"; npm --version | |
echo "node"; node --version | |
echo "bids-validator"; bids-validator --version | |
echo "python"; python --version | |
which python | |
mne sys_info | |
- name: Install MNE-BIDS (minimal) | |
if: matrix.mne-bids-install == 'minimal' | |
run: python -m pip install -e . | |
- name: Install MNE-BIDS (full) | |
if: matrix.mne-bids-install == 'full' | |
run: python -m pip install -e .[full] | |
# Only run on a limited set of jobs | |
- name: Run pytest without testing data | |
run: make test | |
if: ${{ matrix.python-version == '3.12' && matrix.os == 'ubuntu-latest' && matrix.mne-version == 'mne-main' }} | |
# Get testing data | |
- run: ./tools/get_testing_version.sh | |
working-directory: mne-python | |
shell: bash | |
name: 'Get testing version' | |
- uses: actions/cache@v4 | |
with: | |
key: ${{ env.TESTING_VERSION }} | |
path: ~/mne_data | |
name: 'Cache testing data' | |
- run: ./tools/github_actions_download.sh | |
shell: bash | |
working-directory: mne-python | |
- name: Run pytest | |
shell: bash | |
run: make test | |
- name: Upload coverage stats to codecov | |
uses: codecov/codecov-action@v5 | |
with: | |
files: ./coverage.xml | |
token: ${{ secrets.CODECOV_TOKEN }} | |
verbose: true | |
build_docs: | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
python-version: ["3.12"] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
fetch-tags: true | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- uses: actions/cache@v4 | |
with: | |
path: ${{ env.pythonLocation }} | |
key: build_docs-1-${{ env.pythonLocation }}-${{ hashFiles('pyproject.toml') }} | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
python -m pip install --upgrade https://github.com/mne-tools/mne-python/archive/refs/heads/main.zip | |
python -m pip install -e .[test,doc] | |
- name: Build the documentation | |
run: | | |
make build-doc | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: documentation | |
path: doc/_build/html | |
include-hidden-files: true |