Source code for yoda.script_helpers
import os
[docs]
def parse_x2y_args(args, xextns, yextns):
"""
Helper function for working out input and output filenames for YODA
converter scripts, where the output name is generated by replacing the input
file extension (xextn) with the output one (yextn), if there are exactly two
arguments and the second arg is consistent with an output name. The x/yextn
arguments should include the leading dot.
"""
def endswithoneof(s, ends):
#return any(s.endswith(e) for e in ends)
for e in ends:
if s.endswith(e):
return e
return False
infiles = []
outfiles = []
if type(xextns) is str:
xextns = [xextns]
if type(yextns) is str:
yextns = [yextns]
## If there are two args and the second has the right output extension, treat as in-, out-names
if len(args) == 2 and (endswithoneof(args[1], yextns) or args[1] == "-"):
infiles = [args[0]]
outfiles = [args[1]]
## Otherwise treat as a list of in-names and generate default out-names
else:
for infile in args:
xextn = endswithoneof(infile, xextns)
if xextn:
outfile = infile.replace(xextn, yextns[0])
else:
outfile = infile + yextns[0]
outfile = os.path.basename(outfile)
infiles.append(infile)
outfiles.append(outfile)
return zip(infiles, outfiles)
[docs]
def filter_aos(aos, match_re=None, unmatch_re=None):
"Remove unwanted analysis objects from a dict (modifies arg, also returned)"
import re
if match_re:
re_match = re.compile(match_re)
keylist = list(aos.keys())
for k in keylist:
if not re_match.search(k):
del aos[k]
if unmatch_re:
re_unmatch = re.compile(unmatch_re)
keylist = list(aos.keys())
for k in keylist:
if re_unmatch.search(k):
del aos[k]
return aos