Source code for fireant.dataset.intervals

from functools import partial

from .modifiers import DimensionModifier


[docs]class NumericInterval(DimensionModifier): def __init__(self, dimension, size=1, offset=0): self.size = size self.offset = offset super().__init__(dimension) def __eq__(self, other): return all([isinstance(other, NumericInterval), self.size == other.size, self.offset == other.offset]) def __hash__(self): return hash(repr(self))
DATETIME_INTERVALS = ('hour', 'day', 'week', 'month', 'quarter', 'year')
[docs]class DatetimeInterval(DimensionModifier): def __init__(self, dimension, interval_key): super().__init__(dimension) self.interval_key = interval_key def __eq__(self, other): return isinstance(other, DatetimeInterval) \ and self.alias == other.alias def __repr__(self): wrapped_key = super().__getattribute__('wrapped_key') wrapped = super().__getattribute__(wrapped_key) return '{}({})'.format(self.interval_key, repr(wrapped)) def __hash__(self): return hash(repr(self))
hour, day, week, month, quarter, year = [partial(DatetimeInterval, interval_key=key) for key in DATETIME_INTERVALS]