コード例 #1
0
    def test_to_float_timestamp_time_of_day(self):
        """Conversion from time-of-day specification to timestamp"""
        hour, hour_delta = 12, 1
        ref_t = tg_dtm._datetime_to_float_timestamp(
            dtm.datetime(1970, 1, 1, hour=hour))

        # test for a time of day that is still to come, and one in the past
        time_future, time_past = dtm.time(hour +
                                          hour_delta), dtm.time(hour -
                                                                hour_delta)
        assert tg_dtm.to_float_timestamp(time_future,
                                         ref_t) == ref_t + 60 * 60 * hour_delta
        assert tg_dtm.to_float_timestamp(
            time_past, ref_t) == ref_t + 60 * 60 * (24 - hour_delta)
コード例 #2
0
 def test_to_float_timestamp_absolute_naive_no_pytz(self, monkeypatch):
     """Conversion from timezone-naive datetime to timestamp.
     Naive datetimes should be assumed to be in UTC.
     """
     monkeypatch.setattr(tg_dtm, "UTC", tg_dtm.DTM_UTC)
     datetime = dtm.datetime(2019, 11, 11, 0, 26, 16, 10**5)
     assert tg_dtm.to_float_timestamp(datetime) == 1573431976.1
コード例 #3
0
 def test_to_float_timestamp_delta(self, time_spec):
     """Conversion from a 'delta' time specification to timestamp"""
     reference_t = 0
     delta = time_spec.total_seconds() if hasattr(
         time_spec, "total_seconds") else time_spec
     assert tg_dtm.to_float_timestamp(time_spec,
                                      reference_t) == reference_t + delta
コード例 #4
0
 def test_to_float_timestamp_absolute_aware(self, timezone):
     """Conversion from timezone-aware datetime to timestamp"""
     # we're parametrizing this with two different UTC offsets to exclude the possibility
     # of an xpass when the test is run in a timezone with the same UTC offset
     test_datetime = dtm.datetime(2019, 11, 11, 0, 26, 16, 10**5)
     datetime = timezone.localize(test_datetime)
     assert (tg_dtm.to_float_timestamp(datetime) == 1573431976.1 -
             timezone.utcoffset(test_datetime).total_seconds())
コード例 #5
0
    def test_to_float_timestamp_time_of_day_timezone(self, timezone):
        """Conversion from timezone-aware time-of-day specification to timestamp"""
        # we're parametrizing this with two different UTC offsets to exclude the possibility
        # of an xpass when the test is run in a timezone with the same UTC offset
        ref_datetime = dtm.datetime(1970, 1, 1, 12)
        utc_offset = timezone.utcoffset(ref_datetime)
        ref_t, time_of_day = tg_dtm._datetime_to_float_timestamp(
            ref_datetime), ref_datetime.time()
        aware_time_of_day = timezone.localize(ref_datetime).timetz()

        # first test that naive time is assumed to be utc:
        assert tg_dtm.to_float_timestamp(time_of_day,
                                         ref_t) == pytest.approx(ref_t)
        # test that by setting the timezone the timestamp changes accordingly:
        assert tg_dtm.to_float_timestamp(
            aware_time_of_day,
            ref_t) == pytest.approx(ref_t + (-utc_offset.total_seconds() %
                                             (24 * 60 * 60)))
コード例 #6
0
    def __clear(self,
                mapping: MutableMapping,
                time_cutoff: Union[float, datetime] = None) -> None:
        if not time_cutoff:
            mapping.clear()
            return

        if isinstance(time_cutoff, datetime):
            effective_cutoff = to_float_timestamp(
                time_cutoff,
                tzinfo=self.bot.defaults.tzinfo if self.bot.defaults else None)
        else:
            effective_cutoff = time_cutoff

        # We need a list instead of a generator here, as the list doesn't change it's size
        # during the iteration
        to_drop = [
            key for key, data in mapping.items()
            if data.access_time < effective_cutoff
        ]
        for key in to_drop:
            mapping.pop(key)
コード例 #7
0
 def test_to_float_timestamp_absolute_naive(self):
     """Conversion from timezone-naive datetime to timestamp.
     Naive datetimes should be assumed to be in UTC.
     """
     datetime = dtm.datetime(2019, 11, 11, 0, 26, 16, 10**5)
     assert tg_dtm.to_float_timestamp(datetime) == 1573431976.1
コード例 #8
0
 def test_to_timestamp(self, time_spec):
     # delegate tests to `to_float_timestamp`
     assert tg_dtm.to_timestamp(time_spec) == int(
         tg_dtm.to_float_timestamp(time_spec))
コード例 #9
0
 def test_to_float_timestamp_error(self):
     with pytest.raises(TypeError, match="Defaults"):
         tg_dtm.to_float_timestamp(Defaults())
コード例 #10
0
 def test_to_float_timestamp_default_reference(self, time_spec):
     """The reference timestamp for relative time specifications should default to now"""
     now = time.time()
     assert tg_dtm.to_float_timestamp(time_spec) == pytest.approx(
         tg_dtm.to_float_timestamp(time_spec, reference_timestamp=now))
コード例 #11
0
 def test_to_float_timestamp_absolute_no_reference(self):
     """A reference timestamp is only relevant for relative time specifications"""
     with pytest.raises(ValueError):
         tg_dtm.to_float_timestamp(dtm.datetime(2019, 11, 11),
                                   reference_timestamp=123)