diff --git a/grafanimate/model.py b/grafanimate/model.py index 10aad16..20cae38 100644 --- a/grafanimate/model.py +++ b/grafanimate/model.py @@ -6,6 +6,7 @@ from datetime import datetime, timezone from enum import Enum from typing import Generator, List, Optional, Union +from grafanimate.timeutil import RecurrenceInfo from dateutil.rrule import rrule @@ -30,7 +31,8 @@ def __init__( self, start: Union[datetime, int, str], stop: Union[datetime, int, str], - every: str, + every: str = None, + recurrence: RecurrenceInfo = None, mode: Optional[SequencingMode] = SequencingMode.WINDOW, ): @@ -45,7 +47,10 @@ def __init__( # Analyze `every` parameter and converge into `RecurrenceInfo`. # From `every` (interval designator), compute frequency, interval and delta. - self.recurrence = get_freq_delta(every) + if recurrence is not None: + self.recurrence = recurrence + else: + self.recurrence = get_freq_delta(every) self.mode = mode self.index = None diff --git a/grafanimate/timeutil.py b/grafanimate/timeutil.py index 9c21e52..d6ba4e3 100644 --- a/grafanimate/timeutil.py +++ b/grafanimate/timeutil.py @@ -17,9 +17,6 @@ class RecurrenceInfo: For feeding data to `dateutil.rrule.rrule`. """ - # Original interval/windowing label. - every: str - # One of `rrules`s DAILY, HOURLY, ... frequency: int @@ -29,6 +26,9 @@ class RecurrenceInfo: # The segment duration, expressed as `relativedelta`. duration: relativedelta + # Original interval/windowing label. + every: str = None + @dataclasses.dataclass class Timerange: