@@ -447,8 +447,11 @@ def from_dict(
447447 def __str__ (self ) -> str :
448448 """String representation for debugging."""
449449 best_latency = self .best_scheme .latency_ms if self .best_scheme else 0.0
450+ pattern_str = self .pattern_signature [:40 ] + (
451+ "..." if len (self .pattern_signature ) > 40 else ""
452+ )
450453 return (
451- f"PatternSchemes(pattern='{ self . pattern_signature [: 40 ] } ... ', "
454+ f"PatternSchemes(pattern='{ pattern_str } ', "
452455 f"schemes={ self .num_schemes } , best_latency={ best_latency :.3f} ms)"
453456 )
454457
@@ -516,19 +519,22 @@ def add_pattern_schemes(self, pattern_schemes: PatternSchemes) -> None:
516519 for scheme in sorted_schemes :
517520 # Check if this scheme is too similar to any already-filtered scheme
518521 too_similar = False
522+ existing_to_remove = None # at most one; remove after inner loop
519523 for existing_scheme in filtered_schemes :
520524 distance = scheme .distance (existing_scheme )
521525 if distance < self .minimum_distance :
522526 # Schemes are too similar, keep the better one
523527 if scheme .latency_ms < existing_scheme .latency_ms :
524- # New scheme is better, remove existing and add new
525- filtered_schemes . remove ( existing_scheme )
528+ # New scheme is better; mark existing for removal
529+ existing_to_remove = existing_scheme
526530 break
527531 else :
528532 # Existing scheme is better, skip new one
529533 too_similar = True
530534 break
531535
536+ if existing_to_remove is not None :
537+ filtered_schemes .remove (existing_to_remove )
532538 if not too_similar :
533539 filtered_schemes .append (scheme )
534540
0 commit comments