in mozci/push.py [0:0]
def make_summary_objects(from_date, to_date, branch, type):
"""Returns a list of summary objects matching the parameters.
When invoked with a `type` argument, this method will return a list of
Summary objects of the corresponding type. For example, `type='group'` will
return a list of GroupSummary objects.
Args:
from_date (str): String representing a date value.
to_date (str): String representing a date value.
branch (str): String that references one of the Mozilla CI's repositories.
type (str): String that references one of the supported Summary types.
Returns:
list: List of Summary objects, or an empty list.
"""
# Retrieve the function by name using the provided `type` argument.
func = "__make_{}_summary_objects".format(type).lower()
# If the method name `func` (maps to either of the private methods)
# is not found, then return an empty list.
if not func:
return []
# Obtain list of all pushes for the specified branch, from_date and to_date.
pushes = make_push_objects(from_date=from_date, to_date=to_date, branch=branch)
# Flatten list of tasks for every push to a 1-dimensional list.
tasks = sorted(
[task for push in pushes for task in push.tasks], key=lambda x: x.label
)
summaries = globals()[func](tasks)
# Sort by either the label (LabelSummary) or name (GroupSummary).
summaries.sort(key=lambda x: (getattr(x, "label", "name")))
return summaries