12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- from typing import TYPE_CHECKING, List, Literal, Tuple, TypedDict
- from loguru import logger
- if TYPE_CHECKING:
- from .unit import TimeUnit # noqa: F401
- class DeltaType(TypedDict):
- year: int
- month: int
- day: int
- hour: int
- minute: int
- second: int
- class Result(dict):
- @staticmethod
- def from_invalid() -> "Error":
- return Error(error="no time pattern could be extracted.")
- @staticmethod
- def from_timedelta(delta_dict: DeltaType) -> "Delta":
- # logger.debug(f"time_delta: {delta_dict}")
- return Delta(delta_dict)
- @staticmethod
- def from_timestamp(result: List["TimeUnit"]) -> "Stamp":
- return Stamp(result[0].time.format("YYYY-MM-DD HH:mm:ss"))
- @staticmethod
- def from_timespan(result: List["TimeUnit"]) -> "Span":
- return Span(
- timespan=[
- result[0].time.format("YYYY-MM-DD HH:mm:ss"),
- result[1].time.format("YYYY-MM-DD HH:mm:ss"),
- ]
- )
- @property
- def type(
- self,
- ) -> Tuple[
- Literal["error"],
- Literal["timestamp"],
- Literal["timedelta"],
- Literal["timespan"],
- ]:
- """
- 结果类型,有 ``error``、``timespan``、``timedelta``、``timestamp``。
- """
- return self["type"]
- class Error(Result):
- __slot__ = "type", "error"
- def __init__(self, error) -> None:
- self["type"] = "error"
- self["error"] = error
- class Delta(Result):
- __slot__ = "type", "timedelta"
- def __init__(self, timedelta: DeltaType) -> None:
- self["type"] = "timedelta"
- self["timedelta"] = timedelta
- class Stamp(Result):
- __slot__ = "type", "timestamp"
- def __init__(self, timestamp: str) -> None:
- self["type"] = "timestamp"
- self["timestamp"] = timestamp
- class Span(Result):
- __slot__ = "type", "timespan"
- def __init__(self, timespan) -> None:
- self["type"] = "timespan"
- self["timespan"] = timespan
|