Skip to content

Commit c8e6007

Browse files
committed
✅ Fix get_nested to handle empty config
1 parent b92fa57 commit c8e6007

File tree

2 files changed

+15
-10
lines changed

2 files changed

+15
-10
lines changed

CPAC/utils/configuration/configuration.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -322,13 +322,15 @@ def update(self, key, val=ConfigurationDictUpdateConflation):
322322
setattr(self, key, val)
323323

324324
def get_nested(self, d, keys):
325+
if d is None:
326+
d = {}
325327
if isinstance(keys, str):
326328
return d[keys]
327-
elif isinstance(keys, tuple) or isinstance(keys, list):
329+
if isinstance(keys, (list, tuple)):
328330
if len(keys) > 1:
329331
return self.get_nested(d[keys[0]], keys[1:])
330-
else:
331-
return d[keys[0]]
332+
return d[keys[0]]
333+
return d
332334

333335
def set_nested(self, d, keys, value): # pylint: disable=invalid-name
334336
if isinstance(keys, str):

CPAC/utils/configuration/yaml_template.py

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -108,12 +108,7 @@ def dump(self, new_dict, parents=None):
108108
fsldir = self.get_nested(self._dict,
109109
['pipeline_setup', 'system_config',
110110
'FSLDIR'])
111-
try:
112-
self.get_nested(new_dict, ['surface_analysis', 'freesurfer', 'ingress_reconall'])
113-
except KeyError:
114-
new_dict = set_nested_value(new_dict, ['surface_analysis', 'freesurfer',
115-
'ingress_reconall'], False)
116-
111+
117112
# Add YAML version directive to top of document and ensure
118113
# C-PAC version comment and 'FROM' are at the top of the YAML
119114
# output
@@ -125,8 +120,16 @@ def dump(self, new_dict, parents=None):
125120
# Insert automatically-changed value in original dict
126121
if freesurfer_extraction:
127122
new_dict = set_nested_value(
128-
new_dict, ['surface_analysis', 'freesurfer',
123+
new_dict, ['surface_analysis', 'freesurfer',
129124
'run_reconall'], False)
125+
try:
126+
self.get_nested(new_dict,
127+
['surface_analysis', 'freesurfer',
128+
'ingress_reconall'])
129+
except KeyError:
130+
new_dict = set_nested_value(new_dict,
131+
['surface_analysis', 'freesurfer',
132+
'ingress_reconall'], False)
130133
else:
131134
_dump = []
132135
# Prepare for indentation

0 commit comments

Comments
 (0)