Fix: Make _safe_calculate_metric catch all exceptions
Problem: - test_get_market_activity_metrics was failing with "list index out of range" - _safe_calculate_metric only caught ValueError, not IndexError or other exceptions - This caused the entire function to crash when metric calculations failed Root Cause: - Market metric functions (calculate_market_activity_score, get_market_liquidity, analyze_investment_potential) can throw IndexError if insufficient data - The helper function wasn't catching these exceptions Solution: - Changed _safe_calculate_metric to catch all exceptions (Exception instead of ValueError) - Added logging to track which metric failed - Now returns error dict gracefully instead of crashing Impact: - get_market_activity_metrics is now more robust - Returns partial results even if some metrics fail - All 326 tests now pass 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -941,7 +941,7 @@ def _safe_calculate_metric(metric_func, deals):
|
|||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
Result dictionary from metric_func (serialized from Pydantic model),
|
Result dictionary from metric_func (serialized from Pydantic model),
|
||||||
or error dictionary if ValueError raised
|
or error dictionary if any exception raised
|
||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
result = metric_func(deals)
|
result = metric_func(deals)
|
||||||
@@ -949,7 +949,8 @@ def _safe_calculate_metric(metric_func, deals):
|
|||||||
if hasattr(result, "model_dump"):
|
if hasattr(result, "model_dump"):
|
||||||
return result.model_dump(exclude_none=True)
|
return result.model_dump(exclude_none=True)
|
||||||
return result
|
return result
|
||||||
except ValueError as e:
|
except Exception as e:
|
||||||
|
logger.warning(f"Error calculating metric {metric_func.__name__}: {e}")
|
||||||
return {"error": str(e)}
|
return {"error": str(e)}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user