fsl.utils.filetree.utils

class fsl.utils.filetree.utils.Part[source]

Bases: object

Individual part of a template

3 subclasses are defined:

  • Literal: piece of text

  • Required: required variable to fill in (between curly brackets)

  • Optional: part of text containing optional variables (between square brackets)

fill_known(variables) → Sequence[fsl.utils.filetree.utils.Part][source]

Fills in the given variables

optional_variables() → Set[fsl.utils.filetree.utils.Part][source]

Returns all variables in optional parts

required_variables() → Set[fsl.utils.filetree.utils.Part][source]

Returns all required variables

contains_optionals(variables: Set[Part] = None)[source]

Returns True if this part contains the optional variables

append_variables(variables: List[str])[source]

Appends the variables in this part to the provided list in order

__dict__ = mappingproxy({'__module__': 'fsl.utils.filetree.utils', '__doc__': '\n Individual part of a template\n\n 3 subclasses are defined:\n\n - :class:`Literal`: piece of text\n - :class:`Required`: required variable to fill in (between curly brackets)\n - :class:`Optional`: part of text containing optional variables (between square brackets)\n ', 'fill_known': <function Part.fill_known>, 'optional_variables': <function Part.optional_variables>, 'required_variables': <function Part.required_variables>, 'contains_optionals': <function Part.contains_optionals>, 'append_variables': <function Part.append_variables>, '__dict__': <attribute '__dict__' of 'Part' objects>, '__weakref__': <attribute '__weakref__' of 'Part' objects>})
__module__ = 'fsl.utils.filetree.utils'
__weakref__

list of weak references to the object (if defined)

class fsl.utils.filetree.utils.Literal(text: str)[source]

Bases: fsl.utils.filetree.utils.Part

__init__(text: str)[source]

Literal part is defined purely by the text it contains

Parameters

text – part of the template

__str__()[source]

Returns this part of the template as a string

__module__ = 'fsl.utils.filetree.utils'
class fsl.utils.filetree.utils.Required(var_name, var_formatting=None)[source]

Bases: fsl.utils.filetree.utils.Part

__init__(var_name, var_formatting=None)[source]

Required part of template (between curly brackets)

Required variable part of template is defined by variable name and its format

Parameters
  • var_name – name of variable

  • var_formatting – how to format the variable

__str__()[source]

Returns this part of the template as a string

fill_known(variables)[source]

Fills in the given variables

required_variables()[source]

Returns all required variables

append_variables(variables)[source]

Appends the variables in this part to the provided list in order

__module__ = 'fsl.utils.filetree.utils'
class fsl.utils.filetree.utils.Optional(sub_template: fsl.utils.filetree.utils.Template)[source]

Bases: fsl.utils.filetree.utils.Part

__init__(sub_template: fsl.utils.filetree.utils.Template)[source]

Optional part of template (between square brackets)

Optional part can contain literal and required parts

Parameters

sub_template – part of the template within square brackets

__str__()[source]

Return str(self).

fill_known(variables)[source]

Fills in the given variables

optional_variables()[source]

Returns all variables in optional parts

contains_optionals(variables=None)[source]

Returns True if this part contains the optional variables

append_variables(variables)[source]

Appends the variables in this part to the provided list in order

__module__ = 'fsl.utils.filetree.utils'
class fsl.utils.filetree.utils.Template(parts: Sequence[fsl.utils.filetree.utils.Part])[source]

Bases: object

Splits a template into its constituent parts

__init__(parts: Sequence[fsl.utils.filetree.utils.Part])[source]

Initialize self. See help(type(self)) for accurate signature.

classmethod parse(text: str) → fsl.utils.filetree.utils.Template[source]

Parses a text template into its constituent parts

Parameters

text – input template as string

Returns

same template split into its parts

__str__()[source]

Returns the template as a string

optional_variables() → Set[str][source]

Set of optional variables

required_variables() → Set[str][source]

Set of required variables

ordered_variables() → Tuple[str][source]

Sequence of all variables in order (can contain duplicates)

fill_known(variables) → fsl.utils.filetree.utils.Template[source]

Fill in the known variables

Any optional parts, where all variables have been filled will be automatically replaced

_fill_known_single(variables)[source]

Helper method for _fill_known()

remove_optionals(optionals=None) → fsl.utils.filetree.utils.Template[source]

Removes any optionals containing the provided variables (default: remove all)

resolve(variables) → str[source]

Resolves the template given a set of variables

Parameters

variables – mapping of variable names to values

Returns

cleaned string

get_all(variables, glob_vars=()) → Tuple[Dict[str, str]][source]

Gets all variables for files on disk matching the templates

Parameters
  • variables – (incomplete) mapping of variable names to values

  • glob_vars – sequence of undefined variables that can take any possible values when looking for matches on the disk

_get_all_helper(glob_vars)[source]
optional_subsets() → Iterator[fsl.utils.filetree.utils.Template][source]

Yields template sub-sets with every combination optional variables

extract_variables(filename, known_vars=None)[source]

Extracts the variable values from the filename

Parameters
  • filename – filename

  • known_vars – already known variables

Returns

dictionary from variable names to string representations (unused variables set to None)

__dict__ = mappingproxy({'__module__': 'fsl.utils.filetree.utils', '__doc__': '\n Splits a template into its constituent parts\n ', '__init__': <function Template.__init__>, 'parse': <classmethod object>, '__str__': <function Template.__str__>, 'optional_variables': <function Template.optional_variables>, 'required_variables': <function Template.required_variables>, 'ordered_variables': <function Template.ordered_variables>, 'fill_known': <function Template.fill_known>, '_fill_known_single': <function Template._fill_known_single>, 'remove_optionals': <function Template.remove_optionals>, 'resolve': <function Template.resolve>, 'get_all': <function Template.get_all>, '_get_all_helper': <function Template._get_all_helper>, 'optional_subsets': <function Template.optional_subsets>, 'extract_variables': <function Template.extract_variables>, '__dict__': <attribute '__dict__' of 'Template' objects>, '__weakref__': <attribute '__weakref__' of 'Template' objects>})
__module__ = 'fsl.utils.filetree.utils'
__weakref__

list of weak references to the object (if defined)

fsl.utils.filetree.utils.resolve(template, variables)[source]

Resolves the template given a set of variables

Parameters
  • template – template

  • variables – mapping of variable names to values

Returns

cleaned string

fsl.utils.filetree.utils.get_all(template, variables, glob_vars=())[source]

Gets all variables matching the templates given the variables

Parameters
  • template – template

  • variables – (incomplete) mapping of variable names to values

  • glob_vars – sequence of undefined variables that can take any possible values when looking for matches on the disk If glob_vars contains any defined variables, it will be ignored.

Returns

sequence of variables

fsl.utils.filetree.utils.find_variables(template)[source]

Finds all the variables in the template

Parameters

template – full template

Returns

sequence of variables

fsl.utils.filetree.utils.optional_variables(template)[source]

Finds the variables that can be skipped

Parameters

template – full template

Returns

set of variables that are only present in optional parts of the string

fsl.utils.filetree.utils.extract_variables(template, filename, known_vars=None)[source]

Extracts the variable values from the filename

Parameters
  • template – template matching the given filename

  • filename – filename

  • known_vars – already known variables

Returns

dictionary from variable names to string representations (unused variables set to None)