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
152 changes: 76 additions & 76 deletions mne/utils/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,80 +66,80 @@ 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': 'Width and height of the raw browser window (in inches), specified by a tuple of two floats.',
'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': 'If "True" (default), objects will be represented as rich HTML in a notebook environment (if supported by the object). If "False", all objects will be represented by plain text in a notebook, just like in a regular Python REPL.',
'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': '',
}

# These allow for partial matches, e.g. 'MNE_STIM_CHANNEL_1' is okay key
known_config_wildcards = (
Expand Down Expand Up @@ -240,7 +240,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 Expand Up @@ -289,7 +289,7 @@ def set_config(key, value, home_dir=None, set_env=True):
if value is not None:
value = str(value)

if key not in known_config_types and not \
if key not in known_config_types.keys() and not \
any(key.startswith(k) for k in known_config_wildcards):
warn('Setting non-standard config type: "%s"' % key)

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