
    /hhv                       S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	r	S SK
r
S SK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JrJrJr  S SKJr  S SKJr   " S S\R8                  5      r\" 5        " S S	\R8                  5      5       r " S
 S\R8                  5      r " S S\R8                  5      r  " S S\R8                  5      r! " S S\R8                  5      r"\#S:X  a  \RH                  " 5         gg)    N)support)script_helperrequires_debug_rangesrun_coderequires_specializationget_c_recursion_limit)instructions_with_positions)FakePathc                      \ 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\R                   " \R$                  S5      S 5       rS rS rS rS rS rS rS r\R8                  S:X  a  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* r0S+ r1\Rd                  S, 5       r3S- r4S. r5S/ r6S0 r7\Rd                  \R                   " \R$                  S5      S1 5       5       r8S2 r9S3 r:\Rd                  S4 5       r;\Rd                  S5 5       r<\Rd                  S6 5       r=\Rd                  S7 5       r>\Rd                  S8 5       r?\Rd                  S9 5       r@\Rd                  S: 5       rA\Rd                  S; 5       rB\Rd                  S< 5       rCS= rDS> rE\R                  " S?5      S@ 5       rG\Rd                  SA 5       rHSB rISC rJSD rKSE rLSF rMSG rNSH rOSI rPSJ rQSK rRSfSM jrSSN rTSO rUSP rVSQ rWSR rXSS rYST rZ\Rd                  SU 5       r[SV r\SW r]SX r^SY r_SZ r`S[ raS\ rbS] rcS^ rdS_ reS` rfSa rgSb rhSc riSd rjSerkgL)gTestSpecifics   c                     [        USS5        g )N<single>singlecompileselfsources     :/opt/python-3.13.8/usr/lib/python3.13/test/test_compile.pycompile_singleTestSpecifics.compile_single   s    
