def subdivideTime(timeframe: Timeframe, period: Period) -> List[Timeframe]: """Subdivide the time between startTime and endTime given into periods of length period and return tuples containing the start and end time of the respective period""" if period.isInfinite(): return [timeframe] delta = period.delta periods = [] today = timeframe.start oneDay = timedelta(1) while today <= timeframe.end: afterOnePeriod = today + delta periods.append( Timeframe(today, afterOnePeriod - oneDay) ) # Shift the last date backward one day so we dont have overlapping dates. today = afterOnePeriod return periods