@@ -608,42 +608,30 @@ def extract_code(self, code: str) -> str:
608608
609609 return match .group (1 ) if match else code
610610
611- def normalize_string (s : str ) -> str :
612- return '' .join (c for c in s .lower ().strip () if c not in string .punctuation )
613611
614- def normalize_string (s : str ) -> str :
615- """Normalize a string by converting to lowercase and stripping spaces."""
616- return s .lower ().strip ()
617612
618- def normalize_dict (d : dict ) -> dict :
619- """
620- Normalize the dictionary by:
621- - Converting all string values to lowercase and stripping spaces.
622- - Recursively normalizing nested dictionaries.
623- - Sorting lists of primitives and creating sorted list of normalized dicts for lists of dicts.
624- """
613+ def normalize_dict (d : Dict [str , Any ]) -> Dict [str , Any ]:
625614 normalized = {}
626615 for key , value in d .items ():
627616 if isinstance (value , str ):
628- normalized [key ] = normalize_string ( value )
617+ normalized [key ] = value . lower (). strip ( )
629618 elif isinstance (value , dict ):
630619 normalized [key ] = normalize_dict (value )
631620 elif isinstance (value , list ):
632- if all (isinstance (v , dict ) for v in value ):
633- normalized [key ] = sorted (
634- normalize_dict (v ) for v in value
635- )
636- else :
637- normalized [key ] = sorted (
638- normalize_dict (v ) if isinstance (v , dict )
639- else normalize_string (v ) if isinstance (v , str )
640- else v
641- for v in value
642- )
621+ normalized [key ] = normalize_list (value )
643622 else :
644623 normalized [key ] = value
645- return dict (sorted (normalized .items ()))
646-
647- def are_content_equal (generated_result : dict , reference_result : dict ) -> bool :
624+ return normalized
625+
626+ def normalize_list (lst : List [Any ]) -> List [Any ]:
627+ return [
628+ normalize_dict (item ) if isinstance (item , dict )
629+ else normalize_list (item ) if isinstance (item , list )
630+ else item .lower ().strip () if isinstance (item , str )
631+ else item
632+ for item in lst
633+ ]
634+
635+ def are_content_equal (generated_result : Dict [str , Any ], reference_result : Dict [str , Any ]) -> bool :
648636 """Compare two dictionaries for semantic equality."""
649- return normalize_dict (generated_result ) == normalize_dict (reference_result )
637+ return normalize_dict (generated_result ) == normalize_dict (reference_result )
0 commit comments