core.py 582 B

12345678910111213141516171819202122232425262728
  1. from datetime import datetime, timezone
  2. from typing import Any, Optional
  3. UTC = timezone.utc
  4. def utcnow() -> datetime:
  5. return datetime.now(tz=UTC)
  6. def isoformat(dt: Optional[datetime]) -> Optional[str]:
  7. if dt is None:
  8. return None
  9. return dt.astimezone(UTC).isoformat()
  10. def parse_datetime(value: Optional[str]) -> Optional[datetime]:
  11. if not value:
  12. return None
  13. return datetime.fromisoformat(value)
  14. def parse_int(value: Any, default: int) -> int:
  15. try:
  16. return int(value)
  17. except (TypeError, ValueError):
  18. return default