@@ -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