From 42413e558bfbdfe03ffd9944ad6d304fcd412d33 Mon Sep 17 00:00:00 2001 From: Eric Larson Date: Tue, 23 Jun 2026 10:52:12 -0400 Subject: [PATCH 1/3] MAINT: Drop PyQt5 from tests --- azure-pipelines.yml | 9 --------- doc/changes/dependency.rst | 1 + doc/install/advanced.rst | 8 ++++---- mne/conftest.py | 4 ---- tools/github_actions_env_vars.sh | 2 +- tools/setup_xvfb.sh | 2 +- 6 files changed, 7 insertions(+), 19 deletions(-) create mode 100644 doc/changes/dependency.rst diff --git a/azure-pipelines.yml b/azure-pipelines.yml index c4b8dcfd603..ce961495f39 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -182,15 +182,6 @@ stages: PYTEST_QT_API=PyQt6 pytest -m "not ultraslowtest" ${TEST_OPTIONS} python -m pip uninstall -yq PyQt6 PyQt6-sip PyQt6-Qt6 displayName: PyQt6 - # PyQt5 leaves cruft behind, so run it last - - bash: | - set -eo pipefail - python -m pip install PyQt5 - mne sys_info -pd - mne sys_info -pd | grep "qtpy .* (PyQt5=.*)$" - PYTEST_QT_API=PyQt5 pytest -m "not ultraslowtest" ${TEST_OPTIONS} - python -m pip uninstall -yq PyQt5 PyQt5-sip PyQt5-Qt5 - displayName: PyQt5 - bash: bash <(curl -s https://codecov.io/bash) displayName: Codecov condition: succeededOrFailed() diff --git a/doc/changes/dependency.rst b/doc/changes/dependency.rst new file mode 100644 index 00000000000..46bb3cc4212 --- /dev/null +++ b/doc/changes/dependency.rst @@ -0,0 +1 @@ +PyQt5 is no longer an officially supported Qt binding, by `Eric Larson`_. \ No newline at end of file diff --git a/doc/install/advanced.rst b/doc/install/advanced.rst index f1e217403aa..1c19f6e28b5 100644 --- a/doc/install/advanced.rst +++ b/doc/install/advanced.rst @@ -104,14 +104,14 @@ instructions for installing from a ``git clone`` in the :ref:`contributing`. Choosing the Qt framework ^^^^^^^^^^^^^^^^^^^^^^^^^ -The ``conda-forge`` version of MNE-Python ships with PyQt5. If you would like to +The ``conda-forge`` version of MNE-Python ships with PySide6. If you would like to use a different binding, you can instead install MNE-Python via ``pip``: .. code-block:: console - $ pip install "mne[full]" # uses PyQt6 - $ pip install "mne[full-pyqt6]" # same as above - $ pip install "mne[full-pyside6]" # use PySide6 + $ pip install "mne[full]" # uses PySide6 + $ pip install "mne[full-pyside6]" # same as above + $ pip install "mne[full-pyqt6]" # uses PyQt6 $ pip install "mne[full-no-qt]" # don't install any Qt binding .. _CUDA: diff --git a/mne/conftest.py b/mne/conftest.py index 5b372cb91c3..b6da95824e3 100644 --- a/mne/conftest.py +++ b/mne/conftest.py @@ -669,10 +669,6 @@ def _check_pyqtgraph(request): pytest.skip(f'Test "{f_name}" was skipped for mne-qt-browser < 0.2.0') except Exception: pytest.skip("Requires mne_qt_browser") - else: - ver = mne_qt_browser.__version__ - if api != "PyQt5" and _compare_version(ver, "<=", "0.2.6"): - pytest.skip(f"mne_qt_browser {ver} requires PyQt5, API is {api}") @pytest.fixture diff --git a/tools/github_actions_env_vars.sh b/tools/github_actions_env_vars.sh index 4aef0ff0316..ad8035de854 100755 --- a/tools/github_actions_env_vars.sh +++ b/tools/github_actions_env_vars.sh @@ -28,7 +28,7 @@ elif [[ "$MNE_CI_KIND" == "minimal" ]]; then 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 + echo "MNE_QT_BACKEND=PyQt6" | tee -a $GITHUB_ENV elif [[ "$MNE_CI_KIND" == "conda" ]]; then echo "Setting conda env vars for $MNE_CI_KIND" echo "CONDA_ENV=environment.yml" | tee -a $GITHUB_ENV diff --git a/tools/setup_xvfb.sh b/tools/setup_xvfb.sh index d22f8e2b7ac..6d32a0e00fb 100755 --- a/tools/setup_xvfb.sh +++ b/tools/setup_xvfb.sh @@ -9,7 +9,7 @@ for apt_file in `grep -lr microsoft /etc/apt/sources.list.d/`; do sudo rm $apt_file done -# This also includes the libraries necessary for PyQt5/PyQt6 +# This also includes the libraries necessary for Qt6 sudo apt update sudo apt install -yqq xvfb libxkbcommon-x11-0 libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-randr0 libxcb-render-util0 libxcb-xinerama0 libxcb-xfixes0 libopengl0 libegl1 libosmesa6 mesa-utils libxcb-shape0 libxcb-cursor0 libxml2 /sbin/start-stop-daemon --start --quiet --pidfile /tmp/custom_xvfb_99.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :99 -screen 0 1400x900x24 -ac +extension GLX +render -noreset From 82346b40403420ff704e969b47d9317d7d96465f Mon Sep 17 00:00:00 2001 From: Eric Larson Date: Tue, 23 Jun 2026 11:29:04 -0400 Subject: [PATCH 2/3] FIX: Move --- doc/changes/{ => dev}/dependency.rst | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename doc/changes/{ => dev}/dependency.rst (100%) diff --git a/doc/changes/dependency.rst b/doc/changes/dev/dependency.rst similarity index 100% rename from doc/changes/dependency.rst rename to doc/changes/dev/dependency.rst From 60e1377604d9b305dc675ae8fb976c5234fa368c Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Tue, 23 Jun 2026 15:30:40 +0000 Subject: [PATCH 3/3] [autofix.ci] apply automated fixes --- doc/changes/dev/{dependency.rst => 13981.dependency.rst} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename doc/changes/dev/{dependency.rst => 13981.dependency.rst} (100%) diff --git a/doc/changes/dev/dependency.rst b/doc/changes/dev/13981.dependency.rst similarity index 100% rename from doc/changes/dev/dependency.rst rename to doc/changes/dev/13981.dependency.rst