Files
Solax/myenv/lib/python3.12/site-packages/reactivex/abc/periodicscheduler.py
2024-09-13 09:46:28 +02:00

50 lines
1.3 KiB
Python

from abc import ABC, abstractmethod
from typing import Callable, Optional, TypeVar, Union
from .disposable import DisposableBase
from .scheduler import RelativeTime, ScheduledAction
_TState = TypeVar("_TState") # Can be anything
ScheduledPeriodicAction = Callable[[Optional[_TState]], Optional[_TState]]
ScheduledSingleOrPeriodicAction = Union[
ScheduledAction[_TState], ScheduledPeriodicAction[_TState]
]
class PeriodicSchedulerBase(ABC):
"""PeriodicScheduler abstract base class."""
__slots__ = ()
@abstractmethod
def schedule_periodic(
self,
period: RelativeTime,
action: ScheduledPeriodicAction[_TState],
state: Optional[_TState] = None,
) -> DisposableBase:
"""Schedules a periodic piece of work.
Args:
period: Period in seconds or timedelta for running the
work periodically.
action: Action to be executed.
state: [Optional] Initial state passed to the action upon
the first iteration.
Returns:
The disposable object used to cancel the scheduled
recurring action (best effort).
"""
return NotImplemented
__all__ = [
"PeriodicSchedulerBase",
"ScheduledPeriodicAction",
"ScheduledSingleOrPeriodicAction",
"RelativeTime",
]