""" SQLAlchemy JSON Encoder. JSON Encoder for query objects returned from SQLAlchemy. Since some common data types from databases are not JSON serializable, this encoder returns str of unsupported types. """ from datetime import datetime from decimal import Decimal import json from sqlalchemy.orm.state import InstanceState class SQLAlchemyJSONEncoder(json.JSONEncoder): """JSON encoder class for use in SQLAlchemy.""" def default(self, obj): """Encode data object. Args: obj (object): data object to serialize for JSON. Returns: str: JSON representation of object. """ if isinstance(obj, datetime): return str(obj) elif isinstance(obj, Decimal): return str(obj) elif isinstance(obj, InstanceState): return str(obj) return json.JSONEncoder.default(self, obj)