2 from typing import Iterable
4 from dateutil.relativedelta import relativedelta
6 class DateTimeRange(object):
10 is_output_elapse: bool
14 start_datetime: datetime.datetime | str | None = ...,
15 end_datetime: datetime.datetime | str | None = ...,
16 start_time_format: str = ...,
17 end_time_format: str = ...,
19 def __eq__(self, other: object) -> bool: ...
20 def __ne__(self, other: object) -> bool: ...
21 def __add__(self, other: datetime.timedelta) -> DateTimeRange: ...
22 def __iadd__(self, other: datetime.timedelta) -> DateTimeRange: ...
23 def __sub__(self, other: datetime.timedelta) -> DateTimeRange: ...
24 def __isub__(self, other: datetime.timedelta) -> DateTimeRange: ...
25 def __contains__(self, x: datetime.timedelta | DateTimeRange | str) -> bool: ...
27 def start_datetime(self) -> datetime.datetime: ...
29 def end_datetime(self) -> datetime.datetime: ...
31 def timedelta(self) -> datetime.timedelta: ...
32 def is_set(self) -> bool: ...
33 def validate_time_inversion(self) -> None: ...
34 def is_valid_timerange(self) -> bool: ...
35 def is_intersection(self, x: DateTimeRange) -> bool: ...
36 def get_start_time_str(self) -> str: ...
37 def get_end_time_str(self) -> str: ...
38 def get_timedelta_second(self) -> float: ...
39 def set_start_datetime(self, value: datetime.datetime | str | None, timezone: str | None = ...) -> None: ...
40 def set_end_datetime(self, value: datetime.datetime | str | None, timezone: str | None = ...) -> None: ...
41 def set_time_range(self, start: datetime.datetime | str | None, end: datetime.datetime | str | None) -> None: ...
42 def range(self, step: datetime.timedelta | relativedelta) -> Iterable[datetime.datetime]: ...
43 def intersection(self, x: DateTimeRange) -> DateTimeRange: ...
44 def encompass(self, x: DateTimeRange) -> DateTimeRange: ...
45 def truncate(self, percentage: float) -> None: ...