in variance-analysis/mach_perftest_notebook_dev/perftestnotebook/perftestnotebook.py [0:0]
def parse_file_grouping(self, file_grouping):
"""
Handles differences in the file_grouping definitions. It can either be a
path to a folder containing the files, a list of files, or it can contain
settings from an artifact_downloader instance.
:param file_grouping: A file grouping entry.
:return: A list of files to process.
"""
files = []
print(files)
if type(file_grouping) == list:
# A list of files was provided
files = file_grouping
elif type(file_grouping) == dict:
# A dictionary of settings from an artifact_downloader instance
# was provided here
files = get_task_data_paths(
file_grouping["task_group_id"],
file_grouping["path"],
artifact=file_grouping["artifact"],
artifact_dir=file_grouping.get("artifact_dir", None),
run_number=file_grouping["run_number"],
)
elif type(file_grouping) == str:
# Assume a path to files was given
filepath = files
newf = [f for f in pathlib.Path(filepath).rglob("*.json")]
if not newf:
# Couldn't find any JSON files, so take all the files
# in the directory
newf = [f for f in pathlib.Path(filepath).rglob("*")]
files = newf
else:
raise Exception(
"Unknown file grouping type provided here: %s" % file_grouping
)
if self.sort_files:
if type(files) == list:
files.sort()
else:
for _, file_list in files.items():
file_list.sort()
files = OrderedDict(sorted(files.items(), key=lambda entry: entry[0]))
if not files:
raise Exception(
"Could not find any files in this configuration: %s" % file_grouping
)
return files