Skip to content

Commit 367ed0a

Browse files
authored
Fix bug in new mne.sys_info() (#11577)
1 parent 2bd0c3e commit 367ed0a

File tree

5 files changed

+34
-22
lines changed

5 files changed

+34
-22
lines changed

azure-pipelines.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ stages:
123123
- bash: |
124124
set -e
125125
mne sys_info -pd
126-
mne sys_info -pd | grep "qtpy: .*(PySide6=.*)$"
126+
mne sys_info -pd | grep "qtpy .*(PySide6=.*)$"
127127
displayName: Print config
128128
# Uncomment if "xcb not found" Qt errors/segfaults come up again
129129
# - bash: |
@@ -198,23 +198,23 @@ stages:
198198
- bash: |
199199
set -e
200200
mne sys_info -pd
201-
mne sys_info -pd | grep "qtpy: .* (PySide6=.*)$"
201+
mne sys_info -pd | grep "qtpy .* (PySide6=.*)$"
202202
pytest -m "not slowtest" ${TEST_OPTIONS}
203203
python -m pip uninstall -yq PySide6
204204
displayName: 'PySide6'
205205
- bash: |
206206
set -e
207207
python -m pip install PyQt6
208208
mne sys_info -pd
209-
mne sys_info -pd | grep "qtpy: .* (PyQt6=.*)$"
209+
mne sys_info -pd | grep "qtpy .* (PyQt6=.*)$"
210210
pytest -m "not slowtest" ${TEST_OPTIONS}
211211
python -m pip uninstall -yq PyQt6 PyQt6-sip PyQt6-Qt6
212212
displayName: 'PyQt6'
213213
- bash: |
214214
set -e
215215
python -m pip install PySide2
216216
mne sys_info -pd
217-
mne sys_info -pd | grep "qtpy: .* (PySide2=.*)$"
217+
mne sys_info -pd | grep "qtpy .* (PySide2=.*)$"
218218
pytest -m "not slowtest" ${TEST_OPTIONS}
219219
python -m pip uninstall -yq PySide2
220220
displayName: 'PySide2'
@@ -223,7 +223,7 @@ stages:
223223
set -e
224224
python -m pip install PyQt5
225225
mne sys_info -pd
226-
mne sys_info -pd | grep "qtpy: .* (PyQt5=.*)$"
226+
mne sys_info -pd | grep "qtpy .* (PyQt5=.*)$"
227227
pytest -m "not slowtest" ${TEST_OPTIONS}
228228
python -m pip uninstall -yq PyQt5 PyQt5-sip PyQt5-Qt5
229229
displayName: 'PyQt5'

mne/utils/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@
5252
assert_object_equal, assert_and_remove_boundary_annot,
5353
_raw_annot, assert_dig_allclose, assert_meg_snr,
5454
assert_snr, assert_stcs_equal, _click_ch_name,
55-
requires_openmeeg_mark)
55+
requires_openmeeg_mark, requires_mne_qt_browser)
5656
from .numerics import (hashfunc, _compute_row_norms,
5757
_reg_pinv, random_permutation, _reject_data_segments,
5858
compute_corr, _get_inst_data, array_split_idx,

mne/utils/_testing.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,7 @@ def requires_module(function, name, call=None):
130130
requires_pylsl = partial(requires_module, name='pylsl')
131131
requires_sklearn = partial(requires_module, name='sklearn')
132132
requires_mne = partial(requires_module, name='MNE-C', call=_mne_call)
133+
requires_mne_qt_browser = partial(requires_module, name='mne_qt_browser')
133134

134135

135136
def requires_mne_mark():

mne/utils/config.py

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -524,7 +524,7 @@ def sys_info(fid=None, show_paths=False, *, dependencies='user', unicode=True):
524524
"""
525525
_validate_type(dependencies, str)
526526
_check_option('dependencies', dependencies, ('user', 'developer'))
527-
ljust = 21 if dependencies == 'developer' else 18
527+
ljust = 24 if dependencies == 'developer' else 21
528528
platform_str = platform.platform()
529529
if platform.system() == 'Darwin' and sys.version_info[:2] < (3, 8):
530530
# platform.platform() in Python < 3.8 doesn't call
@@ -538,19 +538,20 @@ def sys_info(fid=None, show_paths=False, *, dependencies='user', unicode=True):
538538
del macos_ver, macos_architecture
539539

540540
out = partial(print, end='', file=fid)
541-
out('Platform:'.ljust(ljust) + platform_str + '\n')
542-
out('Python:'.ljust(ljust) + str(sys.version).replace('\n', ' ') + '\n')
543-
out('Executable:'.ljust(ljust) + sys.executable + '\n')
544-
out('CPU:'.ljust(ljust) + f'{platform.processor()} ')
541+
out('Platform'.ljust(ljust) + platform_str + '\n')
542+
out('Python'.ljust(ljust) + str(sys.version).replace('\n', ' ') + '\n')
543+
out('Executable'.ljust(ljust) + sys.executable + '\n')
544+
out('CPU'.ljust(ljust) + f'{platform.processor()} ')
545545
out(f'({multiprocessing.cpu_count()} cores)\n')
546-
out('Memory:'.ljust(ljust))
546+
out('Memory'.ljust(ljust))
547547
try:
548548
import psutil
549549
except ImportError:
550550
out('Unavailable (requires "psutil" package)')
551551
else:
552552
out(f'{psutil.virtual_memory().total / float(2 ** 30):0.1f} GB\n')
553553
out('\n')
554+
ljust -= 3 # account for +/- symbols
554555
libs = _get_numpy_libs()
555556
unavailable = []
556557
use_mod_names = (
@@ -566,8 +567,8 @@ def sys_info(fid=None, show_paths=False, *, dependencies='user', unicode=True):
566567
'pyqtgraph', 'mne-qt-browser',
567568
'',
568569
'# Ecosystem (optional)',
569-
'mne_bids', 'mne_nirs', 'mne_features', 'mne_connectivity',
570-
'mne_icalabel',
570+
'mne-bids', 'mne-nirs', 'mne-features', 'mne-connectivity',
571+
'mne-icalabel',
571572
''
572573
)
573574
if dependencies == 'developer':
@@ -576,7 +577,7 @@ def sys_info(fid=None, show_paths=False, *, dependencies='user', unicode=True):
576577
'pytest', 'nbclient', 'numpydoc', 'flake8', 'pydocstyle',
577578
'',
578579
'# Documentation',
579-
'sphinx', 'sphinx_gallery', 'pydata_sphinx_theme',
580+
'sphinx', 'sphinx-gallery', 'pydata-sphinx-theme',
580581
'',
581582
)
582583
try:
@@ -588,7 +589,7 @@ def sys_info(fid=None, show_paths=False, *, dependencies='user', unicode=True):
588589
if mod_name == '': # break
589590
if unavailable:
590591
out('└☐ ' if unicode else ' - ')
591-
out('unavailable:'.ljust(ljust))
592+
out('unavailable'.ljust(ljust))
592593
out(f"{', '.join(unavailable)}\n")
593594
unavailable = []
594595
if mi != len(use_mod_names) - 1:
@@ -603,12 +604,12 @@ def sys_info(fid=None, show_paths=False, *, dependencies='user', unicode=True):
603604
if last:
604605
pre = '└'
605606
try:
606-
mod = import_module(mod_name)
607+
mod = import_module(mod_name.replace("-", "_"))
607608
except Exception:
608609
unavailable.append(mod_name)
609610
else:
610611
out(f'{pre}☑ ' if unicode else ' + ')
611-
out(f'{mod_name}:'.ljust(ljust))
612+
out(f'{mod_name}'.ljust(ljust))
612613
if mod_name == 'vtk':
613614
vtk_version = mod.vtkVersion()
614615
# 9.0 dev has VersionFull but 9.0 doesn't

mne/utils/tests/test_config.py

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55

66
from mne.utils import (set_config, get_config, get_config_path,
77
set_memmap_min_size, _get_stim_channel, sys_info,
8-
ClosingStringIO, get_subjects_dir)
8+
ClosingStringIO, get_subjects_dir,
9+
requires_mne_qt_browser)
910

1011

1112
def test_config(tmp_path):
@@ -83,12 +84,21 @@ def test_sys_info():
8384
out = ClosingStringIO()
8485
sys_info(fid=out)
8586
out = out.getvalue()
86-
assert ('numpy:' in out)
87+
assert ('numpy' in out)
8788

8889
if platform.system() == 'Darwin':
89-
assert 'Platform: macOS-' in out
90+
assert 'Platform macOS-' in out
9091
elif platform.system() == 'Linux':
91-
assert 'Platform: Linux' in out
92+
assert 'Platform Linux' in out
93+
94+
95+
@requires_mne_qt_browser
96+
def test_sys_info_qt_browser():
97+
"""Test if mne_qt_browser is correctly detected."""
98+
out = ClosingStringIO()
99+
sys_info(fid=out)
100+
out = out.getvalue()
101+
assert ('mne-qt-browser' in out)
92102

93103

94104
def test_get_subjects_dir(tmp_path, monkeypatch):

0 commit comments

Comments
 (0)