Source code for aw_watcher_project.events.base

import datetime
from typing import Tuple

from aw_core import Event as AWEvent
from typing_extensions import TypedDict


[docs]class AllEventData(TypedDict): id: int timestamp: str duration: float
[docs]class Event:
[docs] def __init__(self, data: AllEventData): self.data = data
[docs] @classmethod def from_aw_event(cls, event: AWEvent) -> 'Event': data: AllEventData = AllEventData( id=event.id, timestamp=event.timestamp.isoformat(), duration=event.duration.total_seconds(), ) return cls(data)
def __repr__(self) -> str: return f"<Event(time={self.time}, duration={self.duration})>" @property def duration(self) -> float: return self.data["duration"] @property def time(self) -> datetime.datetime: return datetime.datetime.fromisoformat(self.data["timestamp"]) @property def end_time(self) -> datetime.datetime: return self.time + datetime.timedelta(seconds=self.duration) @property def day(self) -> datetime.date: return self.time.date() @property def start_end_duration(self) -> Tuple[datetime.datetime, datetime.datetime, float]: return self.time, self.end_time, self.duration