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:
|
||||
Result dictionary from metric_func (serialized from Pydantic model),
|
||||
or error dictionary if ValueError raised
|
||||
or error dictionary if any exception raised
|
||||
"""
|
||||
try:
|
||||
result = metric_func(deals)
|
||||
@@ -949,7 +949,8 @@ def _safe_calculate_metric(metric_func, deals):
|
||||
if hasattr(result, "model_dump"):
|
||||
return result.model_dump(exclude_none=True)
|
||||
return result
|
||||
except ValueError as e:
|
||||
except Exception as e:
|
||||
logger.warning(f"Error calculating metric {metric_func.__name__}: {e}")
|
||||
return {"error": str(e)}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user