Source code for top.core.encoding
"""JSON encoding for special types."""
import iso8601
import datetime
from typing import Optional
[docs]def encode_date(d: datetime.datetime) -> Optional[str]:
if d:
assert d.tzinfo is not None, f"Expected timezone aware date, got {d}"
return d.isoformat()
return None
[docs]def decode_date(s: str) -> Optional[datetime.datetime]:
if s:
# Python built-in fromisoformat() cannot
# read dates exported by JavaScript Date.toISOString().
# return datetime.datetime.fromisoformat(s)
return iso8601.parse_date(s)
return None