This commit is contained in:
1 parent
cd7ddd3cf6
commit
89621bc7c3
15 files changed
+289
-74
No files matched your search
+10
-1
@@ -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:
|
||||
|
||||
Reference in new issue
Block a user