from functools import reduce from typing import List, TypeVar from utils.list_utils import agg_by T = TypeVar("T") def agg_by_date(data: List[T]) -> List[T]: data_by_date = agg_by(data, lambda i: i.date) result = [] for _date, items in data_by_date.items(): if len(items) == 1: result.append(items[0]) else: result.append(reduce(lambda a, b: a + b, items)) return result