@@ -12,26 +12,23 @@ def transform_asserts(self, code: str) -> str:
1212
1313 for line in lines :
1414 transformed = self ._transform_assert_line (line )
15- if transformed is not None :
16- result_lines .append (transformed )
17- else :
18- result_lines .append (line )
15+ result_lines .append (transformed if transformed is not None else line )
1916
2017 return "\n " .join (result_lines )
2118
2219 def _transform_assert_line (self , line : str ) -> Optional [str ]:
2320 indent = line [: len (line ) - len (line .lstrip ())]
2421
25- assert_match = re . match (r"\s*assert\s+(.*?)(?:\s*==\s*.*)?$" , line )
22+ assert_match = self . assert_re . match (line )
2623 if assert_match :
2724 expression = assert_match .group (1 ).strip ()
2825 if expression .startswith ("not " ):
2926 return f"{ indent } { expression } "
3027
31- expression = re . sub ( r"[,;]\s*$" , "" , expression )
28+ expression = expression . rstrip ( ",;" )
3229 return f"{ indent } { expression } "
3330
34- unittest_match = re . match ( r"(\s*) self\.assert([A-Za-z]+)\((.*)\)$" , line )
31+ unittest_match = self . unittest_re . match ( line )
3532 if unittest_match :
3633 indent , assert_method , args = unittest_match .groups ()
3734
@@ -65,6 +62,11 @@ def _split_top_level_args(self, args_str: str) -> list[str]:
6562
6663 return result
6764
65+ def __init__ (self ):
66+ # Pre-compiling regular expressions for faster execution
67+ self .assert_re = re .compile (r"\s*assert\s+(.*?)(?:\s*==\s*.*)?$" )
68+ self .unittest_re = re .compile (r"(\s*)self\.assert([A-Za-z]+)\((.*)\)$" )
69+
6870
6971def clean_concolic_tests (test_suite_code : str ) -> str :
7072 try :
0 commit comments