def test_range(self): day = dt.hday(2020, 2, 2) time = dt.time(21, 20) base = dt.datetime.from_day_time(day, time) range = dt.Range(base, base + dt.timedelta(minutes=30)) range_str = range.format(default_day=day) self.assertEqual(range_str, "21:20 - 21:50") range = dt.Range(None, base) range_str = range.format(default_day=day) self.assertEqual(range_str, "-- - 21:20")
def test_range(self): day = dt.hday(2020, 2, 2) time = dt.time(21, 20) base = dt.datetime.from_day_time(day, time) range = dt.Range(base, base + dt.timedelta(minutes=30)) range_str = range.format(default_day=day) self.assertEqual(range_str, "21:20 - 21:50") range = dt.Range(None, base) range_str = range.format(default_day=day) self.assertEqual(range_str, "-- - 21:20") # issue #576 start = dt.datetime(2020, 3, 8, 17, 7) end = dt.datetime(2020, 3, 8, 18, 6) range = dt.Range.from_start_end(start, end) self.assertEqual(range.start, start) self.assertEqual(range.end, end) # check passthrough range2 = dt.Range.from_start_end(range) self.assertEqual(range2.start, range.start) self.assertEqual(range2.end, range.end)
def from_dbus_fact_json(dbus_fact): """Convert D-Bus JSON to Fact.""" d = loads(dbus_fact) range_d = d['range'] # should use pdt.datetime.fromisoformat, # but that appears only in python3.7, nevermind start_s = range_d['start'] end_s = range_d['end'] range = dt.Range(start=dt.datetime.parse(start_s) if start_s else None, end=dt.datetime.parse(end_s) if end_s else None) d['range'] = range return Fact(**d)
def __init__(self, activity="", category=None, description=None, tags=None, range=None, start=None, end=None, start_time=None, end_time=None, id=None, activity_id=None): """Homogeneous chunk of activity. The category, description and tags must be passed explicitly. To provide the whole fact information as a single string, please use Fact.parse(string). range (dt.Range): time spanned by the fact. For convenience, the `start` and `end` arguments can be given instead. start (dt.datetime); Start of the fact range. Mutually exclusive with `range`. end (dt.datetime); End of the fact range. Mutually exclusive with `range`. start_time (dt.datetime): Deprecated. Same as start. end_time (dt.datetime): Deprecated. Same as end. id (int): id in the database. Should be used with extreme caution, knowing exactly why. (only for very specific direct database read/write) """ self.activity = activity self.category = category self.description = description self.tags = tags or [] if range: assert not start, "range already given" assert not end, "range already given" assert not start_time, "range already given" assert not end_time, "range already given" self.range = range else: if start_time: assert not start, "use only start, not start_time" start = start_time if end_time: assert not end, "use only end, not end_time" end = end_time self.range = dt.Range(start, end) self.id = id self.activity_id = activity_id
def test_range(self): t1 = dt.datetime(2020, 1, 15, 13, 30) t2 = dt.datetime(2020, 1, 15, 15, 30) range = dt.Range(t1, t2) fact = Fact(range=range) self.assertEqual(fact.range.start, t1) self.assertEqual(fact.range.end, t2) fact = Fact(start=t1, end=t2) self.assertEqual(fact.range.start, t1) self.assertEqual(fact.range.end, t2) # backward compatibility (before v3.0) fact = Fact(start_time=t1, end_time=t2) self.assertEqual(fact.range.start, t1) self.assertEqual(fact.range.end, t2)