from datetime import date, datetime, timedelta, timezone # Costa Rica has no DST; a fixed offset is exact year-round. CR_TZ = timezone(timedelta(hours=-6)) def today_cr() -> date: """Current date in Costa Rica (UTC-6). The server clock is UTC — at 6 pm in Costa Rica it is already "tomorrow" in UTC. Anything user-facing that means "today" (agent answers, date defaults) must come from here, never date.today(). """ return datetime.now(CR_TZ).date() def utcnow() -> datetime: """Naive UTC now, via the non-deprecated API. Every datetime column in the schema is TIMESTAMP WITHOUT TIME ZONE, so the whole app speaks naive-UTC. Replacing datetime.utcnow() call sites with this helper removes the Python 3.12 deprecation without changing any stored value or comparison. When the columns move to TIMESTAMPTZ (Phase 2), this becomes `datetime.now(timezone.utc)` and the type change happens in exactly one place. """ return datetime.now(timezone.utc).replace(tzinfo=None)