"""JSON-safe serialization helpers (contract: ISO 8601 UTC with `Z`).""" from datetime import date, datetime, timezone def to_iso(value: datetime | None) -> str | None: """Timestamptz -> '2026-08-02T10:00:00Z' (UTC). Naive values are treated as UTC.""" if value is None: return None if value.tzinfo is None: value = value.replace(tzinfo=timezone.utc) return value.astimezone(timezone.utc).isoformat().replace("+00:00", "Z") def to_date(value: date | None) -> str | None: """Date -> 'YYYY-MM-DD'.""" return value.isoformat() if value is not None else None