import numpy as np
import json
from bson import json_util
from datetime import datetime
from datetime import timedelta, timezone

def sanitize_data(data):
    """ 
    Recorre el JSON y transforma los valores no serializables:
    - Convierte NaN en None (JSON lo serializa como null).
    - Convierte inf y -inf en None (o puedes cambiarlo a otro valor como 0).
    - Mantiene None si es un valor aceptable en el backend.
    - Convierte booleanos a enteros si es necesario.
    """
    if isinstance(data, dict):
        return {key: sanitize_data(value) for key, value in data.items()}
    elif isinstance(data, list):
        return [sanitize_data(item) for item in data]
    elif isinstance(data, float):
        if np.isnan(data) or np.isinf(data):  
            return None  #"Infinity", "-Infinity", etc.
        return data
    elif isinstance(data, bool):  
        return data  # Opcional: Convertir True/False en 1/0 si el servidor lo necesita
    else:
        return data