Source code for da_vinci.core.json

"""
JSON Utility functionality
"""

from datetime import datetime
from json import JSONEncoder
from typing import Any

from da_vinci.core.immutable_object import ObjectBody


[docs] class DateTimeEncoder(JSONEncoder): """ JSONEncoder class that encodes datetime objects strings """
[docs] def default(self, obj: Any) -> Any: """ Encode datetime objects as ISO format strings Keyword Arguments: obj -- Object to encode Raises: TypeError -- If object is not JSON serializable """ if isinstance(obj, datetime): return obj.isoformat() return JSONEncoder.default(self, obj)
[docs] class DaVinciObjectEncoder(JSONEncoder): """ JSONEncoder class that encodes commonly used framework objects """
[docs] def default(self, obj: Any) -> Any: """ Encode Da Vinci framework objects and datetime objects Handles ObjectBody instances by converting to dictionaries and datetime objects by converting to ISO format strings. Keyword Arguments: obj -- Object to encode Raises: TypeError -- If object is not JSON serializable """ if isinstance(obj, ObjectBody): return obj.to_dict() if isinstance(obj, datetime): return obj.isoformat() return JSONEncoder.default(self, obj)