Spaces:
Build error
Build error
| """Dataclass to dict serializer for JSON responses.""" | |
| from __future__ import annotations | |
| import dataclasses | |
| import math | |
| from typing import Any | |
| import numpy as np | |
| def to_dict(obj: Any) -> Any: | |
| """Recursively convert dataclass instances to dicts, handling numpy types.""" | |
| if obj is None: | |
| return None | |
| if dataclasses.is_dataclass(obj) and not isinstance(obj, type): | |
| return {k: to_dict(v) for k, v in dataclasses.asdict(obj).items()} | |
| if isinstance(obj, dict): | |
| return {k: to_dict(v) for k, v in obj.items()} | |
| if isinstance(obj, (list, tuple)): | |
| return [to_dict(item) for item in obj] | |
| if isinstance(obj, np.ndarray): | |
| return obj.tolist() | |
| if isinstance(obj, (np.integer,)): | |
| return int(obj) | |
| if isinstance(obj, (np.floating,)): | |
| v = float(obj) | |
| if math.isnan(v) or math.isinf(v): | |
| return 0.0 | |
| return v | |
| if isinstance(obj, (np.bool_,)): | |
| return bool(obj) | |
| if isinstance(obj, float): | |
| if math.isnan(obj) or math.isinf(obj): | |
| return 0.0 | |
| return obj | |