Quiet-hours gate for heartbeat / routine delivery.
Functions:
in_quiet_hours
in_quiet_hours(
*,
enabled: bool = True,
start: str = "22:00",
end: str = "07:00",
now: Optional[datetime] = None,
) -> bool
True if now falls inside quiet hours (supports overnight wrap).
Source code in src/diapason/heartbeat/quiet.py
| def in_quiet_hours(
*,
enabled: bool = True,
start: str = "22:00",
end: str = "07:00",
now: Optional[datetime] = None,
) -> bool:
"""True if *now* falls inside quiet hours (supports overnight wrap)."""
if not enabled:
return False
t0 = _parse_hhmm(start)
t1 = _parse_hhmm(end)
if t0 is None or t1 is None:
return False
current = (now or datetime.now()).time().replace(second=0, microsecond=0)
if t0 == t1:
return False
if t0 < t1:
# e.g. 09:00–17:00
return t0 <= current < t1
# Overnight wrap e.g. 22:00–07:00
return current >= t0 or current < t1
|