Source code for hgraph._operators._time_series_properties

from datetime import datetime, date, time
from typing import TypeVar

from hgraph._operators._operators import CmpResult
from hgraph._types._time_series_types import TIME_SERIES_TYPE, SIGNAL
from hgraph._types._ts_type import TS
from hgraph._wiring._decorators import operator

__all__ = ("valid", "last_modified_date", "last_modified_time", "modified", "evaluation_time_in_range", "TIME_TYPE", "last_modified_wall_clock_time")


[docs] @operator def valid(ts: TIME_SERIES_TYPE, ts_value: TIME_SERIES_TYPE = None) -> TS[bool]: """ Ticks with False when the ts is not valid and True when it is. """ ...
[docs] @operator def last_modified_time(ts: SIGNAL) -> TS[datetime]: """ The datetime representing the last modified time of the time series. """ ...
@operator def last_modified_wall_clock_time(ts: SIGNAL) -> TS[datetime]: """ The datetime representing the last modified time of the time series. """ ...
[docs] @operator def last_modified_date(ts: SIGNAL) -> TS[date]: """ The date component of the last modified time of the time series. """ ...
[docs] @operator def modified(ts: SIGNAL) -> TS[bool]: """ True if the time-series has been modified in this engine cycle, False otherwise. This is a live time-series as such it will actively tick False on the next engine cycle if the value is not modified again. """ ...
TIME_TYPE = TypeVar("TIME_TYPE", datetime, date, time)
[docs] @operator def evaluation_time_in_range(start_time: TS[TIME_TYPE], end_time: TS[TIME_TYPE]) -> TS[CmpResult]: """ Indicates if the current evaluation time is less that, within, or greater than the time range provided. It is possible to provide a pair to datetime values, or time, or dates. In the case of datetime and date ranges, this is a precise comparison. In the case of times, the comparison will vary depending on the time ordering. A time that is within a day (when start_time < end_time) then it is greater than after the last time of the current date (in UTC) otherwise it is less than. When end < start, then the comparison will also be either before or in the range. :param start_time: [datetime, date, time] The start time of the range. :param end_time: [datetime, date, time] The end time of the range. :return: CmpResult indicating if the engine time is less than, within, or greater than the time range. """ ...