in aidial_adapter_bedrock/utils/json.py [0:0]
def _to_dict(obj: Any, **kwargs) -> Any:
def rec(val):
return _to_dict(val, **kwargs)
def dict_field(key: str, val: Any) -> Any:
if key in kwargs.get("excluded_keys", []):
return "<excluded>"
return val
if isinstance(obj, bytes):
return f"<bytes>({len(obj):_} B)"
if isinstance(obj, Enum):
return obj.value
if isinstance(obj, dict):
return {key: rec(dict_field(key, value)) for key, value in obj.items()}
if isinstance(obj, list):
return [rec(element) for element in obj]
if isinstance(obj, tuple):
return tuple(rec(element) for element in obj)
if isinstance(obj, BaseModel):
return rec(obj.dict())
if hasattr(obj, "to_dict"):
return rec(obj.to_dict())
if is_dataclass(type(obj)):
return rec(asdict(obj))
return obj