import datetime from glom import assign, delete def set_data(data, exclude=None, extra=None, **kwargs): for k, v in (kwargs | (extra or {})).items(): assign(data, k, v, missing=dict) for k in exclude or tuple(): delete(data, k, ignore_missing=True) return data def serialize_datetime(obj): if isinstance(obj, datetime.datetime): return obj.isoformat() raise TypeError("Type not serializable")