H-    c                 F    U R                  [        U R                  U5        g N)assertRaisesSyntaxErrorr   r   s     r   assertInvalidSingle!TestSpecifics.assertInvalidSingle   s    +t':':FCr   c                 8    [        SSS5        [        SSS5        g )Nhi<test>execzhir   r   s    r   test_no_ending_newline$TestSpecifics.test_no_ending_newline    s    h'&)r   c                     [        SSS5        g )N r"   r#   r   r$   s    r   
test_emptyTestSpecifics.test_empty$   s    Hf%r   c                 l    [        SSS5        [        SSS5        [        SSS5        [        SSS5        g )Nz
r"   r#   zhi
stuff
def f():
    passz(this_isreally_old_macdef f():
    passr   r$   s    r   test_other_newlines!TestSpecifics.test_other_newlines'   s4    &)h'5xH=xPr   c                     U R                  [        [        SSS5        SS KnUR                  n[        USS5        U R                  SU5        [        USU5        g )Nz__debug__ = 1?r   r   	__debug__sureT)r   r   r   builtinsr1   setattrassertEqual)r   r3   prevs      r   test_debug_assignment#TestSpecifics.test_debug_assignment-   sN    +whO!!+v.D)+t,r   c                 H   U R                  [        [        S5        U R                  [        [        S5        U R                  [        [        S5        U R                  [        [        S5        U R                  [        [        S5        U R                  [        [        S5        g )Nzlambda a,a:0zlambda a,a=1:0zlambda a=1,a=1:0zdef f(a, a): passzdef f(a = 0, a = 1): passdef f(a): global a; a = 1)r   r   evalr#   r$   s    r   test_argument_handling$TestSpecifics.test_argument_handling6   ss    +t^<+t-=>+t-?@+t-@A+t-HI+t-HIr   c                 >    U R                  [        [        SSS5        g )Nz1+*3filenamer#   r   r   r   r$   s    r   test_syntax_errorTestSpecifics.test_syntax_error?   s    +w
FKr   c                 >    U R                  [        [        SSS5        g )Nz	f(None=1)<string>r#   r@   r$   s    r   test_none_keyword_arg#TestSpecifics.test_none_keyword_argB   s    +wZPr   c                 :    U R                  [        [        S5        g )Nr:   r   r   r#   r$   s    r   test_duplicate_global_local)TestSpecifics.test_duplicate_global_localE   s    +t-HIr   c                     " S S5      nU" 5       n[        5       n[        SX25        U R                  UR                  S5         [        SX25        U R	                  S5        [        SX25        U R                  UR                  S[        S	5      45        [        S
X25        U R                  UR                  SU45        [        SX25        U R                  UR                  SU45        U R                  [        [        SU5         " S S5      nU" 5       nU R                  [        [        SX25         " S S[        5      nU" 5       n[        SX65        U R                  US   S5        g ! [
         a     GNf = f)Nc                   *    \ rS rSrSrS rS rS rSrg)BTestSpecifics.test_exec_with_general_mapping_for_locals.<locals>.MJ   z9Test mapping interface versus possible calls from eval().c                     US:X  a  g[         eNa   )KeyErrorr   keys     r   __getitem__NTestSpecifics.test_exec_with_general_mapping_for_locals.<locals>.M.__getitem__L   s    #:r   c                     X4U l         g r   resultsr   rU   values      r   __setitem__NTestSpecifics.test_exec_with_general_mapping_for_locals.<locals>.M.__setitem__P   s     #|r   c                     [        S5      $ )Nxyz)listr$   s    r   keysGTestSpecifics.test_exec_with_general_mapping_for_locals.<locals>.M.keysR   s    E{"r   rY   N)	__name__
__module____qualname____firstlineno____doc__rV   r]   rb   __static_attributes__ r   r   MrM   J   s    G,#r   rk   zz = a)zrR   zz = bzDid not detect a KeyErrorz	z = dir()rl   r`   zz = globals()zz = locals()c                       \ rS rSrSrSrg)BTestSpecifics.test_exec_with_general_mapping_for_locals.<locals>.Ag   zNon-mappingrj   N)rd   re   rf   rg   rh   ri   rj   r   r   Arn   g   s    r   rp   c                       \ rS rSrS rSrg)BTestSpecifics.test_exec_with_general_mapping_for_locals.<locals>.Dn   c                 :    US:X  a  g[         R                  X5      $ rP   )dictrV   rT   s     r   rV   NTestSpecifics.test_exec_with_general_mapping_for_locals.<locals>.D.__getitem__o   s    #:''22r   rj   N)rd   re   rf   rg   rV   ri   rj   r   r   Drr   n   s    3r   rw   rR   )
globalsr#   r5   rZ   fail	NameErrorra   r   	TypeErrorru   )r   rk   mgrp   rw   ds          r   )test_exec_with_general_mapping_for_locals7TestSpecifics.test_exec_with_general_mapping_for_localsH   sE   		# 		# CIWaI.	3! II12[!S$u+$67_a#S!H-^Q"S!H-)T7A6	 	 C)T7A9	3 	3
 CWa3$5  		s   E* *
E87E8zexhausts limited stack on WASIc                     [        [        5       S-  5      nSSU-  -   n0 n[        R                  " SU4S-  -  5      n[	        XC5        U R                  US   " S5      S5        g )	Ng?z	x = x or z-xa  
            def f(x):
                %s
                %s
                %s
                %s
                %s
                %s
                %s
                %s
                %s
                %s
                # the expressions above have no effect, x == argument
                while x:
                    x -= 1
                    # EXTENDED_ARG/JUMP_ABSOLUTE here
                return x
            
   f   r   )intr   textwrapdedentr#   r5   )r   repeatlongexprr}   codes        r   test_extended_argTestSpecifics.test_extended_argw   sl    *,s23.  " ;r># # $$ 	T3A&r   c                 :    U R                  [        [        S5        g )Nzdef f(a=1, b): passrH   r$   s    r   test_argument_order!TestSpecifics.test_argument_order   s    +t-BCr   c                     U R                  [        [        S5        U R                  [        [        S5        U R                  [        [        S5        U R                  [        [        S5        g )N2ez2.0e+z1e-z3-4e/21)r   r   r;   r$   s    r   test_float_literals!TestSpecifics.test_float_literals   sJ    +tT2+tW5+tU3+tY7r   c                 J    [         R                  " S5      n[        USS5        g )NzN
            if 1:
                if 2:
                    pass
            rD   r#   r   r   r   r   ss     r   test_indentationTestSpecifics.test_indentation   s#    OO  
 	:v&r   c                    SR                  S/S-  S/-   5      n[        USS5      nU R                  UR                  S5        UR	                  5        VVs/ s H  u    p4UPM
     nnnU R                  USS	/5        g s  snnf )
Nr(   
   spamfnr#      r   i  )joinr   r5   co_firstlinenoco_lines)r   s256co_lineliness         r   test_leading_newlines#TestSpecifics.test_leading_newlines   sx    wwv|vh./T4(**A.(*6*!Q6C) 7s   A=c                 \   S H  nU R                  [        [        U5        M      U R                  [        S5      S5        U R                  [        S5      S5        U R                  [        S5      S5        U R                  [        S5      S5        U R                  [        S5      S	5        U R                  [        S
5      S5        U R                  [        S5      S5        U R                  [        S5      S5        U R                  [        S5      S5        U R                  [        S5      S5        U R                  [        S5      S5        U R                  [        S5      S5        U R                  [        S5      S5        U R                  [        S5      S5        U R                  [        S5      S5        U R                  [        S5      S5        U R                  [        S5      S5        U R                  [        S5      S5        U R                  [        S5      S5        U R                  [        S5      S 5        U R                  [        S!5      S"5        U R                  [        S#5      S$5        U R                  [        S%5      S&5        U R                  [        S'5      S(5        g ))N)0777870xjz0x.0e0900000000000000800000000000000000000000000090000000000000080b420BADCAFE0o123456789z0b1.1z0o4.20b101j0o153j0b100e10o777e107770007770000000000000070xff   z0777.i	  z0777.08000000000000000000000000000000000000000000000000000777e00777e1iZ  0e0r   z	0000e-012z09.5g      #@0777jy             H@00000j                z00.00e3z090000000000000.g  聰vBz&090000000000000.0000000000000000000000090000000000000e0z090000000000000e-0090000000000000jy          聰vBz000000000000008.g       @z000000000000009.g      "@0b101010*   z-0b0000000000100o777i  z
-0o0000010i)r   r   r;   r5   )r   args     r   !test_literals_with_leading_zeroes/TestSpecifics.test_literals_with_leading_zeroes   s   1C
 k451 	fs+g,h-XY[^_h.ea(k*A.fs+g-ea(eb)fq)ea(01?CFGY12OD23_E01?C01260126j)2./0"5g,l+R0r   c                 .   SnSSU-   S3n[         R                  " U5         [        USS5        S S S 5        [         R                  " US-
  5         U R                  [        5       n[        USS5        S S S 5        WR
                  nU R                  UR                  S	5        U R                  S
[        U5      5        U R                  S[        U5      5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)Ni  za = 1
b = 2
c = 3z
d = 4z<long_int_pass>r#   r   z<long_int_fail>   zExceeds the limit z Consider hexadecimal )
r   adjust_int_max_str_digitsr   r   r   	exceptionr5   linenoassertInstr)r   nr   err_ctxexcs        r   test_int_literals_too_long(TestSpecifics.test_int_literals_too_long   s    %c!eWG4..q1F-v6 2..qs3"";/7 16: 0##CSZZ+MM.C9MM2CH= 43 21 0/ 43s0   C$D'C55A&D$
C25
D	?D
Dc                 6   [         R                  S:X  a<  SnU R                  [        U5      S5        U R                  [        SU-   5      S5        Oa[         R                  S:X  a<  SnU R                  [        U5      S5        U R                  [        SU-   5      S	5        OU R	                  S
5        U R                  [        S[         R                  * S-
  -  5      [        5        U R                  [        S[         R                  * S-
  -  5      [        5        g )Ni
0xffffffffl    -l     0xffffffffffffffffl    l z)How many bits *does* this machine have???z%sr      )sysmaxsizer5   r;   ry   assertIsInstancer   )r   all_one_bitss     r   test_unary_minusTestSpecifics.test_unary_minus   s    ;;*$'LT,/<T#"45{C[[///LT,/1EFT#"457LMIIAB 	d4CKK<!+;#<=sCd4CKK<!+;#<=sCr   r   c                     SnSnSnSnSnSnSnSnU R                   R                  R                   H  n	U	c  M  U R                  U	[        5        M      g )	Nl        l     l          l       l            l         r   l )test_32_63_bit_values__code__	co_constsr   r   )
r   rQ   bcr~   er   r}   hvariables
             r   r   #TestSpecifics.test_32_63_bit_values   s]    AA A A$A$A$A$A 66??II'))(C8 Jr   c                 T    Su  pU R                  US5        U R                  US5        g )N)r   r   r   r5   )r   ijs      r   test_sequence_unpacking_error+TestSpecifics.test_sequence_unpacking_error   s)    ABr   c                     / SQnU HB  nUS-  nU R                  [        [        USS5        U R                  [        [        USS5        MD     g )N)zNone = 0z	None += 0z__builtins__.None = 0zdef None(): passzclass None: passz(a, None) = 0, 0zfor None in range(10): passzdef f(None): passzimport Nonezimport x as Nonezfrom x import Nonezfrom x import y as Noner   tmpr   r#   r@   )r   stmtsstmts      r   test_none_assignment"TestSpecifics.test_none_assignment  sJ    
 DDLDk7D%Jk7D%H r   c                     / SQn/ SQnU H  n[        USS5        M     U H   nU R                  [        [         USS5        M"     g )N)z
import syszimport os, syszimport os as barzimport os.path as barz0from __future__ import nested_scopes, generatorsz2from __future__ import (nested_scopes,
generators)z3from __future__ import (nested_scopes,
generators,)z%from sys import stdin, stderr, stdoutz'from sys import (stdin, stderr,
stdout)z(from sys import (stdin, stderr,
stdout,)z(from sys import (stdin
, stderr, stdout)z)from sys import (stdin
, stderr, stdout,)z7from sys import stdin as si, stdout as so, stderr as sez9from sys import (stdin as si, stdout as so, stderr as se)z:from sys import (stdin as si, stdout as so, stderr as se,))zimport (os, sys)zimport (os), (sys)zimport ((os), (sys))zimport (syszimport sys)zimport (os,)zimport os As barzimport os.path a barzfrom sys import stdin As stdoutzfrom sys import stdin a stdoutzfrom (sys) import stdinz%from __future__ import (nested_scopesz%from __future__ import nested_scopes)z0from __future__ import nested_scopes,
generatorszfrom sys import (stdinzfrom sys import stdin)z%from sys import stdin, stdout,
stderrzfrom sys import stdin sizfrom sys import stdin,zfrom sys import (*)z(from sys import (stdin,, stdout, stderr)z from sys import (stdin, stdout),r   r#   )r   r   r   )r   succeedry   r   s       r   test_importTestSpecifics.test_import  sH    "0 DD%( Dk7D%H r   c                     S nU" 5       u  p#U R                  [        UR                  5      [        UR                  5      5        g )Nc                      SS jn SS jnX4$ )Nc                     U $ r   rj   xs    r   <lambda>ITestSpecifics.test_for_distinct_code_objects.<locals>.f.<locals>.<lambda>K      Qr   c                     U $ r   rj   r  s    r   r  r	  L  r
  r   r   )r   rj   )f1f2s     r   r   7TestSpecifics.test_for_distinct_code_objects.<locals>.fJ  s    BB6Mr   )assertNotEqualidr   )r   r   r  r  s       r   test_for_distinct_code_objects,TestSpecifics.test_for_distinct_code_objectsH  s2    	 Br{{OR_=r   c                 @    S nU R                  UR                  5        g )Nc                      g)Nfoorj   rj   r   r   r  /TestSpecifics.test_lambda_doc.<locals>.<lambda>R  s    Er   )assertIsNonerh   )r   ls     r   test_lambda_docTestSpecifics.test_lambda_docQ  s    !))$r   c                 ,   SnU R                  [        [        USS5        Sn[        USS5        U R                  [	        U5      S5        SnU R                  [	        U5      S5        SnU R                  [	        U5      S5        S	nU R                  [	        U5      S5        S
nU R                  [	        U5      S5        SnU R                  [	        U5      S5        SnU R                  [	        U5      S5        SnU R                  [	        U5      S5        g )Ns#   # -*- coding: badencoding -*-
pass
r   r#   u%   # -*- coding: badencoding -*-
"Â¤"
u   Â¤u   "Â¤"
s   "¤"
   ¤s   # -*- coding: latin1 -*-
"¤"
s   # -*- coding: utf-8 -*-
"¤"
s"   # -*- coding: iso8859-15 -*-
"¤"
u   Â€u*   """\
# -*- coding: iso8859-15 -*-
Â¤"""
u!   # -*- coding: iso8859-15 -*-
Â¤s(   """\
# -*- coding: iso8859-15 -*-
¤"""
u   # -*- coding: iso8859-15 -*-
¤)r   r   r   r5   r;   r   r   s     r   test_encodingTestSpecifics.test_encodingU  s    7+weVD<eV$dZ0dZ0dV,8dZ07dV,<d\2Cd%MNDd%IJr   c                     " S S[         5      nU" 5       nSUS'   U R                  US   S5        US==   S-  ss'   U R                  US   S5        US	 U R                  SU5        SUS'   U R                  US   S5        US==   S-  ss'   U R                  US   S5        US	 U R                  SU5        SUSS& U R                  USS S5        USS=== S-  sss& U R                  USS S5        USS2	 U R                  [        SS5      U5        SUSS2SS24'   U R                  USS2SS24   S5        USS2SS24==   S-  ss'   U R                  USS2SS24   S5        USS2SS24	 U R                  [        SS5      [        SS5      4U5        SUSSS2'   U R                  USSS2   S5        USSS2==   S-  ss'   U R                  USSS2   S5        USSS2	 U R                  [        SSS5      U5        SUSSS2SSS24'   U R                  USSS2SSS24   S5        USSS2SSS24==   S-  ss'   U R                  USSS2SSS24   S5        USSS2SSS24	 U R                  [        SSS5      [        SSS5      4U5        SUS'   U R                  US   S5        US==   S-  ss'   U R                  US   S5        US	 U R                  [        U5        SUS'   U R                  US   S5        US==   S-  ss'   U R                  US   S5        US	 U R                  [        [        4U5        g )	Nc                   2    \ rS rSrS rS rS rS rS rSr	g)	.TestSpecifics.test_subscripts.<locals>.str_mapim  c                     0 U l         g r   datar$   s    r   __init__7TestSpecifics.test_subscripts.<locals>.str_map.__init__n  s	    	r   c                 2    U R                   [        U5         $ r   r&  r   rT   s     r   rV   :TestSpecifics.test_subscripts.<locals>.str_map.__getitem__p  s    yyS**r   c                 2    X R                   [        U5      '   g r   r*  r[   s      r   r]   :TestSpecifics.test_subscripts.<locals>.str_map.__setitem__r  s    &+		#c(#r   c                 0    U R                   [        U5      	 g r   r*  rT   s     r   __delitem__:TestSpecifics.test_subscripts.<locals>.str_map.__delitem__t  s    IIc#h'r   c                 2    [        U5      U R                  ;   $ r   )r   r&  rT   s     r   __contains__;TestSpecifics.test_subscripts.<locals>.str_map.__contains__v  s    3x499,,r   r%  N)
rd   re   rf   rg   r'  rV   r]   r/  r2  ri   rj   r   r   str_mapr#  m  s    +,(-r   r4  r   r   )r   r   r   .)..)objectr5   assertNotInsliceEllipsis)r   r4  r~   s      r   test_subscriptsTestSpecifics.test_subscriptsj  s   
	-f 
	- I!1q!	!	1q!aDA$4!$	$14!$dG#!A1Q#	!A!1Q#acFq!a(!A#qs(1Q3!8a(	!A#qs(q1Q3!8a(ac1Q3hK%1+uQ{3Q7!Aa%1Qq51%	!Aa%A1Qq51%a!eHq!Q+!Aa%1Q,1Qq5!Aa%<!,	!Aa%1Q,11Qq5!Aa%<!,a!eQqUlO%1a.%1a.91=#3#	#!3#cF1%(8a(	(q8a(hK(H-q1r   c                 j    SnUSR                  S [        S5       5       5      -  n[        USS5        g )Nzdef f(%s): pass, c              3   .   #    U  H  nS X4-  v   M     g7f)za%d:%dNrj   .0r   s     r   	<genexpr>6TestSpecifics.test_annotation_limit.<locals>.<genexpr>  s     <Ax1%'   i,  r0   r#   r   ranger   r   s     r   test_annotation_limit#TestSpecifics.test_annotation_limit  s0    	TYY<s<<<3r   c                     " S S5      nU R                  SUR                  R                  R                  5        U R                  SUR                  R                  R                  5        U R                  SUR                  R                  R                  5        U R                  SUR                  R                  R                  5        g )Nc                       \ rS rSrS rSrg)&TestSpecifics.test_mangling.<locals>.Ai  c                      Sn SnSS K nSS Kng )Nr   r   r   )_A__mangled_mod__package__.module)_A__mangled__not_mangled__rK  __package__s       r   r   (TestSpecifics.test_mangling.<locals>.A.f  s    	"#$)r   rj   Nrd   re   rf   rg   r   ri   rj   r   r   rp   rI    s    *r   rp   rM  rN  rK  rO  )r   r   r   co_varnames)r   rp   s     r   test_manglingTestSpecifics.test_mangling  s    	* 	* 	mQSS\\%=%=>')A)AB')A)ABmQSS\\%=%=>r   c                     [        SSS5        g )Nzif (5 if 5 else T): 0<eval>r#   r   r$   s    r   3test_condition_expression_with_dead_blocks_compilesATestSpecifics.test_condition_expression_with_dead_blocks_compiles  s    '6:r   c                     / SQnU HF  nU R                  US9   U R                  [        5         [        USS5        S S S 5        S S S 5        MH     g ! , (       d  f       N= f! , (       d  f       Mk  = f)N)zif 9<9<9and 9or 9:9zif 9<9<9and 9or 9or 9:9zif 9<9<9and 9or 9or 9or 9:9zif 9<9<9and 9or 9or 9or 9or 9:9exprrV  r#   )subTestassertWarnsSyntaxWarningr   r   exprsr[  s      r   =test_condition_expression_with_redundant_comparisons_compilesKTestSpecifics.test_condition_expression_with_redundant_comparisons_compiles  sZ    
 D4(%%m4D(F3 5 )( 44 )(s!   A#AA#
A A##
A2	c                 F    [        [        R                  " S5      SS5        g )Nz
                if None:
                    with CM:
                        x = 1
                else:
                    x = 2
               rV  r#   r   r   r   r$   s    r   +test_dead_code_with_except_handler_compiles9TestSpecifics.test_dead_code_with_except_handler_compiles  s!     !  v	'r   c                 F    [        [        R                  " S5      SS5        g )Nz
            name_1, name_2, name_3 = 1, 2, 3
            while name_3 <= name_2 > name_1:
                try:
                    raise
                except:
                    pass
                finally:
                    pass
            rV  r#   rd  r$   s    r   8test_try_except_in_while_with_chained_condition_compilesFTestSpecifics.test_try_except_in_while_with_chained_condition_compiles  s!     	! 	 F		$r   c                 N   [         R                  " [         R                  " [         R                  " [         R                  " [         R
                  " SS9[         R
                  " SS9S9[         R                  " [         R                  " S[         R                  " 5       S9[         R                  " S[         R                  " 5       S9/ SS	9/S
9S9// S9nU R                  [        S5         [        [         R                  " U5      SS5        S S S 5        g ! , (       d  f       g = f)Nr   r\   r   )targetr\   r  r  ctxyr   )rl  iterifsis_async)elt
generatorsbodytype_ignoreszNamedExpr target must be a Name<file>r#   )astModuleExprListComp	NamedExprConstantcomprehensionNameStoreLoadassertRaisesRegexr{   r   fix_missing_locationsr   r|   s     r   test_compile_invalid_namedexpr,TestSpecifics.test_compile_invalid_namedexpr  s    JJ,,MM#&<<a#8"%,,Q"7
  --'*xx3CIIK'H%(XX#((*%E$&)*	$$ '
, ##I/PQC--a0(FC RQQs   +"D
D$c                    [         R                  " S5      n[        R                  " U5      n[        R                  " U5       H  n[        US5      (       d  M  U?U?U?U?	M      [        [        R                  " U5      SS5        g )Nz
            try:
                pass
            except:
                pass
            else:
                match name_2:
                    case b'':
                        pass
            finally:
                something
            r   rx  r#   r   r   ry  parsewalkhasattrr   
end_lineno
col_offsetend_col_offsetr   r  r   r   treenodes       r   >test_compile_redundant_jumps_and_nops_after_moving_cold_blocksLTestSpecifics.test_compile_redundant_jumps_and_nops_after_moving_cold_blocks  ss    __   yy HHTNDtH%%[__( # 	))$/6Br   c                    [         R                  " S5      n[        R                  " U5      n[        R                  " U5       H  n[        US5      (       d  M  U?U?U?U?	M      [        [        R                  " U5      SS5        g )Nz
            if name_2:
                pass
            else:
                try:
                    pass
                except:
                    pass
            ~name_5
            r   rx  r#   r  r  s       r   4test_compile_redundant_jump_after_convert_pseudo_opsBTestSpecifics.test_compile_redundant_jump_after_convert_pseudo_ops"  ss    __ 	 	 yy HHTNDtH%%[__( # 	))$/6Br   c                    [         nUR                  5       R                  S5      (       a  US S n[        USS9 nUR	                  5       nS S S 5        SS/SS/S	S
/SS/UW//nU H  u  p[        USU-  S5      n[        USU-  S[        R                  5      nU R                  [        U5      [        R                  :H  5        [        USU-  S5      nU R                  Xh5        U R                  UR                  SU-  5        M     [        SSS[        R                  5      nU R                  [        [
        USS5        U R                  [        [
        [        R                  " [        R                   " S[        R"                  " 5       S9S9SS5        [        R                  " 5       n[        R$                  " [        R&                  " 5       S9/Ul        U R                  [        [
        USS5        g ! , (       d  f       GN= f)Npycr   zutf-8)encodingz<assign>zx = 5z	<ifblock>zif True:
    pass
z
<forblock>z!for n in [1, 2, 3]:
    print(n)
z	<deffunc>zdef foo():
    pass
foo()
z%s1r#   z%s2z%s3zprint(1)rD   z<ast>r;   r  rm  )test)op)__file__lowerendswithopenreadr   _astPyCF_ONLY_AST
assertTruetyperz  r5   co_filenamer   r{   Ifr  r  BoolOpOrrv  )	r   fnamer   	fcontentssample_coder   co1ry  co2s	            r   test_compile_astTestSpecifics.test_compile_ast;  s   ;;=!!%((#2JE%'*aI + !45DE=>I
 'KE$v6C$vt7I7IJCOODI45#uu}f5CS&S__eem< ' j*fd6H6HI)Wc7FC 	)Wdgg499QUQZQZQ\;].^`giop kkmKK4779-.)Wc7FC; +*s   G77
Hc                    [         R                  " [         R                  " [         R                  " [         R                  " S[         R
                  " 5       S9[         R                  " SS9[         R                  " 5       S9/ [         R                  " S[         R
                  " 5       S9S9// S9nU R                  [        S	5         [        [         R                  " U5      S
S5        S S S 5        g ! , (       d  f       g = f)Nr  rm  r  rk  )r\   r7  rn  Callable)nametype_paramsr\   ru  zTypeAlias with non-Name namerx  r#   )ry  rz  	TypeAlias	Subscriptr  r  r~  r  r  r{   r   r  r  s     r   test_compile_invalid_typealias,TestSpecifics.test_compile_invalid_typealias^  s    JJ!hh%SXXZ@!ll5IIK
 !#((jchhjA
 
 ##I/MNC--a0(FC ONNs   "C11
C?c                 t   ^ SmU4S jnU" 5       U" 5       U" 5       U" 5       0nU R                  USSS.5        g )Nr   c                     > T S-  m T $ Nr   rj   r   s   r   r   3TestSpecifics.test_dict_evaluation_order.<locals>.fu  s    FAHr   r      )r   r   r   )r   r   r~   r   s      @r   test_dict_evaluation_order(TestSpecifics.test_dict_evaluation_orderr  s9    	
 S!#qsAC aL)r   c                 h   S H,  n[        SUS5      nU R                  UR                  S5        M.     [        S5      [	        S5      4 H.  nU R                  [        5         [        SUS5        S S S 5        M0     U R                  [        [         S[        S5      S5        g ! , (       d  f       Mh  = f)N)file.py   file.pypassr#   r  r  )r   r5   r  	bytearray
memoryviewr   r{   ra   )r   r?   r   s      r   test_compile_filename#TestSpecifics.test_compile_filename}  s    -H68V4DT--y9 . "*-z*/EEH""9-&1 .- F 	)Wfd:6FO .-s   !B""
B1	c                     Sn[        USS5      nUR                   HJ  n[        U[        R                  5      (       d  M$  U R                  UR                  UR                  5        ML     g )Nzdef f(): pass
def g(): passmyfiler#   )r   r   
isinstancetypesCodeTypeassertIsr  )r   r   r   objs       r   test_same_filename_used%TestSpecifics.test_same_filename_used  sJ    .Ax(;;C#u~~..cooq}}= r   c                    U R                  S5        U R                  S5        U R                  S5        U R                  S5        U R                  S5        U R                  S5        U R                  S5        U R                  S5        U R                  S	5        U R                  S
5        U R                  S5        U R                  S5        U R                  S5        U R                  S5        U R                  S5        g )Nz1 + 2z
1 + 2z1 + 2
z1 + 2

z1 + 2		
z1 + 2		
        z1 + 2 # one plus twoz1; 2zimport sys; syszdef f():
   passzwhile False:
   passzif x:
   f(x)zif x:
   f(x)
else:
   g(x)zclass T:
   passzc = '''
a=1
b=2
c=3
''')r   r$   s    r   test_single_statement#TestSpecifics.test_single_statement  s    G$I&I&K(M*1223F#-./034,-<=/09:r   c                 6   U R                  S5        U R                  S5        U R                  S5        U R                  S5        U R                  S5        U R                  S5        U R                  S5        U R                  S5        U R                  S	5        g )
Nz1
2zdef f(): passza = 13
b = 187zdel x
del yzf()
g()zf()
# blah
blah()zf()
xy # blah
blah()zx = 5 # comment
x = 6
zc = '''
d=1
'''
a = 1

b = 2
)r   r$   s    r   test_bad_single_statement'TestSpecifics.test_bad_single_statement  s      (  1  !23  0  ,  !67  !9:  !;<  !FGr   c                 ~   Sn[         R                  " 5        n[        R                  R	                  US5      n[        US5       nUR                  U5        S S S 5        [        R                  " U5      S   nS S S 5        U R                  SWR                  5        g ! , (       d  f       NL= f! , (       d  f       N<= f)Ns   0000 
00000000000
 

bad.pywbr   %   source code cannot contain null bytestempfileTemporaryDirectoryospathr   r  writer   run_python_until_endr   errr   srctmpdr   fpress         r   "test_particularly_evil_undecodable0TestSpecifics.test_particularly_evil_undecodable  s    4((*ddH-Bb$2  44R8;C	 +
 	>H   +*#   -B.B!B.
B+	'B..
B<c                 ~   Sn[         R                  " 5        n[        R                  R	                  US5      n[        US5       nUR                  U5        S S S 5        [        R                  " U5      S   nS S S 5        U R                  SWR                  5        g ! , (       d  f       NL= f! , (       d  f       N<= f)Ns   # 
#
r  r  r   r  r  r  s         r   $test_yet_more_evil_still_undecodable2TestSpecifics.test_yet_more_evil_still_undecodable  s    ((*ddH-Bb$2  44R8;C	 +
 	>H   +*r  c                    ^ ^^^ [        5       nUS-   mUS-  m[        US-  5      mS
UUU U4S jjnU" SS5        U" SS5        U" SS5        U" SS	5        g )Nr   d   g?c                    > XT
-  -   n[        USU5        TT4 HF  nXU-  -   nSR                  XU5      nT	R                  [        US9   [        USU5        S S S 5        MH     g ! , (       d  f       MZ  = f)Nr"   zCompiling ({!r} + {!r} * {}))msg)r   formatr   RecursionError)prefixrepeatedmode	expect_okdepthbrokendetailscrash_depth
fail_depthr   success_depths          r   check_limit@TestSpecifics.test_compiler_recursion_limit.<locals>.check_limit  s    M!99IIx.$k2U"228??"e5&&~7&CFHd3 DC	 3 DCs   
A%%
A4	rQ   z()z.bz[0]z*a)r   )r   r   )r   limitr  r  r  r  s   `  @@@r   test_compiler_recursion_limit+TestSpecifics.test_compiler_recursion_limit  sa     &'QY
ckECK(	4 	4 	CCCCr   c                    U R                  [        S5         [        SSS5        S S S 5        U R                  [        S5         [        [        S5      SS5        S S S 5        [        [        S5      SS SS5      nU R	                  [        U5      S5        [        [        S	5      SS SS5      nU R	                  [        U5      S5        [        [        S
5      SS SS5      nU R	                  [        U5      S5        U R	                  [        [        S	5      SS 5      S5        [        5       n[        [        S5      SS U5        U R	                  US   S5        g ! , (       d  f       GN?= f! , (       d  f       GN= f)Nzcannot contain nullz123 <dummy>r;   s   123 r   r      s   1234s   $23$s   ax = 123r  rR   )r  r   r   r  r5   r;   ru   r#   )r   r   	namespaces      r   test_null_terminated"TestSpecifics.test_null_terminated  s>    ##K1FGIy&1 H##K1FGJz*Iv> Hz*-a3YGdR(z'*1R0)VDdR(z'*1R0)VDdR( 	j1!B78"=F	Z$Qr*I63, HGGGs   EE/
E,/
E>c                     UR                   R                   H  n[        U5      [        U5      :X  d  M    g    U R                  SU< SUR                   R                  < 35        g )Nzunable to find constant z in )r   r   reprry   )r   funcexpectedconsts       r   check_constantTestSpecifics.check_constant  sK    ]],,EE{d8n, - II!4==#:#:< =r   c                   ^  U 4S jnU" S 5        U" S5        U" S5        U" S5        U" S5        S S p2T R                  UR                  R                  UR                  R                  5        T R                  U[        5        T R                  [        U" 5       5      [        [        5      5        S S	 p2S
 nT R                  UR                  R                  S   UR                  R                  S   S   5        T R                  [        [        UR                  R                  S   5      5      UR                  R                  S   5        S S p2T R                  UR                  R                  UR                  R                  5        T R                  U[        S15      5        T R                  U" S5      5        g )Nc                 0  > 0 nSU < SU < 3n[        X!5        US   nUS   nTR                  UR                  R                  UR                  R                  5        TR	                  X05        TR                  [        U" 5       5      [        U 5      5        g Nzf1, f2 = lambda: z
, lambda: r  r  )r#   r  r   r   r  r5   r  )r  nsr   r  r  r   s        r   check_same_constant?TestSpecifics.test_merge_constants.<locals>.check_same_constant  su    B8=uEDNDBDBMM"++//1F1FG*T"$Ze5r   r           s   abcabcc                      gN.rj   rj   r   r   r  4TestSpecifics.test_merge_constants.<locals>.<lambda>  s    r   c                      gr  rj   rj   r   r   r  r    s    cr   c                      g)N
not a namerj   rj   r   r   r  r    s    r   c                      g)Nr  rj   rj   r   r   r  r    s    r   c                     U S;   $ )N>   r   rj   r  s    r   r  r    s
    q--r   r   c                     U S;   $ N>   r   rj   r  s    r   r  r        18r   c                     U S;   $ r#  rj   r  s    r   r  r    s    qCxr   )r  r   r   r  r8  r5   r  nextrp  	frozensetr  )r   r  r  r  f3s   `    r   test_merge_constants"TestSpecifics.test_merge_constants  sU   
	6 	D!AC F#E" kBbkk++R[[-B-BCB)bdT(^4 &'>B-bkk++A.kk++A.q1	3d4 5 5a 89:kk++A.	0
 $%7Bbkk++R[[-B-BCB	1#/1r   c                     S nS nU R                  UR                  R                  UR                  R                  5        g )Nc                 .    U R                   R                  $ r   ro  rl   r  s    r   r  5TestSpecifics.test_merge_code_attrs.<locals>.<lambda>'      qssuur   c                 .    U R                   R                  $ r   )r   r   rQ   s    r   r  r.  (  r/  r   )r  r   co_linetable)r   r  r  s      r   test_merge_code_attrs#TestSpecifics.test_merge_code_attrs$  s0     bkk..0H0HIr   c                 n    S nU R                  UR                  R                  UR                  S45        g )Nc                       g)	docstringusedrj   rj   r   r   r   2TestSpecifics.test_remove_unused_consts.<locals>.f.  s    r   r8  r5   r   r   rh   r   r   s     r   test_remove_unused_consts'TestSpecifics.test_remove_unused_consts,  s/    	  	--))V,	.r   c                 V    S nU R                  UR                  R                  S5        g )Nc                       gNr8  rj   rj   r   r   r   ?TestSpecifics.test_remove_unused_consts_no_docstring.<locals>.f<  s    r   r@  )r5   r   r   r;  s     r   &test_remove_unused_consts_no_docstring4TestSpecifics.test_remove_unused_consts_no_docstring8  s&    	  	--'	)r   c                 d   SnS/nUR                  S5        UR                  S5        [        U5       H-  nUR                  SU S35        UR                  SU S35        M/     UR                  S5        S	R                  U5      n0 n[        [	        US
S5      U5        [        X$5        US   n[        / SQ[        U5       Vs/ s H  nSU 3PM
     sn-   5      nU R                  UR                  R                  U5        S	R                  USS  5      nU R                  Xe" 5       5        g s  snf )Ni  z	def f():
z	s = ''
z	for i in range(1):
z		if True: s += 'tz'
z		if False: s += 'fz
	return s
r(   r  r#   r   )Nr(   r   tr   )
appendrD  r   r;   r   r#   tupler5   r   r   )r   Nr   r   r}   r   r  s          r   'test_remove_unused_consts_extended_args5TestSpecifics.test_remove_unused_consts_extended_argsE  s   ~L!,-qAKK.qc56KK/s#67  	N#wwt}WT9f-q1TcF58)D8aAaS'8)DDE--x8778AB<(13' *Es   D-
c                 n    S nU R                  UR                  R                  UR                  S45        g )Nc                      g)r7  r   rj   rj   r   r   r  0TestSpecifics.test_strip_unused_None.<locals>.f1`  s    r   r   r:  )r   r  s     r   test_strip_unused_None$TestSpecifics.test_strip_unused_None\  s,    	 	..R0@Ar   c                     S nU R                  S[        [        R                  " U5      5      S   R                  5        g)z9Regression test for issue35193 when run under clang msan.c                      g)Nr   )RuntimeErrorrj   r   r   unused_code_at_endcTestSpecifics.test_peephole_opt_unreachable_code_array_access_in_bounds.<locals>.unused_code_at_endl  s    r   RETURN_CONSTr   N)r5   ra   disget_instructionsopname)r   rS  s     r   9test_peephole_opt_unreachable_code_array_access_in_boundsGTestSpecifics.test_peephole_opt_unreachable_code_array_access_in_boundsi  s:    	. 	%%&89:2>EE	Gr   c           	         [         R                  " S5      nS H  nU R                  US9   [        USSUS9n0 n[	        X45        US:  a   U R                  US   R                  S	5        OU R                  US   R                  5        U R                  US
   R                  5        U R                  US   R                  5        S S S 5        M     g ! , (       d  f       M  = f)Nz
            def with_docstring():
                "docstring"

            def with_fstring():
                f"not docstring"

            def with_const_expression():
                "also" + " not docstring"
            )r   r   r   optr"   r#   optimizer   with_docstringr7  with_fstringwith_const_expression)r   r   r\  r   r#   r5   rh   r  )r   r  r]  r   r  s        r   test_docstringTestSpecifics.test_docstringw  s    oo 	 	 C#&sHfsCT7$$R(8%9%A%A;O%%b)9&:&B&BC!!"^"4"<"<=!!"%<"="E"EF '& &&s   BC
C!	c           	         [         R                  " S5      nS H  nU R                  US9   [        USSUS9n[        R
                  " 5       n[        R                  " U5         [        R                  " U5        S S S 5        U R                  SUR                  5       5        S S S 5        M     g ! , (       d  f       N;= f! , (       d  f       M  = f)Na  
            def f():
                "docstring1"
                def h():
                    "docstring2"
                    return 42

                class C:
                    "docstring3"
                    pass

                return h
        )r   r   r   r   r\  r"   r#   r^  NOP)r   r   r\  r   ioStringIO
contextlibredirect_stdoutrV  r6  getvalue)r   r  r]  r   outputs        r   test_docstring_omitted$TestSpecifics.test_docstring_omitted  s     oo   !C#&sHfsC//7GGDM 8  ):; '& ! 87 '&s#   8C #B/:(C /
B=9C  
C	c                   ^  U 4S jnU" SS5        U" SS5        U" SS5        U" SS5        U" S	S
5        S S p2T R                  UR                  UR                  5        T R                  US5        T R                  US5        T R                  [	        U" 5       5      [	        S5      5        T R                  [	        U" 5       5      [	        S5      5        S S p2T R                  UR                  UR                  5        T R                  U[        S15      5        T R                  U[        S15      5        T R                  U" S5      5        T R                  U" S5      5        g )Nc                   > 0 n[        SU < SU< 3U5        US   nUS   nTR                  UR                  UR                  5        TR                  UR                  UR                  5        TR	                  X05        TR	                  XA5        TR                  [        U" 5       5      [        U 5      5        TR                  [        U" 5       5      [        U5      5        g r  )r#   assertIsNotr   r  r  r5   r  )const1const2r  r  r  r   s        r   check_different_constantsJTestSpecifics.test_dont_merge_constants.<locals>.check_different_constants  s    BffErJDBDBR[["++6R[[9++T"$Zf6T"$Zf6r   r   r  g       )r   )r  rQ      ar1  )rv  c                      g)Nr   rj   rj   r   r   r  9TestSpecifics.test_dont_merge_constants.<locals>.<lambda>  s    r   c                      g)N              rj   rj   r   r   r  rx    s    r   r   rz  c                     U S;   $ r#  rj   r  s    r   r  rx    r$  r   c                     U S;   $ )N>   r  rj   r  s    r   r  rx    s    qEzr   )rq  r   r  r5   r  r'  r  )r   rt  r  r  s   `   r   test_dont_merge_constants'TestSpecifics.test_dont_merge_constants  s    
	7 	"!S)!$-!$/!#t,!&'2 Bbkk2B&B&bdT%[1bdT%[1 $%9Bbkk2B	1#/B	3% 0113 r   c                 0    [        S[        S5      S5        g )N42test_compile_pathliker   )r   r
   r$   s    r   test_path_like_objects$TestSpecifics.test_path_like_objects  s    h67Br   cpuc                 $    [        SS-  SS5        g )Nzif a: b
i@ r  r#   r   r$   s    r   test_stack_overflow!TestSpecifics.test_stack_overflow  s     	f$i8r   c                 &   S nS nS nS nXX4/nU H{  n[        [        R                  " U5      5      nU R                  [	        U5      S5        U R                  SUS   R                  5        U R                  S US   R                  5        M}     g )Nc                      g r   rj   rj   r   r   unused_block_ifPTestSpecifics.test_dead_blocks_do_not_generate_bytecode.<locals>.unused_block_if  s    r   c                      g r   rj   rj   r   r   unused_block_whileSTestSpecifics.test_dead_blocks_do_not_generate_bytecode.<locals>.unused_block_while  s    r   c                       g r   rj   rj   r   r   unused_block_if_elseUTestSpecifics.test_dead_blocks_do_not_generate_bytecode.<locals>.unused_block_if_else  s    r   c                       g r   rj   rj   r   r   unused_block_while_elseXTestSpecifics.test_dead_blocks_do_not_generate_bytecode.<locals>.unused_block_while_else  s    r   r   rU  r   )ra   rV  rW  assertLessEquallenr5   rX  argval)r   r  r  r  r  funcsr  opcodess           r   )test_dead_blocks_do_not_generate_bytecode7TestSpecifics.test_dead_blocks_do_not_generate_bytecode  s    				 !%@ D3//56G  Wq1^WR[-?-?@T72;#5#56	 r   c                    S nS nX/nU H{  n[        [        R                  " U5      5      nU R                  S[	        U5      5        U R                  SUS   R
                  5        U R                  S US   R                  5        M}     g )Nc                      g r   rj   rj   r   r   break_in_while;TestSpecifics.test_false_while_loop.<locals>.break_in_while      r   c                      g r   rj   rj   r   r   continue_in_while>TestSpecifics.test_false_while_loop.<locals>.continue_in_while  r  r   r   rU  r   )ra   rV  rW  r5   r  rX  r  )r   r  r  r  r  r  s         r   test_false_while_loop#TestSpecifics.test_false_while_loop  s    		  3 D3//56GQG-^WQZ->->?T71:#4#45	 r   c                 z   S nS nS nS nXX4/nU H  nU R                  US9   [        [        R                  " U5      5      nU R	                  [        U5      S5        U R                  SUS   R                  5        U R                  S	US
   R                  5        S S S 5        M     g ! , (       d  f       M  = f)Nc                     U $ r   rj   r  s    r   and_true;TestSpecifics.test_consts_in_conditionals.<locals>.and_true      r   c                     S$ )NFrj   r  s    r   	and_false<TestSpecifics.test_consts_in_conditionals.<locals>.and_false  s    r   c                     S$ )NTrj   r  s    r   or_true:TestSpecifics.test_consts_in_conditionals.<locals>.or_true  s    r   c                     U $ r   rj   r  s    r   or_false;TestSpecifics.test_consts_in_conditionals.<locals>.or_false  r  r   r  r   LOAD_r   RETURN_VALUEr   )	r\  ra   rV  rW  r  r  r   rX  r5   )r   r  r  r  r  r  r  r  s           r   test_consts_in_conditionals)TestSpecifics.test_consts_in_conditionals  s    				 g8 D4(s33D9:$$S\15gwr{'9'9:  1C1CD	 )( ((s   A9B++
B:	c                    / SQnU H  n0 n[        [        R                  " U5      U5        US   nU R                  UR                  S9   [        [        R                  " U5      5      nU Vs/ s H  ofR                  PM     nnU R                  SU5        U R                  SU5        U R                  SU5        S S S 5        M     g s  snf ! , (       d  f       M  = f)N)z[            import os
            def foo():
                return os.uname()
            z}            import os as operating_system
            def foo():
                return operating_system.uname()
            zh            from os import path
            def foo(x):
                return path.join(x)
            zv            from os import path as os_path
            def foo(x):
                return os_path.join(x)
            r  r  LOAD_METHOD	LOAD_ATTRCALL)r#   r   r   r\  rd   ra   rV  rW  rX  r6  r   )r   sourcesr   r  r  r  opcodeinstructionss           r   test_imported_load_method'TestSpecifics.test_imported_load_method%  s    
, FI()4U#D4==1s33D9:<CDG&GD  =k<8fl3 21	   E 21s   
$C.C8CC
C	c                     S nUR                   R                  S-   nX!R                   R                  5        VVs/ s H  u    p4UPM
     snn;  d   eg s  snnf )Nc                      [        5         g r   )printrj   r   r   call6TestSpecifics.test_lineno_procedure_call.<locals>.callH  s    r   r   )r   r   r   )r   r  line1r   r   s        r   test_lineno_procedure_call(TestSpecifics.test_lineno_procedure_callG  sN    	 ,,q0mm6L6L6NO6Nlq!T6NOOOOOs   Ac                 L  ^
^ Sm
U
4S jnU
4S jnU
4S jnU
4S jnXX4/n/ SQnS mU4S jn[        XVSS9 HX  u  pU R                  US	9   U" U5        U R                  TR                  TR                  R
                  -
  U	5        S S S 5        MZ     g ! , (       d  f       Ml  = f)
NTc                 $   > U " 5         T(       a  g g r   rj   r  TRUEs    r   if1<TestSpecifics.test_lineno_after_implicit_return.<locals>.if1R  s    C r   c                 $   > U " 5         T(       a  g g r   rj   r  s    r   if2<TestSpecifics.test_lineno_after_implicit_return.<locals>.if2V  s    Cr   c                 $   > U " 5         T(       a  g g r   rj   r  s    r   if3<TestSpecifics.test_lineno_after_implicit_return.<locals>.if3\  s    Cr   c                 $   > U " 5         T(       d  g g r   rj   r  s    r   if4<TestSpecifics.test_lineno_after_implicit_return.<locals>.if4b  s    C r   )r   r   r   r   c                  2   > [         R                  " S5      m g r  )r   	_getframe)frames   r   save_caller_frameJTestSpecifics.test_lineno_after_implicit_return.<locals>.save_caller_framei  s    MM!$Er   strictr  )zipr\  r5   f_linenof_coder   )r   r  r  r  r  r  	lastlinesr  r  lastliner  r  s             @@r   !test_lineno_after_implicit_return/TestSpecifics.test_lineno_after_implicit_returnO  s    				 C%!		% "%4@ND4(&'  0K0K!KXV )( A((s   <B
B#	c                    S nS nX4 H  nU R                  US9   X1L a  UR                  c   S S S 5        M/  UR                  nUR                  5       u  u  pVnU R	                  US5        U R	                  U[        UR                  5      5        U R	                  XtR                  5        S S S 5        M     g ! , (       d  f       M  = f)Nc                      g)z
doc stringNrj   rj   r   r   no_code19TestSpecifics.test_lineno_after_no_code.<locals>.no_code1r      r   c                      g r   rj   rj   r   r   no_code29TestSpecifics.test_lineno_after_no_code.<locals>.no_code2u  r  r   r  r   )r\  rh   r   r   r5   r  co_coder   )r   r  r  r  r   startendr   s           r   test_lineno_after_no_code'TestSpecifics.test_lineno_after_no_codeq  s    		 (D4(#(8(8(@ )( }}'+}}$#%d  *  c$,,&78  ':':; )( )((s   B9A3B99
C	c                     Sn/ nUR                  5        H1  u    pEUc  M  XR:w  d  M  UR                  XQR                  -
  5        UnM3     U$ )Nr   )r   rF  r   )r   r   	last_liner  r   r   s         r   get_code_linesTestSpecifics.get_code_lines  sL    	--/JAqD$5

4"5"556 	 * 
r   c                    S n/ SQnS n/ SQnS n/ SQnS n/ SQnXXW/n	X$Xh/n
[        XS	S
9 HI  u  pU R                  US9   U R                  UR                  5      nU R	                  X5        S S S 5        MK     g ! , (       d  f       M]  = f)Nc                  "    [         R                  $ r   )orQ   rj   r   r   	load_attr6TestSpecifics.test_lineno_attribute.<locals>.load_attr  s    r   )r   r   r   r   c                  ,    [         R                  S5      $ Nr   )r  r|   rj   r   r   load_method8TestSpecifics.test_lineno_attribute.<locals>.load_method  s    r   )r   r   r   r  r   r   c                  "    [         [        l        g r   )vr  rQ   rj   r   r   
store_attr7TestSpecifics.test_lineno_attribute.<locals>.store_attr  s    
  r   )r   r   r   r   c                  >    [         =R                  [        -  sl        g r   )r  rQ   r  rj   r   r   aug_store_attr;TestSpecifics.test_lineno_attribute.<locals>.aug_store_attr  s     	r   )r   r   r   r   r   r   Tr  r  )r  r\  r  r   r5   )r   r  load_attr_linesr  load_method_linesr  store_attr_linesr  aug_store_attr_linesr  
func_linesr  r   
code_liness                 r   test_lineno_attribute#TestSpecifics.test_lineno_attribute  s    	
 )	 1	 *	  4*E&!9
 u>KD4(!00?
  3 )( ?((s   -A==
B	c                     S n/ SQnUR                   R                  S   nU R                  U5      nU R                  X$5        g )Nc                      S [          5       $ )Nc              3   &   #    U  H  nS v   M	     g7f)r   Nrj   r?  r  s     r   r@  OTestSpecifics.test_line_number_genexp.<locals>.return_genexp.<locals>.<genexpr>  s          s   )ro  rj   r   r   return_genexp<TestSpecifics.test_line_number_genexp.<locals>.return_genexp  s     	 r   )r   r  r   r   r  r   )r   r   r  r5   )r   r  genexp_linesgenexp_coder  s        r   test_line_number_genexp%TestSpecifics.test_line_number_genexp  sB    	 '#,,66q9((5
2r   c                 j    S n/ SQnU R                  UR                  5      nU R                  X#5        g )Nc                 8   #    U   S h  vN n[           M   N
 g 7fr   )rv  )aseqr   s     r   r  LTestSpecifics.test_line_number_implicit_return_after_async_for.<locals>.test  s      a4s   	)r   r   r   r   )r  r   r5   )r   r  expected_linesr  s       r   0test_line_number_implicit_return_after_async_for>TestSpecifics.test_line_number_implicit_return_after_async_for  s0    	 &((7
4r   Nc                     [        U[        5      (       a  U4n[        R                  " U5       HC  nU(       d  M  UR                  U;   d  M  U R                  UR                  R                  5        ME     g r   )r  r   rV  BytecoderX  assertIsNotNone	positionsr   )r   r   opnamesinsts       r   check_line_numbers TestSpecifics.check_line_numbers  sS    
 gs##kGLL&Dw4;;'1$$T^^%:%:; 'r   c                 B    S nU R                  UR                  S5        g )Nc               3   l   #    [          H  n  [        (       a  Sv   M  M     g ! [         a     M'  f = f7f)Nr   )itC1OSErrorr  s    r   r   NTestSpecifics.test_line_number_synthetic_jump_multiple_predecessors.<locals>.f  s6     r    s   
4#4
1414JUMP_BACKWARDr(  r   r;  s     r   5test_line_number_synthetic_jump_multiple_predecessorsCTestSpecifics.test_line_number_synthetic_jump_multiple_predecessors  s    	 	

O<r   c                 B    S nU R                  UR                  S5        g )Nc                      [          H  n  SnM     g! [         a'     [        (       a  Sn M&   M)  ! [         a      M7  f = ff = f)Nr   r  r   )r,  r.  C3r  Xs     r   r   UTestSpecifics.test_line_number_synthetic_jump_multiple_predecessors_nested.<locals>.f  sR    A    2 !A " 	s   
A0
?A?Ar0  r1  r;  s     r   <test_line_number_synthetic_jump_multiple_predecessors_nestedJTestSpecifics.test_line_number_synthetic_jump_multiple_predecessors_nested  s    
	 	

O<r   c                 B    S nU R                  UR                  S5        g )Nc                     [          H  n  SnM     g! [         ai     [        (       a  [        (       a  Sn M1   M4   M7  ! [         a9     [        (       a  [        (       a  Sn  M^    Mb    Mf  ! [         a       Mu  f = ff = ff = f)Nr   r  r   r   )r,  r.  r6  C4r7  s     r   r   ZTestSpecifics.test_line_number_synthetic_jump_multiple_predecessors_more_nested.<locals>.f  s    !A    !
!2!r$%  "  # !!!r#%2()A $&  "  ' ! !!!sN   
B>
B	A-!B%B)B-
A=	7B8B<A=	=BBr0  r1  r;  s     r   Atest_line_number_synthetic_jump_multiple_predecessors_more_nestedOTestSpecifics.test_line_number_synthetic_jump_multiple_predecessors_more_nested  s    	$ 	

O<r   c                 B    S nU R                  UR                  S5        g )Nc                  8    [          H  n [        (       d  M  M     g r   r  ro  r  s    r   r   ITestSpecifics.test_lineno_of_backward_jump_conditional_in_loop.<locals>.f  s    1 r   r0  r1  r;  s     r   0test_lineno_of_backward_jump_conditional_in_loop>TestSpecifics.test_lineno_of_backward_jump_conditional_in_loop	  s    	
 	

O<r   c                     SnSSR                  S [        U5       5       5      -   S-   nU R                  [        [	        U5      5      U5        g )Ni   {,c              3   .   #    U  H  o S U 3v   M     g7f):Nrj   r  s     r   r@  6TestSpecifics.test_big_dict_literal.<locals>.<genexpr>  s     !G6FCq*6FrB  })r   rD  r5   r  r;   )r   	dict_sizethe_dicts      r   test_big_dict_literal#TestSpecifics.test_big_dict_literal  sE     	!GeI6F!GGG#MT(^,i8r   c                 $   S nSnSn[        [        R                  " USS95       Hg  u  pEUR                  S:X  a  U R	                  UR
                  S5        M3  UR                  U;   d  ME  U R	                  UR
                  US-   U-  5        Mi     g )	Nc                  *    Sn  U S:  a  U S-  n Og Sn M  )Nr   r   r   rj   )vals    r   if_else_breakITestSpecifics.test_redundant_jump_in_if_else_break.<locals>.if_else_break   s'    C71HC r   r   )POP_JUMP_IF_FALSEPOP_JUMP_IF_TRUEJUMP_ABSOLUTEJUMP_FORWARDT)show_cachesr[  r   r   )	enumeraterV  r#  rX  r  r   )r   rV  
INSTR_SIZEHANDLED_JUMPSr   instrs         r   $test_redundant_jump_in_if_else_break2TestSpecifics.test_redundant_jump_in_if_else_break  s    	 

 %LLD9
KD ||~-##EIIq1.##EIIq*/DE
r   c                 |    S n[         R                  " U5       H  nU R                  UR                  S5        M!     g )Nc                 D    Xs=:  a  U:  d  O   Xs=:  a  U:  d  M  g   Ng r   rj   rQ   r   r   s      r   while_not_chained@TestSpecifics.test_no_wraparound_jump.<locals>.while_not_chained<  s    yqy yqyyr   EXTENDED_ARG)rV  r#  r  rX  )r   rf  r`  s      r   test_no_wraparound_jump%TestSpecifics.test_no_wraparound_jump9  s1    	 \\"34En= 5r   c                    ^  U 4S jnS nS nS nS nU" USS5        U" USS	5        U" US
S5        U" USS	5        U" USS5        U" USS	5        U" USS5        U" US
S5        U" USS	5        g )Nc                    > Sn[         R                  " U 5       H  nUR                  U:X  d  M  US-  nM     TR                  X25        g Nr   r   )rV  r#  rX  r5   )r  r  r  actualr`  r   s        r   check_op_countBTestSpecifics.test_uses_slice_instructions.<locals>.check_op_countF  s@    Fd+<<2%aKF , V.r   c                  p    [         [        [         [         [        S  -   [         S [         -   [         S S  -   $ r   )r  rQ   r   rj   r   r   load8TestSpecifics.test_uses_slice_instructions.<locals>.loadM  s,    Qq6AqrF?QrU*QqT11r   c                      [         [        [        [        & [         [        [        S & [         [        S [        & [         [        S S & g r   )ro  r  rQ   r   rj   r   r   store9TestSpecifics.test_uses_slice_instructions.<locals>.storeP  s,    AaFAqrFAbqEAaDr   c                  2    [         [        [        [        2   $ r   )r  rQ   r   r   rj   r   r   
long_slice>TestSpecifics.test_uses_slice_instructions.<locals>.long_sliceV  s    QqU8Or   c                  @    [         [        [        === [        -  sss& g r   )r  rQ   r   ro  rj   r   r   aug7TestSpecifics.test_uses_slice_instructions.<locals>.augY  s    aFaKFr   BINARY_SLICEr  BUILD_SLICEr   STORE_SLICEr   rj   )r   ro  rr  ru  rx  r{  s   `     r   test_uses_slice_instructions*TestSpecifics.test_uses_slice_instructionsC  s    	/	2			 	t^Q/t]A.umQ/umQ/z=!4z>15sNA.sM1-sM1-r   c                    S H  u  pSU SU S3nSSSS[        U5      4/-  nSU 3SU S	3S
U S34 H  n[        USS5      n[        R                  " U5       Vs/ s H1  nUR                  R                  U5      (       d  M%  UR                  PM3     nnU R                  U5         U R                  X5        S S S 5        M     M     g s  snf ! , (       d  f       M  = f)N))COMPARE_<)r  z<=)r  >)r  z>=)CONTAINS_OPin)r  znot in)IS_OPis)r  zis notza z b z cr   r   z\
zif \
z: xzx if \
z else yr"   r#   )	r  r   rV  rW  rX  
startswithr%  r\  r5   )	r   opname_prefixr  r[  expected_positionsr   r   instructionactual_positionss	            r   test_compare_positions$TestSpecifics.test_compare_positionsf  s    	"
M t3rd"%D!"q!QD	&:%;!;tfc2ivW4M vx8 (+';';D'A$'A"))44]C *K))'A ! $
 \\&)$$%5J *)	"
 $
 *)s   $C
C
'C
Cc                     / SQnU H(  nU R                  US9   [        USS5        S S S 5        M*     g ! , (       d  f       M<  = f)N)zassert (False if 1 else True)z=def f():
	if not (False if 1 else True): raise AssertionErrorz2def f():
	if not (False if 1 else True): return 12rZ  r   r#   )r\  r   r_  s      r   )test_if_expression_expression_empty_block7TestSpecifics.test_if_expression_expression_empty_block  s>    

 D4(j&1 )( ((s	   4
A	c                 J    [         R                  " S5      n[        USS5        g )Nz
            def foo(param, lambda_exp):
                pass

            foo(param=0,
                lambda_exp=lambda:
                1)
        r"   r#   r   r  s     r   "test_multi_line_lambda_as_argument0TestSpecifics.test_multi_line_lambda_as_argument  s#        	h'r   c                 <    S nU R                  U" SS5      S5        g )Nc                     Xn  U$ r   rj   )r  ro  rQ   s      r   r   0TestSpecifics.test_apply_static_swaps.<locals>.f  s    qAHr   r  ro  r   r;  s     r   test_apply_static_swaps%TestSpecifics.test_apply_static_swaps  s    	 	3c*r   c                 >    S nU R                  U" SSS5      S5        g )Nc                     XUsp4nU$ r   rj   r  ro  rl   rQ   r   s        r   r   2TestSpecifics.test_apply_static_swaps_2.<locals>.f  s    AGA!Hr   r  ro  rl   r   r;  s     r   test_apply_static_swaps_2'TestSpecifics.test_apply_static_swaps_2  "    	 	3S)3/r   c                 >    S nU R                  U" SSS5      S5        g )Nc                     XUpC  U$ r   rj   r  s        r   r   2TestSpecifics.test_apply_static_swaps_3.<locals>.f  s    A!AHr   r  ro  rl   r   r;  s     r   test_apply_static_swaps_3'TestSpecifics.test_apply_static_swaps_3  r  r   c                 8    S nU R                  U" 5       S5        g )Nc                      So S-   nSn X4$ )Nr   6   rj   rQ   r   s     r   r   0TestSpecifics.test_variable_dependent.<locals>.f  s    ABAB4Kr   )r  `   r   r;  s     r   test_variable_dependent%TestSpecifics.test_variable_dependent  s    	 	h'r   c                 
    S ng )Nc                      [         (       a  [        (       a   [        $ g g !    O= f[         (       a  [        (       a  M(  g g r   )element	somethingrj   r   r   r   9TestSpecifics.test_duplicated_small_exit_block.<locals>.f  s4    'ii$$ ('	 'ii's     $rj   r;  s     r    test_duplicated_small_exit_block.TestSpecifics.test_duplicated_small_exit_block  s    	r   c                 
    S ng )Nc                  L    [         (       a   g S  g !    O= f[         (       a  M  Nr  )r  rj   r   r   r   5TestSpecifics.test_cold_block_moved_to_end.<locals>.f  s%    $ 	 $s   rj   r;  s     r   test_cold_block_moved_to_end*TestSpecifics.test_cold_block_moved_to_end  s    	r   c                 
    S ng )Nc                 *    U (       a  S  U (       a  M  g g r  rj   r  s    r   r   MTestSpecifics.test_remove_empty_basic_block_with_jump_target_label.<locals>.f  s     !r   rj   r;  s     r   4test_remove_empty_basic_block_with_jump_target_labelBTestSpecifics.test_remove_empty_basic_block_with_jump_target_label  s    	r   c                 
    S ng )Nc                  L    [         (       a  O[        (       a  [          g [          g r   )r   r   rQ   r~   rj   r   r   r   <TestSpecifics.test_remove_redundant_nop_edge_case.<locals>.f  s    q!aaAar   rj   r;  s     r   #test_remove_redundant_nop_edge_case1TestSpecifics.test_remove_redundant_nop_edge_case  s    	(r   c                 h    [         R                  " S5      nSS00 p2S H  n[        X-  X#5        M     g )Nz            def f():
                try:
                    pass
                %s Exception:
                    global a
                else:
                    print(a)
        rQ   r   )exceptzexcept*)r   r   r#   )r   r   r}   r  kws        r   .test_global_declaration_in_except_used_in_else<TestSpecifics.test_global_declaration_in_except_used_in_else  s8        Qx1'BA! (r   c                    ^ U4S jmg )Nc                  r   >#    S=SL a    O=n   U  Vs0 s S h  vN n[         T_M  / /  g  N
 Os  snf   nN7f)Nr   T)name_3)name_5name_2name_4s     r   r  7TestSpecifics.test_regression_gh_120225.<locals>.name_4  s4     8>??fVV^ D @?s(   7/-+
-
/7-/7rj   )r   r  s    @r   test_regression_gh_120225'TestSpecifics.test_regression_gh_120225  s    	r   c                    [         R                  " SS9 n[         R                  " S5        [        SSS5        [        SSS5        S S S 5        U R	                  [        W5      S5        [         R                  " SS9 n[         R                  " S5        [        SSS5        [        SSS5        S S S 5        U R	                  [        U5      S	5        g ! , (       d  f       N= f! , (       d  f       N;= f)
NTrecorddefaultz1 is 1<stdin>r;   r   alwaysr   )warningscatch_warningssimplefilterr   r5   r  )r   caughts     r   test_compile_warnings#TestSpecifics.test_compile_warnings  s     $$D1V!!),Hi0Hi0 2
 	Va($$D1V!!(+Hi0Hi0 2
 	Va( 21 21s   1C=1C#
C #
C1c                    [         R                  " S5      n[        R                  " SS9 n[        R                  " S5        [        USS5        S S S 5        U R                  [        W5      S5        U R                  US   R                  [        5        U R                  S	[        US   R                  5      5        g ! , (       d  f       Nu= f)
Nz[
            try:
                pass
            finally:
                1 is 1
        Tr  r  r  r#   r   r   z"is" with 'int' literal)r   r   r  r  r  r   r5   r  categoryr^  r   r   message)r   r   r  s      r   test_compile_warning_in_finally-TestSpecifics.test_compile_warning_in_finally  s    
  "  $$D1V!!),FIv. 2 	Va(++];13vay7H7H3IJ 21s   $B>>
Crj   r   )lrd   re   rf   rg   r   r   r%   r)   r-   r7   r<   rA   rE   rI   r   unittestskipIfr   is_wasir   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r9  rE  rS  rW  ra  re  rh  r  r  r  r  r  r  r  cpython_onlyr  r  r  r  r  r  r  r  r)  r3  r<  rB  rI  rN  rY  rc  rm  r}  r  requires_resourcer  r  r  r  r  r  r  r  r  r  r  r   r(  r2  r:  r@  rF  rQ  ra  ri  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  ri   rj   r   r   r   r      s   .D*&Q-JLQJ-%^ __W__&FG' H'2D8'*1B>D& {{))	9 I(-I^>%K*F2P ?;4'$D6C6C2!DFD(	*P > >;"	HII __W__&FG H 2-(= ( (X J J 	. 	. 
) 
) ( (, B B G G G G2 < <.&!PC u%9 &9 7 7<6$E. 4DP WD<"*4X35	<	===*=9F:>  .  .DK2	2
(+00(	(
# 	)$Kr   r   c                   h   \ rS rSrS r S(S jrS rS rS r\	S 5       r
\R                  " \R                  R                  S5      S	 5       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(\)RT                  S" 5       r+S# r,S$ r-S% r.S&r/g'))TestSourcePositionsi  c                 h  ^	^
^^ [        USS5      n[        USS[        R                  5      nU R                  [	        U5      [        R
                  :H  5        [        5       [        5       [        5       [        5       4u  mmm	m
 " U	U
UU4S jS[        R                  5      nU" 5       R                  U5        UR                  5        Hd  u  pVpxUS:X  a  M  Ub  U R                  UT5        Ub  U R                  UT5        Ub  U R                  UT	5        Uc  MR  U R                  UT
5        Mf     X#4$ )Nztest_compile.pyr#   c                   2   >^  \ rS rSrU UUUU4S jrSrU =r$ )LTestSourcePositions.check_positions_against_ast.<locals>.SourceOffsetVisitori  c                 z  > [         TU ]  U5        [        U[        R                  [        R
                  [        R                  45      (       d  g TR                  UR                  5        TR                  UR                  5        TR                  UR                  5        TR                  UR                  5        g r   )supergeneric_visitr  ry  r[  r   patternaddr   r  r  r  )r   r  	__class__columnsend_columns	end_linesr   s     r   r  ZTestSourcePositions.check_positions_against_ast.<locals>.SourceOffsetVisitor.generic_visit   su    %d+!$388S[[(IJJ		$++&doo.DOO, 3 34r   rj   )rd   re   rf   rg   r  ri   __classcell__)r  r  r  r  r   s   @r   SourceOffsetVisitorr    s    5 5r   r  r   )r   r  r  r  r  rz  setry  NodeVisitorvisitco_positionsr   )r   snippetr   ast_treer  r   end_linecolend_colr  r  r  r   s            @@@@r   check_positions_against_ast/TestSourcePositions.check_positions_against_ast  s    w 16:7$5vt?Q?QRX$++56 25suce1K.y';	5 	5#// 	5 	##H- /3.?.?.A*TSqy dE*#h	2c7+"g{3 /B ~r   c                    [        [        R                  " U5      UR                  5       5       Hy  u  pUR                  U:X  d  M  US-  nU(       a  M%  U R                  U	S   U5        U R                  U	S   U5        U R                  U	S   U5        U R                  U	S   U5          g    U R                  SU S35        g )Nr   r   r   r   zOpcode z not found in code)r	   rV  r#  r  rX  r5   ry   )
r   r   r  r   r  column
end_column
occurrencer`  positions
             r   assertOpcodeSourcePositionIs0TestSourcePositions.assertOpcodeSourcePositionIs<  s      ;LL 1 1 3 
OE ||v%a
!z$$Xa[$7$$Xa[(;$$Xa[&9$$Xa[*= 
 			GF8#567r   c                 *    SnU R                  U5        g )Nzx = 1)r  r   r  s     r   test_simple_assignment*TestSourcePositions.test_simple_assignmentM  s    ((1r   c           
          SS-  nUS-  nU R                  U5      u  p#U R                  USSSSSSS	9  U R                  USS
S
SSSS	9  g )Nzx = x
i'  z/while x != 0:
  x -= 1
while x != 0:
  x +=  1
	BINARY_OPi'  r      r   r   r  r  r  r	  i'  	   r  r  r   r  compiled_coder   s       r    test_compiles_to_extended_op_arg4TestSourcePositions.test_compiles_to_extended_op_argQ  sz     f$ " 	  ;;GD))-jq 	* 	2 	))-jq 	* 	2r   c           	      ~    [         R                  " S5      nU R                  U5      u  p#U R                  USSSSSS9  g )NzD            f(
                1, 2, 3, 4
            )
            r  r   r   r   r   r  r  r  r   r   r  r  r  s       r   test_multiline_expression-TestSourcePositions.test_multiline_expressione  sJ    // # 
  ;;GD))-QqQ 	* 	8r   c           
      (   [         R                  " S5      nU R                  U5      u  p#U R                  USSSSSSS9  U R                  USSSSS	SS9  U R                  USSSS
SSS9  U R                  USSSSSSS9  U R                  USSSSSSS9  g )Nz            if (a or
                (b and not c) or
                not (
                    d > 0)):
                x = 42
            rY  r   r  r   r  rX  r            
COMPARE_OPr     r  r  s       r   !test_multiline_boolean_expression5TestSourcePositions.test_multiline_boolean_expressiono  s    // #   ;;GD))-9KQqQ1 	* 	F 	))-9LQqQ1 	* 	F 	))-9LQrbQ 	* 	H 	))-QqRA 	* 	G 	))-9KQqRA 	* 	Gr   z)Assertions are disabled in optimized modec           
          [         R                  " S5      nU R                  U5      u  p#U R                  USSSSSSS9  U R                  USSSS	SS
S9  U R                  USSSSSSS9  U R                  USSSSSSS9  g )Nzz            assert (a > 0 and
                    bb > 0 and
                    ccc == 1000000), "error msg"
            LOAD_ASSERTION_ERRORr   r   r   $   r  
LOAD_CONST   r  r  RAISE_VARARGSr     r  r  s       r   test_multiline_assert)TestSourcePositions.test_multiline_assert  s    // # 
  ;;GD))-9OQqRA 	* 	G 	))-QrbQ 	* 	H))-QqRA 	* 	G))-QqRA 	* 	Gr   c           
      2   [         R                  " S5      nU R                  U5      u  p#UR                  S   nU R	                  U[
        R                  5        U R                  USSSSSSS9  U R                  USSSSSSS9  U R                  US	S
S
SSSS9  g )Nz            ((x,
                2*x)
                for x
                in [1,2,3] if (x > 0
                               and x < 100
                               and x != 50))
            r   YIELD_VALUEr   r   r  r  r0  rU  r        r   r   r  r   r   r  r  r  r  s       r   #test_multiline_generator_expression7TestSourcePositions.test_multiline_generator_expression  s    // #   ;;GD%//2mU^^<))-QqQ1 	* 	F))-QqQ1 	* 	F))-QqRA 	* 	Gr   c           
         [         R                  " S5      nU R                  U5      u  p#UR                  S   nU R	                  U[
        R                  5        U R                  USSSSSSS9  U R                  USSS	SS
SS9  g )Nz            ((x,
                2*x)
                async for x
                in [1,2,3] if (x > 0
                               and x < 100
                               and x != 50))
            r   r2  r   r   r  r  rU  r!      r5  r  s       r   )test_multiline_async_generator_expression=TestSourcePositions.test_multiline_async_generator_expression  s    // #   ;;GD%//2mU^^<))-QqQ1 	* 	F))-QqRA 	* 	Gr   c           
          [         R                  " S5      nU R                  U5      u  p#U R                  U[        R
                  5        U R                  USSSSSSS9  U R                  USSSSSSS9  g )Nz            [(x,
                2*x)
                for x
                in [1,2,3] if (x > 0
                               and x < 100
                               and x != 50)]
            LIST_APPENDr   r   r  r  r0  r   r   r  r   r  r  r  r  s       r   !test_multiline_list_comprehension5TestSourcePositions.test_multiline_list_comprehension  s    // #   ;;GDmU^^<))-QqQ1 	* 	F))-QqQ1 	* 	Fr   c           
      L   [         R                  " S5      nU R                  U5      u  p#0 n[        X$5        US   R                  nU R                  U[        R                  5        U R                  USSSSSSS	9  U R                  US
SSSSSS	9  U R                  USSSSSSS	9  g )Nz            async def f():
                [(x,
                    2*x)
                    async for x
                    in [1,2,3] if (x > 0
                                   and x < 100
                                   and x != 50)]
            r   r=  r   r   r   rR   r   r  r0  rU  r3  r  r*  	r   r   r  r;   r   r   r  r  r  r   r  r  r   r}   s        r   'test_multiline_async_list_comprehension;TestSourcePositions.test_multiline_async_list_comprehension  s    // #   ;;GD]#mU^^<))-QqRA 	* 	G))-QqRA 	* 	G))-QqRA 	* 	Gr   c           
          [         R                  " S5      nU R                  U5      u  p#U R                  U[        R
                  5        U R                  USSSSSSS9  U R                  USSSSSSS9  g )Nz            {(x,
                2*x)
                for x
                in [1,2,3] if (x > 0
                               and x < 100
                               and x != 50)}
            SET_ADDr   r   r  r  r0  r>  r  s       r    test_multiline_set_comprehension4TestSourcePositions.test_multiline_set_comprehension      // #   ;;GDmU^^<))-QqQ1 	* 	F))-QqQ1 	* 	Fr   c           
      L   [         R                  " S5      nU R                  U5      u  p#0 n[        X$5        US   R                  nU R                  U[        R                  5        U R                  USSSSSSS	9  U R                  US
SSSSSS	9  U R                  USSSSSSS	9  g )Nz            async def f():
                {(x,
                    2*x)
                    async for x
                    in [1,2,3] if (x > 0
                                   and x < 100
                                   and x != 50)}
            r   rG  r   r   r   rR   r   r  r0  rU  r3  r  r*  rB  rC  s        r   &test_multiline_async_set_comprehension:TestSourcePositions.test_multiline_async_set_comprehension      // #   ;;GD]#mU^^<))-QqRA 	* 	G))-QqRA 	* 	G))-QqRA 	* 	Gr   c           
          [         R                  " S5      nU R                  U5      u  p#U R                  U[        R
                  5        U R                  USSSSSSS9  U R                  USSSSSSS9  g )Nz            {x:
                2*x
                for x
                in [1,2,3] if (x > 0
                               and x < 100
                               and x != 50)}
            MAP_ADDr   r   r3  r  r0  r>  r  s       r   !test_multiline_dict_comprehension5TestSourcePositions.test_multiline_dict_comprehension  rJ  r   c           
      L   [         R                  " S5      nU R                  U5      u  p#0 n[        X$5        US   R                  nU R                  U[        R                  5        U R                  USSSSSSS	9  U R                  US
SSSSSS	9  U R                  USSSSSSS	9  g )Nz            async def f():
                {x:
                    2*x
                    async for x
                    in [1,2,3] if (x > 0
                                   and x < 100
                                   and x != 50)}
            r   rP  r   r   r      r   r  r0  rU  r3  r  r*  rB  rC  s        r   'test_multiline_async_dict_comprehension;TestSourcePositions.test_multiline_async_dict_comprehension  rN  r   c           
          [         R                  " S5      nU R                  U5      u  p#U R                  USSSSSSS9  U R                  USSSSSSS9  U R                  US	SSSSSS9  U R                  US	SSSSSS9  g )
NzU            match x:
                case a, b:
                    pass
            MATCH_SEQUENCEr   r  r%  r   r  UNPACK_SEQUENCE
STORE_NAMEr  r  s       r   test_matchcase_sequence+TestSourcePositions.test_matchcase_sequence1  s    // # 
  ;;GD))-9IQqRA 	* 	G))-9JQqRA 	* 	G))-QqRA 	* 	G))-QqRA 	* 	Gr   c           
      (   [         R                  " S5      nU R                  U5      u  p#U R                  USSSSSSS9  U R                  USSSSSSS9  U R                  US	SSSSSS9  U R                  US	SSSSSS9  U R                  US	SSSSS
S9  g )NzY            match x:
                case a, *b, c:
                    pass
            rX  r   r     r   r  	UNPACK_EXrZ  r   r  r  s       r    test_matchcase_sequence_wildcard4TestSourcePositions.test_matchcase_sequence_wildcardA  s    // # 
  ;;GD))-9IQqRA 	* 	G))-QqRA 	* 	G))-QqRA 	* 	G))-QqRA 	* 	G))-QqRA 	* 	Gr   c           
          [         R                  " S5      nU R                  U5      u  p#U R                  USSSSSSS9  U R                  USSSSSSS9  U R                  US	SSSSSS9  U R                  US	SSSSSS9  g )
Nzb            match x:
                case {"a" : a, "b": b}:
                    pass
            MATCH_MAPPINGr   r     r   r  
MATCH_KEYSrZ  r  r  s       r   test_matchcase_mapping*TestSourcePositions.test_matchcase_mappingS      // # 
  ;;GD))-QqRA 	* 	G))-QqRA 	* 	G))-QqRA 	* 	G))-QqRA 	* 	Gr   c           
          [         R                  " S5      nU R                  U5      u  p#U R                  USSSSSSS9  U R                  USSSSSSS9  U R                  US	SSSSSS9  U R                  US	SSSSSS9  g )
Nzg            match x:
                case {"a" : a, "b": b, **c}:
                    pass
            rc  r   r     r   r  re  rZ  r  r  s       r   test_matchcase_mapping_wildcard3TestSourcePositions.test_matchcase_mapping_wildcardc  rh  r   c           
          [         R                  " S5      nU R                  U5      u  p#U R                  USSSSSSS9  U R                  USSSSSSS9  U R                  US	SSSSSS9  U R                  US	SSSSSS9  g )
NzX            match x:
                case C(a, b):
                    pass
            MATCH_CLASSr   r  r#  r   r  rY  rZ  r  r  s       r   test_matchcase_class(TestSourcePositions.test_matchcase_classs  s    // # 
  ;;GD))-QqRA 	* 	G))-9JQqRA 	* 	G))-QqRA 	* 	G))-QqRA 	* 	Gr   c           
          [         R                  " S5      nU R                  U5      u  p#U R                  USSSSSSS9  U R                  USSSSS	SS9  g )
Nz\            match x:
                case C(1) | C(2):
                    pass
            rn  r   r  r%  r   r  r#     r  r  s       r   test_matchcase_or%TestSourcePositions.test_matchcase_or  sp    // # 
  ;;GD))-QqRA 	* 	G))-QrbQ 	* 	Hr   c           	      b    SnSU S3nU R                  U5      u  p4U R                  USSSSSS9  g )	N  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazg('z')r  r   r   i  r  r  )r   long_stringr  r  r   s        r   test_very_long_line_end_offset2TestSourcePositions.test_very_long_line_end_offset  sJ     !}B';;GD))-QqT 	* 	;r   c           
          SnU R                  U5      u  p#U R                  USSSSSS9  U R                  USSSSSSS	9  U R                  USSSSS
SS	9  U R                  USSSSSSS	9  U R                  USSSSSSS	9  g )Nza - b @ (c * x['key'] + 23)BINARY_SUBSCRr   r%     r  r  r  r  rd  r   r     r   r   r  r  s       r   #test_complex_single_line_expression7TestSourcePositions.test_complex_single_line_expression  s    /;;GD))-Qrb 	* 	:))-QqRA 	* 	G))-QqRA 	* 	G))-QqRA 	* 	G))-QqRA 	* 	Gr   c                    [         R                  " S5      nUR                  S   n[         R                  " [         R                  " [         R
                  " [         R                  " S[         R                  " 5       5      S[         R                  " 5       5      / / 5      5      n[         R                  " X25        [         R                  " U5        X1R                  S'   [        USS5        g )Nzassert (
42
)r   r   eggsr"   r#   )ry  r  rv  r{  Call	Attributer  r  copy_locationr  r   )r   r  old_nodenew_nodes       r   .test_multiline_assert_rewritten_as_method_callBTestSourcePositions.test_multiline_assert_rewritten_as_method_call  s     yy*+99Q<88HHHHVSXXZ0HHJ
 

 	(-!!(+		!h'r   c                    SnS H  nU R                  U5         0 n[        R                  " UR                  U5      5      n[        R
                  " 5          [        R                  " S[        5        [        XC5        S S S 5        US   R                  nU R                  USSSSSS	9  S S S 5        M     g ! , (       d  f       N>= f! , (       d  f       M  = f)
Nz
        import abc, dis
        import ast as art

        abc = None
        dix = dis
        ast = art

        def f():
        {}
        )
z    abc.a()z    art.a()z    ast.a()z    dis.a()z    dix.a()z    abc[...]()z    art()()z   (ast or ...)()z
   [dis]()z   (dix + ...)()ignorer   LOAD_GLOBALr   r  r3  r  )r\  r   r   r  r  r  r  r^  r#   r   r  )r   source_templaterv  r  r   r   s         r   $test_push_null_load_global_positions8TestSourcePositions.test_push_null_load_global_positions  s    

D d#	!)?)?)EF,,.))(MB+ / !~..11!  2  $#
 /. $#s#   =C'B5=+C5
C?C
C	c           	      r    Sn[        USS5      nU R                  USSSSSS9  U R                  US	SSSSS9  g )
Nz/(
 lhs  
   .    
     rhs      
       ) += 42r"   r#   r  r  r   r  r  
STORE_ATTRr   r  r   r   r   s      r   test_attribute_augassign,TestSourcePositions.test_attribute_augassign  sW    Fvx0))+A! 	* 	
 	)),Q1 	* 	
r   c           	      J    Sn[        USS5      nU R                  USSSSSS9  g )	Nz-del (
 lhs  
   .    
     rhs      
       )r"   r#   DELETE_ATTRr  r   r  r  r  r  s      r   test_attribute_del&TestSourcePositions.test_attribute_del  s5    Dvx0))-a!A! 	* 	
r   c           	      J    Sn[        USS5      nU R                  USSSSSS9  g )	Nz)(
 lhs  
   .    
     rhs      
       )r"   r#   r  r  r   r  r  r  r  s      r   test_attribute_load'TestSourcePositions.test_attribute_load  s5    @vx0))+A! 	* 	
r   c           	      J    Sn[        USS5      nU R                  USSSSSS9  g )	Nz.(
 lhs  
   .    
     rhs      
       ) = 42r"   r#   r  r  r   r  r  r  r  s      r   test_attribute_store(TestSourcePositions.test_attribute_store  s5    Evx0)),Q1 	* 	
r   c           	      r    Sn[        USS5      nU R                  USSSSSS9  U R                  US	SSSS
S9  g )Nz+(
 lhs  
   .    
     rhs      
       )()r"   r#   r  r  r   r  r  r  r   r  r  s      r   test_method_call$TestSourcePositions.test_method_call  sW    Bvx0))+A! 	* 	
 	))&q1Q2 	* 	
r   c                    S nUR                   R                  5        H^  u  p#pEU R                  U5        U R                  U5        U R                  U5        U R                  U5        U R                  X$4X545        M`     g )Nc                      [         R                    [         R                  5         [        5       R                  S5      R                  S5        g r  )barbazfiles
setdefaultrj   r   r   r   HTestSourcePositions.test_weird_attribute_position_regressions.<locals>.f  s7     	
Gjr   )r   r  r$  r  )r   r   r   r  r  r  s         r   )test_weird_attribute_position_regressions=TestSourcePositions.test_weird_attribute_position_regressions  ss    
	 34**2I2I2K.DF  &  *  (  ,  $(1GH 3Lr   c           	         S GH5  nU R                  U5         [        U SU 3SS5      nU R                  [        UR                  5      S5        U R                  UR                  S   [        R                  5        U R                  UR                  S   [        R                  5        U R                  UR                  S   UR                  S   5        U R                  [        UR                  S   R                  5       5      [        UR                  S   R                  5       5      5        S S S 5        GM8     g ! , (       d  f       GMK  = f)N)z	lambda: az(a for b in c)r<  r"   r;   r   r   r   )r\  r   r5   r  r   r   r  r  r  ra   r  r  s      r    test_column_offset_deduplication4TestSourcePositions.test_column_offset_deduplication!  s    
F f%&F84hG  T^^!4a8%%dnnQ&7H%%dnnQ&7H##DNN1$5t~~a7HI##*779:*779: &%	
 &%s   DD>>
E	c           	          Sn[        USS5      R                  S   R                   H&  n[        U[        R                  5      (       d  M$  Un  O   U R                  WSSSSSS	9  g )
Nz5class C:
  def __init__(self):
    super().__init__()r"   r#   r   r  r   r  r  r  )r   r   r  r  r  r  )r   r   r  r   s       r   test_load_super_attr(TestSourcePositions.test_load_super_attr3  sg    JVXv6@@CMME%00 N 	))-a!A! 	* 	
r   c           	         / SQnU GH  nU R                  US9   [        U5      S   nUR                  R                  5       n[	        U5       H  u  pVU R                  XVS9   Uu  pxpUS:X  a  Xs=:X  a  S:X  a  O  O S S S 5        M:  U R                  US5        U R                  US5        UR                  S5      S-   n[        U5      nU R                  X5        U R                  X5        U R                  X5        U R                  X5        S S S 5        M     S S S 5        GM     g ! , (       d  f       M  = f! , (       d  f       GMD  = f)	N)zf = lambda: xzf = lambda: 42zf = lambda: 1 + 2zf = lambda: a + b)r  r   )r   posr   r   rL  r   )
r\  r   r   r  r]  r5   findr  assertGreaterEqualr  )r   snippetsr  lambr%  r   r  
start_liner  	start_colr  
code_startcode_ends                r   test_lambda_return_position/TestSourcePositions.test_lambda_return_position=  s!   
  Gg.(- MM668	'	2FA3CF@
i6i&?a&?$	 43
 ((Q7((15%,\\#%6%:
#&w<//	F,,W?//C,,W? 43 3	 /.   43 /.s1   AD;"D)	>
D;BD)	D;)
D83D;;
E	c                     S n[         R                  " U5       H$  nUR                  u  p4  nU R                  X45        M&     [         R                  " U5       Vs/ s H&  nUR                  S:X  d  M  UR
                  b  M$  UPM(     nn[         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5        Xg-    H  nUR                  u  p4pU R                  X1R                  R                  S-   5        U R                  XAR                  R                  S-   5        U R                  US5        U R                  U	S5        M     g s  snf s  snf )Nc                  X    [                [        sS S S 5        $ ! , (       d  f       g = fr   )r`   Rrj   r   r   r   <TestSourcePositions.test_return_in_with_positions.<locals>.fZ  s     s   

)r+  r  r   r   r^  rr  )	rV  rW  r%  r5   rX  r  r  r   r   )
r   r   r`  r  r  r   	load_nonereturn_valuer  r  s
             r   test_return_in_with_positions1TestSourcePositions.test_return_in_with_positionsX  s_   	 ))!,E).&J!QZ2 - ),(<(<Q(? L(?u\\\1 6;ll (?	 L+.+?+?+B 8+B%6 +B 8 	Y+\*A.-E7<4J)Z)B)BQ)FGXzz'@'@1'DEY+Wb) .L8s   F2FF!F9Frj   Nr  )0rd   re   rf   rg   r  r  r  r  r  r   r&  r  r  r   flagsr_  r/  r6  r:  r?  rD  rH  rL  rQ  rU  r[  r`  rf  rk  ro  rs  rx  r~  r  r  r  r  r  r  r  r  r   r  r  r  r  r  ri   rj   r   r   r  r    s   
$N <=8"22(8 G G2 __SYY'')TUG VG"G&G"F G,F G,F G,G G$G G G 
H;G(*&P




I&  "
@6*r   r  c                   ,    \ rS rSrS rS rS rS rSrg)TestStaticAttributesiz  c                      " S S5      nU R                  UR                  [        5        U R                  [	        UR                  5      SS/5        g )Nc                       \ rS rSrS rSrg)*TestStaticAttributes.test_basic.<locals>.Ci}  c                 ^    S=U l         U l        U R                  5         U R                  S     g )Nr   r   )rQ   r   r   arrr$   s    r   r   ,TestStaticAttributes.test_basic.<locals>.C.f~  s$    "$$r   r  NrQ  rj   r   r   Cr  }  s    r   r  rQ   r   )r   ri   rG  r5   sortedr   r  s     r   
test_basicTestStaticAttributes.test_basic|  sC    	 	 	a55u= 7 783*Er   c                 f     " S S5      nU R                  [        UR                  5      / SQ5        g )Nc                        \ rS rSrS rS rSrg)4TestStaticAttributes.test_nested_function.<locals>.Ci  c                 .    SU l         SU l        SU l         g )Nr   r   r   rD  r$   s    r   r   6TestStaticAttributes.test_nested_function.<locals>.C.f  s    r   c                 4    SU l         SU l        S nSUl        g )Nr  r   c                      SU l         SU l        g )Nr!  r3  )ur  )r   rQ   s     r   r   ATestStaticAttributes.test_nested_function.<locals>.C.g.<locals>.h  s    DFDFr   r  )ro  rl   r   )r   r  r   s      r   r}   6TestStaticAttributes.test_nested_function.<locals>.C.g  s     r   r  r  r  ro  rl   N)rd   re   rf   rg   r   r}   ri   rj   r   r   r  r    s    
r   r  r  r5   r  ri   r  s     r   test_nested_function)TestStaticAttributes.test_nested_function  s*    	 	  	 7 78:STr   c                      " S S5      nU R                  [        UR                  5      SS/5        U R                  [        UR                  R                  5      SS/5        g )Nc                   .    \ rS rSrS r " S S5      rSrg)1TestStaticAttributes.test_nested_class.<locals>.Ci  c                      SU l         SU l        g Nr   rD  r$   s    r   r   3TestStaticAttributes.test_nested_class.<locals>.C.f      r   c                       \ rS rSrS rSrg)3TestStaticAttributes.test_nested_class.<locals>.C.Di  c                      SU l         SU l        g r  r-  r$   s    r   r}   5TestStaticAttributes.test_nested_class.<locals>.C.D.g  s    DFDFr   r-  Nrd   re   rf   rg   r}   ri   rj   r   r   rw   r    s     r   rw   rD  N)rd   re   rf   rg   r   rw   ri   rj   r   r   r  r    s       r   r  r  ro  rl   )r5   r  ri   rw   r  s     r   test_nested_class&TestStaticAttributes.test_nested_class  sP    	  	  	 7 783*E 9 9:S#JGr   c                      " S S5      n " S SU5      nU R                  [        UR                  5      SS/5        U R                  [        UR                  5      SS/5        g )Nc                       \ rS rSrS rSrg)-TestStaticAttributes.test_subclass.<locals>.Ci  c                      SU l         SU l        g r  rD  r$   s    r   r   /TestStaticAttributes.test_subclass.<locals>.C.f  r  r   rD  NrQ  rj   r   r   r  r        r   r  c                       \ rS rSrS rSrg)-TestStaticAttributes.test_subclass.<locals>.Di  c                      SU l         SU l        g r  r-  r$   s    r   r}   /TestStaticAttributes.test_subclass.<locals>.D.g  r  r   r-  Nr  rj   r   r   rw   r    r  r   rw   r  ro  rl   r  )r   r  rw   s      r   test_subclass"TestStaticAttributes.test_subclass  sX    	 	
	 	
 	 7 783*E 7 783*Er   rj   N)	rd   re   rf   rg   r  r  r  r  ri   rj   r   r   r  r  z  s    	FU&HFr   r  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g)TestExpressionStackSizei  r  c                     [        U[        5      (       a  [        USS5      n[        R                  " [        R
                  " [        UR                  5      5      5      nU R                  UR                  U5        g )N<foo>r   )
r  r   r   mathceillogr  r  r  co_stacksize)r   r   max_sizes      r   check_stack_size(TestExpressionStackSize.check_stack_size  sU     dC  4(3D99TXXc$,,&789T..9r   c                 F    U R                  SU R                  -  S-   5        g )Nzx and r  r  rH  r$   s    r   test_and TestExpressionStackSize.test_and  s    h/#56r   c                 F    U R                  SU R                  -  S-   5        g )Nzx or r  r  r$   s    r   test_orTestExpressionStackSize.test_or  s    g.45r   c                 F    U R                  SU R                  -  S-   5        g )Nzx and x or r  r  r$   s    r   test_and_or#TestExpressionStackSize.test_and_or  s    mdff4s:;r   c                 F    U R                  SU R                  -  S-   5        g )Nzx < r  r  r$   s    r   test_chained_comparison/TestExpressionStackSize.test_chained_comparison      ftvvo34r   c                 F    U R                  SU R                  -  S-   5        g )Nzx if x else r  r  r$   s    r   test_if_else$TestExpressionStackSize.test_if_else  s    ntvv5;<r   c                 F    U R                  SU R                  -  S-   5        g )Nzx + r  r  r$   s    r   
test_binop"TestExpressionStackSize.test_binop  r  r   c                 L    U R                  SSU R                  -  -   S-   5        g )N[x, zx]r  r$   s    r   	test_list!TestExpressionStackSize.test_list  "    cEDFFN2T9:r   c                 L    U R                  SSU R                  -  -   S-   5        g )N(r  zx)r  r$   s    r   
test_tuple"TestExpressionStackSize.test_tuple  r  r   c                 L    U R                  SSU R                  -  -   S-   5        g )NrI  r  zx}r  r$   s    r   test_set TestExpressionStackSize.test_set  r  r   c                 L    U R                  SSU R                  -  -   S-   5        g )NrI  zx:x, zx:x}r  r$   s    r   	test_dict!TestExpressionStackSize.test_dict  s#    cGdff$44v=>r   c                 L    U R                  SSU R                  -  -   S-   5        g )Nf(r  )r  r$   s    r   test_func_args&TestExpressionStackSize.test_func_args  s"    dUTVV^3c9:r   c                     S [        U R                  5       5       nU R                  SSR                  U5      -   S-   5        g )Nc              3   .   #    U  H  nS U S3v   M     g7frQ   z=xNrj   r>  s     r   r@  ;TestExpressionStackSize.test_func_kwargs.<locals>.<genexpr>       3]AaS)]rB  r+  r<  r,  rD  rH  r  r   r   kwargss     r   test_func_kwargs(TestExpressionStackSize.test_func_kwargs  s5    3U466]3ddii&77#=>r   c                 L    U R                  SSU R                  -  -   S-   5        g )No.m(r  r,  r  r$   s    r   test_meth_args&TestExpressionStackSize.test_meth_args  s"    futvv~5;<r   c                     S [        U R                  5       5       nU R                  SSR                  U5      -   S-   5        g )Nc              3   .   #    U  H  nS U S3v   M     g7fr1  rj   r>  s     r   r@  ;TestExpressionStackSize.test_meth_kwargs.<locals>.<genexpr>  r3  rB  r:  r<  r,  r4  r5  s     r   test_meth_kwargs(TestExpressionStackSize.test_meth_kwargs  s5    3U466]3f		&(99C?@r   c                 N    SnUSU R                   -  -  nU R                  U5        g )Nz
def f(x):
z   x and x
)rH  r  r  s     r   test_func_and%TestExpressionStackSize.test_func_and  s(    ''d#r   c                 2    SnSU-  S-   n[        USS5        g )N  zx,z=tr  r   r   )r   rk   r   s      r   test_stack_3050'TestExpressionStackSize.test_stack_3050  s     ax$gx(r   c                 p    SnSR                  S [        U5       5       5      nSU S3n[        USS5        g )NrF  r<  c              3   2   #    U  H  nS U SU 3v   M     g7f)r   z:typeNrj   r>  s     r   r@  <TestExpressionStackSize.test_stack_3050_2.<locals>.<genexpr>  s     =Hq3qcqc*Hs   zdef f(z	):
  passr  r   rC  )r   rk   argsr   s       r   test_stack_3050_2)TestExpressionStackSize.test_stack_3050_2  s9    yy=E!H==vZ(gx(r   rj   N)rd   re   rf   rg   rH  r  r  r  r  r  r  r  r  r"  r%  r(  r-  r7  r;  r@  rC  rG  rM  ri   rj   r   r   r  r    sd     	A:76<5=5;;;?;?=A$
))r   r  c                       \ 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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)!TestStackSizeStabilityi	  c           	      ^  ^^ UU4S jn[        SS5       Vs/ s H  oC" U5      R                  PM     nn[        [        U5      5      S:w  a\  SS KnSS KnUR                  " 5       nUR                  " U" S5      US9  U R                  SU< ST< SUR                  5       < 35        g g s  snf )	Nc                    > 0 nSU T-  -   nT(       a  SU-   n[        USS5      n[        X1U5        US   R                  $ )Nzdef func():
zasync z<script>r#   r  )r   r#   r   )r   r  scriptr   async_r  s       r   compile_snippet@TestStackSizeStability.check_stack_size.<locals>.compile_snippet		  sK    B(1w;6F!F*6:v6D2f:&&&r   r   r   r   r   )filez4stack sizes diverge with # of consecutive snippets: r   )	rD  r  r  r  rV  rg  rh  ry   rk  )	r   r  rT  rU  r   sizesrV  rg  outs	    ``      r   r  'TestStackSizeStability.check_stack_size	  s    	' ;@1+F+Q#00+Fs5z?a++-CGGOA&S1II&+WcllnF G	   Gs   B*c                 *    SnU R                  U5        g )Nz1
            if x:
                a
            r  r  s     r   test_ifTestStackSizeStability.test_if	       	g&r   c                 *    SnU R                  U5        g )Nz{
            if x:
                a
            elif y:
                b
            else:
                c
            r\  r  s     r   r  #TestStackSizeStability.test_if_else!	       	g&r   c                 *    SnU R                  U5        g )NzV
            try:
                a
            except:
                b
            r\  r  s     r   test_try_except_bare+TestStackSizeStability.test_try_except_bare,	       	g&r   c                 *    SnU R                  U5        g )Nz
            try:
                a
            except ImportError:
                b
            except:
                c
            else:
                d
            r\  r  s     r   test_try_except_qualified0TestStackSizeStability.test_try_except_qualified5	      	 	g&r   c                 *    SnU R                  U5        g )Nz
            try:
                a
            except ImportError as e:
                b
            except:
                c
            else:
                d
            r\  r  s     r   test_try_except_as)TestStackSizeStability.test_try_except_asB	  rj  r   c                 *    SnU R                  U5        g )Nz
            try:
                a
            except* ImportError:
                b
            else:
                c
            r\  r  s     r   test_try_except_star_qualified5TestStackSizeStability.test_try_except_star_qualifiedO	  rb  r   c                 *    SnU R                  U5        g )Nz
            try:
                a
            except* ImportError as e:
                b
            else:
                c
            r\  r  s     r   test_try_except_star_as.TestStackSizeStability.test_try_except_star_asZ	  rb  r   c                 *    SnU R                  U5        g )Nz
                try:
                    a
                except* A:
                    b
                finally:
                    c
            r\  r  s     r   test_try_except_star_finally3TestStackSizeStability.test_try_except_star_finallye	  rb  r   c                 *    SnU R                  U5        g )Nzg
                try:
                    a
                finally:
                    b
            r\  r  s     r   test_try_finally'TestStackSizeStability.test_try_finallyp	  rf  r   c                 *    SnU R                  U5        g )Nz8
            with x as y:
                a
            r\  r  s     r   	test_with TestStackSizeStability.test_withy	  r_  r   c                 *    SnU R                  U5        g )NzX
            while x:
                a
            else:
                b
            r\  r  s     r   test_while_else&TestStackSizeStability.test_while_else	  rf  r   c                 *    SnU R                  U5        g )Nz7
            for x in y:
                a
            r\  r  s     r   test_forTestStackSizeStability.test_for	  r_  r   c                 *    SnU R                  U5        g )Nz[
            for x in y:
                a
            else:
                b
            r\  r  s     r   test_for_else$TestStackSizeStability.test_for_else	  rf  r   c                 *    SnU R                  U5        g )Nz
            for x in y:
                if z:
                    break
                elif u:
                    continue
                else:
                    a
            else:
                b
            r\  r  s     r   test_for_break_continue.TestStackSizeStability.test_for_break_continue	  s    
 	g&r   c                 *    SnU R                  U5        g )Na6  
            for x in y:
                try:
                    if z:
                        break
                    elif u:
                        continue
                    else:
                        a
                finally:
                    f
            else:
                b
            r\  r  s     r   0test_for_break_continue_inside_try_finally_blockGTestStackSizeStability.test_for_break_continue_inside_try_finally_block	       	g&r   c                 *    SnU R                  U5        g )Na6  
            for x in y:
                try:
                    t
                finally:
                    if z:
                        break
                    elif u:
                        continue
                    else:
                        a
            else:
                b
            r\  r  s     r   ,test_for_break_continue_inside_finally_blockCTestStackSizeStability.test_for_break_continue_inside_finally_block	  r  r   c                 *    SnU R                  U5        g )Na5  
            for x in y:
                try:
                    t
                except:
                    if z:
                        break
                    elif u:
                        continue
                    else:
                        a
            else:
                b
            r\  r  s     r   +test_for_break_continue_inside_except_blockBTestStackSizeStability.test_for_break_continue_inside_except_block	  r  r   c                 *    SnU R                  U5        g )Na
  
            for x in y:
                with c:
                    if z:
                        break
                    elif u:
                        continue
                    else:
                        a
            else:
                b
            r\  r  s     r   )test_for_break_continue_inside_with_block@TestStackSizeStability.test_for_break_continue_inside_with_block	  s     	g&r   c                 *    SnU R                  U5        g )Nz
            try:
                if z:
                    return
                else:
                    a
            finally:
                f
            r\  r  s     r   $test_return_inside_try_finally_block;TestStackSizeStability.test_return_inside_try_finally_block	       	g&r   c                 *    SnU R                  U5        g )Nz
            try:
                t
            finally:
                if z:
                    return
                else:
                    a
            r\  r  s     r    test_return_inside_finally_block7TestStackSizeStability.test_return_inside_finally_block	  r  r   c                 *    SnU R                  U5        g )Nz
            try:
                t
            except:
                if z:
                    return
                else:
                    a
            r\  r  s     r   test_return_inside_except_block6TestStackSizeStability.test_return_inside_except_block
  r  r   c                 *    SnU R                  U5        g )Nz~
            with c:
                if z:
                    return
                else:
                    a
            r\  r  s     r   test_return_inside_with_block4TestStackSizeStability.test_return_inside_with_block
  s     	g&r   c                 (    SnU R                  USS9  g )Nz>
            async with x as y:
                a
            TrT  r\  r  s     r   test_async_with&TestStackSizeStability.test_async_with
       	gd3r   c                 (    SnU R                  USS9  g )Nz=
            async for x in y:
                a
            Tr  r\  r  s     r   test_async_for%TestStackSizeStability.test_async_for
  r  r   c                 (    SnU R                  USS9  g )Nza
            async for x in y:
                a
            else:
                b
            Tr  r\  r  s     r   test_async_for_else*TestStackSizeStability.test_async_for_else%
  s     	gd3r   c                 (    SnU R                  USS9  g )Na  
            for x in y:
                async with c:
                    if z:
                        break
                    elif u:
                        continue
                    else:
                        a
            else:
                b
            Tr  r\  r  s     r   /test_for_break_continue_inside_async_with_blockFTestStackSizeStability.test_for_break_continue_inside_async_with_block.
  s     	gd3r   c                 (    SnU R                  USS9  g )Nz
            async with c:
                if z:
                    return
                else:
                    a
            Tr  r\  r  s     r   #test_return_inside_async_with_block:TestStackSizeStability.test_return_inside_async_with_block=
  s     	gd3r   rj   N)F)!rd   re   rf   rg   r  r]  r  rd  rh  rl  ro  rr  ru  rx  r{  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  ri   rj   r   r   rP  rP  	  s    G$'	''''	'	'	''''''''"'"'"'
'
'
''44444r   rP  c                   ,    \ rS rSrS rS rS rS rSrg)TestInstructionSequenceiG
  c           	          U R                  UR                  5        Vs/ s H   n[        R                  US      4USS  -   PM"     snU5        g s  snf rm  )r5   rW  r  rX  )r   seqr  r   s       r   compare_instructions,TestInstructionSequence.compare_instructionsH
  sM    #BVBVBXYBXQ6==1.01QR58BXY!	#Ys   'Ac                    [         R                  " 5       nSS jnU" USSS5        U" USUR                  5       =nS5        U" USSS5        U" USUR                  5       =nS5        UR                  U5        U" USSS5        UR                  U5        U" US	SS5        / S
QnU R	                  X Vs/ s H  ofS-   PM	     sn5        g s  snf )Nr   c                 N    U R                  [        R                  U   X#XEU5        g r   )addopr  opmap)r  rX  opargblbcelecs          r   add_op3TestInstructionSequence.test_basics.<locals>.add_opO
  s    IIfll6*ErrBr   r+  r   JUMPr   r   r  r  ))r+  r   r   )r  r  r   )r+  r   r   )r  r   r  )r+  r   r  )r  Nr   )r   r   r   )_testinternalcapinew_instruction_sequence	new_label	use_labelr  )r   r  r  lbl1lbl2r  exs          r   test_basics#TestInstructionSequence.test_basicsL
  s    88:	C 	sL!Q'sFCMMO3DQ7sL!Q'sFCMMO3DQ7dsL!Q'dsNAq) 	!!#x'HxWx'HI'Hs   2C
c                    [         R                  " 5       nUR                  [        R                  S   SSSSS5        [         R                  " 5       nUR                  [        R                  S   SSSSS5        U R                  US/5        U R                  US/5        UR                  U5        U R                  US/5        U R                  UR                  5       S   S/5        g )Nr+  r   r   r   )r+  r   r   r   r   r   )r+  r   r   r   r   r   )r  r  r  r  r  r  
add_nested
get_nested)r   r  nesteds      r   test_nested#TestInstructionSequence.test_nestede
  s    88:		&,,|,aAq!<";;=V\\,/Aq!Q?!!#(E'FG!!&+H*IJv!!#(E'FG!!#.."21"58U7VWr   c                    SnSn[         R                  " U5       He  n[        U5       VVs0 s H  u  pESUS-    3U_M     nnn[        UR                  " S0 UD65      nUS   nU R                  UR                  U5        Mg     g s  snnf )Nzyclass T:
    def __init__(self):
        self.{V1} = 10
        self.{V2} = 10
    def foo(self):
        self.{V3} = 10
re  Vr   Trj   )	itertoolspermutationsr]  r   r  r5   ri   )	r   r   
attributespermr   r  	var_namesr  rE  s	            r   !test_static_attributes_are_sorted9TestInstructionSequence.test_static_attributes_are_sortedr
  s    ' 	 %
**:6D:CD/J/wq1QUGd*/IJ$++2	23B3AQ44jA	 7Js   Brj   N)	rd   re   rf   rg   r  r  r  r  ri   rj   r   r   r  r  G
  s    #J2XBr   r  __main__)%ri  rV  rg  r  r  r  r  r  r   ry  r  r  r  r   r  r  r  r   test.supportr   r   r   r   r   test.support.bytecode_helperr	   test.support.os_helperr
   TestCaser   r  r  r  rP  r  rd   mainrj   r   r   <module>r     s     
 	    	  
 
       J J D +wKH%% wKr/ e	*(++ e	* e	*P:F8,, :FzJ)h// J)ZA4X.. A4F
9Bh// 9Bx zMMO r   