
    0hh                         S SK r S SKJrJr  S SKrS SKrS SKrS SKrS SKJ	r	  S SK
JrJr  S rS r " S S\5      r " S	 S
\R                   5      r " S S\5      r " S S\5      r\S:X  a  \R*                  " 5         gg)    N)combinationsproduct)support)BytecodeTestCaseCfgOptimizationTestCasec                 n    [         R                  " SU  S35      n0 n[        X5        US   R                  $ )Nz=
        def f(x):
            match x:
                case z#:
                    pass
        f)textwrapdedentexec__code__)patternsource	namespaces      </opt/python-3.13.8/usr/lib/python3.13/test/test_peepholer.py compile_pattern_with_fast_localsr      sE    __ Y 		F IS>"""    c                    Sn[         R                  " U 5       H  nUR                  U:X  d  M  US-  nM     [        U S5      (       a  U R                  n U R
                   H$  n[        US5      (       d  M  U[        XA5      -  nM&     U$ )Nr      r   co_code)disget_instructionsopnamehasattrr   	co_constscount_instr_recursively)r	   r   countinstrcs        r   r   r      s{    E%%a(<<6!QJE ) q*JJ[[1i  ,Q77E  Lr   c                      \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r\ RB                  " S5      S 5       r"S  r#S! r$S" r%S# r&S$ r'S% r(S& r)S'r*g())TestTranforms'   c           
      N   [        [        R                  " U5      5      nU Vs0 s H  o3R                  U_M     nnU H  nSUR                  ;  a  M  XCR
                     nUR                  S;   aD  U R                  UR                   SUR                   SUR                   SUR                   35        UR                  S;   d  M  UR                  S:X  d  M  U R                  UR                   SUR                   SUR                   SUR                   35        M     g s  snf )NJUMP_)JUMP_BACKWARDJUMP_FORWARDz at z
 jumps to RETURN_VALUE)listr   r   offsetr   argvalfail)selfcodeinstructionsr   targetstgts         r   check_jump_targets TestTranforms.check_jump_targets)   s    C00674@AL5<<&LA!Eell*,,'Czz>>		U\\N$u||n =&&)jj\cjj\C D  AA

n,		U\\N$u||n =&&)jj\cjj\C D " Bs   D"c                 $   [         R                  " U5      n[        [         R                  " U5      5      n[	        S U 5       5      n[        S U 5       5      nU R                  US5        U R                  U[        UR                  5      5        g )Nc              3   *   #    U  H	  oS    v   M     g7fr   N .0ts     r   	<genexpr>-TestTranforms.check_lnotab.<locals>.<genexpr>@        0AQ4   c              3   *   #    U  H	  oS    v   M     g7fr5   r6   r7   s     r   r:   r;   A   r<   r=   r   )
r   _get_code_objectr(   findlinestartsminmaxassertGreaterEqual
assertLesslenr   )r,   r-   lnotabmin_bytecodemax_bytecodes        r   check_lnotabTestTranforms.check_lnotab:   sp    ##D)c((./ 000000a0c$,,&78r   c                     S nU R                  US5        U R                  US5        U R                  US5        U R                  U5        g )Nc                     U S:X  d  A g g )N   r6   xs    r   unot%TestTranforms.test_unot.<locals>.unotJ   s    6 r   	UNARY_NOTPOP_JUMP_IF_FALSEPOP_JUMP_IF_TRUEassertNotInBytecodeassertInBytecoderI   )r,   rP   s     r   	test_unotTestTranforms.test_unotH   sI    	 	  {3  ':;d$67$r   c                     S HN  u  pnU R                  US9   [        USS5      nU R                  XBU5        U R                  U5        S S S 5        MP     g ! , (       d  f       Mb  = f)N))z
not a is bIS_OPr   )znot a is not br[   r   )z
not a in bCONTAINS_OPr   )znot a not in br\   r   line single)subTestcompilerW   rI   )r,   r^   cmp_opinvertr-   s        r   test_elim_inversion_of_is_or_in-TestTranforms.test_elim_inversion_of_is_or_inR   s`    % D& 4(tR2%%dF;!!$' )(% )(s   1A
A%	c                 p   S nS nS nUS 4US4US44 HS  u  pEU R                  US9   U R                  US5        U R                  USU5        U R                  U5        S S S 5        MU     S	 nU R                  US5        U R                  US
S 5        U R                  U5        g ! , (       d  f       M  = f)Nc                      S n S n U $ Nr6   rN   s    r   r	   0TestTranforms.test_global_as_constant.<locals>.f`   s    AAHr   c                  
    Sn U $ )NTr6   rN   s    r   g0TestTranforms.test_global_as_constant.<locals>.gd   s    AHr   c                  
    Sn U $ )NFr6   rN   s    r   h0TestTranforms.test_global_as_constant.<locals>.hg   s    AHr   TF)funcLOAD_GLOBAL
LOAD_CONSTc                      g ri   r6   r6   r   r   r	   rj   q   s    r   RETURN_CONST)ra   rV   rW   rI   )r,   r	   rl   ro   rq   elems         r   test_global_as_constant%TestTranforms.test_global_as_constant^   s    			 t9q$i!U<JD4(((}=%%dL$?!!$' )( =	 	  M2a6! )(s   7B&&
B5	c                     S nS H  nU R                  X5        M     S H  nU R                  X5        M     U R                  U5        g )Nc                  
      M  ri   )r(   r6   r   r   r	   'TestTranforms.test_while_one.<locals>.f{   s     r   )rs   rS   )r%   rU   )r,   r	   rv   s      r   test_while_oneTestTranforms.test_while_oney   sG    	 8D$$Q- 8&D!!!* '!r   c                    S Hp  u  pU R                  US9   [        USS5      nU R                  X25        U R                  US5        U R                  US5        U R	                  U5        S S S 5        Mr     g ! , (       d  f       M  = f)N))za, = a,ru   )za, b = a, bSWAP)za, b, c = a, b, cr   r]   r_   r`   BUILD_TUPLEUNPACK_SEQUENCEra   rb   rW   rV   rI   r,   r^   rv   r-   s       r   test_pack_unpackTestTranforms.test_pack_unpack   s|    JD
 4(tBx0%%d1((}=((/@A!!$' )(
 )(s   AA88
B	c           	      d   S H`  u  pU R                  US9   [        USS5      nU R                  USU5        U R                  US5        U R	                  U5        S S S 5        Mb     [        [        [        [        S5      5      5      SS5      nU R                  US5        [        R                  " U5       Vs/ s H  nUR                  S:X  d  M  UPM     nnU R                  [        U5      S5        U R	                  U5        S	 nU R	                  U5        g ! , (       d  f       GM'  = fs  snf )
N))z	a = 1,2,3r   rM      )z("a","b","c")abr   )za,b,c = 1,2,3r   )z(None, 1, None)Nr   N)z((1, 2), 3, 4)r   rM   r      r]   r_   r`   rs   r   '  r   c                      / SQ) 4  g )N)dr   r   rM   r   r               	   r   r   rM   r   r   r   r   r   r   r   r   r   rM   r   r   r   r   r   r   r   r   r   rM   r   r   r   r   r   r   r   r   r   rM   r   r   r   r   r   r   r   r   r   rM   r   r   r   r   r   r   r   r   r   rM   r   r   r   r   r   r   r   r   r   rM   r   r   r   r   r   r   r   r   r   rM   r   r   r   r   r   r   r   r   r   rM   r   r   r   r   r   r   r   r6   r6   r   r   craterATestTranforms.test_folding_of_tuples_of_constants.<locals>.crater   s      r   )ra   rb   rW   rV   rI   reprtupleranger   r   r   assertEqualrE   )r,   r^   rv   r-   r   load_constsr   s          r   #test_folding_of_tuples_of_constants1TestTranforms.test_folding_of_tuples_of_constants   s   JD 4(tBx0%%dL$?((}=!!$'	 )( tE%,/0H=  }5*-*>*>t*D ?*D!&!= *D ?[)1-$
	 	&!? )(?s   AD9D-D-
D*	c                     S H`  u  pU R                  US9   [        USS5      nU R                  USU5        U R                  US5        U R	                  U5        S S S 5        Mb     g ! , (       d  f       Mt  = f)N))za in [1,2,3]r   )za not in ["a","b","c"]r   )za in [None, 1, None]r   )za not in [(1, 2), 3, 4]r   r]   r_   r`   rs   
BUILD_LISTr   r   s       r   "test_folding_of_lists_of_constants0TestTranforms.test_folding_of_lists_of_constants   so    JD 4(tR2%%dL$?((|<!!$'	 )( )(s   AA((
A7	c           	         S[        1 Sk5      4S[        1 Sk5      4S[        SS 15      4S[        1 Sk5      4S	[        1 Sk5      44 H`  u  pU R                  US
9   [        USS5      nU R                  US5        U R	                  USU5        U R                  U5        S S S 5        Mb     S nS nU R                  U" S5      5        U R                  U" S5      (       + 5        U R                  U5        U R                  U" S5      (       + 5        U R                  U" S5      5        U R                  U5        g ! , (       d  f       GM  = f)Nza in {1,2,3}   r   rM   r   za not in {"a","b","c"}>   r   r   r   za in {None, 1, None}r   za not in {(1, 2), 3, 4}>   r   r   r   za in {1, 2, 3, 3, 2, 1}r]   r_   r`   	BUILD_SETrs   c                     U S;   $ Nr   r6   r   s    r   r	   :TestTranforms.test_folding_of_sets_of_constants.<locals>.f   s    	>!r   c                     U S;  $ r   r6   r   s    r   rl   :TestTranforms.test_folding_of_sets_of_constants.<locals>.g   s    I%%r   r   r   )	frozensetra   rb   rV   rW   rI   
assertTrue)r,   r^   rv   r-   r	   rl   s         r   !test_folding_of_sets_of_constants/TestTranforms.test_folding_of_sets_of_constants   s"    Yy12%y'AB#Y4y%9:&	.(AB&	)(<=JD 4(tR2(({;%%dL$?!!$'	 )(	"	& 	!AaD!!AaD!!!' )(s   AD<<
E	c                    S H  u  pU R                  US9   [        USS5      nU R                  USU5        [        R                  " U5       H-  nU R                  UR                  R                  S5      5        M/     U R                  U5        S S S 5        M     [        SSS5      nU R                  USS5        U R                  USS	5        U R                  U5        [        S
SS5      nU R                  USS5        U R                  SS-  UR                  5        U R                  U5        [        SSS5      nU R                  USS5        U R                  SS-  UR                  5        U R                  U5        [        SSS5      nU R                  USS5        U R                  SS-  UR                  5        U R                  U5        g ! , (       d  f       GM  = f)N))z	a = 2+3+4r   )z"@"*4z@@@@)za="abc" + "def"abcdef)za = 3**4Q   )za = 3*4   )z	a = 13//4r   )za = 14%4rM   )za = 2+3r   )za = 13-4r   )za = (12,13)[1]   )za = 13 << 24   )za = 13 >> 2r   )z
a = 13 & 7r   )z
a = 13 ^ 7
   )z
a = 13 | 7   r]   r_   r`   rs   BINARY_za=2+"b"rM   r   za="x"*10000r   rO   z	a=1<<1000i  r   z	a=2**1000)ra   rb   rW   r   r   assertFalser   
startswithrI   assertNotInr   )r,   r^   rv   r-   r   s        r   #test_folding_of_binops_on_constants1TestTranforms.test_folding_of_binops_on_constants   s   JD" 4(tR2%%dL$? 11$7E$$U\\%<%<Y%GH 8!!$' )(#2 y"h/dL!4dL#6$ }b(3dL%8UDNN3${B1dL$7D$..1${B1dL$7D$..1$3 )(s   A9G
G!	c                    [        SSS5      nU R                  USS5        U R                  US5        U R                  U5        [        SSS5      nU R                  USS5        U R                  US5        U R                  U5        [        S	SS5      nU R                  USS
5        U R                  US5        U R                  U5        [        SSS5      nU R                  US5        U R                  U5        g )Nz"foo"[0]r_   r`   rs   r	   BINARY_SUBSCRu	   "a￿"[1]u   ￿u	   "𒍅"[0]u   𒍅z	"fuu"[10])rb   rW   rV   rI   )r,   r-   s     r   test_binary_subscr_on_unicode+TestTranforms.test_binary_subscr_on_unicode  s    z2x0dL#6  7$*B9dL(;  o6$ ("h7dL,?  7$ {B1dO4$r   c                    S H  u  pU R                  US9   [        USS5      nU R                  USU5        [        R                  " U5       H-  nU R                  UR                  R                  S5      5        M/     U R                  U5        S S S 5        M     S n[        R                  " U5       H-  nU R                  UR                  R                  S5      5        M/     U R                  U5        S H`  u  pnU R                  US9   [        USS5      nU R                  USU5        U R                  X65        U R                  U5        S S S 5        Mb     g ! , (       d  f       GMk  = f! , (       d  f       M  = f)	N))z-0.5g      )z-0.0       )z
-(1.0-1.0)r   )z-0r   )z~-2r   )z+1r   r]   r_   r`   rs   UNARY_c                      g)Nr   r6   r6   r   r   negzeroDTestTranforms.test_folding_of_unaryops_on_constants.<locals>.negzero=  s    r   ))z-"abc"abcUNARY_NEGATIVE)z~"abc"r   UNARY_INVERT)	ra   rb   rW   r   r   r   r   r   rI   )r,   r^   rv   r-   r   r   r   s          r   %test_folding_of_unaryops_on_constants3TestTranforms.test_folding_of_unaryops_on_constants,  sF   
JD 4(tR2%%dL$? 11$7E$$U\\%<%<X%FG 8!!$' )(
 	 ))'2EU\\44X>? 3'"#
D 4(tR2%%dL$?%%d3!!$'	 )(	#
! )(( )(s   A9EAE1
E.	1
F 	c                    S nU R                  USS 5        [        R                  " U5       Vs/ s H  nUR                  S:X  d  M  UPM     nnU R	                  [        U5      S5        U R                  U5        g s  snf )Nc                     U $ ri   r6   rN   s    r   r	   /TestTranforms.test_elim_extra_return.<locals>.fQ  s    Hr   rs   r'   r   )rV   r   r   r   r   rE   rI   r,   r	   r   returnss       r   test_elim_extra_return$TestTranforms.test_elim_extra_returnO  st    	  L$7&)&:&:1&= =&=U"\\^; &= =Wq)!=s   A<A<c                 F   S nU R                  U5        U R                  US5        U R                  US5        [        R                  " U5       Vs/ s H  nUR                  S:X  d  M  UPM     nnU R                  [        U5      S5        U R                  U5        g s  snf )Nc                     U (       a  U$ U$ ri   r6   )cond
true_valuefalse_values      r   r	   1TestTranforms.test_elim_jump_to_return.<locals>.f[  s    "&J &$&r   r&   r%   r'   rM   )r1   rV   r   r   r   r   rE   rI   r   s       r   test_elim_jump_to_return&TestTranforms.test_elim_jump_to_returnY  s    	& 	"  N3  O4&)&:&:1&= =&=U"\\^; &= =Wq)!=s   B)Bc                 N    S nU R                  U5        U R                  U5        g )Nc                  r    [         (       a"  [        (       d  [        (       a  [        5         g g [	        5         g ri   )r   r   dfoobazr6   r   r   r	   6TestTranforms.test_elim_jump_to_uncond_jump.<locals>.fi  s"    qAqE  r   r1   rI   r,   r	   s     r   test_elim_jump_to_uncond_jump+TestTranforms.test_elim_jump_to_uncond_jumpg  s%    	 	"!r   c                 N    S nU R                  U5        U R                  U5        g )Nc                  f    W (       a*  [         (       d  [        (       a
  [        5       n U (       a  M)  g g ri   )r   r   r   r   s    r   r	   7TestTranforms.test_elim_jump_to_uncond_jump2.<locals>.fv  s    AqA	 !r   r   r   s     r   test_elim_jump_to_uncond_jump2,TestTranforms.test_elim_jump_to_uncond_jump2t  s%    	 	"!r   c                 |   S nU R                  U5        U R                  U5        U R                  [        US5      S5        S nU R                  U5        U R                  U5        U R                  [        US5      S5        S nU R                  U5        U R                  U5        U R                  [        US5      S5        U R                  [        US5      S5        S nU R                  U5        U R                  U5        U R                  [        US5      S5        U R                  [        US5      S5        g )	Nc                 *    U =(       a    U=(       a    U$ ri   r6   r   s      r   r	   7TestTranforms.test_elim_jump_to_uncond_jump3.<locals>.f  s    W1 r   rS   rM   c                 *    U =(       d    U=(       d    U$ ri   r6   r   s      r   r	   r     s    V! r   rT   c                 *    U =(       a    U=(       d    U$ ri   r6   r   s      r   r	   r     s    W1 r   r   c                 *    U =(       d    U=(       a    U$ ri   r6   r   s      r   r	   r     s    V! r   )r1   rI   r   r   r   s     r   test_elim_jump_to_uncond_jump3,TestTranforms.test_elim_jump_to_uncond_jump3  s$   	 	"!04GH!L	 	"!04FGK	 	"!04GH!L04FGK	 	"!04GH!L04FGKr   c                 ,    S nU R                  U5        g )Nc                  N    [        S5       H  n U S:  d  M  [        U 5        M     g )Nr   r   )r   print)is    r   r	   7TestTranforms.test_elim_jump_to_uncond_jump4.<locals>.f  s    1Xq5!H r   )r1   r   s     r   test_elim_jump_to_uncond_jump4,TestTranforms.test_elim_jump_to_uncond_jump4  s    	 	"r   c                 $   S nU R                  US5        U R                  US5        [        R                  " U5       Vs/ s H  nUR                  S:X  d  M  UPM     nnU R	                  [        U5      S5        U R                  U5        g s  snf )Nc                 &    U (       a  gU(       a  g g)Nr   rM   r   r6   )cond1cond2s     r   r	   5TestTranforms.test_elim_jump_after_return1.<locals>.f  s    QQr   r&   r%   r'   r   )rV   r   r   r   assertLessEqualrE   rI   r   s       r   test_elim_jump_after_return1*TestTranforms.test_elim_jump_after_return1  s    	 	  N3  O4&)&:&:1&= =&=U"\\^; &= =S\1-!=s    BBc                 P    S nU R                  US5        U R                  U5        g )Nc                      SS jn U $ )Nc                      g ri   r6   r6   r   r   rl   BTestTranforms.test_make_function_doesnt_bail.<locals>.f.<locals>.g  s    r   )returnrM   r6   )rl   s    r   r	   7TestTranforms.test_make_function_doesnt_bail.<locals>.f  s    Hr   	BINARY_OP)rV   rI   r   s     r   test_make_function_doesnt_bail,TestTranforms.test_make_function_doesnt_bail  s'    	 	  K0!r   c                    / SQnU H  nU R                  US9   [        USS5      n[        R                  " U5       H  nU R	                  UR
                  R                  S5      5        U R	                  UR
                  R                  S5      5        U R	                  UR
                  R                  S5      5        M     U R                  U5        S S S 5        M     g ! , (       d  f       M  = f)N)	z3 * -5z-3 * 5z2 * (3 * 4)z(2 * 3) * 4z
(-1, 2, 3)z
(1, -2, 3)z
(1, 2, -3)z(1, 2, -3) * 6z:lambda x: x in {(3 * -5) + (-1 - 6), (1, -2, 3) * 2, None})er_   r`   r   r   BUILD_)ra   rb   r   r   r   r   r   rI   )r,   exprsr  r-   r   s        r   test_constant_folding#TestTranforms.test_constant_folding  s    

 A"q"h/ 11$7E$$U\\%<%<X%FG$$U\\%<%<Y%GH$$U\\%<%<X%FG 8 !!$' #" ""s   B:C  
C/	c                 d    S nU R                  [        US5      S5        U R                  U5        g )Nc                  (    [         [        [        4;   $ ri   )rO   r   r   r6   r   r   containtest7TestTranforms.test_in_literal_list.<locals>.containtest  s    A;r   r   r   r   r   rI   )r,   r  s     r   test_in_literal_list"TestTranforms.test_in_literal_list  s-    	0lKQO+&r   c                 d    S nU R                  [        US5      S5        U R                  U5        g )Nc                  *    [         [        4 H  n M     g ri   r   r   rN   s    r   forloop8TestTranforms.test_iterate_literal_list.<locals>.forloop  s    V r   r   r   r  )r,   r  s     r   test_iterate_literal_list'TestTranforms.test_iterate_literal_list  s/    	 	0,GK'"r   c                 Z    S nU R                  U" 5       S5        U R                  U5        g )Nc                       gNr   r6   r6   r   r   r	   =TestTranforms.test_condition_with_binop_with_bools.<locals>.f  s    r   r   )r   rI   r   s     r   $test_condition_with_binop_with_bools2TestTranforms.test_condition_with_binop_with_bools  s)    	 	a !r   c                 Z    S nU R                  U" S5      5        U R                  U5        g )Nc                     U (       a   g g)NTFr6   rN   s    r   r	   3TestTranforms.test_if_with_if_expression.<locals>.f  s      %r   T)r   rI   r   s     r   test_if_with_if_expression(TestTranforms.test_if_with_if_expression  s'    	 	$ !r   c                 ,    S nU R                  U5        g )Nc                      g)Nr   r6   rN   s    r   r	   +TestTranforms.test_trailing_nops.<locals>.f  s    r   )rI   r   s     r   test_trailing_nops TestTranforms.test_trailing_nops  s    	 	!r   c                     S nU R                  [        US5      S5        S nU R                  [        US5      S5        S nU R                  [        US5      S5        S nU R                  [        US5      S5        g )Nc                  T    [          V Vs/ s H  n [        U 5      oPM     snn $ s  snn f ri   r   r	   rO   ys     r   listcompGTestTranforms.test_assignment_idiom_in_comprehensions.<locals>.listcomp  "     1q!1Q4QAq111   $FOR_ITERr   c                  T    [          V Vs1 s H  n [        U 5      oiM     snn $ s  snn f ri   r2  r3  s     r   setcompFTestTranforms.test_assignment_idiom_in_comprehensions.<locals>.setcomp  r7  r8  c                  V    [          V Vs0 s H  n [        U 5      oU_M     snn $ s  snn f ri   r2  r3  s     r   dictcompGTestTranforms.test_assignment_idiom_in_comprehensions.<locals>.dictcomp  s&    "#4!QadqDA!444s   %c                      S [          5       $ )Nc              3   :   #    U  H  n[        U5      o"v   M     g 7fri   )r	   )r8   rO   r4  s      r   r:   YTestTranforms.test_assignment_idiom_in_comprehensions.<locals>.genexpr.<locals>.<genexpr>  s     1q!1Q4QAqs   r   r6   r   r   genexprFTestTranforms.test_assignment_idiom_in_comprehensions.<locals>.genexpr  s    1q11r   )r   r   )r,   r5  r;  r>  rC  s        r   'test_assignment_idiom_in_comprehensions5TestTranforms.test_assignment_idiom_in_comprehensions  sv    	20:FJ	20*EqI	50:FJ	20*EqIr   cpuc                 ,   Sn/ [        SS5      Q[        SS5      Q[        SS5      Q[        [        S5      [        S5      * 4S	5      Qn/ [        S
S5      QSPSPnU H  u  pEU H  u  pg[        [        U5      S-   5       Hv  n[	        X5       Hd  n	SSR                  U	5      -   U-   U-   U-   n
U R                  XS9   X-  n[        U
< S3SU05      nU R                  XSU
< 35        S S S 5        Mf     Mx     M     M     g ! , (       d  f       M  = f)Nz-+ #0)r_   1234u   абвгsra)  i.duioxX)g|EJ@g|EJ	duifegFEGinffegFEG)r_   130)r_   .z.0z.2)r_   .40)rQ  rS  r   %r_   )fmtvaluez % (x,)rO   zfmt = )	r   floatr   rE   r   joinra   evalr   )r,   flags	testcaseswidth_precsrV  suffixwidthprecrspecrU  s1s2s                r   test_format_combinations&TestTranforms.test_format_combinations  s>   
-u5
]H-
 2K@
 eElU5\M2H=	
	
_&;<

 

 'ME*s5zA~.A ,U 6!BGGDM1E9D@6I!\\c\?!$B!%w&7#u!FB ,,Rx[A @? !7 /  + '
 @?s   >-D
Dc                 0   S nU R                  U" S5      S5        U R                  U" SS5      S5        U R                  U" SS5      S5        U R                  U" SS5      S5        U R                  U" S	S5      S
5        U R                  U" SS5      S5        U R                  U" S	S5      S5        U R                  U" SS5      S5        U R                  U" SS5      S5        U R                  U" SS5      S5        U R                  U" SSS5      S5        g )Nc           	         [        [        U5      5       Vs/ s H  nSUS-    3PM     nn[        U5      S:X  a  SUS   -   S-   nOSSR                  U5      -   S-   n[        U < SU 3[	        [        X15      5      5      $ s  snf )	NrO   r   (r   z,)z, )z % )r   rE   rX  rY  dictzip)rU  valuesr   varsargss        r   format.TestTranforms.test_format_misc.<locals>.format(  s    ',S['9:'9!a!uI'9D:4yA~T!W}t+TYYt_,s23'TF+T#d2C-DEE ;s   Bstringzx = %s!rK  z	x = 1234!zx = %d!zx = %x!zx = 4d2!zx = %f!zx = 1234.000000!gMb H@zx = 1234.0000625!zx = 1234.000063!zx = %s%% %%%%zx = 1234% %%z%% %sz
x = %% %s!zx = %s, y = %dr   "   zx = 12, y = 34)r   )r,   ro  s     r   test_format_miscTestTranforms.test_format_misc'  s   	F 	)84	40+>	40+>	40*=	402DE	<8:MN	<8:LM	<8+F6G	73\B 0"b9;KLr   c                    U R                  [        S5         [        S5        S S S 5        U R                  [        S5         [        SSSS.5        S S S 5        U R                  [        S5         [        S	S
S05        S S S 5        U R                  [        S5         [        SS
S05        S S S 5        U R                  [        S5         [        SS
S05        S S S 5        U R                  [        S5         [        SS
S05        S S S 5        U R                  [        S5         [        SS
S05        S S S 5        U R                  [        S5         [        SS
S05        S S S 5        U R                  [        S5         [        SS
S05        S S S 5        U R                  [        S5         [        SS
S05        S S S 5        U R                  [        S5         [        SS/ S.5        S S S 5        U R                  [        S5         [        SSSS/S.5        S S S 5        g ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN|= f! , (       d  f       GNa= f! , (       d  f       GNF= f! , (       d  f       GN+= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       g = f)Nz&not enough arguments for format stringz	'%s' % ()z4not all arguments converted during string formattingz'%s' % (x, y)r   rM   r3  zincomplete formatz'%s%' % (x,)rO   rK  z'%s%%%' % (x,)z'%s%z' % (x,)zunsupported format characterz'%s%z' % (x, 5)z"a real number is required, not strz'%d' % (x,)rI  z!an integer is required, not floatz'%x' % (x,)g
ףp=J@zan integer is required, not strzmust be real number, not strz'%f' % (x,)z'%s, %s' % (x, *y)r   )assertRaisesRegex	TypeErrorrY  
ValueErrorr,   s    r   test_format_errors TestTranforms.test_format_errors<  sL   ##I<>> ##IJL"23L ##J0CD#t- E##J0CD!C;/ E##I<>3+.> ##J0NO"S$K0 P##I/STf. U##I/RSg/ T##I/PQf. R##I/MNf. O##I<>%QR'89> ##IJL%QaV'<=L L5> >L L EDDD> > POTTSSQQNN> >L Ls   H H2/II	I(6I:#JJ=J0*KKK% 
H/2
I
I
I%(
I7:
J	
J
J-0
J?
K
K"%
K3c                 .    S nU R                  US5        g )Nc                     XpXpg ri   r6   r  s     r   r	   5TestTranforms.test_static_swaps_unpack_two.<locals>.f\  s    qqr   r   rV   r   s     r   test_static_swaps_unpack_two*TestTranforms.test_static_swaps_unpack_two[  s    	 	  F+r   c                 .    S nU R                  US5        g )Nc                 4    XUp!n XUpn XUp nXUpnXUpnXUpng ri   r6   r   s      r   r	   7TestTranforms.test_static_swaps_unpack_three.<locals>.fb  s:    A!AA!AA!AA!AA!AA!A!r   r   r  r   s     r   test_static_swaps_unpack_three,TestTranforms.test_static_swaps_unpack_threea  s    	 	  F+r   c                     [        SSS5       HI  u  pnSU SU SU S3nU R                  U5         [        U5      nU R                  US5        S S S 5        MK     g ! , (       d  f       M]  = f)	N_a_b_cz{'a': z, 'b': z, 'c': }r   )r   ra   r   rV   )r,   r   r   r   r   r-   s         r   test_static_swaps_match_mapping-TestTranforms.test_static_swaps_match_mappingk  sh    tT40GA!s'!GA3b9Gg&7@((v6 '& 1&&s   A
A+	c                    / SQn[        SSS5       HX  u  p#nU HL  nUR                  X#U5      nU R                  U5         [        U5      nU R	                  US5        S S S 5        MN     MZ     g ! , (       d  f       Md  = f)N)zC({}, {}, {})zC({}, {}, c={})zC({}, b={}, c={})zC(a={}, b={}, c={})r  r  r  r   )r   ro  ra   r   rV   )r,   formsr   r   r   formr   r-   s           r   test_static_swaps_match_class+TestTranforms.test_static_swaps_match_classr  ss    
 tT40GA!++aA.\\'*;GDD,,T6: +*  1 +*s    A//
A>c                 :   1 Skn/ SQn[        SSS5       Hp  u  p4nU Hd  nUR                  X4U5      nU R                  U5         [        U5      nXq;   a  U R	                  US5        OU R                  US5        S S S 5        Mf     Mr     g ! , (       d  f       M|  = f)N>   *_, b, ca, *_, ca, b, *_)z
{}, {}, {}z{}, {}, *{}z{}, *{}, {}z*{}, {}, {}r  r  r  r   )r   ro  ra   r   rW   rV   )	r,   swapsr  r   r   r   r  r   r-   s	            r    test_static_swaps_match_sequence.TestTranforms.test_static_swaps_match_sequence  s    4KtT40GA!++aA.\\'*;GDD' --dF;00v> +*  1 +*s   6B
Br6   N)+__name__
__module____qualname____firstlineno__r1   rI   rX   re   rw   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r
  r  r  r  r$  r)  r.  rE  r   requires_resourcerd  rs  rz  r  r  r  r  r  __static_attributes__r6   r   r   r!   r!   '   s    D"	9 
(6
('"R(>+ Z .!(F	LB#$(,'#
J u%B &B.M*>>,,7;?r   r!   c                   ,    \ rS rSrS rS rS rS rSrg)TestBugletsi  c                 v    S nU R                  [        5         U" 5         S S S 5        g ! , (       d  f       g = f)Nc                      SS1u  pX4$ r"  r6   r3  s     r   r	   %TestBuglets.test_bug_11510.<locals>.f  s    q6DA4Kr   )assertRaisesrx  r   s     r   test_bug_11510TestBuglets.test_bug_11510  s(    	 z*C +**s   *
8c                 n    [        S5       H  n [        e   g ! [        =(       d    [         a     M'  f = f)Nr   )r   	Exception)r,   r   s     r   test_bpo_42057TestBuglets.test_bpo_42057  s3    rA  )	 s   44c                     [        SSS5        g )Nzwhile True or spam: pass<test>r   rb   ry  s    r   test_bpo_45773_pop_jump_if_true+TestBuglets.test_bpo_45773_pop_jump_if_true  s    *Hf=r   c                     [        SSS5        g )Nzwhile True or not spam: passr  r   r  ry  s    r    test_bpo_45773_pop_jump_if_false,TestBuglets.test_bpo_45773_pop_jump_if_false  s    .&Ar   r6   N)	r  r  r  r  r  r  r  r  r  r6   r   r   r  r    s    >Br   r  c                   t    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rSrg)TestMarkingVariablesAsUnKnowni  c                     U R                  [        R                  [        R                  " 5       5        [        R                  " S 5        g ri   )
addCleanupsyssettracegettracery  s    r   setUp#TestMarkingVariablesAsUnKnown.setUp  s&    clln5Tr   c                 .    S nU R                  US5        g )Nc                      Sn X -   ng r"  r6   r3  s     r   r	   DTestMarkingVariablesAsUnKnown.test_load_fast_known_simple.<locals>.f  s    AAr   LOAD_FAST_LOAD_FASTrW   r   s     r   test_load_fast_known_simple9TestMarkingVariablesAsUnKnown.test_load_fast_known_simple  s    	 	a!67r   c                 R    S nU R                  US5        U R                  US5        g )Nc                  <    [        5       (       a  Sn [        W 5        g r"  	conditionr   rN   s    r   r	   FTestMarkingVariablesAsUnKnown.test_load_fast_unknown_simple.<locals>.f  s    {{!Hr   LOAD_FAST_CHECK	LOAD_FASTrW   rV   r   s     r   test_load_fast_unknown_simple;TestMarkingVariablesAsUnKnown.test_load_fast_unknown_simple  *    	 	a!23  K0r   c                 R    S nU R                  US5        U R                  US5        g )Nc                       Sn A [        W 5        g r"  r   rN   s    r   r	   KTestMarkingVariablesAsUnKnown.test_load_fast_unknown_because_del.<locals>.f  s    A!Hr   r  r  r  r   s     r   "test_load_fast_unknown_because_del@TestMarkingVariablesAsUnKnown.test_load_fast_unknown_because_del  r  r   c                    S nU R                  US5        U R                  US5        S nU R                  US5        U R                  US5        S nU R                  US5        U R                  US5        S nU R                  US5        U R                  US5        SS jnU R                  US5        U R                  US5        g )	Nc                     [        U 5        g ri   r  rN   s    r   f1PTestMarkingVariablesAsUnKnown.test_load_fast_known_because_parameter.<locals>.f1  	    !Hr   r  r  c                     [        U 5        g ri   r  rN   s    r   f2PTestMarkingVariablesAsUnKnown.test_load_fast_known_because_parameter.<locals>.f2  r  r   c                      [        U 5        g ri   r  )rn  s    r   f3PTestMarkingVariablesAsUnKnown.test_load_fast_known_because_parameter.<locals>.f3  s	    $Kr   c                      [        U 5        g ri   r  )kwargss    r   f4PTestMarkingVariablesAsUnKnown.test_load_fast_known_because_parameter.<locals>.f4  s	    &Mr   c                     [        U 5        g ri   r  rN   s    r   f5PTestMarkingVariablesAsUnKnown.test_load_fast_known_because_parameter.<locals>.f5  r  r   )r   r  )r,   r  r  r  r  r  s         r   &test_load_fast_known_because_parameterDTestMarkingVariablesAsUnKnown.test_load_fast_known_because_parameter  s    	b+.  %67	b+.  %67	b+.  %67	b+.  %67	b+.  %67r   c                 R    S nU R                  US5        U R                  US5        g )Nc                  R    [        5       (       a  Sn [        W 5        [        U 5        g r"  r  rN   s    r   r	   TTestMarkingVariablesAsUnKnown.test_load_fast_known_because_already_loaded.<locals>.f  s    {{!H!Hr   r  r  r  r   s     r   +test_load_fast_known_because_already_loadedITestMarkingVariablesAsUnKnown.test_load_fast_known_because_already_loaded  s*    	
 	a!23a-r   c                 R    S nU R                  US5        U R                  US5        g )Nc                  B    [        5       (       a  Sn OSn [        U 5        g )Nr   rM   r  rN   s    r   r	   OTestMarkingVariablesAsUnKnown.test_load_fast_known_multiple_branches.<locals>.f  s    {{!Hr   r  r  r  r   s     r   &test_load_fast_known_multiple_branchesDTestMarkingVariablesAsUnKnown.test_load_fast_known_multiple_branches  s*    	 	a-  $56r   c                 .    S nU R                  US5        g )Nc                  4     SS-  n U $ ! [          a     W $ f = fNr   r   )ZeroDivisionError)ress    r   r	   KTestMarkingVariablesAsUnKnown.test_load_fast_unknown_after_error.<locals>.f  s0    !e J % Js   	 
r  r  r   s     r   "test_load_fast_unknown_after_error@TestMarkingVariablesAsUnKnown.test_load_fast_unknown_after_error  s    	 	a!23r   c                 R    S nU R                  US5        U R                  US5        g )Nc            
      Z     SS-    S=n =n=n=n=n=pVg !   [        W WWWWWW5         N#= fr  r  )r   r   r   r   r  r	   rl   s          r   r	   MTestMarkingVariablesAsUnKnown.test_load_fast_unknown_after_error_2.<locals>.f  sN    +A )*)A))A))A)A+aAq!Q*s    *r  r  r  r   s     r   $test_load_fast_unknown_after_error_2BTestMarkingVariablesAsUnKnown.test_load_fast_unknown_after_error_2  s*    	* 	a!23  K0r   c                 ^   S nU R                  USS5        U R                  USS5        U R                  USS5        S H1  nU R                  USS	US
 35        U R                  USS	US
 35        M3     S H1  nU R                  USS	US
 35        U R                  USS	US
 35        M3     S H1  nU R                  USS	US
 35        U R                  USS	US
 35        M3     U R                  USS5        U R                  USS5        U R                  USS5        U R                  USS5        g )Nc                     S=n =n=n=n=n=n=n=n=pS=n
=n=n=n=n=n=n=n=nnS=n=n=n=n=n=n=n=n=nnS=n=n=n =n!=n"=n#=n$=n%=n&n'S=n(=n)=n*=n+=n,=n-=n.=n/=n0n1S=n2=n3=n4=n5=n6=n7=n8=n9=n:n;S=n<=n==n>=n?=n@=nA=nB=nC=nDnES=nF=nG=nH=nI=nJ=nK=nL=nM=nNnOAHAI[        WI5        [        UFUGWHUI5         [        XU>U?5        [        W@WAWNWO5        M  r"  r  )Pa00a01a02a03a04a05a06a07a08a09a10a11a12a13a14a15a16a17a18a19a20a21a22a23a24a25a26a27a28a29a30a31a32a33a34a35a36a37a38a39a40a41a42a43a44a45a46a47a48a49a50a51a52a53a54a55a56a57a58a59a60a61a62a63a64a65a66a67a68a69a70a71a72a73a74a75a76a77a78a79sP                                                                                   r   r	   GTestMarkingVariablesAsUnKnown.test_load_fast_too_many_locals.<locals>.f  s   HIICI#IIcICI#IIcICHIICI#IIcICI#IIcIC#HIICI#IIcICI#IIcIC#HIICI#IIcICI#IIcIC#HIICI#IIcICI#IIcIC#HIICI#IIcICI#IIcIC#HIICI#IIcICI#IIcIC#HIICI#IIcICI#IIcIC#S#J#sC%cS)c3S) r   r  )r  r  r  r  r  )>   ?   r  r   02)@   A   N   O   )F   G   rJ  rK  r  )r,   r	   r   s      r   test_load_fast_too_many_locals<TestMarkingVariablesAsUnKnown.test_load_fast_too_many_locals  sO   	*  	a!6G  $5u=  $5u=A!!![AaV*=$$Q(9Qqf:F   A!!!%6!Ab6
C$$Qq2Z@   A!!![AaV*=$$Q(9Qqf:F 
 	a!2E:  K7a!2E:ae4r   c                   ^ [         R                  " S5      n0 n[        X5        US   nU R                  US5        U R	                  US5        UR
                  R                  nU4S jm[        R                  " T5        U" 5       nU R                  U5        U R                  US5        U R	                  US5        U R                  UR
                  R                  U5        g )Na              def f():
                x = y = 2
                if not x:
                    return 4
                for i in range(55):
                    x + 6
                L = 7
                L = 8
                L = 9
                L = 10
        r	   r  r  c                 p   > US:X  a.  U R                   S:X  a  SU l         [        R                  " S 5        g T$ Nr^   r   r   f_linenor  r  frameeventargtraces      r   rg  MTestMarkingVariablesAsUnKnown.test_setting_lineno_no_undefined.<locals>.traceE  0    5>>Q#6!"T"Lr   )r
   r   r   rW   rV   r   r   r  r  assertIsNoner   )r,   r-   nsr	   r   resultrg  s         @r    test_setting_lineno_no_undefined>TestMarkingVariablesAsUnKnown.test_setting_lineno_no_undefined2  s        TsGa-  $56**$$	 	U&!a-  $56++W5r   c                 ,  ^ [         R                  " S5      n0 n[        X5        US   nU R                  US5        U R	                  US5        UR
                  R                  nU4S jmSnU R                  [        U5         [        R                  " T5        U" 5       nS S S 5        U R                  WS5        U R                  US5        U R	                  US5        U R                  UR
                  R                  U5        g ! , (       d  f       Nk= f)Na              def f():
                x = y = 2
                if not x:
                    return 4
                for i in range(55):
                    x + 6
                del x
                L = 8
                L = 9
                L = 10
        r	   r  r  c                 p   > US:X  a.  U R                   S:X  a  SU l         [        R                  " S 5        g T$ r`  ra  rc  s      r   rg  NTestMarkingVariablesAsUnKnown.test_setting_lineno_one_undefined.<locals>.tracee  ri  r   z!assigning None to 1 unbound localr   r
   r   r   rW   rV   r   r   assertWarnsRegexRuntimeWarningr  r  r   r,   r-   rk  r	   r   r  rl  rg  s          @r   !test_setting_lineno_one_undefined?TestMarkingVariablesAsUnKnown.test_setting_lineno_one_undefinedR  s        TsGa-  $56**$$	 1"">15LLSF 6 	#a-  $56++W5 65   D
Dc                 ,  ^ [         R                  " S5      n0 n[        X5        US   nU R                  US5        U R	                  US5        UR
                  R                  nU4S jmSnU R                  [        U5         [        R                  " T5        U" 5       nS S S 5        U R                  WS5        U R                  US5        U R	                  US5        U R                  UR
                  R                  U5        g ! , (       d  f       Nk= f)Na              def f():
                x = y = 2
                if not x:
                    return 4
                for i in range(55):
                    x + 6
                del x, y
                L = 8
                L = 9
                L = 10
        r	   r  r  c                 p   > US:X  a.  U R                   S:X  a  SU l         [        R                  " S 5        g T$ r`  ra  rc  s      r   rg  NTestMarkingVariablesAsUnKnown.test_setting_lineno_two_undefined.<locals>.trace  ri  r   z"assigning None to 2 unbound localsr   rr  ru  s          @r   !test_setting_lineno_two_undefined?TestMarkingVariablesAsUnKnown.test_setting_lineno_two_undefinedt  s        TsGa-  $56**$$	 2"">15LLSF 6 	#a-  $56++W5 65rx  c                     [         R                  " S5      n0 n[        X5        US   nU R                  US5        U R	                  US5        U$ )Nz            def f():
                x = 2
                L = 3
                L = 4
                L = 5
                if not L:
                    x + 7
                    y = 2
        r	   r  r  )r
   r   r   rW   rV   )r,   r-   rk  r	   s       r   make_function_with_no_checks:TestMarkingVariablesAsUnKnown.make_function_with_no_checks  sR     	  	 TsGa-  $56r   c                    ^ U R                  5       nU4S jm[        R                  " T5        U" 5         U R                  US5        U R	                  US5        g )Nc                    > US:X  a6  U R                   S:X  a&  SU R                  S'   [        R                  " S 5        g T$ )Nr^   r   *   rO   rb  f_localsr  r  rc  s      r   rg  TTestMarkingVariablesAsUnKnown.test_modifying_local_does_not_add_check.<locals>.trace  7    5>>Q#6&(s#T"Lr   r  r  r  r  r  rW   rV   r,   r	   rg  s     @r   'test_modifying_local_does_not_add_checkETestMarkingVariablesAsUnKnown.test_modifying_local_does_not_add_check  J    --/	 	U	a-  $56r   c                    ^ U R                  5       nU4S jm[        R                  " T5        U" 5         U R                  US5        U R	                  US5        g )Nc                    > US:X  a6  U R                   S:X  a&  SU R                  S'   [        R                  " S 5        g T$ )Nr^   r   r  r4  r  rc  s      r   rg  WTestMarkingVariablesAsUnKnown.test_initializing_local_does_not_add_check.<locals>.trace  r  r   r  r  r  r  s     @r   *test_initializing_local_does_not_add_checkHTestMarkingVariablesAsUnKnown.test_initializing_local_does_not_add_check  r  r   r6   N)r  r  r  r  r  r  r  r  r  r  r  r  r  r\  rm  rv  r|  r  r  r  r  r6   r   r   r  r    sV    81184.7	41(5T6@ 6D 6D$77r   r  c                   X    \ rS rSr  SS jrS rS rS rS rS r	S	 r
S
 rS rS rSrg)DirectCfgOptimizerTestsi  Nc                    U R                  U5        U R                  U5        Uc  UnU R                  U5      nU R                  XcU5      u  pxU R                  U5      R                  5       nU R	                  Xr5        U R                  X5        g ri   )check_instructionsseq_from_instsget_optimizedr   assertInstructionsMatchr   )	r,   instsexpected_instsconstsexpected_constsnlocalsseq	opt_insts
opt_constss	            r   cfg_optimization_test-DirectCfgOptimizerTests.cfg_optimization_test  s     	&/"$O!!%( $ 2 23 H	,,^<MMO$$Y?5r   c                     SSU R                  5       =nS4SSUSS/nSSU R                  5       =nS4SUS	/nU R                  UU/ S
Q/ SQS9  g )N	LOAD_NAMEr      rT   r   rs   rM   r   r'   Nr   rs   r      r'   Nr  )ru   r   r   )ru   rM   r  r   r   rM   r   r   )r   rM   r   r  r  Labelr  r,   lblr  r  s       r   1test_conditional_jump_forward_non_const_conditionIDirectCfgOptimizerTests.test_conditional_jump_forward_non_const_condition  sz     

!4b9!&!&
 !

!4b9##
 	""5#1*93< 	# 	>r   c                 n    SSU R                  5       =nS4SUSS/n/ SQnU R                  UU/ SQS	S
/S9  g )Nrs   r   r  rT   r   r  r  r  )NOPNr  )r  Nr   )ru   r   r  r  r   r   r  r  r  s       r   -test_conditional_jump_forward_const_conditionEDirectCfgOptimizerTests.test_conditional_jump_forward_const_condition  sZ    
 "

!4b9!!&


 	""5#1*945q6 	# 	;r   c           	          U R                  5       =nSSUS4SS/nU R                  5       =nSSUS4SS/nU R                  X$[        [        S5      5      S9  g )Nr  rT   r   )r  rM   r   r  r   r  r  r  r(   r   )r,   lbl1r  r  expecteds        r   2test_conditional_jump_backward_non_const_conditionJDirectCfgOptimizerTests.test_conditional_jump_backward_non_const_condition   sq    JJL D r* &
 ::<C b) &
 	""54a>"Jr   c           	          U R                  5       =nSSUS4SS/nU R                  5       =nSSUS4/nU R                  X$[        [        S5      5      S	9  g )
Nr  rT   r   r  r  r  JUMPr   r  r  )r,   r  r  r  r  s        r   .test_conditional_jump_backward_const_conditionFDirectCfgOptimizerTests.test_conditional_jump_backward_const_condition  sm     JJL D!r*!&
 ::<CS"

 	""5eAh"Pr   c           	          SU R                  5       =nS4SSUS/nSU R                  5       =nS4SUS/nU R                  X#[        [        S5      5      S9  g )NSETUP_FINALLYr   )	POP_BLOCKN)ru   r   r  )ru   rM   r   r   r  r  )r,   handlerr  r  s       r   test_except_handler_label1DirectCfgOptimizerTests.test_except_handler_label!  sn    5gr:###
 5gr:##	
 	""5eAh"Pr   c           	      Z    / SQn/ SQnU R                  X[        [        S5      5      SS9  g )N)	rs   r   r   rs   r   rM   rs   rM   r   )r   r   r   
STORE_FASTr   r   r  POP_TOPNr   rs   r   r   r'   Nr   )r  r  r  Nr   r  r  )ru   r   r   r   r  r  r  r(   r   r,   r  r  s      r   test_no_unsafe_static_swap2DirectCfgOptimizerTests.test_no_unsafe_static_swap1  s0    


 	""5eAhYZ"[r   c           	      Z    / SQn/ SQnU R                  X[        [        S5      5      SS9  g )N)r  r  r  r  r  r  r  r  )r  r  r  r  r  ru   r   r   r   r   r  r  r  s      r   *test_dead_store_elimination_in_same_linenoBDirectCfgOptimizerTests.test_dead_store_elimination_in_same_linenoH  s0    	

 	""5eAhYZ"[r   c           	      Z    / SQn/ SQnU R                  X[        [        S5      5      SS9  g )N)r  r  r  r  r  r   r   r  r   r   r  r  )r  r  r  r  r  r  r  r   r   r  r  r  s      r   2test_no_dead_store_elimination_in_different_linenoJDirectCfgOptimizerTests.test_no_dead_store_elimination_in_different_lineno]  s0    	

 	""5eAhYZ"[r   c                    ^  U 4S jnS H  nS H  nSu  pET R                  XE4X#4S9   U" XEX#5      nSX#4;   a  SOSnSSUS	S
4/nT R                  Xh[        [        S
5      5      S9  S S S 5        S Ho  u  pET R                  XE4X#4S9   U" XEX#5      nUS:w  a  UOUn	U	S:X  a  Sn	SX#4;   a  SOSnSUS	U	4/nT R                  Xh[        [        S
5      5      S9  S S S 5        Mq     M     M     g ! , (       d  f       N= f! , (       d  f       M  = f)Nc                 \   > TR                  5       =nSUTR                  5       =oP4SUX4U4/$ )Nr  r   r   )r  r      )r  )lno1lno2op1op2lbl2r  r,   s         r   	get_instsLDirectCfgOptimizerTests.test_unconditional_jump_threading.<locals>.get_instsu  s?    #zz|+t+TZZ\1T8+4( r   )r  JUMP_NO_INTERRUPT)r   r   )lnoopsr  r  r  )r  Nr   r   r   r  ))r  r  )r  r   )r   r  )r   r   r  r   )ra   r  r(   r   )
r,   r  r  r  r  r  r  opr  r  s
   `         r   !test_unconditional_jump_threading9DirectCfgOptimizerTests.test_unconditional_jump_threadings  s>   	 1C4#
\\SJ\G%d#;E#)cZ#7=PB,(Q
&N
 ..uTRWXYRZ^.\ H #GJDTL
K )$c ?&*bjdd"9"$C'-#';VAT0CL* 225QUV[\]V^Q_2` LK #G 5 1 HG LKs   ?C-AC>	-
C;>
Dr6   )NNr   )r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r6   r   r   r  r    sD     <@&'6>,;,K"Q Q \.\*\,(ar   r  __main__)r   	itertoolsr   r   opcoder  r
   unittesttestr   test.support.bytecode_helperr   r   r   r   r!   TestCaser  r  r  r  mainr6   r   r   <module>r     s    
 +  
    R#
f	?$ f	?RB(## B4V7$4 V7rXa5 Xat zMMO r   