Skip to content

quiet

quiet

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