"""JSON specific utilities.""" from datetime import date from typing import Any import rfc3339 from flask.json import JSONEncoder class CustomJSONEncoder(JSONEncoder): """Ensure that datetime values are serialized correctly.""" def default(self, o: Any) -> Any: # pylint: disable=E0202 """Handle encoding date and datetime objects according to rfc3339.""" try: if isinstance(o, date): return rfc3339.format(o) iterable = iter(o) except TypeError: pass else: return list(iterable) return JSONEncoder.default(self, o)