file pyext/yoda/script_helpers.py
pyext/yoda/script_helpers.py
Namespaces
Name |
---|
yoda |
yoda::script_helpers |
Source code
import os
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 len(args) == 2 and (endswithoneof(args[1], yextns) or args[1] == "-"):
infiles = [args[0]]
outfiles = [args[1]]
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)
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
Updated on 2022-08-08 at 20:05:55 +0100