@@ -38,34 +38,27 @@ stages:
3838 - job : All
3939 pool :
4040 vmImage : ' ubuntu-latest'
41- variables :
42- PYTHON_VERSION : ' 3.11'
43- PYTHON_ARCH : ' x64'
4441 steps :
45- - bash : echo $(COMMIT_MSG)
4642 - task : UsePythonVersion@0
4743 inputs :
48- versionSpec : $(PYTHON_VERSION)
49- architecture : $(PYTHON_ARCH)
44+ versionSpec : ' 3.14 '
45+ architecture : ' x64 '
5046 addToPath : true
51- displayName : ' Get Python'
47+ displayName : Get Python
5248 - bash : |
5349 set -eo pipefail
5450 python -m pip install --progress-bar off --upgrade pip build
55- python -m pip install --progress-bar off -ve .[hdf5] --group=test
51+ python -m pip install --only-binary=":all:" -- progress-bar off -ve .[hdf5] --group=test
5652 python -m pip uninstall -yq pytest-qt # don't want to set up display, etc. for this
5753 pre-commit install --install-hooks
5854 displayName: Install dependencies
59- - bash : |
60- make pre-commit
55+ - bash : make pre-commit
6156 displayName : make pre-commit
6257 condition : always()
63- - bash : |
64- make nesting
58+ - bash : make nesting
6559 displayName : make nesting
6660 condition : always()
67- - bash : |
68- make check-readme
61+ - bash : make check-readme
6962 displayName : make check-readme
7063 condition : always()
7164 - bash : mypy
@@ -75,7 +68,6 @@ stages:
7568 displayName : vulture
7669 condition : always()
7770
78-
7971 - stage : Test
8072 condition : and(succeeded(), eq(dependencies.Check.outputs['Skip.result.start_main'], 'true'))
8173 dependsOn : ['Style', 'Check']
@@ -89,57 +81,50 @@ stages:
8981 DISPLAY : ' :99'
9082 OPENBLAS_NUM_THREADS : ' 1'
9183 OMP_NUM_THREADS : ' 1'
92- MNE_TEST_ALLOW_SKIP : ' ^.*(PySide6 causes segfaults).*$ '
84+ MNE_TEST_ALLOW_SKIP : ' ^$ ' # nothing
9385 MNE_BROWSER_PRECOMPUTE : ' false'
9486 steps :
9587 - bash : |
96- set -eo pipefail
88+ set -xeo pipefail
9789 ./tools/setup_xvfb.sh
9890 sudo apt install -yq tcsh
99- displayName: 'Install Ubuntu dependencies'
100- - bash : |
101- source tools/get_minimal_commands.sh
102- displayName: 'Install minimal commands'
91+ displayName: Install Ubuntu dependencies
92+ - bash : ./tools/get_minimal_commands.sh
93+ displayName : Get minimal commands
10394 - bash : |
10495 echo $PATH
10596 mne_surf2bem --version
10697 fsl_rigid_register --version
107- displayName: ' Test minimal commands'
98+ displayName: Test minimal commands
10899 - task : UsePythonVersion@0
109100 inputs :
110101 versionSpec : ' 3.12'
111102 architecture : ' x64'
112103 addToPath : true
113- displayName : ' Get Python'
114104 - bash : |
115- set -eo pipefail
105+ set -xeo pipefail
116106 python -m pip install --progress-bar off --upgrade pip
117- python -m pip install --progress-bar off "mne-qt-browser @ https://github.com/mne-tools/mne-qt-browser/archive/refs/heads/main.zip" pyvista scikit-learn python-picard qtpy nibabel sphinx-gallery "PySide6!=6.8.0,!=6.8.0.1,!=6.8.1.1,!=6.9.1" pandas neo pymatreader antio defusedxml curryreader pymef
118- python -m pip uninstall -yq mne
119- python -m pip install --progress-bar off --upgrade -e . --group=test
120- displayName: 'Install dependencies with pip'
107+ python -m pip install --progress-bar off --upgrade --only-binary=":all:" -e . --group=test "mne-qt-browser @ https://github.com/mne-tools/mne-qt-browser/archive/refs/heads/main.zip" pyvista scikit-learn python-picard qtpy nibabel sphinx-gallery "PySide6!=6.8.0,!=6.8.0.1,!=6.8.1.1,!=6.9.1" pandas neo pymatreader antio defusedxml curryreader pymef
108+ displayName: Install dependencies with pip
109+ - bash : ./tools/check_qt_import.sh PySide6
110+ displayName : Check Qt import
121111 - bash : |
122- set -eo pipefail
112+ set -xeo pipefail
123113 mne sys_info -pd
124114 mne sys_info -pd | grep "qtpy .*(PySide6=.*)$"
125115 displayName: Print config
126- - bash : |
127- set -eo pipefail
128- LD_DEBUG=libs python -c "from PySide6.QtWidgets import QApplication, QWidget; app = QApplication([]); import matplotlib; matplotlib.use('QtAgg'); import matplotlib.pyplot as plt; plt.figure()"
129- - bash : source tools/get_testing_version.sh
130- displayName : ' Get testing version'
116+ - bash : ./tools/get_testing_version.sh
117+ displayName : Get testing version
131118 - task : Cache@2
132119 inputs :
133120 key : $(testing_version)
134121 path : /home/vsts/mne_data
135- displayName : ' Cache testing data'
136122 - bash : ./tools/github_actions_download.sh
137- displayName : ' Get test data'
123+ displayName : Download testing data
138124 - script : pytest -m "ultraslowtest or pgtest" --tb=short --cov=mne --cov-report=xml -vv mne
139- displayName : ' slow and mne-qt-browser tests'
140- # Coverage
125+ displayName : slow and mne-qt-browser tests
141126 - bash : bash <(curl -s https://codecov.io/bash)
142- displayName : ' Codecov'
127+ displayName : Codecov
143128 condition : succeededOrFailed()
144129
145130 - job : Linux_Qt_Bindings
@@ -148,59 +133,54 @@ stages:
148133 variables :
149134 DISPLAY : ' :99'
150135 OPENBLAS_NUM_THREADS : ' 1'
151- TEST_OPTIONS : " --tb=short --cov=mne --cov-report=xml --cov-append -vv mne/viz/_brain mne/viz/backends mne/viz/tests/test_evoked.py mne/gui mne/report"
152- MNE_TEST_ALLOW_SKIP : ' ^.*(PySide6 causes segfaults).*$ '
136+ TEST_OPTIONS : " --tb=short --cov=mne --cov-report=xml --cov-append -vv mne/gui mne/ viz/_brain mne/viz/backends mne/viz/tests/test_evoked.py mne/report"
137+ MNE_TEST_ALLOW_SKIP : ' ^$ ' # nothing (can be overridden below)
153138 steps :
154139 - bash : ./tools/setup_xvfb.sh
155- displayName : ' Install Ubuntu dependencies '
140+ displayName : Setup up Xvfb
156141 - task : UsePythonVersion@0
157142 inputs :
158- versionSpec : ' 3.10 '
143+ versionSpec : ' 3.14 '
159144 architecture : ' x64'
160145 addToPath : true
161- displayName : ' Get Python'
162146 - bash : |
163- set -eo pipefail
147+ set -xeo pipefail
164148 python -m pip install --progress-bar off --upgrade pip
165- python -m pip install --progress-bar off --upgrade --pre -- only-binary=\"numpy,scipy,matplotlib,vtk\" numpy scipy matplotlib vtk
149+ python -m pip install --progress-bar off --upgrade --only-binary=":all:" -e .[full-pyside6] --group=test_extra "mne-qt-browser @ https://github.com/mne-tools/mne-qt-browser/archive/refs/heads/main.zip"
166150 python -c "import vtk"
167- python -m pip install --progress-bar off --upgrade -ve .[full] --group=test_extra "mne-qt-browser @ https://github.com/mne-tools/mne-qt-browser/archive/refs/heads/main.zip"
168- displayName: 'Install dependencies with pip'
151+ displayName: Install dependencies with pip
169152 - bash : |
170- set -e
153+ set -xeo pipefail
171154 which mne
172155 mne sys_info -pd
173156 python ./tools/check_mne_location.py
174157 displayName: Print config
175- - bash : source tools/get_testing_version.sh
176- displayName : ' Get testing version'
158+ - bash : ./ tools/get_testing_version.sh
159+ displayName : Get testing version
177160 - task : Cache@2
178161 inputs :
179162 key : $(testing_version)
180163 path : /home/vsts/mne_data
181- displayName : ' Cache testing data'
182164 - bash : ./tools/github_actions_download.sh
183- displayName : ' Get test data'
165+ displayName : Download testing data
166+ - bash : ./tools/check_qt_import.sh PySide6
167+ displayName : Check Qt import
184168 - bash : |
185- set -eo pipefail
186- python -m pip install PyQt6
187- LD_DEBUG=libs python -c "from PyQt6.QtWidgets import QApplication, QWidget; app = QApplication([]); import matplotlib; matplotlib.use('QtAgg'); import matplotlib.pyplot as plt; plt.figure()"
188- displayName: 'Check Qt import'
169+ set -xeo pipefail
170+ mne sys_info -pd
171+ mne sys_info -pd | grep "qtpy .* (PySide6=.*)$"
172+ export MNE_TEST_ALLOW_SKIP="^.*PySide6 causes segfaults.*$"
173+ PYTEST_QT_API=PySide6 pytest -m "not ultraslowtest" ${TEST_OPTIONS}
174+ python -m pip uninstall -yq PySide6
175+ displayName: PySide6
189176 - bash : |
190- set -eo pipefail
177+ set -xeo pipefail
178+ python -m pip install PyQt6
191179 mne sys_info -pd
192180 mne sys_info -pd | grep "qtpy .* (PyQt6=.*)$"
193181 PYTEST_QT_API=PyQt6 pytest -m "not ultraslowtest" ${TEST_OPTIONS}
194182 python -m pip uninstall -yq PyQt6 PyQt6-sip PyQt6-Qt6
195- displayName: 'PyQt6'
196- - bash : |
197- set -eo pipefail
198- python -m pip install "PySide6!=6.8.0,!=6.8.0.1,!=6.9.1"
199- mne sys_info -pd
200- mne sys_info -pd | grep "qtpy .* (PySide6=.*)$"
201- PYTEST_QT_API=PySide6 pytest -m "not ultraslowtest" ${TEST_OPTIONS}
202- python -m pip uninstall -yq PySide6
203- displayName: 'PySide6'
183+ displayName: PyQt6
204184 # PyQt5 leaves cruft behind, so run it last
205185 - bash : |
206186 set -eo pipefail
@@ -209,10 +189,9 @@ stages:
209189 mne sys_info -pd | grep "qtpy .* (PyQt5=.*)$"
210190 PYTEST_QT_API=PyQt5 pytest -m "not ultraslowtest" ${TEST_OPTIONS}
211191 python -m pip uninstall -yq PyQt5 PyQt5-sip PyQt5-Qt5
212- displayName: 'PyQt5'
213- # Coverage
192+ displayName: PyQt5
214193 - bash : bash <(curl -s https://codecov.io/bash)
215- displayName : ' Codecov'
194+ displayName : Codecov
216195 condition : succeededOrFailed()
217196
218197 - job : Windows
@@ -224,53 +203,51 @@ stages:
224203 OPENBLAS_NUM_THREADS : ' 2'
225204 OMP_DYNAMIC : ' false'
226205 PYTHONUNBUFFERED : 1
227- PYTHONIOENCODING : ' utf-8'
228206 AZURE_CI_WINDOWS : ' true'
229- PYTHON_ARCH : ' x64'
230207 MNE_CI_KIND : $(TEST_MODE)
208+ MNE_TEST_ALLOW_SKIP : $(MNE_TEST_ALLOW_SKIP)
231209 timeoutInMinutes : 95
232210 strategy :
233211 maxParallel : 4
234212 matrix :
235213 3.11 pip :
236214 TEST_MODE : ' pip'
237215 PYTHON_VERSION : ' 3.11'
216+ MNE_TEST_ALLOW_SKIP : " ^.*(Requires MNE-C|CUDA not| on Windows|MNE_FORCE_SERIAL|PySide6 causes segfaults).*$"
238217 3.13 pip pre :
239218 TEST_MODE : ' pip-pre'
240219 PYTHON_VERSION : ' 3.13'
220+ MNE_TEST_ALLOW_SKIP : " ^.*(Requires (spm|brainstorm) dataset|Requires MNE-C|CUDA not|Numba not| on Windows|MNE_FORCE_SERIAL|PySide6 causes segfaults).*$"
241221 steps :
242222 - task : UsePythonVersion@0
243223 inputs :
244224 versionSpec : $(PYTHON_VERSION)
245- architecture : $(PYTHON_ARCH)
225+ architecture : ' x64 '
246226 addToPath : true
247- displayName : ' Get Python'
248227 - bash : |
249- set -eo pipefail
228+ set -xeo pipefail
250229 git clone --depth 1 https://github.com/pyvista/setup-headless-display-action.git
251230 MESA3D_VERSION=24.3.0 bash setup-headless-display-action/windows/install_opengl.sh
252231 displayName: Install OpenGL
253232 - bash : ./tools/azure_dependencies.sh
254- displayName : Install dependencies with pip
255- - script : pip install -e .
256- displayName : ' Install MNE-Python dev'
233+ - script : pip install --only-binary=":all:" -e .
234+ displayName : Install mne
257235 - script : mne sys_info -pd
258- displayName : ' Print config'
236+ displayName : Print config
259237 - script : python -c "import numpy; numpy.show_config()"
260238 displayName : Print NumPy config
261239 - script : python -c "import numpy; import scipy.linalg; import sklearn.neighbors; from threadpoolctl import threadpool_info; from pprint import pprint; pprint(threadpool_info())"
262240 displayName : Print threadpoolctl info
263- - bash : source tools/get_testing_version.sh
264- displayName : ' Get testing version'
241+ - bash : ./tools/get_testing_version.sh
265242 - task : Cache@2
266243 inputs :
267244 key : $(testing_version)
268245 path : C:\Users\VssAdministrator\mne_data
269- displayName : ' Cache testing data'
246+ displayName : Cache testing data
270247 - bash : ./tools/github_actions_download.sh
271- displayName : ' Get test data'
248+ displayName : Download testing data
272249 - script : pytest -m "not (slowtest or pgtest)" --tb=short --cov=mne --cov-report=xml -vv mne
273- displayName : ' Run tests'
250+ displayName : Run tests
274251 - bash : bash <(curl -s https://codecov.io/bash)
275- displayName : ' Codecov'
252+ displayName : Codecov
276253 condition : succeededOrFailed()
0 commit comments