Skip to content

Commit a3f9ce9

Browse files
authored
Rename name templates to validation templates (#594)
* Rename 'name templates' to 'validation templates'. * Update docs. * Fix tests. * Rename 'Template validation' to 'Validation templates'. * Update images with tui renaming. * Update backwards compatability tests. * Improve explaination of templates and add missing closing bracket in docs.
1 parent 7c3e99f commit a3f9ce9

27 files changed

+214
-195
lines changed

datashuttle/configs/canonical_configs.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -292,9 +292,9 @@ def get_tui_config_defaults() -> Dict:
292292
return settings
293293

294294

295-
def get_name_templates_defaults() -> Dict:
296-
"""Return the default values for name_templates."""
297-
return {"name_templates": {"on": False, "sub": None, "ses": None}}
295+
def get_validation_templates_defaults() -> Dict:
296+
"""Return the default values for validation_templates."""
297+
return {"validation_templates": {"on": False, "sub": None, "ses": None}}
298298

299299

300300
def get_persistent_settings_defaults() -> Dict:
@@ -306,7 +306,7 @@ def get_persistent_settings_defaults() -> Dict:
306306
"""
307307
settings = {}
308308
settings.update(get_tui_config_defaults())
309-
settings.update(get_name_templates_defaults())
309+
settings.update(get_validation_templates_defaults())
310310

311311
return settings
312312

datashuttle/datashuttle_class.py

Lines changed: 36 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -217,13 +217,13 @@ def create_folders(
217217
utils.log("\nFormatting Names...")
218218
ds_logger.log_names(["sub_names", "ses_names"], [sub_names, ses_names])
219219

220-
name_templates = self.get_name_templates()
220+
validation_templates = self.get_validation_templates()
221221

222222
format_sub, format_ses = self._format_and_validate_names(
223223
top_level_folder,
224224
sub_names,
225225
ses_names,
226-
name_templates,
226+
validation_templates,
227227
bypass_validation,
228228
allow_letters_in_sub_ses_values,
229229
log=True,
@@ -260,7 +260,7 @@ def _format_and_validate_names(
260260
top_level_folder: TopLevelFolder,
261261
sub_names: Union[str, List[str]],
262262
ses_names: Optional[Union[str, List[str]]],
263-
name_templates: Dict,
263+
validation_templates: Dict,
264264
bypass_validation: bool,
265265
allow_letters_in_sub_ses_values: bool,
266266
log: bool = True,
@@ -269,7 +269,7 @@ def _format_and_validate_names(
269269
format_sub = formatting.check_and_format_names(
270270
sub_names,
271271
"sub",
272-
name_templates,
272+
validation_templates,
273273
bypass_validation,
274274
allow_letters_in_sub_ses_values,
275275
)
@@ -278,7 +278,7 @@ def _format_and_validate_names(
278278
format_ses = formatting.check_and_format_names(
279279
ses_names,
280280
"ses",
281-
name_templates,
281+
validation_templates,
282282
bypass_validation,
283283
allow_letters_in_sub_ses_values,
284284
)
@@ -294,7 +294,7 @@ def _format_and_validate_names(
294294
include_central=False,
295295
display_mode="error",
296296
log=log,
297-
name_templates=name_templates,
297+
validation_templates=validation_templates,
298298
allow_letters_in_sub_ses_values=allow_letters_in_sub_ses_values,
299299
)
300300

@@ -1166,9 +1166,9 @@ def get_next_sub(
11661166
The next subject ID.
11671167
11681168
"""
1169-
name_template = self.get_name_templates()
1170-
name_template_regexp = (
1171-
name_template["sub"] if name_template["on"] else None
1169+
validation_template = self.get_validation_templates()
1170+
validation_template_regexp = (
1171+
validation_template["sub"] if validation_template["on"] else None
11721172
)
11731173

11741174
if self.is_local_project():
@@ -1181,7 +1181,7 @@ def get_next_sub(
11811181
include_central=include_central,
11821182
return_with_prefix=return_with_prefix,
11831183
search_str="sub-*",
1184-
name_template_regexp=name_template_regexp,
1184+
validation_template_regexp=validation_template_regexp,
11851185
)
11861186

11871187
@check_configs_set
@@ -1215,9 +1215,9 @@ def get_next_ses(
12151215
The next session ID.
12161216
12171217
"""
1218-
name_template = self.get_name_templates()
1219-
name_template_regexp = (
1220-
name_template["ses"] if name_template["on"] else None
1218+
validation_template = self.get_validation_templates()
1219+
validation_template_regexp = (
1220+
validation_template["ses"] if validation_template["on"] else None
12211221
)
12221222

12231223
if self.is_local_project():
@@ -1230,7 +1230,7 @@ def get_next_ses(
12301230
include_central=include_central,
12311231
return_with_prefix=return_with_prefix,
12321232
search_str="ses-*",
1233-
name_template_regexp=name_template_regexp,
1233+
validation_template_regexp=validation_template_regexp,
12341234
)
12351235

12361236
@check_configs_set
@@ -1245,36 +1245,38 @@ def is_local_project(self) -> bool:
12451245
# Name Templates
12461246
# -------------------------------------------------------------------------
12471247

1248-
def get_name_templates(self) -> Dict:
1248+
def get_validation_templates(self) -> Dict:
12491249
"""Return the regexp templates used for validation.
12501250
12511251
If the "on" key is set to `False`, template validation is not performed.
12521252
12531253
Returns
12541254
-------
1255-
name_templates
1256-
e.g. {"name_templates": {"on": False, "sub": None, "ses": None}}
1255+
validation_templates
1256+
e.g. {"validation_templates": {"on": False, "sub": None, "ses": None}}
12571257
12581258
"""
12591259
settings = self._load_persistent_settings()
1260-
return settings["name_templates"]
1260+
return settings["validation_templates"]
12611261

1262-
def set_name_templates(self, new_name_templates: Dict) -> None:
1262+
def set_validation_templates(self, new_validation_templates: Dict) -> None:
12631263
"""Update the persistent settings with new name templates.
12641264
1265-
Name templates are regexp for that, when ``name_templates["on"]`` is
1265+
Name templates are regexp for that, when ``validation_templates["on"]`` is
12661266
set to ``True``, ``"sub"`` and ``"ses"`` names are validated against
12671267
the regexp contained in the dict.
12681268
12691269
Parameters
12701270
----------
1271-
new_name_templates
1272-
e.g. ``{"name_templates": {"on": False, "sub": None, "ses": None}}``
1271+
new_validation_templates
1272+
e.g. ``{"validation_templates": {"on": False, "sub": None, "ses": None}}``
12731273
where ``"sub"`` or ``"ses"`` can be a regexp that subject and session
12741274
names respectively are validated against.
12751275
12761276
"""
1277-
self._update_persistent_setting("name_templates", new_name_templates)
1277+
self._update_persistent_setting(
1278+
"validation_templates", new_validation_templates
1279+
)
12781280

12791281
# -------------------------------------------------------------------------
12801282
# Showers
@@ -1355,7 +1357,7 @@ def validate_project(
13551357
local_vars=locals(),
13561358
)
13571359

1358-
name_templates = self.get_name_templates()
1360+
validation_templates = self.get_validation_templates()
13591361

13601362
if self.is_local_project():
13611363
include_central = False
@@ -1369,7 +1371,7 @@ def validate_project(
13691371
top_level_folder_to_validate,
13701372
include_central=include_central,
13711373
display_mode=display_mode,
1372-
name_templates=name_templates,
1374+
validation_templates=validation_templates,
13731375
strict_mode=strict_mode,
13741376
allow_letters_in_sub_ses_values=allow_letters_in_sub_ses_values,
13751377
)
@@ -1669,8 +1671,15 @@ def _update_settings_with_new_canonical_keys(self, settings: Dict) -> None:
16691671
Added keys:
16701672
v0.4.0: tui "overwrite_existing_files" and "dry_run"
16711673
"""
1672-
if "name_templates" not in settings:
1673-
settings.update(canonical_configs.get_name_templates_defaults())
1674+
if "validation_templates" not in settings:
1675+
if "name_templates" in settings:
1676+
settings["validation_templates"] = settings.pop(
1677+
"name_templates"
1678+
)
1679+
else:
1680+
settings.update(
1681+
canonical_configs.get_validation_templates_defaults()
1682+
)
16741683

16751684
canonical_tui_configs = canonical_configs.get_tui_config_defaults()
16761685

datashuttle/datashuttle_functions.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ def validate_project_from_path(
2727
top_level_folder: Optional[TopLevelFolder] = "rawdata",
2828
display_mode: DisplayMode = "warn",
2929
strict_mode: bool = False,
30-
name_templates: Optional[Dict] = None,
30+
validation_templates: Optional[Dict] = None,
3131
allow_letters_in_sub_ses_values: bool = False,
3232
) -> List[str]:
3333
"""Perform validation on a NeuroBlueprint-formatted project.
@@ -54,9 +54,9 @@ def validate_project_from_path(
5454
any folder not prefixed with sub-, ses- or a valid datatype will
5555
raise a validation issue.
5656
57-
name_templates
57+
validation_templates
5858
A dictionary of templates for subject and session name
59-
to validate against. See ``DataShuttle.set_name_templates()``
59+
to validate against. See ``DataShuttle.set_validation_templates()``
6060
for details.
6161
6262
allow_letters_in_sub_ses_values
@@ -101,7 +101,7 @@ def validate_project_from_path(
101101
top_level_folder_list=top_level_folders_to_validate,
102102
include_central=False,
103103
display_mode=display_mode,
104-
name_templates=name_templates,
104+
validation_templates=validation_templates,
105105
strict_mode=strict_mode,
106106
allow_letters_in_sub_ses_values=allow_letters_in_sub_ses_values,
107107
)

datashuttle/tui/interface.py

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ class Interface:
3535
def __init__(self) -> None:
3636
"""Initialise the Interface class."""
3737
self.project: DataShuttle
38-
self.name_templates: Dict = {}
38+
self.validation_templates: Dict = {}
3939
self.tui_settings: Dict = {}
4040

4141
self.gdrive_rclone_setup_process: subprocess.Popen | None = None
@@ -182,7 +182,7 @@ def validate_names(
182182
top_level_folder,
183183
sub_names,
184184
ses_names,
185-
self.get_name_templates(),
185+
self.get_validation_templates(),
186186
bypass_validation=False,
187187
allow_letters_in_sub_ses_values=allow_letters_in_sub_ses_values,
188188
)
@@ -368,28 +368,30 @@ def transfer_custom_selection(
368368
# Name templates
369369
# ----------------------------------------------------------------------------------
370370

371-
def get_name_templates(self) -> Dict:
372-
"""Return the `name_templates` defining templates to validate against.
371+
def get_validation_templates(self) -> Dict:
372+
"""Return the `validation_templates` defining templates to validate against.
373373
374374
These are stored in a variable to avoid constantly
375375
reading these values from disk where they are stored in
376376
`persistent_settings`. It is critical this variable
377377
and the file contents are in sync, so when changed
378378
on the TUI side they are updated also, in `get_tui_settings`.
379379
"""
380-
if not self.name_templates:
381-
self.name_templates = self.project.get_name_templates()
380+
if not self.validation_templates:
381+
self.validation_templates = self.project.get_validation_templates()
382382

383-
return self.name_templates
383+
return self.validation_templates
384384

385-
def set_name_templates(self, name_templates: Dict) -> InterfaceOutput:
386-
"""Set the `name_templates` here and on disk.
385+
def set_validation_templates(
386+
self, validation_templates: Dict
387+
) -> InterfaceOutput:
388+
"""Set the `validation_templates` here and on disk.
387389
388-
See `get_name_templates` for more information.
390+
See `get_validation_templates` for more information.
389391
"""
390392
try:
391-
self.project.set_name_templates(name_templates)
392-
self.name_templates = name_templates
393+
self.project.set_validation_templates(validation_templates)
394+
self.validation_templates = validation_templates
393395
return True, None
394396

395397
except BaseException as e:
@@ -398,7 +400,7 @@ def set_name_templates(self, name_templates: Dict) -> InterfaceOutput:
398400
def get_tui_settings(self) -> Dict:
399401
"""Return the "tui" field of `persistent_settings`.
400402
401-
Similar to `get_name_templates`, there are held on the
403+
Similar to `get_validation_templates`, there are held on the
402404
class to avoid constantly reading from disk.
403405
"""
404406
if not self.tui_settings:

0 commit comments

Comments
 (0)