vaani-cavp-engine / utils /serializers.py
Shaankar39's picture
init: Vaani CAVP engine (CPU, accuracy-first — Whisper large-v3, spaCy trf)
7d5f092
"""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