cuatrolabs-scm-ms / app /utils /mongodb.py
MukeshKapoor25's picture
PO decimal issue
6730276
"""
MongoDB utility functions for handling data type conversions.
"""
from typing import Any
from decimal import Decimal
def convert_decimals_to_float(obj: Any) -> Any:
"""
Recursively convert Decimal objects to float for MongoDB compatibility.
MongoDB/BSON cannot encode Python Decimal objects directly.
This function recursively traverses data structures and converts
all Decimal instances to float while preserving the structure.
Args:
obj: Any object that may contain Decimal instances
Returns:
Object with all Decimal instances converted to float
"""
if isinstance(obj, Decimal):
return float(obj)
elif isinstance(obj, dict):
return {key: convert_decimals_to_float(value) for key, value in obj.items()}
elif isinstance(obj, list):
return [convert_decimals_to_float(item) for item in obj]
elif isinstance(obj, tuple):
return tuple(convert_decimals_to_float(item) for item in obj)
else:
return obj