# from redshift_connector.config import max_int4, max_int8, min_int4, min_int8 # # # class Interval: # """An Interval represents a measurement of time. In PostgreSQL, an # interval is defined in the measure of months, days, and microseconds; as # such, the interval type represents the same information. # # Note that values of the :attr:`microseconds`, :attr:`days` and # :attr:`months` properties are independently measured and cannot be # converted to each other. A month may be 28, 29, 30, or 31 days, and a day # may occasionally be lengthened slightly by a leap second. # # .. attribute:: microseconds # # Measure of microseconds in the interval. # # The microseconds value is constrained to fit into a signed 64-bit # integer. Any attempt to set a value too large or too small will result # in an OverflowError being raised. # # .. attribute:: days # # Measure of days in the interval. # # The days value is constrained to fit into a signed 32-bit integer. # Any attempt to set a value too large or too small will result in an # OverflowError being raised. # # .. attribute:: months # # Measure of months in the interval. # # The months value is constrained to fit into a signed 32-bit integer. # Any attempt to set a value too large or too small will result in an # OverflowError being raised. # """ # # def __init__(self: 'Interval', microseconds: int = 0, days: int = 0, months: int = 0) -> None: # self.microseconds = microseconds # self.days = days # self.months = months # # def _setMicroseconds(self: 'Interval', value: int) -> None: # if not isinstance(value, int): # raise TypeError("microseconds must be an integer type") # elif not (min_int8 < value < max_int8): # raise OverflowError( # "microseconds must be representable as a 64-bit integer") # else: # self._microseconds = value # # def _setDays(self: 'Interval', value: int) -> None: # if not isinstance(value, int): # raise TypeError("days must be an integer type") # elif not (min_int4 < value < max_int4): # raise OverflowError( # "days must be representable as a 32-bit integer") # else: # self._days = value # # def _setMonths(self: 'Interval', value: int) -> None: # if not isinstance(value, int): # raise TypeError("months must be an integer type") # elif not (min_int4 < value < max_int4): # raise OverflowError( # "months must be representable as a 32-bit integer") # else: # self._months = value # # microseconds = property(lambda self: self._microseconds, _setMicroseconds) # days = property(lambda self: self._days, _setDays) # months = property(lambda self: self._months, _setMonths) # # def __repr__(self: 'Interval') -> str: # return "<Interval %s months %s days %s microseconds>" % ( # self.months, self.days, self.microseconds) # # def __eq__(self: 'Interval', other: object) -> bool: # return other is not None and isinstance(other, Interval) and \ # self.months == other.months and self.days == other.days and \ # self.microseconds == other.microseconds # # def __neq__(self: 'Interval', other: 'Interval') -> bool: # return not self.__eq__(other)