from typing import Any
def serialize_model(obj: Any) -> Any:
"""Convertit un objet FFBB en dict JSON-serializable."""
if obj is None:
return None
if isinstance(obj, (str, int, float, bool)):
return obj
# Let Pydantic do the heavy lifting natively in C/Rust (V2)
if hasattr(obj, "model_dump"): # Pydantic v2
return obj.model_dump(mode="json")
if hasattr(obj, "dict"): # Pydantic v1
return obj.dict()
if isinstance(obj, dict):
return {k: serialize_model(v) for k, v in obj.items()}
if isinstance(obj, list):
return [serialize_model(item) for item in obj]
if hasattr(obj, "__dict__"):
return {
k: serialize_model(v)
for k, v in obj.__dict__.items()
if not k.startswith("_")
}
return str(obj)