diff --git a/fsl/utils/filetree/filetree.py b/fsl/utils/filetree/filetree.py index a58744668d07767d477b4021e33fab50c10368e7..8e4a8c5def41c3618f0eb593f02ed24f7f02de55 100644 --- a/fsl/utils/filetree/filetree.py +++ b/fsl/utils/filetree/filetree.py @@ -25,12 +25,14 @@ class FileTree(object): - ``variables``: dictionary mapping variables in the templates to specific values (variables set to None are explicitly unset) - ``sub_trees``: filename trees describing specific sub-directories - ``parent``: parent FileTree, of which this sub-tree is a sub-directory + - ``name``: descriptive name of the tree """ def __init__(self, templates: Dict[str, str], variables: Dict[str, Any], - sub_trees: Dict[str, "FileTree"]=None, - parent: Optional["FileTree"]=None): + sub_trees: Dict[str, "FileTree"] = None, + parent: Optional["FileTree"] = None, + name: str = None): """ Creates a new filename tree. """ @@ -40,6 +42,7 @@ class FileTree(object): sub_trees = {} self.sub_trees = sub_trees self._parent = parent + self._name = name @property def parent(self, ): @@ -48,6 +51,15 @@ class FileTree(object): """ return self._parent + + @property + def name(self, ): + """ + Name of this ``FileTree``, or ``None`` if it has no name. + """ + return self._name + + @property def all_variables(self, ): """ @@ -384,6 +396,7 @@ class FileTree(object): raise ValueError("Name of sub_tree {short_name} used multiple times in {tree_name}.tree".format(**locals())) sub_trees[short_name] = sub_tree + sub_tree._name = sub_tree._name + '[' + short_name + ']' elif '=' in line: key, value = line.split('=') if len(key.split()) != 1: @@ -413,7 +426,7 @@ class FileTree(object): templates[short_name] = str(current_filename) file_variables.update(variables) - res = get_registered(tree_name, cls)(templates, variables=file_variables, sub_trees=sub_trees) + res = get_registered(tree_name, cls)(templates, variables=file_variables, sub_trees=sub_trees, name=tree_name) for tree in sub_trees.values(): tree._parent = res return res