@@ -60,7 +60,7 @@ def extended_format_binary_op(
6060 arg1_start_offset , instructions , 1
6161 )
6262 if i is None :
63- return "" , None
63+ return NULL_EXTENDED_OP
6464 j = skip_cache (instructions , i + 1 )
6565 stack_inst2 = instructions [j ]
6666 if (
@@ -79,7 +79,7 @@ def extended_format_binary_op(
7979 return fmt_str % (arg2 , arg1 ), start_offset
8080 else :
8181 return fmt_str % ("..." , arg1 ), None
82- return "" , None
82+ return NULL_EXTENDED_OP
8383
8484
8585def extended_format_infix_binary_op (
@@ -103,7 +103,7 @@ def extended_format_infix_binary_op(
103103 if arg1_start_offset is not None :
104104 i = get_instruction_index_from_offset (arg1_start_offset , instructions , 1 )
105105 if i is None :
106- return "" , None
106+ return NULL_EXTENDED_OP
107107 j = i + 1
108108 # 3.11+ has CACHE instructions
109109 while instructions [j ].opname == "CACHE" :
@@ -129,7 +129,7 @@ def extended_format_infix_binary_op(
129129 return f"{ arg2 } { op_str } { arg1 } " , start_offset
130130 else :
131131 return f"...{ op_str } { arg1 } " , None
132- return "" , None
132+ return NULL_EXTENDED_OP
133133
134134
135135def extended_format_store_op (
@@ -142,7 +142,7 @@ def extended_format_store_op(
142142 # are more complicated, so let's not try to figure this out.
143143 # This kind of things is best left for a decompiler.
144144 if inst .is_jump_target :
145- return "" , None
145+ return NULL_EXTENDED_OP
146146
147147 prev_inst = instructions [1 ]
148148 start_offset = prev_inst .offset
@@ -198,7 +198,7 @@ def extended_format_ternary_op(
198198 if arg1_start_offset is not None :
199199 i = get_instruction_index_from_offset (arg1_start_offset , instructions , 1 )
200200 if i is None :
201- return "" , None
201+ return NULL_EXTENDED_OP
202202 j = skip_cache (instructions , i + 1 )
203203 stack_inst2 = instructions [j ]
204204 if (
@@ -229,7 +229,7 @@ def extended_format_ternary_op(
229229 return fmt_str % (arg2 , arg1 , arg3 ), start_offset
230230 else :
231231 return fmt_str % ("..." , "..." , "..." ), None
232- return "" , None
232+ return NULL_EXTENDED_OP
233233
234234
235235def extended_format_STORE_SUBSCR (
@@ -251,7 +251,7 @@ def extended_format_unary_op(
251251 return fmt_str % stack_arg .tos_str , start_offset
252252 if stack_arg .opcode in opc .operator_set :
253253 return fmt_str % stack_arg .argrepr , start_offset
254- return "" , None
254+ return NULL_EXTENDED_OP
255255
256256
257257def extended_format_ATTR (
@@ -271,7 +271,7 @@ def extended_format_ATTR(
271271 f"{ base } .{ instructions [0 ].argrepr } " ,
272272 instr1 .start_offset ,
273273 )
274- return "" , None
274+ return NULL_EXTENDED_OP
275275
276276
277277def extended_format_BINARY_ADD (
@@ -372,7 +372,7 @@ def extended_format_build_tuple_or_list(
372372 return f"{ left_delim } { args_str } ,{ right_delim } " , instructions [i ].start_offset
373373 else :
374374 return f"{ left_delim } { args_str } { right_delim } " , instructions [i ].start_offset
375- return "" , None
375+ return NULL_EXTENDED_OP
376376
377377
378378def extended_format_BUILD_CONST_KEY_MAP (opc , instructions ):
@@ -393,7 +393,7 @@ def extended_format_BUILD_CONST_KEY_MAP(opc, instructions):
393393 arg_pairs .append (f"{ key_values [i ]} : { arglist [i ]} " )
394394 args_str = ", " .join (arg_pairs )
395395 return "{" + args_str + "}" , instructions [i ].start_offset
396- return "" , None
396+ return NULL_EXTENDED_OP
397397
398398
399399def extended_format_BUILD_LIST (
@@ -426,7 +426,7 @@ def extended_format_BUILD_SLICE(
426426 if instructions [0 ].argval == 0 :
427427 # Degenerate case
428428 return "set()" , instructions [0 ].start_offset
429- return "" , None
429+ return NULL_EXTENDED_OP
430430
431431
432432def extended_format_BUILD_TUPLE (
@@ -479,7 +479,7 @@ def extended_format_CALL_FUNCTION(opc, instructions) -> Tuple[str, Optional[int]
479479 arglist , arg_count , i = get_arglist (instructions , 0 , arg_count )
480480
481481 if arglist is None :
482- return "" , None
482+ return NULL_EXTENDED_OP
483483
484484 assert i is not None
485485 if i >= len (instructions ) - 1 :
@@ -791,9 +791,9 @@ def get_instruction_arg(inst: Instruction, argval=None) -> str:
791791def get_instruction_tos_str (inst : Instruction ) -> str :
792792 if inst .tos_str is not None :
793793 argval = inst .tos_str
794- argval_without_push = re .match (r"^push\((.+)\) " , argval )
794+ argval_without_push = re .match (r"^(?: push|copy) \((.+)\) " , argval )
795795 if argval_without_push :
796- # remove surrounding "push(...)" string
796+ # remove surrounding "push(...) or copy(...) " string
797797 argval = argval_without_push .group (1 )
798798 else :
799799 argval = inst .argrepr
0 commit comments