@@ -164,16 +164,18 @@ def _identify_improvement_areas(
164164 # Only compare numeric metrics
165165 if not isinstance (value , (int , float )) or isinstance (value , bool ):
166166 continue
167-
167+
168168 improved = True
169169 regressed = True
170170
171171 for attempt in recent_attempts :
172172 attempt_value = attempt ["metrics" ].get (metric , 0 )
173173 # Skip comparison if attempt value is not numeric
174- if not isinstance (attempt_value , (int , float )) or isinstance (attempt_value , bool ):
174+ if not isinstance (attempt_value , (int , float )) or isinstance (
175+ attempt_value , bool
176+ ):
175177 continue
176-
178+
177179 if attempt_value <= value :
178180 regressed = False
179181 if attempt_value >= value :
@@ -240,18 +242,22 @@ def _format_evolution_history(
240242
241243 # Get only numeric metrics for comparison
242244 current_numeric_metrics = {
243- m : v for m , v in program .get ("metrics" , {}).items ()
245+ m : v
246+ for m , v in program .get ("metrics" , {}).items ()
244247 if isinstance (v , (int , float )) and not isinstance (v , bool )
245248 }
246249 parent_numeric_metrics = {
247- m : v for m , v in parent_metrics .items ()
250+ m : v
251+ for m , v in parent_metrics .items ()
248252 if isinstance (v , (int , float )) and not isinstance (v , bool )
249253 }
250254
251255 if current_numeric_metrics and parent_numeric_metrics :
252256 # Only compare metrics that exist in both
253- common_metrics = set (current_numeric_metrics .keys ()) & set (parent_numeric_metrics .keys ())
254-
257+ common_metrics = set (current_numeric_metrics .keys ()) & set (
258+ parent_numeric_metrics .keys ()
259+ )
260+
255261 if common_metrics :
256262 if all (
257263 current_numeric_metrics .get (m , 0 ) >= parent_numeric_metrics .get (m , 0 )
@@ -287,7 +293,11 @@ def _format_evolution_history(
287293
288294 # Calculate a composite score from only numeric metrics
289295 metrics_dict = program .get ("metrics" , {})
290- numeric_values = [v for v in metrics_dict .values () if isinstance (v , (int , float )) and not isinstance (v , bool )]
296+ numeric_values = [
297+ v
298+ for v in metrics_dict .values ()
299+ if isinstance (v , (int , float )) and not isinstance (v , bool )
300+ ]
291301 score = sum (numeric_values ) / max (1 , len (numeric_values )) if numeric_values else 0.0
292302
293303 # Extract key features (this could be more sophisticated)
0 commit comments