ahlya / app /core /utils.py
Ba7ath-Project's picture
Fix et migration database
91de656
raw
history blame contribute delete
635 Bytes
import math
from decimal import Decimal
from typing import Any
def clean_nans(obj: Any) -> Any:
"""
Recursive utility to replace NaN, Infinity, and -Infinity with None
to ensure JSON compatibility.
Standards Moez Elbey: Missing data => null/None.
"""
if isinstance(obj, float):
if math.isnan(obj) or math.isinf(obj):
return None
return obj
elif isinstance(obj, Decimal):
return float(obj)
elif isinstance(obj, dict):
return {k: clean_nans(v) for k, v in obj.items()}
elif isinstance(obj, list):
return [clean_nans(v) for v in obj]
return obj