Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ENH: Change known_config_types to dict #11166

Merged
merged 12 commits into from
May 3, 2023
160 changes: 85 additions & 75 deletions mne/utils/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,80 +66,90 @@ def set_memmap_min_size(memmap_min_size):


# List the known configuration values
known_config_types = (
'MNE_3D_OPTION_ANTIALIAS',
'MNE_3D_OPTION_DEPTH_PEELING',
'MNE_3D_OPTION_MULTI_SAMPLES',
'MNE_3D_OPTION_SMOOTH_SHADING',
'MNE_3D_OPTION_THEME',
'MNE_BROWSE_RAW_SIZE',
'MNE_BROWSER_BACKEND',
'MNE_BROWSER_OVERVIEW_MODE',
'MNE_BROWSER_PRECOMPUTE',
'MNE_BROWSER_THEME',
'MNE_BROWSER_USE_OPENGL',
'MNE_CACHE_DIR',
'MNE_COREG_ADVANCED_RENDERING',
'MNE_COREG_COPY_ANNOT',
'MNE_COREG_FULLSCREEN',
'MNE_COREG_GUESS_MRI_SUBJECT',
'MNE_COREG_HEAD_HIGH_RES',
'MNE_COREG_HEAD_OPACITY',
'MNE_COREG_HEAD_INSIDE',
'MNE_COREG_INTERACTION',
'MNE_COREG_MARK_INSIDE',
'MNE_COREG_PREPARE_BEM',
'MNE_COREG_ORIENT_TO_SURFACE',
'MNE_COREG_SCALE_LABELS',
'MNE_COREG_SCALE_BY_DISTANCE',
'MNE_COREG_SCENE_SCALE',
'MNE_COREG_WINDOW_HEIGHT',
'MNE_COREG_WINDOW_WIDTH',
'MNE_COREG_SUBJECTS_DIR',
'MNE_CUDA_DEVICE',
'MNE_CUDA_IGNORE_PRECISION',
'MNE_DATA',
'MNE_DATASETS_BRAINSTORM_PATH',
'MNE_DATASETS_EEGBCI_PATH',
'MNE_DATASETS_EPILEPSY_ECOG_PATH',
'MNE_DATASETS_HF_SEF_PATH',
'MNE_DATASETS_MEGSIM_PATH',
'MNE_DATASETS_MISC_PATH',
'MNE_DATASETS_MTRF_PATH',
'MNE_DATASETS_SAMPLE_PATH',
'MNE_DATASETS_SOMATO_PATH',
'MNE_DATASETS_MULTIMODAL_PATH',
'MNE_DATASETS_FNIRS_MOTOR_PATH',
'MNE_DATASETS_OPM_PATH',
'MNE_DATASETS_SPM_FACE_DATASETS_TESTS',
'MNE_DATASETS_SPM_FACE_PATH',
'MNE_DATASETS_TESTING_PATH',
'MNE_DATASETS_VISUAL_92_CATEGORIES_PATH',
'MNE_DATASETS_KILOWORD_PATH',
'MNE_DATASETS_FIELDTRIP_CMC_PATH',
'MNE_DATASETS_PHANTOM_4DBTI_PATH',
'MNE_DATASETS_LIMO_PATH',
'MNE_DATASETS_REFMEG_NOISE_PATH',
'MNE_DATASETS_SSVEP_PATH',
'MNE_DATASETS_ERP_CORE_PATH',
'MNE_DATASETS_EPILEPSY_ECOG_PATH',
'MNE_FORCE_SERIAL',
'MNE_KIT2FIFF_STIM_CHANNELS',
'MNE_KIT2FIFF_STIM_CHANNEL_CODING',
'MNE_KIT2FIFF_STIM_CHANNEL_SLOPE',
'MNE_KIT2FIFF_STIM_CHANNEL_THRESHOLD',
'MNE_LOGGING_LEVEL',
'MNE_MEMMAP_MIN_SIZE',
'MNE_REPR_HTML',
'MNE_SKIP_FTP_TESTS',
'MNE_SKIP_NETWORK_TESTS',
'MNE_SKIP_TESTING_DATASET_TESTS',
'MNE_STIM_CHANNEL',
'MNE_TQDM',
'MNE_USE_CUDA',
'MNE_USE_NUMBA',
'SUBJECTS_DIR',
)
known_config_types = {
'MNE_3D_OPTION_ANTIALIAS': '',
'MNE_3D_OPTION_DEPTH_PEELING': '',
'MNE_3D_OPTION_MULTI_SAMPLES': '',
'MNE_3D_OPTION_SMOOTH_SHADING': '',
'MNE_3D_OPTION_THEME': '',
'MNE_BROWSE_RAW_SIZE': (
'tuple, width and height of the raw browser window (in inches)'
),
'MNE_BROWSER_BACKEND': '',
'MNE_BROWSER_OVERVIEW_MODE': '',
'MNE_BROWSER_PRECOMPUTE': '',
'MNE_BROWSER_THEME': '',
'MNE_BROWSER_USE_OPENGL': '',
'MNE_CACHE_DIR': '',
'MNE_COREG_ADVANCED_RENDERING': '',
'MNE_COREG_COPY_ANNOT': '',
'MNE_COREG_FULLSCREEN': '',
'MNE_COREG_GUESS_MRI_SUBJECT': '',
'MNE_COREG_HEAD_HIGH_RES': '',
'MNE_COREG_HEAD_OPACITY': '',
'MNE_COREG_HEAD_INSIDE': '',
'MNE_COREG_INTERACTION': '',
'MNE_COREG_MARK_INSIDE': '',
'MNE_COREG_PREPARE_BEM': '',
'MNE_COREG_ORIENT_TO_SURFACE': '',
'MNE_COREG_SCALE_LABELS': '',
'MNE_COREG_SCALE_BY_DISTANCE': '',
'MNE_COREG_SCENE_SCALE': '',
'MNE_COREG_WINDOW_HEIGHT': '',
'MNE_COREG_WINDOW_WIDTH': '',
'MNE_COREG_SUBJECTS_DIR': '',
'MNE_CUDA_DEVICE': '',
'MNE_CUDA_IGNORE_PRECISION': '',
'MNE_DATA': '',
'MNE_DATASETS_BRAINSTORM_PATH': '',
'MNE_DATASETS_EEGBCI_PATH': '',
'MNE_DATASETS_EPILEPSY_ECOG_PATH': '',
'MNE_DATASETS_HF_SEF_PATH': '',
'MNE_DATASETS_MEGSIM_PATH': '',
'MNE_DATASETS_MISC_PATH': '',
'MNE_DATASETS_MTRF_PATH': '',
'MNE_DATASETS_SAMPLE_PATH': '',
'MNE_DATASETS_SOMATO_PATH': '',
'MNE_DATASETS_MULTIMODAL_PATH': '',
'MNE_DATASETS_FNIRS_MOTOR_PATH': '',
'MNE_DATASETS_OPM_PATH': '',
'MNE_DATASETS_SPM_FACE_DATASETS_TESTS': '',
'MNE_DATASETS_SPM_FACE_PATH': '',
'MNE_DATASETS_TESTING_PATH': '',
'MNE_DATASETS_VISUAL_92_CATEGORIES_PATH': '',
'MNE_DATASETS_KILOWORD_PATH': '',
'MNE_DATASETS_FIELDTRIP_CMC_PATH': '',
'MNE_DATASETS_PHANTOM_4DBTI_PATH': '',
'MNE_DATASETS_LIMO_PATH': '',
'MNE_DATASETS_REFMEG_NOISE_PATH': '',
'MNE_DATASETS_SSVEP_PATH': '',
'MNE_DATASETS_ERP_CORE_PATH': '',
'MNE_DATASETS_EPILEPSY_ECOG_PATH': '',
'MNE_FORCE_SERIAL': '',
'MNE_KIT2FIFF_STIM_CHANNELS': '',
'MNE_KIT2FIFF_STIM_CHANNEL_CODING': '',
'MNE_KIT2FIFF_STIM_CHANNEL_SLOPE': '',
'MNE_KIT2FIFF_STIM_CHANNEL_THRESHOLD': '',
'MNE_LOGGING_LEVEL': '',
'MNE_MEMMAP_MIN_SIZE': '',
'MNE_REPR_HTML': (
'bool, represent some of our objects with rich HTML in a notebook '
'environment (default "true")'
),
'MNE_SKIP_FTP_TESTS': '',
'MNE_SKIP_NETWORK_TESTS': '',
'MNE_SKIP_TESTING_DATASET_TESTS': '',
'MNE_STIM_CHANNEL': '',
'MNE_TQDM': '',
'MNE_USE_CUDA': 'bool, use GPU for filtering/resampling',
'MNE_USE_NUMBA': (
'bool, use Numba just-in-time compiler for some of our intensive '
'computations'
),
'SUBJECTS_DIR': (
'path-like, directory of freesurfer MRI files for each subject'
),
}

# These allow for partial matches, e.g. 'MNE_STIM_CHANNEL_1' is okay key
known_config_wildcards = (
Expand Down Expand Up @@ -240,7 +250,7 @@ def get_config(key=None, default=None, raise_error=False, home_dir=None,
if key is None:
# update config with environment variables
if use_env:
env_keys = (set(config).union(known_config_types).
env_keys = (set(config).union(known_config_types.keys()).
intersection(os.environ))
config.update({key: os.environ[key] for key in env_keys})
return config
Expand Down
2 changes: 1 addition & 1 deletion mne/utils/tests/test_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ def test_config(tmp_path):
assert (get_config(key) == value)
del os.environ[key]
# catch the warning about it being a non-standard config key
assert (len(get_config('')) > 10) # tuple of valid keys
assert (len(get_config('')) > 10) # dict of valid keys
with pytest.warns(RuntimeWarning, match='non-standard'):
set_config(key, None, home_dir=tempdir, set_env=False)
assert (get_config(key, home_dir=tempdir) is None)
Expand Down