Simplify status interface
Deploy Solar Relay / deploy (push) Successful in 1m2s

This commit is contained in:
franzz committed 2026-11-02 23:14:13 +01:00
1 parent cd7ddd3cf6
commit 89621bc7c3
15 files changed
+289 -74

No files matched your search

+10 -1
View File
@@ -1,7 +1,7 @@
"""Private runtime configuration; credential fields are excluded from reprs."""
from dataclasses import dataclass, field
from datetime import datetime, timezone
from datetime import datetime, timedelta, timezone
import math
from pathlib import Path
import re
@@ -18,6 +18,15 @@ def utc_text(value: datetime) -> str:
return value.astimezone(timezone.utc).isoformat(timespec="milliseconds").replace("+00:00", "Z")
def retention_cutoff(now: datetime, days: int, timezone_name: str) -> datetime:
"""Start of the oldest retained local calendar day, returned in UTC."""
if now.tzinfo is None:
raise ValueError("Retention time must include its timezone")
zone = ZoneInfo(timezone_name)
first = now.astimezone(zone).date() - timedelta(days=days)
return datetime.combine(first, datetime.min.time(), zone).astimezone(timezone.utc)
def date_bound(value: str | None, timezone_name: str) -> str | None:
"""Date bounds are local midnights; timestamp bounds may specify an offset."""
if value is None: