From 37ff4b358d16e3915486df45101b291f9b833955 Mon Sep 17 00:00:00 2001 From: Scott Huberty Date: Sun, 22 Feb 2026 14:01:00 -0800 Subject: [PATCH 01/26] WIP: Add pixi CI runner --- .github/workflows/tests.yml | 23 ++++++++++++++++++++--- tools/github_actions_dependencies.sh | 3 +++ tools/github_actions_env_vars.sh | 9 ++++++++- 3 files changed, 31 insertions(+), 4 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 14c79460e2f..be2cd1bf42a 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -81,7 +81,7 @@ jobs: kind: mamba - os: macos-15-intel # intel: Sequoia python: '3.13' - kind: mamba + kind: pixi - os: windows-latest python: '3.11' kind: mamba @@ -123,6 +123,13 @@ jobs: with: python-version: ${{ matrix.python }} if: startswith(matrix.kind, 'pip') + - uses: prefix-dev/setup-pixi@v0.9.4 + with: + activate-environment: true + cache: true # skip installation, use cached environment built from pixi.lock + # suggested constraint of cache-use to main, so we dont blow GH's cache limit. + cache-write: ${{ github.event_name == 'push' && github.ref_name == 'main' }} + if: matrix.kind == 'pixi' # Python (if conda) - name: Fixes for conda run: | @@ -142,7 +149,7 @@ jobs: echo "MNE_IS_OSMESA=true" | tee -a $GITHUB_ENV fi fi - if: matrix.kind == 'conda' || matrix.kind == 'mamba' + if: matrix.kind == 'conda' || matrix.kind == 'mamba' || matrix.kind == "pixi" - uses: mamba-org/setup-micromamba@v2 with: environment-file: ${{ env.CONDA_ENV }} @@ -151,8 +158,18 @@ jobs: create-args: >- python=${{ env.PYTHON_VERSION }} -v - if: ${{ !startswith(matrix.kind, 'pip') }} + if: ${{ !startswith(matrix.kind, 'pip') && matrix.kind != 'pixi' }} timeout-minutes: 20 + - name: Create pixi.toml + if: matrix.kind == 'pixi' + # environment.yml specifies the same python version as macos-intel CI (3.13) + # but let's expliclty set the version, in case these ever diverge in the future? + run: | + pixi init --import environment.yml + pixi add "python ==${{ matrix.python }}" + - name: Setup pixi environment + if: matrix.kind == 'pixi' + run: pixi install - run: bash ./tools/github_actions_dependencies.sh - run: python ./tools/github_actions_check_old.py if: matrix.kind == 'old' diff --git a/tools/github_actions_dependencies.sh b/tools/github_actions_dependencies.sh index 8835270734b..27a8795d1d7 100755 --- a/tools/github_actions_dependencies.sh +++ b/tools/github_actions_dependencies.sh @@ -25,6 +25,9 @@ if [ ! -z "$CONDA_ENV" ]; then GROUP="test_extra" EXTRAS="[hdf5]" fi +elif [[ "${MNE_CI_KIND}" == "pixi" ]]; then + GROUP="test_extra" + EXTRAS="[hdf5]" elif [[ "${MNE_CI_KIND}" == "pip" ]]; then GROUP="test_extra" EXTRAS="[full-pyside6]" diff --git a/tools/github_actions_env_vars.sh b/tools/github_actions_env_vars.sh index 37875308995..ee568976184 100755 --- a/tools/github_actions_env_vars.sh +++ b/tools/github_actions_env_vars.sh @@ -24,7 +24,14 @@ else # conda-like 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) - echo "CONDA_ENV=environment.yml" | tee -a $GITHUB_ENV + # Pixi is treated as Conda-like (it uses environment.yaml) but it should not export + # CONDA_ENV because github_actions_dependencies.sh uses the existence of the + # CONDA_ENV environment variable to assume that the conda/mamba command is on + # PATH, which it is not for pixi jobs. + if [[ "$MNE_CI_KIND" != "pixi" ]]; then + echo "CONDA_ENV=environment.yml" | tee -a $GITHUB_ENV + fi + echo "MNE_LOGGING_LEVEL=warning" | tee -a $GITHUB_ENV echo "MNE_QT_BACKEND=PySide6" | tee -a $GITHUB_ENV # TODO: Also need "|unreliable on GitHub Actions conda" on macOS, but omit for now to make sure the failure actually shows up From 9bf2882bbc0f58bd7bef5ab101cbcb26d8ca61d7 Mon Sep 17 00:00:00 2001 From: Scott Huberty Date: Sun, 22 Feb 2026 14:05:17 -0800 Subject: [PATCH 02/26] FIX: syntax --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index be2cd1bf42a..0fc7b68e138 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -149,7 +149,7 @@ jobs: echo "MNE_IS_OSMESA=true" | tee -a $GITHUB_ENV fi fi - if: matrix.kind == 'conda' || matrix.kind == 'mamba' || matrix.kind == "pixi" + if: matrix.kind == 'conda' || matrix.kind == 'mamba' || matrix.kind == 'pixi' - uses: mamba-org/setup-micromamba@v2 with: environment-file: ${{ env.CONDA_ENV }} From e736f17df1adf303ba1b0e56c7511f40fb491716 Mon Sep 17 00:00:00 2001 From: Scott Huberty Date: Sun, 22 Feb 2026 14:10:40 -0800 Subject: [PATCH 03/26] TST: test branch --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 0fc7b68e138..822d6f0fbd0 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -4,7 +4,7 @@ concurrency: cancel-in-progress: true on: # yamllint disable-line rule:truthy push: - branches: ["main", "maint/*"] + branches: ["main", "maint/*", "pixi"] pull_request: branches: ["main", "maint/*"] # adapted from spyder-ide/spyder From 07ff86e22a55cfdeb9762c14fceb94e658c4f12b Mon Sep 17 00:00:00 2001 From: Scott Huberty Date: Sun, 22 Feb 2026 14:17:40 -0800 Subject: [PATCH 04/26] FIX: skip cache for now --- .github/workflows/tests.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 822d6f0fbd0..49e09ee2c07 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -126,9 +126,7 @@ jobs: - uses: prefix-dev/setup-pixi@v0.9.4 with: activate-environment: true - cache: true # skip installation, use cached environment built from pixi.lock - # suggested constraint of cache-use to main, so we dont blow GH's cache limit. - cache-write: ${{ github.event_name == 'push' && github.ref_name == 'main' }} + cache: false # caching depends on existence of a pixi.lock file if: matrix.kind == 'pixi' # Python (if conda) - name: Fixes for conda From 7fa7b7d8d57948f4a2ea8b0b892a12c8fee68582 Mon Sep 17 00:00:00 2001 From: Scott Huberty Date: Sun, 22 Feb 2026 14:25:04 -0800 Subject: [PATCH 05/26] FIX: create pixi.toml --- .github/workflows/tests.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 49e09ee2c07..06454c03d6d 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -163,8 +163,8 @@ jobs: # environment.yml specifies the same python version as macos-intel CI (3.13) # but let's expliclty set the version, in case these ever diverge in the future? run: | - pixi init --import environment.yml - pixi add "python ==${{ matrix.python }}" + pixi init --format pixi --import environment.yml + pixi add "python==${{ matrix.python }}" - name: Setup pixi environment if: matrix.kind == 'pixi' run: pixi install From c26c307382885844b5e22e5c8147078db7cea9d1 Mon Sep 17 00:00:00 2001 From: Scott Huberty Date: Sun, 22 Feb 2026 14:34:40 -0800 Subject: [PATCH 06/26] check --- .github/workflows/tests.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 06454c03d6d..0b780dc7380 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -165,6 +165,7 @@ jobs: run: | pixi init --format pixi --import environment.yml pixi add "python==${{ matrix.python }}" + ls -la pixi.toml - name: Setup pixi environment if: matrix.kind == 'pixi' run: pixi install From 1ff86249a6bd6f54f15cc202053a12076ccf9832 Mon Sep 17 00:00:00 2001 From: Scott Huberty Date: Sun, 22 Feb 2026 14:45:50 -0800 Subject: [PATCH 07/26] try --- .github/workflows/tests.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 0b780dc7380..8bcd1feb03e 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -125,7 +125,7 @@ jobs: if: startswith(matrix.kind, 'pip') - uses: prefix-dev/setup-pixi@v0.9.4 with: - activate-environment: true + activate-environment: false cache: false # caching depends on existence of a pixi.lock file if: matrix.kind == 'pixi' # Python (if conda) @@ -164,7 +164,7 @@ jobs: # but let's expliclty set the version, in case these ever diverge in the future? run: | pixi init --format pixi --import environment.yml - pixi add "python==${{ matrix.python }}" + pixi add "python==${{ matrix.python }}" --no-install ls -la pixi.toml - name: Setup pixi environment if: matrix.kind == 'pixi' From 03b2f2940bd9cb6fa8d35e0b50cd7afffcf00572 Mon Sep 17 00:00:00 2001 From: Scott Huberty Date: Sun, 22 Feb 2026 14:57:52 -0800 Subject: [PATCH 08/26] dont install --- .github/workflows/tests.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 8bcd1feb03e..226c4b4c0a9 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -125,7 +125,8 @@ jobs: if: startswith(matrix.kind, 'pip') - uses: prefix-dev/setup-pixi@v0.9.4 with: - activate-environment: false + activate-environment: true + run-install: false cache: false # caching depends on existence of a pixi.lock file if: matrix.kind == 'pixi' # Python (if conda) From 8b73058dccb2cd5397ca8510a15d0f9fbac31b9b Mon Sep 17 00:00:00 2001 From: Scott Huberty Date: Sun, 22 Feb 2026 15:08:48 -0800 Subject: [PATCH 09/26] try again --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 226c4b4c0a9..aeeb452b3bd 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -125,7 +125,7 @@ jobs: if: startswith(matrix.kind, 'pip') - uses: prefix-dev/setup-pixi@v0.9.4 with: - activate-environment: true + activate-environment: false run-install: false cache: false # caching depends on existence of a pixi.lock file if: matrix.kind == 'pixi' From 962a49e17a0d147fa1a69ffe44b5032c76add15f Mon Sep 17 00:00:00 2001 From: Scott Huberty Date: Sun, 22 Feb 2026 15:16:29 -0800 Subject: [PATCH 10/26] activate environment --- .github/workflows/tests.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index aeeb452b3bd..a482ec666d7 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -170,6 +170,13 @@ jobs: - name: Setup pixi environment if: matrix.kind == 'pixi' run: pixi install + # Now run setup-pixi again in order to activate the enviroment + - uses: prefix-dev/setup-pixi@v0.9.4 + if: matrix.kind == 'pixi' + with: + run-install: false + activate-environment: true + cache: false - run: bash ./tools/github_actions_dependencies.sh - run: python ./tools/github_actions_check_old.py if: matrix.kind == 'old' From 05359d8436057e6f31440aa23a104ffa272d189f Mon Sep 17 00:00:00 2001 From: Scott Huberty Date: Sun, 22 Feb 2026 15:19:06 -0800 Subject: [PATCH 11/26] FIX: rm cruft --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index a482ec666d7..ccb53218518 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -164,7 +164,7 @@ jobs: # environment.yml specifies the same python version as macos-intel CI (3.13) # but let's expliclty set the version, in case these ever diverge in the future? run: | - pixi init --format pixi --import environment.yml + pixi init --import environment.yml pixi add "python==${{ matrix.python }}" --no-install ls -la pixi.toml - name: Setup pixi environment From 460c24a198c62308248470aa01367e4fb75ea6a7 Mon Sep 17 00:00:00 2001 From: Scott Huberty Date: Sun, 22 Feb 2026 17:46:56 -0800 Subject: [PATCH 12/26] debug --- .github/workflows/tests.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index ccb53218518..9e211efe07f 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -177,6 +177,12 @@ jobs: run-install: false activate-environment: true cache: false + - name: Debug Qt availability + if: matrix.kind == 'pixi' + run: | + python -c "import sys; print(sys.executable)" + python -c "import importlib; print('PySide6', importlib.util.find_spec('PySide6'))" + pixi list | grep -i side || true - run: bash ./tools/github_actions_dependencies.sh - run: python ./tools/github_actions_check_old.py if: matrix.kind == 'old' From 5a16daac041aabd6c696f0e7f025de0e2775b8a1 Mon Sep 17 00:00:00 2001 From: Scott Huberty Date: Sun, 22 Feb 2026 17:51:17 -0800 Subject: [PATCH 13/26] arg --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 9e211efe07f..9dd15bdec8c 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -181,7 +181,7 @@ jobs: if: matrix.kind == 'pixi' run: | python -c "import sys; print(sys.executable)" - python -c "import importlib; print('PySide6', importlib.util.find_spec('PySide6'))" + python -c "from importlib import util; print('PySide6', util.find_spec('PySide6'))" pixi list | grep -i side || true - run: bash ./tools/github_actions_dependencies.sh - run: python ./tools/github_actions_check_old.py From dc25bece7cbae1387203264f1846d040936b60d6 Mon Sep 17 00:00:00 2001 From: Scott Huberty Date: Sun, 22 Feb 2026 20:02:49 -0800 Subject: [PATCH 14/26] more debug --- .github/workflows/tests.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 9dd15bdec8c..e483ceafbe8 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -202,6 +202,11 @@ jobs: key: ${{ env.TESTING_VERSION }} path: ~/mne_data - run: bash ./tools/github_actions_download.sh + - name: Debug interpreter + Qt + if: matrix.kind == 'pixi' + run: | + pixi run python -c "import sys; print(sys.executable)" + pixi run python -c "import PySide6; print(PySide6.__version__)" - run: bash ./tools/github_actions_test.sh # for some reason on macOS we need to run "bash X" in order for a failed test run to show up - uses: codecov/codecov-action@v5 with: From d1c45e24aa52f1fe61e0429e7543cf3f5756ced9 Mon Sep 17 00:00:00 2001 From: Scott Huberty Date: Sun, 22 Feb 2026 20:20:50 -0800 Subject: [PATCH 15/26] tests --- .github/workflows/tests.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index e483ceafbe8..dbec1ecde7a 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -183,6 +183,7 @@ jobs: python -c "import sys; print(sys.executable)" python -c "from importlib import util; print('PySide6', util.find_spec('PySide6'))" pixi list | grep -i side || true + python -c "import sys; assert '/.pixi/envs/default/bin/python' in sys.executable" - run: bash ./tools/github_actions_dependencies.sh - run: python ./tools/github_actions_check_old.py if: matrix.kind == 'old' From 14c0687e416716c9e2db4358cc3161db3ca0a3ec Mon Sep 17 00:00:00 2001 From: Scott Huberty Date: Sun, 22 Feb 2026 20:30:15 -0800 Subject: [PATCH 16/26] more --- .github/workflows/tests.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index dbec1ecde7a..e83c48c4348 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -177,6 +177,8 @@ jobs: run-install: false activate-environment: true cache: false + - name: Verify Environment + run: echo $PATH - name: Debug Qt availability if: matrix.kind == 'pixi' run: | From 0376aaee74093e4abc0798297ada2acebd3f9cc1 Mon Sep 17 00:00:00 2001 From: Scott Huberty Date: Sun, 22 Feb 2026 20:35:54 -0800 Subject: [PATCH 17/26] try --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index e83c48c4348..ca02443e851 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -174,7 +174,7 @@ jobs: - uses: prefix-dev/setup-pixi@v0.9.4 if: matrix.kind == 'pixi' with: - run-install: false + run-install: true activate-environment: true cache: false - name: Verify Environment From a2076039ca74d4f0ebad9b57fa241ab26aeff309 Mon Sep 17 00:00:00 2001 From: Scott Huberty Date: Sun, 22 Feb 2026 20:48:11 -0800 Subject: [PATCH 18/26] hack: prepend path with executable --- .github/workflows/tests.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index ca02443e851..24b7d319caf 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -177,6 +177,12 @@ jobs: run-install: true activate-environment: true cache: false + - name: Prepend pixi env to PATH + if: matrix.kind == 'pixi' + run: | + echo "PATH=${{ github.workspace }}/.pixi/envs/default/bin:${PATH}" >> "$GITHUB_ENV" + which python + python -c "import sys; print(sys.executable)" - name: Verify Environment run: echo $PATH - name: Debug Qt availability From 4f0770fc120ae09ab6cb1d56b239bae7b799dda3 Mon Sep 17 00:00:00 2001 From: Scott Huberty Date: Sun, 22 Feb 2026 20:56:42 -0800 Subject: [PATCH 19/26] FIX: wrong var --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 24b7d319caf..c7518738a44 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -180,7 +180,7 @@ jobs: - name: Prepend pixi env to PATH if: matrix.kind == 'pixi' run: | - echo "PATH=${{ github.workspace }}/.pixi/envs/default/bin:${PATH}" >> "$GITHUB_ENV" + echo "PATH=${{ github.workspace }}/.pixi/envs/default/bin:${PATH}" >> "$GITHUB_PATH" which python python -c "import sys; print(sys.executable)" - name: Verify Environment From e0d0865c25128bff4af54e156bea43f92667a5e3 Mon Sep 17 00:00:00 2001 From: Scott Huberty Date: Sun, 22 Feb 2026 21:03:21 -0800 Subject: [PATCH 20/26] FIX: shell --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index c7518738a44..c92fa67c58b 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -54,7 +54,7 @@ jobs: runs-on: ${{ matrix.os }} defaults: run: - shell: bash -el {0} + shell: bash -e {0} env: PYTHON_VERSION: '${{ matrix.python }}' MKL_NUM_THREADS: '1' From 7c443435122b464a1aa8db7f7b3b67c12f468af4 Mon Sep 17 00:00:00 2001 From: Scott Huberty Date: Mon, 23 Feb 2026 07:58:52 -0800 Subject: [PATCH 21/26] Found the issue (login shell). Now try to remove previous hack --- .github/workflows/tests.yml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index c92fa67c58b..4c70385b871 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -177,12 +177,6 @@ jobs: run-install: true activate-environment: true cache: false - - name: Prepend pixi env to PATH - if: matrix.kind == 'pixi' - run: | - echo "PATH=${{ github.workspace }}/.pixi/envs/default/bin:${PATH}" >> "$GITHUB_PATH" - which python - python -c "import sys; print(sys.executable)" - name: Verify Environment run: echo $PATH - name: Debug Qt availability From fe5a459bf45ff6335a8ae2b086c7c67536b07b51 Mon Sep 17 00:00:00 2001 From: Scott Huberty Date: Mon, 23 Feb 2026 08:28:22 -0800 Subject: [PATCH 22/26] now debug failiing conda-ish CI's --- .github/workflows/tests.yml | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 4c70385b871..0d66d213c1b 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -148,7 +148,7 @@ jobs: echo "MNE_IS_OSMESA=true" | tee -a $GITHUB_ENV fi fi - if: matrix.kind == 'conda' || matrix.kind == 'mamba' || matrix.kind == 'pixi' + if: matrix.kind == 'conda' || matrix.kind == 'mamba' - uses: mamba-org/setup-micromamba@v2 with: environment-file: ${{ env.CONDA_ENV }} @@ -166,7 +166,6 @@ jobs: run: | pixi init --import environment.yml pixi add "python==${{ matrix.python }}" --no-install - ls -la pixi.toml - name: Setup pixi environment if: matrix.kind == 'pixi' run: pixi install @@ -180,12 +179,11 @@ jobs: - name: Verify Environment run: echo $PATH - name: Debug Qt availability - if: matrix.kind == 'pixi' + if: matrix.kind == 'conda' || matrix.kind == 'mamba' || matrix.kind == "old" || matrix.kind == "minimal" run: | python -c "import sys; print(sys.executable)" + python -c "from importlib.metadata import version; print('pip version', version('pip'))" python -c "from importlib import util; print('PySide6', util.find_spec('PySide6'))" - pixi list | grep -i side || true - python -c "import sys; assert '/.pixi/envs/default/bin/python' in sys.executable" - run: bash ./tools/github_actions_dependencies.sh - run: python ./tools/github_actions_check_old.py if: matrix.kind == 'old' From c2f8a97ffbd1e1200de948ab074bd65371617205 Mon Sep 17 00:00:00 2001 From: Scott Huberty Date: Mon, 23 Feb 2026 08:45:23 -0800 Subject: [PATCH 23/26] arggh GH YAML syntax doesnt allow double quotes --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 0d66d213c1b..2cf9271fe18 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -179,7 +179,7 @@ jobs: - name: Verify Environment run: echo $PATH - name: Debug Qt availability - if: matrix.kind == 'conda' || matrix.kind == 'mamba' || matrix.kind == "old" || matrix.kind == "minimal" + if: matrix.kind == 'conda' || matrix.kind == 'mamba' || matrix.kind == 'old' || matrix.kind == 'minimal' run: | python -c "import sys; print(sys.executable)" python -c "from importlib.metadata import version; print('pip version', version('pip'))" From de6704c5ee4eade27b7a305a0bc7b284a473a697 Mon Sep 17 00:00:00 2001 From: Scott Huberty Date: Mon, 23 Feb 2026 09:56:57 -0800 Subject: [PATCH 24/26] try using shell wrapper --- .github/workflows/tests.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 2cf9271fe18..122589e3ca7 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -157,6 +157,8 @@ jobs: create-args: >- python=${{ env.PYTHON_VERSION }} -v + generate-run-shell: true + init-shell: none if: ${{ !startswith(matrix.kind, 'pip') && matrix.kind != 'pixi' }} timeout-minutes: 20 - name: Create pixi.toml @@ -185,6 +187,8 @@ jobs: python -c "from importlib.metadata import version; print('pip version', version('pip'))" python -c "from importlib import util; print('PySide6', util.find_spec('PySide6'))" - run: bash ./tools/github_actions_dependencies.sh + if: ${{ matrix.kind != 'pixi' && !startswith(matrix.kind, 'pip') && runner.os != 'Windows' }} + shell: micromamba-shell {0} - run: python ./tools/github_actions_check_old.py if: matrix.kind == 'old' # Minimal commands on Linux (macOS stalls) @@ -209,6 +213,8 @@ jobs: pixi run python -c "import sys; print(sys.executable)" pixi run python -c "import PySide6; print(PySide6.__version__)" - run: bash ./tools/github_actions_test.sh # for some reason on macOS we need to run "bash X" in order for a failed test run to show up + if: ${{ matrix.kind != 'pixi' && !startswith(matrix.kind, 'pip') && runner.os != 'Windows' }} + shell: micromamba-shell {0} - uses: codecov/codecov-action@v5 with: token: ${{ secrets.CODECOV_TOKEN }} From 6e651d83317f95dcf01696487b210177f23b5de6 Mon Sep 17 00:00:00 2001 From: Scott Huberty Date: Mon, 23 Feb 2026 11:08:20 -0800 Subject: [PATCH 25/26] more --- .github/workflows/tests.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 122589e3ca7..41ff332b0cc 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -191,10 +191,13 @@ jobs: shell: micromamba-shell {0} - run: python ./tools/github_actions_check_old.py if: matrix.kind == 'old' + shell: micromamba-shell {0} # Minimal commands on Linux (macOS stalls) - run: bash ./tools/get_minimal_commands.sh if: startswith(matrix.os, 'ubuntu') && matrix.kind != 'minimal' && matrix.kind != 'old' - run: bash ./tools/github_actions_infos.sh + if: ${{ matrix.kind != 'pixi' && !startswith(matrix.kind, 'pip') && runner.os != 'Windows' }} + shell: micromamba-shell {0} # Check Qt - run: bash ./tools/check_qt_import.sh $MNE_QT_BACKEND if: env.MNE_QT_BACKEND != '' From a46fc3bd884491d21f413b5fd3a84e16940d3232 Mon Sep 17 00:00:00 2001 From: Scott Huberty Date: Fri, 27 Feb 2026 16:20:26 -0800 Subject: [PATCH 26/26] remove branch --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 41ff332b0cc..6f2327b2458 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -4,7 +4,7 @@ concurrency: cancel-in-progress: true on: # yamllint disable-line rule:truthy push: - branches: ["main", "maint/*", "pixi"] + branches: ["main", "maint/*"] pull_request: branches: ["main", "maint/*"] # adapted from spyder-ide/spyder