Spaces:
Sleeping
Sleeping
Commit ·
e0d6ecb
1
Parent(s): 111f8e3
Add missing utility functions safe_float and safe_int
Browse files- app/core/utils.py +24 -0
app/core/utils.py
CHANGED
|
@@ -19,3 +19,27 @@ def clean_nans(obj: Any) -> Any:
|
|
| 19 |
elif isinstance(obj, list):
|
| 20 |
return [clean_nans(v) for v in obj]
|
| 21 |
return obj
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 19 |
elif isinstance(obj, list):
|
| 20 |
return [clean_nans(v) for v in obj]
|
| 21 |
return obj
|
| 22 |
+
|
| 23 |
+
def safe_float(val: Any, default: float = 0.0) -> float:
|
| 24 |
+
"""Safely convert any value to float."""
|
| 25 |
+
try:
|
| 26 |
+
if val is None or (isinstance(val, float) and math.isnan(val)):
|
| 27 |
+
return default
|
| 28 |
+
return float(val)
|
| 29 |
+
except (ValueError, TypeError):
|
| 30 |
+
return default
|
| 31 |
+
|
| 32 |
+
def safe_int(val: Any, default: int = 0) -> int:
|
| 33 |
+
"""Safely convert any value to int."""
|
| 34 |
+
try:
|
| 35 |
+
if val is None or (isinstance(val, float) and math.isnan(val)):
|
| 36 |
+
return default
|
| 37 |
+
return int(float(val))
|
| 38 |
+
except (ValueError, TypeError):
|
| 39 |
+
return default
|
| 40 |
+
|
| 41 |
+
def safe_list(val: Any) -> list:
|
| 42 |
+
"""Ensure value is a list."""
|
| 43 |
+
if isinstance(val, list):
|
| 44 |
+
return val
|
| 45 |
+
return []
|