Commit 67538f10 authored by Paul McCarthy's avatar Paul McCarthy 🚵
Browse files

New flag to fsl.utils.path.addExt, allowing ambiguity. Needs testing

parent f480a89a
......@@ -1319,15 +1319,16 @@ def looksLikeImage(filename, allowedExts=None):
return any([filename.endswith(ext) for ext in allowedExts])
def addExt(prefix, mustExist=True):
def addExt(prefix, mustExist=True, unambiguous=True):
"""Adds a file extension to the given file ``prefix``. See
:func:`~fsl.utils.path.addExt`.
"""
return fslpath.addExt(prefix,
ALLOWED_EXTENSIONS,
mustExist,
defaultExt(),
fileGroups=FILE_GROUPS)
allowedExts=ALLOWED_EXTENSIONS,
mustExist=mustExist,
defaultExt=defaultExt(),
fileGroups=FILE_GROUPS,
unambiguous=unambiguous)
def splitExt(filename):
......
......@@ -81,7 +81,8 @@ def addExt(prefix,
allowedExts=None,
mustExist=True,
defaultExt=None,
fileGroups=None):
fileGroups=None,
unambiguous=True):
"""Adds a file extension to the given file ``prefix``.
If ``mustExist`` is False, and the file does not already have a
......@@ -95,8 +96,8 @@ def addExt(prefix,
- No files exist with the given prefix and a supported extension.
- ``fileGroups`` is ``None``, and more than one file exists with the
given prefix, and a supported extension.
- ``fileGroups is None`` and ``unambiguous is True``, and more than
one file exists with the given prefix, and a supported extension.
Otherwise the full file name is returned.
......@@ -109,6 +110,11 @@ def addExt(prefix,
:arg defaultExt: Default file extension to use.
:arg fileGroups: Recognised file groups - see :func:`getFileGroup`.
:arg unambiguous: If ``True`` (the default), and more than one file
exists with the specified ``prefix``, a
:exc:`PathError` is raised. Otherwise, a list
containing *all* matching files is returned.
"""
if allowedExts is None: allowedExts = []
......@@ -151,8 +157,14 @@ def addExt(prefix,
raise PathError('Could not find a supported file '
'with prefix "{}"'.format(prefix))
# Ambiguity! More than one supported
# file with the specified prefix.
# If ambiguity is ok, return
# all matching paths
elif not unambiguous:
return allPaths
# Ambiguity is not ok! More than
# one supported file with the
# specified prefix.
elif nexists > 1:
# Remove non-existent paths from the
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment