
    ;e^                     d   d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
mZ d dlmZmZ d dlmZ  G d dej                  Z e             G d dej                              Z G d	 d
ej                  Z G d dej                  Zedk    r ej                     dS dS )    N)support)script_helperrequires_debug_ranges)FakePathc                   `   e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zej        dk    rd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d  Z#d! Z$e%j&        d"             Z'd# Z(d$ Z)d% Z*d& Z+e%j&        d'             Z,d( Z-d) Z.e%j&        d*             Z/e%j&        d+             Z0e%j&        d,             Z1e%j&        d-             Z2d. Z3d/ Z4d0 Z5e%j&        d1             Z6d2 Z7d3 Z8d4 Z9d5 Z:d6 Z;d7 Z<d8 Z=d9 Z>d: Z?d; Z@d< ZAd= ZBd> ZCd? ZDd@ ZEdA ZFdB ZGdCS )DTestSpecificsc                 (    t          |dd           d S )Nz<single>singlecompileselfsources     (/usr/lib/python3.11/test/test_compile.pycompile_singlezTestSpecifics.compile_single   s    
H-----    c                 H    |                      t          | j        |           d S N)assertRaisesSyntaxErrorr   r   s     r   assertInvalidSinglez!TestSpecifics.assertInvalidSingle   s#    +t':FCCCCCr   c                 J    t          ddd           t          ddd           d S )Nhi<test>execzhir   r   s    r   test_no_ending_newlinez$TestSpecifics.test_no_ending_newline   s,    h'''&)))))r   c                 (    t          ddd           d S )N r   r   r   r   s    r   
test_emptyzTestSpecifics.test_empty   s    Hf%%%%%r   c                     t          ddd           t          ddd           t          ddd           t          ddd           d S )Nz
r   r   zhi
stuff
def f():
    passz(this_isreally_old_macdef f():
    passr   r   s    r   test_other_newlinesz!TestSpecifics.test_other_newlines   sR    &)))h'''5xHHH=xPPPPPr   c                     |                      t          t          ddd           dd l}|j        }t          |dd           |                     d|           t          |d|           d S )Nz__debug__ = 1?r
   r   	__debug__sureF)r   r   r   builtinsr&   setattrassertEqual)r   r(   prevs      r   test_debug_assignmentz#TestSpecifics.test_debug_assignment%   so    +whOOO!+v...D)))+t,,,,,r   c                    |                      t          t          d           |                      t          t          d           |                      t          t          d           |                      t          t          d           |                      t          t          d           |                      t          t          d           d S )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_handlingz$TestSpecifics.test_argument_handling.   s    +t^<<<+t-=>>>+t-?@@@+t-@AAA+t-HIII+t-HIIIIIr   c                 L    |                      t          t          ddd           d S )Nz1+*3filenamer   r   r   r   r   s    r   test_syntax_errorzTestSpecifics.test_syntax_error7   s$    +w
FKKKKKr   c                 L    |                      t          t          ddd           d S )Nz	f(None=1)<string>r   r3   r   s    r   test_none_keyword_argz#TestSpecifics.test_none_keyword_arg:   s$    +wZPPPPPr   c                 H    |                      t          t          d           d S )Nr.   r   r   r   r   s    r   test_duplicate_global_localz)TestSpecifics.test_duplicate_global_local=   s!    +t-HIIIIIr   c                     G d d          } |            }t                      }t          d||           |                     |j        d           	 t          d||           |                     d           n# t
          $ r Y nw xY wt          d||           |                     |j        dt          d	          f           t          d
||           |                     |j        d|f           t          d||           |                     |j        d|f           |                     t          t          d|            G d d          } |            }|                     t          t          d||            G d dt                    } |            }t          d||           |                     |d         d           d S )Nc                   "    e Zd Z	 d Zd Zd ZdS )BTestSpecifics.test_exec_with_general_mapping_for_locals.<locals>.Mc                      |dk    rdS t           Na   )KeyErrorr   keys     r   __getitem__zNTestSpecifics.test_exec_with_general_mapping_for_locals.<locals>.M.__getitem__D   s    #::2r   c                     ||f| _         d S r   )resultsr   rD   values      r   __setitem__zNTestSpecifics.test_exec_with_general_mapping_for_locals.<locals>.M.__setitem__H   s     #U|r   c                      t          d          S )Nxyz)listr   s    r   keyszGTestSpecifics.test_exec_with_general_mapping_for_locals.<locals>.M.keysJ   s    E{{"r   N)__name__
__module____qualname__rE   rJ   rN    r   r   Mr=   B   sD        G  , , ,# # # # #r   rS   zz = a)zrA   zz = bzDid not detect a KeyErrorz	z = dir()rT   rL   zz = globals()zz = locals()c                       e Zd Z	 dS )BTestSpecifics.test_exec_with_general_mapping_for_locals.<locals>.AN)rO   rP   rQ   rR   r   r   ArV   _   s        Dr   rW   c                       e Zd Zd ZdS )BTestSpecifics.test_exec_with_general_mapping_for_locals.<locals>.Dc                 H    |dk    rdS t                               | |          S r?   )dictrE   rC   s     r   rE   zNTestSpecifics.test_exec_with_general_mapping_for_locals.<locals>.D.__getitem__g   s&    #::2''c222r   N)rO   rP   rQ   rE   rR   r   r   DrY   f   s#        3 3 3 3 3r   r\   rA   )
globalsr   r*   rG   fail	NameErrorrM   r   	TypeErrorr[   )r   rS   mgrW   r\   ds          r   )test_exec_with_general_mapping_for_localsz7TestSpecifics.test_exec_with_general_mapping_for_locals@   s"   		# 		# 		# 		# 		# 		# 		# 		# ACCIIWaI...	3!Q II12222  	 	 	D	 	[!QS$u++$6777_a###S!H---^Q"""S!H---)T7A666	 	 	 	 	 	 	 	 ACC)T7Aq999	3 	3 	3 	3 	3 	3 	3 	3
 ACCWa3$$$$$s   A: :
BBc                     t          t          j                    dz            }dd|z  z   }i }d|fdz  z  }t          ||           |                      |d         d          d           d S )	Ng      @z	x = x or z-xz
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   )intsysgetrecursionlimitr   r*   )r   repeatlongexprrb   codes        r   test_extended_argzTestSpecifics.test_extended_argo   s~    S*,,s233." 	{2~#$ 	T13A&&&&&r   c                 H    |                      t          t          d           d S )Nzdef f(a=1, b): passr9   r   s    r   test_argument_orderz!TestSpecifics.test_argument_order   s!    +t-BCCCCCr   c                    |                      t          t          d           |                      t          t          d           |                      t          t          d           |                      t          t          d           d S )N2ez2.0e+z1e-z3-4e/21)r   r   r/   r   s    r   test_float_literalsz!TestSpecifics.test_float_literals   sh    +tT222+tW555+tU333+tY77777r   c                 ,    d}t          |dd           d S )Nz
if 1:
    if 2:
        passr6   r   r   r   ss     r   test_indentationzTestSpecifics.test_indentation   s#     	:v&&&&&r   c                 b   d                     dgdz  dgz             }t          |dd          }|                     |j        d           t	          |                                          }|                     |d         d	         d           |                     |d         d	         d
           d S )Nr   
   spamfnr      r      i  )joinr   r*   co_firstlinenorM   co_lines)r   s256coliness       r   test_leading_newlinesz#TestSpecifics.test_leading_newlines   s    wwv|vh.//T4((*A...R[[]]##q!a(((q!c*****r   c                    dD ]#}|                      t          t          |           $|                     t          d          d           |                     t          d          d           |                     t          d          d           |                     t          d          d           |                     t          d          d	           |                     t          d
          d           |                     t          d          d           |                     t          d          d           |                     t          d          d           |                     t          d          d           |                     t          d          d           |                     t          d          d           |                     t          d          d           |                     t          d          d           |                     t          d          d           |                     t          d          d           |                     t          d          d           |                     t          d          d           |                     t          d          d           |                     t          d          d            |                     t          d!          d"           |                     t          d#          d$           |                     t          d%          d&           |                     t          d'          d(           d S ))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/   r*   )r   args     r   !test_literals_with_leading_zeroesz/TestSpecifics.test_literals_with_leading_zeroes   s   1 	6 	6C
 k45555fs+++g,,,h---XYY[^___h...ea(((k**A...fs+++g---ea(((eb)))fq)))ea(((011?CCCFGGYYY122ODDD233_EEE011?CCC01126660112666j))2.../00"555g,,,l++R00000r   c                 L   d}dd|z   d}t          j        |          5  t          |dd           d d d            n# 1 swxY w Y   t          j        |dz
            5  |                     t                    5 }t          |dd           d d d            n# 1 swxY w Y   |j        }|                     |j        d	           |                     d
t          |                     |                     dt          |                     d d d            d S # 1 swxY w Y   d S )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   	exceptionr*   linenoassertInstr)r   nr   err_ctxexcs        r   test_int_literals_too_longz(TestSpecifics.test_int_literals_too_long   s   4c!e444.q11 	7 	7F-v666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7.qs33 	> 	>"";// ;7 16:::; ; ; ; ; ; ; ; ; ; ; ; ; ; ;#CSZ+++MM.C999MM2CHH===	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>sF   >AA D;BDB	D B	!A+DD Dc                    t           j        dk    rLd}|                     t          |          d           |                     t          d|z             d           nqt           j        dk    rLd}|                     t          |          d           |                     t          d|z             d	           n|                     d
           |                     t          dt           j         dz
  z            t                     |                     t          dt           j         dz
  z            t                     d S )Ni
0xffffffffl    -l     0xffffffffffffffffl    l z)How many bits *does* this machine have???z%sr~   r   )rj   maxsizer*   r/   r^   assertIsInstanceri   )r   all_one_bitss     r   test_unary_minuszTestSpecifics.test_unary_minus   s$   ;*$$'LT,//<<<T#"455{CCCC[////LT,//1EFFFT#"4557LMMMMIIABBB 	d4CK<!+;#<==sCCCd4CK<!+;#<==sCCCCCr   r   c                     d}d}d}d}d}d}d}d}| j         j        j        D ]}	|	|                     |	t                      d S )	Nl        l     l          l       l            l         r   l )test_32_63_bit_values__code__	co_constsr   ri   )
r   r@   bcrc   erg   rb   hvariables
             r   r   z#TestSpecifics.test_32_63_bit_values   si    AA A A$A$A$A$A 6?I 9 9'))(C8889 9r   c                 h    d\  }}|                      |d           |                      |d           d S )N)r~   )r   r~   r~   r   r*   )r   ijs      r   test_sequence_unpacking_errorz+TestSpecifics.test_sequence_unpacking_error   s=    !ABr   c                     g d}|D ]M}|dz  }|                      t          t          |dd           |                      t          t          |dd           Nd S )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 Nonerz   tmpr
   r   r3   )r   stmtsstmts      r   test_none_assignmentz"TestSpecifics.test_none_assignment   sv    
 
 
  	I 	IDDLDk7D%JJJk7D%HHHH	I 	Ir   c                     g d}g d}|D ]}t          |dd           |D ]%}|                     t          t           |dd           &d S )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   succeedr^   r   s       r   test_importzTestSpecifics.test_import  s      "  0  	) 	)DD%(((( 	I 	IDk7D%HHHH	I 	Ir   c                     d } |            \  }}|                      t          |j                  t          |j                             d S )Nc                      dd} dd}| |fS )Nr~   c                     | S r   rR   xs    r   <lambda>zITestSpecifics.test_for_distinct_code_objects.<locals>.f.<locals>.<lambda>C      Q r   r   c                     | S r   rR   r   s    r   r   zITestSpecifics.test_for_distinct_code_objects.<locals>.f.<locals>.<lambda>D  r   r   r~   )r   rR   )f1f2s     r   rg   z7TestSpecifics.test_for_distinct_code_objects.<locals>.fB  s    BBr6Mr   )assertNotEqualidr   )r   rg   r   r   s       r   test_for_distinct_code_objectsz,TestSpecifics.test_for_distinct_code_objects@  sN    	 	 	 BBr{OOR__=====r   c                 @    d }|                      |j                   d S )Nc                      dS )NfoorR   rR   r   r   r   z/TestSpecifics.test_lambda_doc.<locals>.<lambda>J  s    E r   )assertIsNone__doc__)r   ls     r   test_lambda_doczTestSpecifics.test_lambda_docI  s%    M!)$$$$$r   c                    d}|                      t          t          |dd           d}t          |dd           |                     t	          |          d           d}|                     t	          |          d           d}|                     t	          |          d           d	}|                     t	          |          d           d
}|                     t	          |          d           d}|                     t	          |          d           d}|                     t	          |          d           d}|                     t	          |          d           d S )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   r*   r/   r   rn   s     r   test_encodingzTestSpecifics.test_encodingM  sE   7+weVDDD<eV$$$dZ000dZ000dV,,,8dZ0007dV,,,<d\222Cd%MNNNDd%IJJJJJr   c                 6    G d dt                     } |            }d|d<   |                     |d         d           |dxx         dz  cc<   |                     |d         d           |d= |                     d|           d|d<   |                     |d         d           |dxx         dz  cc<   |                     |d         d           |d= |                     d|           d|dd<   |                     |dd         d           |ddxx         dz  cc<   |                     |dd         d           |dd= |                     t          dd          |           d|ddddf<   |                     |ddddf         d           |ddddfxx         dz  cc<   |                     |ddddf         d           |ddddf= |                     t          dd          t          dd          f|           d|ddd<   |                     |ddd         d           |dddxx         dz  cc<   |                     |ddd         d           |ddd= |                     t          ddd          |           d|ddddddf<   |                     |ddddddf         d           |ddddddfxx         dz  cc<   |                     |ddddddf         d           |ddddddf= |                     t          ddd          t          ddd          f|           d|d<   |                     |d         d           |dxx         dz  cc<   |                     |d         d           |d= |                     t          |           d|d<   |                     |d         d           |dxx         dz  cc<   |                     |d         d           |d= |                     t          t          f|           d S )	Nc                   ,    e Zd Zd Zd Zd Zd Zd ZdS ).TestSpecifics.test_subscripts.<locals>.str_mapc                     i | _         d S r   )datar   s    r   __init__z7TestSpecifics.test_subscripts.<locals>.str_map.__init__f  s    			r   c                 6    | j         t          |                   S r   r   r   rC   s     r   rE   z:TestSpecifics.test_subscripts.<locals>.str_map.__getitem__h  s    yS**r   c                 4    || j         t          |          <   d S r   r   rH   s      r   rJ   z:TestSpecifics.test_subscripts.<locals>.str_map.__setitem__j  s    &+	#c((###r   c                 0    | j         t          |          = d S r   r   rC   s     r   __delitem__z:TestSpecifics.test_subscripts.<locals>.str_map.__delitem__l  s    Ic#hh'''r   c                 .    t          |          | j        v S r   )r   r   rC   s     r   __contains__z;TestSpecifics.test_subscripts.<locals>.str_map.__contains__n  s    3xx49,,r   N)rO   rP   rQ   r   rE   rJ   r   r   rR   r   r   str_mapr   e  s_          + + +, , ,( ( (- - - - -r   r   r~   r   )r~   r~   r   .)..)objectr*   assertNotInsliceEllipsis)r   r   rc   s      r   test_subscriptszTestSpecifics.test_subscriptsb  s   
	- 
	- 
	- 
	- 
	-f 
	- 
	- 
	- GII!1q!!!	!	1q!!!aDA$4!$$$	$14!$$$dG###!A#1Q3###	!A#!1Q3###acFq!a(((!A#qs(1Q3!8a(((	!A#qs(q1Q3!8a(((ac1Q3hK%1++uQ{{3Q77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11111r   c                     d}|d                     d t          d          D                       z  }t          |dd           d S )Nzdef f(%s): pass, c              3   $   K   | ]}d ||fz  V  dS )za%d:%dNrR   .0r   s     r   	<genexpr>z6TestSpecifics.test_annotation_limit.<locals>.<genexpr>  s+      <<Ax1Q%'<<<<<<r   ,  r%   r   r   ranger   rv   s     r   test_annotation_limitz#TestSpecifics.test_annotation_limit  sJ    	TYY<<s<<<<<<3r   c                 H    G d d          }|                      d|j        j        j                   |                      d|j        j        j                   |                      d|j        j        j                   |                      d|j        j        j                   d S )Nc                       e Zd Zd ZdS )&TestSpecifics.test_mangling.<locals>.Ac                      d} d}dd l }dd l}d S )Nr~   r   r   )_A__mangled_mod__package__.module)_A__mangled__not_mangled__r  __package__s       r   rg   z(TestSpecifics.test_mangling.<locals>.A.f  s*    	"#$$$$))))))r   N)rO   rP   rQ   rg   rR   r   r   rW   r    s#        * * * * *r   rW   r  r  r  r  )r   rg   r   co_varnames)r   rW   s     r   test_manglingzTestSpecifics.test_mangling  s    	* 	* 	* 	* 	* 	* 	* 	* 	mQS\%=>>>')ABBB')ABBBmQS\%=>>>>>r   c                    t           }|                                                    d          r
|d d         }t          |d          5 }|                                }d d d            n# 1 swxY w Y   ddgddgd	d
gddg||gg}|D ]\  }}t          |d|z  d          }t          |d|z  dt          j                  }|                     t          |          t          j
        k               t          |d|z  d          }|                     ||           |                     |j        d|z             t          dddt          j                  }|                     t          t
          |dd           |                     t          t
          t          j                    dd           t          j
                    }t          j                    g|_        |                     t          t
          |dd           d S )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)r6   z<ast>r/   )__file__lowerendswithopenreadr   _astPyCF_ONLY_AST
assertTruetypeModuler*   co_filenamer   r`   IfBoolOpbody)	r   fnamerg   	fcontentssample_codern   co1astco2s	            r   test_compile_astzTestSpecifics.test_compile_ast  s   ;;==!!%(( 	#2#JE%'*** 	!aI	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! !45DE=>I
 ' 	= 	=KE4$v66C$vt7IJJCOODII4555#uu}f55CS#&&&S_eem<<<< j*fd6HII)Wc7FCCC 	)Wdgii&III kmmKMM?)Wc7FCCCCCs   
A++A/2A/c                     dfd} |             |             |             |            i}|                      |ddd           d S )Nr   c                       dz    S Nr~   rR   )r   s   r   rg   z3TestSpecifics.test_dict_evaluation_order.<locals>.f  s    FAHr   r      )r~   r   r   )r   rg   rc   r   s      @r   test_dict_evaluation_orderz(TestSpecifics.test_dict_evaluation_order  sk    	 	 	 	 	
 QSS!!##qqssAACC aLL)))))r   c                    dD ].}t          d|d          }|                     |j        d           /t          d          t	          d          fD ]`}|                     t                    5  t          d|d          }d d d            n# 1 swxY w Y   |                     |j        d           a|                     t          t           dt          d          d           d S )N)file.py   file.pypassr   r6  r7  )
r   r*   r%  	bytearray
memoryviewassertWarnsDeprecationWarningr   r`   rM   )r   r2   rn   s      r   test_compile_filenamez#TestSpecifics.test_compile_filename  s#   - 	: 	:H68V44DT-y9999!*--z*/E/EE 	: 	:H!!"455 9 9vx889 9 9 9 9 9 9 9 9 9 9 9 9 9 9T-y9999)Wfd:6F6FOOOOOs   ,B

B	B	c                     d}t          |dd          }|j        D ]<}t          |t          j                  r |                     |j        |j                   =d S )Nzdef f(): pass
def g(): passmyfiler   )r   r   
isinstancetypesCodeTypeassertIsr%  )r   rw   r   objs       r   test_same_filename_usedz%TestSpecifics.test_same_filename_used  s`    .Ax((; 	> 	>C#u~.. >coq}===	> 	>r   c                 |   |                      d           |                      d           |                      d           |                      d           |                      d           |                      d           |                      d           |                      d           |                      d	           |                      d
           |                      d           |                      d           |                      d           |                      d           |                      d           d S )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_statementz#TestSpecifics.test_single_statement  s=   G$$$I&&&I&&&K(((M***12222333F###-.../0003444,---<===/0009:::::r   c                    |                      d           |                      d           |                      d           |                      d           |                      d           |                      d           |                      d           |                      d           |                      d	           d S )
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_statementz'TestSpecifics.test_bad_single_statement  s      (((  111  !2333  000  ,,,  !6777  !9:::  !;<<<  !FGGGGGr   c                    d}t          j                    5 }t          j                            |d          }t          |d          5 }|                    |           d d d            n# 1 swxY w Y   t          j        |          d         }d d d            n# 1 swxY w Y   | 	                    d|j
                   d S )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_undecodablez0TestSpecifics.test_particularly_evil_undecodable  s    4(** 	<ddH--Bb$ 2              4R88;C		< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<
 	>HHHHH5   1BA)B)A-	-B0A-	1BB!Bc                    d}t          j                    5 }t          j                            |d          }t          |d          5 }|                    |           d d d            n# 1 swxY w Y   t          j        |          d         }d d d            n# 1 swxY w Y   | 	                    d|j
                   d S )Ns   # 
#
rK  rL  r   rM  rN  rV  s         r   $test_yet_more_evil_still_undecodablez2TestSpecifics.test_yet_more_evil_still_undecodable#  s    (** 	<ddH--Bb$ 2              4R88;C		< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<
 	>HHHHHr\  c                      t          j                    dz  t          j                    dz  t          dz            d fd	} |dd            |dd            |dd	            |dd
           d S )Nr   r	  g      ?r
   c                    | |
z  z   }t          |d|           fD ]f}| ||z  z   }d                    | ||          }	                    t          |          5  t          |d|           d d d            n# 1 swxY w Y   gd S )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_limitz@TestSpecifics.test_compiler_recursion_limit.<locals>.check_limit:  s    M!99IIx...$k2 4 4(U"228??"He5 5&&~7&CC 4 4FHd3334 4 4 4 4 4 4 4 4 4 4 4 4 4 4	4 4s   A::A>	A>	r@   z()z.bz[0]z*a)r
   )rj   rk   ri   )r   rn  rk  rl  rm  s   ` @@@r   test_compiler_recursion_limitz+TestSpecifics.test_compiler_recursion_limit-  s     *,,q0
+--3J-..	4 	4 	4 	4 	4 	4 	4 	4 	4 	CCCCr   c                    |                      t          d          5  t          ddd           d d d            n# 1 swxY w Y   |                      t          d          5  t          t          d          dd           d d d            n# 1 swxY w Y   t          t          d          dd         dd          }|                     t          |          d           t          t          d	          dd         dd          }|                     t          |          d           t          t          d
          dd         dd          }|                     t          |          d           |                     t          t          d	          dd                   d           t                      }t          t          d          dd         |           |                     |d         d           d S )Nzcannot contain nullz123 <dummy>r/   s   123 r~   r      s   1234s   $23$s   ax = 123r   rA   )assertRaisesRegexr   r   r:  r*   r/   r[   r   )r   rn   	namespaces      r   test_null_terminatedz"TestSpecifics.test_null_terminatedL  s=    ##K1FGG 	2 	2Iy&111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2##K1FGG 	? 	?Jz**Iv>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?z*--ad3YGGdR(((z'**1R40)VDDdR(((z'**1R40)VDDdR((( 	j11!B$788"===FF	Z$$QrT*I6663,,,,,s   :>> BBBc                     |j         j        D ]%}t          |          t          |          k    r d S &|                     d|d|j         j                   d S )Nzunable to find constant z in )r   r   reprr^   )r   funcexpectedconsts       r   check_constantzTestSpecifics.check_constant`  ss    ], 	= 	=EE{{d8nn,, - III!4=#:#:< = = = = =r   c                      fd} |d             |d            |d            |d            |d           d d }}                      |j        j        |j        j                                        |t                                          t           |                      t          t                               d d	 }}d
 }                      |j        j        d         |j        j        d         d                                          t          t          |j        j        d                             |j        j        d                    d d }}                      |j        j        |j        j                                        |t          dh                      
                     |d                     d S )Nc                 L   i }d| d| }t          ||           |d         }|d         }                    |j        j        |j        j                                       ||                                t           |                      t          |                      d S Nzf1, f2 = lambda: z
, lambda: r   r   )r   rC  r   r   r{  r*   rw  )rz  nsrn   r   r   r   s        r   check_same_constantz?TestSpecifics.test_merge_constants.<locals>.check_same_constanto  s    BB8=uuEDrNNNDBDBMM"+/1FGGGE***T""$$ZZe55555r   r           s   abcabcc                      dS N.rR   rR   r   r   r   z4TestSpecifics.test_merge_constants.<locals>.<lambda>  s     r   c                      dS r  rR   rR   r   r   r   z4TestSpecifics.test_merge_constants.<locals>.<lambda>  s    c r   c                      dS )N
not a namerR   rR   r   r   r   z4TestSpecifics.test_merge_constants.<locals>.<lambda>  s     r   c                      dS )Nr  rR   rR   r   r   r   z4TestSpecifics.test_merge_constants.<locals>.<lambda>  s     r   c                 
    | dv S )N>   r  rR   r   s    r   r   z4TestSpecifics.test_merge_constants.<locals>.<lambda>  s    q-- r   r~   c                 
    | dv S N>   r   rR   r   s    r   r   z4TestSpecifics.test_merge_constants.<locals>.<lambda>  
    18 r   c                 
    | dv S r  rR   r   s    r   r   z4TestSpecifics.test_merge_constants.<locals>.<lambda>  s
    qCx r   )rC  r   r   r{  r  r*   rw  nextiter	frozensetr"  )r   r  r   r   f3s   `    r   test_merge_constantsz"TestSpecifics.test_merge_constantsj  s   
	6 	6 	6 	6 	6 	D!!!AC   F###E""" kkBbk+R[-BCCCB)))bbddT(^^444 &%'>'>B--bk+A.k+A.q1	3 	3 	3d4 5a 899::k+A.	0 	0 	0
 $#%7%7Bbk+R[-BCCCB	1#///1r   c                 f    d }d }|                      |j        j        |j        j                   d S )Nc                     | j         j        S r   )yrT   r   s    r   r   z5TestSpecifics.test_merge_code_attrs.<locals>.<lambda>  
    qsu r   c                     | j         j        S r   )r   r   r@   s    r   r   z5TestSpecifics.test_merge_code_attrs.<locals>.<lambda>  r  r   )rC  r   co_linetable)r   r   r   s      r   test_merge_code_attrsz#TestSpecifics.test_merge_code_attrs  s6     __bk.0HIIIIIr   c                 L    d }|                      |j        j        d           d S )Nc                      	 dS )Nr   rR   rR   r   r   r   z2TestSpecifics.test_strip_unused_consts.<locals>.f1  s
    2r   )	docstringr   )r*   r   r   )r   r   s     r   test_strip_unused_constsz&TestSpecifics.test_strip_unused_consts  s5    	 	 	 	.0ABBBBBr   c                     	 d }|                      dt          t          j        |                    d         j                   d S )Nc                      dS )Nr   )RuntimeErrorrR   r   r   unused_code_at_endzcTestSpecifics.test_peephole_opt_unreachable_code_array_access_in_bounds.<locals>.unused_code_at_end  s    1r   RETURN_VALUEr   )r*   rM   disget_instructionsopname)r   r  s     r   9test_peephole_opt_unreachable_code_array_access_in_boundszGTestSpecifics.test_peephole_opt_unreachable_code_array_access_in_bounds  s_    G	. 	. 	. 	%&899::2>E	G 	G 	G 	G 	Gr   c                 b     fd} |dd            |dd            |dd            |dd            |d	d
           d d }}                      |j        |j                                        |d                                |d                                t	           |                      t	          d                                          t	           |                      t	          d                     d d }}                      |j        |j                                        |t          dh                                          |t          dh                                           |d                                           |d                     d S )Nc                    i }t          d| d||           |d         }|d         }                    |j        |j                                       |j        |j                                       ||                                ||                               t           |                      t          |                                          t           |                      t          |                     d S r~  )r   assertIsNotr   r   r{  r*   rw  )const1const2r  r   r   r   s        r   check_different_constantszJTestSpecifics.test_dont_merge_constants.<locals>.check_different_constants  s    BDfffffErJJJDBDBR["+666R[999F+++F+++T""$$ZZf666T""$$ZZf66666r   r   r  g       )r   )r  r@      ar  )r  c                      dS )Nr   rR   rR   r   r   r   z9TestSpecifics.test_dont_merge_constants.<locals>.<lambda>  s     r   c                      dS )N              rR   rR   r   r   r   z9TestSpecifics.test_dont_merge_constants.<locals>.<lambda>  s     r   r   r  c                 
    | dv S r  rR   r   s    r   r   z9TestSpecifics.test_dont_merge_constants.<locals>.<lambda>  r  r   c                 
    | dv S )N>   r  rR   r   s    r   r   z9TestSpecifics.test_dont_merge_constants.<locals>.<lambda>  s
    qEz r   )r  r   r{  r*   rw  r  r"  )r   r  r   r   s   `   r   test_dont_merge_constantsz'TestSpecifics.test_dont_merge_constants  s   
	7 
	7 
	7 
	7 
	7 	"!!S)))!!$---!!$///!!#t,,,!!&'222 Bbk222B&&&B&&&bbddT%[[111bbddT%[[111 $#%9%9Bbk222B	1#///B	3% 0 011113     r   c                 B    t          dt          d          d           d S )N42test_compile_pathliker
   )r   r   r   s    r   test_path_like_objectsz$TestSpecifics.test_path_like_objects  s#    h677BBBBBr   c                 .    t          ddz  dd           d S )Nzif a: b
i@ rq  r   r   r   s    r   test_stack_overflowz!TestSpecifics.test_stack_overflow  s!     	f$i88888r   c                    d }d }d }d }||||g}|D ]}t          t          j        |                    }|                     t	          |          d           |                     d|d         j                   |                     d |d         j                   |                     d|d	         j                   d S )
Nc                      d S r   rR   rR   r   r   unused_block_ifzPTestSpecifics.test_dead_blocks_do_not_generate_bytecode.<locals>.unused_block_if       r   c                      d S r   rR   rR   r   r   unused_block_whilezSTestSpecifics.test_dead_blocks_do_not_generate_bytecode.<locals>.unused_block_while  r  r   c                      	 d S r   rR   rR   r   r   unused_block_if_elsezUTestSpecifics.test_dead_blocks_do_not_generate_bytecode.<locals>.unused_block_if_else      tr   c                      	 d S r   rR   rR   r   r   unused_block_while_elsezXTestSpecifics.test_dead_blocks_do_not_generate_bytecode.<locals>.unused_block_while_else  r  r   r3  
LOAD_CONSTr   r  r   )rM   r  r  assertLessEquallenr*   r  argval)r   r  r  r  r  funcsrx  opcodess           r   )test_dead_blocks_do_not_generate_bytecodez7TestSpecifics.test_dead_blocks_do_not_generate_bytecode  s   	 	 		 	 		 	 		 	 	 !"4%'>@  	A 	AD3/5566G  Wq111\72;+=>>>T72;#5666^WR[-?@@@@	A 	Ar   c                 r   d }d }||g}|D ]}t          t          j        |                    }|                     dt	          |                     |                     d|d         j                   |                     d |d         j                   |                     d|d         j                   d S )Nc                      d S r   rR   rR   r   r   break_in_whilez;TestSpecifics.test_false_while_loop.<locals>.break_in_while  s     r   c                      d S r   rR   rR   r   r   continue_in_whilez>TestSpecifics.test_false_while_loop.<locals>.continue_in_while  s     r   r   r  r~   r  r   )rM   r  r  r*   r  r  r  )r   r  r  r  rx  r  s         r   test_false_while_loopz#TestSpecifics.test_false_while_loop  s    	 	 		 	 	  !23  	@ 	@D3/5566GQG---\71:+<===T71:#4555^WQZ->????	@ 	@r   c                    d }d }d }d }||||g}|D ]}|                      |          5  t          t          j        |                    }|                     t          |          d           |                     d|d         j                   |                     d	|d
         j                   d d d            n# 1 swxY w Y   d S )Nc                     | S r   rR   r   s    r   and_truez;TestSpecifics.test_consts_in_conditionals.<locals>.and_true#      r   c                     dS )NFrR   r   s    r   	and_falsez<TestSpecifics.test_consts_in_conditionals.<locals>.and_false&  s    r   c                     dS )NTrR   r   s    r   or_truez:TestSpecifics.test_consts_in_conditionals.<locals>.or_true)  s    r   c                     | S r   rR   r   s    r   or_falsez;TestSpecifics.test_consts_in_conditionals.<locals>.or_false,  r  r   rx  r   LOAD_r   r  r   )	subTestrM   r  r  r  r  r   r  r*   )r   r  r  r  r  r  rx  r  s           r   test_consts_in_conditionalsz)TestSpecifics.test_consts_in_conditionals"  sT   	 	 		 	 		 	 		 	 	 9gx8  	E 	ED4(( E Es3D99::$$S\\1555gwr{'9:::  1CDDD	E E E E E E E E E E E E E E E	E 	Es   BC  C	C	c                    g d}|D ]}i }t          t          j        |          |           |d         }|                     |j                  5  t          t          j        |                    }d |D             }|                     d|           | 	                    d|           | 	                    d|           d d d            n# 1 swxY w Y   d S )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  c                     g | ]	}|j         
S rR   )r  )r  opcodes     r   
<listcomp>z;TestSpecifics.test_imported_load_method.<locals>.<listcomp>V  s    DDD&DDDr   LOAD_METHOD	LOAD_ATTRPRECALL)
r   textwrapdedentr  rO   rM   r  r  r   r   )r   sourcesr   rt  rx  r  instructionss          r   test_imported_load_methodz'TestSpecifics.test_imported_load_method9  s,   
 
 
,  		7 		7FI(()444U#D4=11 7 7s3D99::DDGDDD  ===k<888i6667 7 7 7 7 7 7 7 7 7 7 7 7 7 7			7 		7s   A0CC	C	c                 *    d }|j         j        dz   }d S )Nc                  "    t                       d S r   )printrR   r   r   callz6TestSpecifics.test_lineno_procedure_call.<locals>.call\  s    r   r~   )r   r   )r   r  line1s      r   test_lineno_procedure_callz(TestSpecifics.test_lineno_procedure_call[  s&    	 	 	 ,q0r   c                 J  
 d

fd}
fd}
fd}
fd}||||g}g d}d fd}t          ||d          D ]f\  }}	|                     |	          5   ||           |                     j        j        j        z
  |	           d d d            n# 1 swxY w Y   gd S )
NTc                 $     |              rd S d S r   rR   r   TRUEs    r   if1z<TestSpecifics.test_lineno_after_implicit_return.<locals>.if1f  s%    ACCC  r   c                 $     |              rd S d S r   rR   r  s    r   if2z<TestSpecifics.test_lineno_after_implicit_return.<locals>.if2j  s     ACCC r   c                 $     |              rd S d S r   rR   r  s    r   if3z<TestSpecifics.test_lineno_after_implicit_return.<locals>.if3p  s     ACCC tr   c                 $     |              sd S d S r   rR   r  s    r   if4z<TestSpecifics.test_lineno_after_implicit_return.<locals>.if4v  s%    ACCC  r   )r   r   r   r   c                  0    t          j        d           d S r2  )rj   	_getframe)frames   r   save_caller_framezJTestSpecifics.test_lineno_after_implicit_return.<locals>.save_caller_frame}  s    M!$$EEEr   strictr  )zipr  r*   f_linenof_coder   )r   r  r  r  r  r  	lastlinesr  rx  lastliner  r  s             @@r   !test_lineno_after_implicit_returnz/TestSpecifics.test_lineno_after_implicit_returnc  s   	 	 	 	 		 	 	 	 		 	 	 	 		 	 	 	 	 sC%!MM		% 	% 	% 	% 	% "%4@@@ 	W 	WND(4(( W W&'''  0K!KXVVVW W W W W W W W W W W W W W W	W 	Ws   4BB	B	c                 F   d }d }||fD ]}|                      |          5  |j        }t          |                                          }|d         \  }}}|                     |d           |                     ||j                   d d d            n# 1 swxY w Y   d S )Nc                      d S r   rR   rR   r   r   no_code1z9TestSpecifics.test_lineno_after_no_code.<locals>.no_code1  s    Lr   c                      d S r   rR   rR   r   r   no_code2z9TestSpecifics.test_lineno_after_no_code.<locals>.no_code2  s      r   r  r   )r  r   rM   r   r*   r   )	r   r  r  rx  rn   r   startendlines	            r   test_lineno_after_no_codez'TestSpecifics.test_lineno_after_no_code  s   	 	 		 	 	 x( 	< 	<D4(( < <}T]]__--#(8 sD  ***  t':;;;< < < < < < < < < < < < < < <	< 	<s   A&BB	B	c                     d}g }|                                 D ]-\  }}}|%||k    r|                    ||j        z
             |}.|S )Nr   )r   appendr   )r   rn   	last_linerZ  _r  s         r   get_code_lineszTestSpecifics.get_code_lines  s^    	--// 	! 	!JAq$DI$5$5

4$"55666 	
r   c                 B   d }g d}d }g d}d }g d}d }g d}||||g}	||||g}
t          |	|
d	
          D ]c\  }}|                     |          5  |                     |j                  }|                     ||           d d d            n# 1 swxY w Y   dd S )Nc                      t           j        S r   )or@   rR   r   r   	load_attrz6TestSpecifics.test_lineno_attribute.<locals>.load_attr  s    r   )r   r   r   r~   c                  6    t                               d          S Nr   )r  ra   rR   r   r   load_methodz8TestSpecifics.test_lineno_attribute.<locals>.load_method  s     r   )r   r   r   r3  r   r~   c                  (    t           t          _        d S r   )vr  r@   rR   r   r   
store_attrz7TestSpecifics.test_lineno_attribute.<locals>.store_attr  s    
  r   )r   rh   r   r   c                  :    t           xj        t          z  c_        d S r   )r  r@   r!  rR   r   r   aug_store_attrz;TestSpecifics.test_lineno_attribute.<locals>.aug_store_attr  s     	r   )r   r   r   rh   r~   r   Tr  r  )r  r  r  r   r*   )r   r  load_attr_linesr  load_method_linesr"  store_attr_linesr$  aug_store_attr_linesr  
func_linesrx  r   
code_liness                 r   test_lineno_attributez#TestSpecifics.test_lineno_attribute  sU   	 	 	
 )..	 	 	 100	 	 	 *>>	 	 	  433[*nE&(9!#79
 uj>>> 	4 	4KD%4(( 4 4!00??
  
3334 4 4 4 4 4 4 4 4 4 4 4 4 4 4	4 	4s   1BB	B	c                     d }g d}|j         j        d         }|                     |          }|                     ||           d S )Nc                  $    d t           D             S )Nc              3      K   | ]}d V  dS )r~   NrR   r  r   s     r   r  zOTestSpecifics.test_line_number_genexp.<locals>.return_genexp.<locals>.<genexpr>  s6               r   )r  rR   r   r   return_genexpz<TestSpecifics.test_line_number_genexp.<locals>.return_genexp  s%      	   r   )r   r   r   r~   )r   r   r  r*   )r   r0  genexp_linesgenexp_coder*  s        r   test_line_number_genexpz%TestSpecifics.test_line_number_genexp  s[    	 	 	 !yy#,6q9((55
z22222r   c                 t    d }g d}|                      |j                  }|                     ||           d S )Nc                 .   K   | 2 3 d {V }t            6 d S r   )r(  )aseqr   s     r   testzLTestSpecifics.test_line_number_implicit_return_after_async_for.<locals>.test  s>             a  44s   )r   r~   r   r~   )r  r   r*   )r   r7  expected_linesr*  s       r   0test_line_number_implicit_return_after_async_forz>TestSpecifics.test_line_number_implicit_return_after_async_for  sM    	 	 	 &((77
44444r   c                     d}dd                     d t          |          D                       z   dz   }|                     t          t	          |                    |           d S )Ni   {,c              3   $   K   | ]}| d | V  dS ):NrR   r/  s     r   r  z6TestSpecifics.test_big_dict_literal.<locals>.<genexpr>  s,      !G!GQ****!G!G!G!G!G!Gr   })r   r  r*   r  r/   )r   	dict_sizethe_dicts      r   test_big_dict_literalz#TestSpecifics.test_big_dict_literal  se     	!G!GeI6F6F!G!G!GGGG#MT(^^,,i88888r   c                    d }d}d}t          t          j        |d                    D ]V\  }}|j        dk    r|                     |j        d           ,|j        |v r!|                     |j        |dz   |z             Wd S )	Nc                  *    d} 	 | dk    r| dz  } nd S d} )Nr~   Tr   r   rR   )vals    r   if_else_breakzITestSpecifics.test_redundant_jump_in_if_else_break.<locals>.if_else_break  s/    C771HCCEr   r   )POP_JUMP_IF_FALSEPOP_JUMP_IF_TRUEJUMP_ABSOLUTEJUMP_FORWARDTshow_cachesrJ  r   r~   )	enumerater  Bytecoder  r   r   )r   rF  
INSTR_SIZEHANDLED_JUMPSr  instrs         r   $test_redundant_jump_in_if_else_breakz2TestSpecifics.test_redundant_jump_in_if_else_break  s    	 	 	 

 %LD999
 
 	F 	FKD% |~--##EIq1111..##EIq*/DEEE	F 	Fr   c                 p    d }t          j        |          D ]}|                     |j        d           d S )Nc                 H    | |cxk     r|k     sn 	 | |cxk     r|k     d S  d S r   rR   )r@   r   r   s      r   while_not_chainedz@TestSpecifics.test_no_wraparound_jump.<locals>.while_not_chained  s=    1yyyyqyyyy 1yyyyqyyyyyyyyr   EXTENDED_ARG)r  rN  r   r  )r   rU  rQ  s      r   test_no_wraparound_jumpz%TestSpecifics.test_no_wraparound_jump  sR    	 	 	 \"344 	> 	>En====	> 	>r   c                 f   dD ]\  }d| d| d}ddddt          |          fgz  }d| d| d	d
| dfD ]v}t          |dd          }fdt          j        |          D             }|                     |          5  |                     ||           d d d            n# 1 swxY w Y   wd S )N))
COMPARE_OP<)rY  z<=)rY  >)rY  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   c                 4    g | ]}|j         k    |j        S rR   )r  	positions)r  instructionr  s     r   r  z8TestSpecifics.test_compare_positions.<locals>.<listcomp>#  s4     $ $ $#")V33  )333r   )r  r   r  r  r  r*   )r   opexprexpected_positionsr   rn   actual_positionsr  s          @r   test_compare_positionsz$TestSpecifics.test_compare_positions  su   	
 	K 	KJFB &%%r%%%D!"q!QD		&:%;!;t22224M4M4M4M 
K 
K vx88$ $ $ $'*';D'A'A$ $ $ 
 \\&)) K K$$%57IJJJK K K K K K K K K K K K K K K
K	K 	Ks   B$$B(+B(c                 L    d }|                       |dd          d           d S )Nc                     | |c}}|S r   rR   )r   r  r@   s      r   rg   z0TestSpecifics.test_apply_static_swaps.<locals>.f,  s    aDAqHr   r   r  r   r   rg   s     r   test_apply_static_swapsz%TestSpecifics.test_apply_static_swaps+  s9    	 	 	 	3c*****r   c                 N    d }|                       |ddd          d           d S )Nc                     | ||c}}}|S r   rR   r   r  rT   r@   r   s        r   rg   z2TestSpecifics.test_apply_static_swaps_2.<locals>.f2      AGAq!Hr   r   r  rT   r   rj  s     r   test_apply_static_swaps_2z'TestSpecifics.test_apply_static_swaps_21  =    	 	 	 	3S))3/////r   c                 N    d }|                       |ddd          d           d S )Nc                     | ||c}}}|S r   rR   rn  s        r   rg   z2TestSpecifics.test_apply_static_swaps_3.<locals>.f8  ro  r   r   r  rT   r   rj  s     r   test_apply_static_swaps_3z'TestSpecifics.test_apply_static_swaps_37  rq  r   N)HrO   rP   rQ   r   r   r   r    r#   r,   r0   r4   r7   r:   rd   ro   rq   rt   rx   r   r   r   r   rj   r   r   r   r   r   r   r   r   r  r  r  r/  r4  r=  r   cpython_onlyrE  rG  rI  r[  r^  ro  ru  r{  r  r  r  r  r  r  r  r  r  r  r  r  r
  r  r  r+  r3  r9  rB  rR  rW  rg  rk  rp  rt  rR   r   r   r   r      s       . . .D D D* * *& & &Q Q Q- - -J J JL L LQ Q QJ J J-% -% -%^' ' '4D D D8 8 8' ' '+ + +1 1 1B> > >D D D& {)))	9 	9 	9     I I I(-I -I -I^> > >% % %K K K*F2 F2 F2P     ? ? ?!D !D !DF	* 	* 	*P P P > > >; ; ;"	H 	H 	HI I II I I   <- - -(= = = ( ( (X J J J C C C G G G&! &! &!PC C C9 9 9 A A A>@ @ @&E E E. 7  7  7DP P P W  W  WD< < <  *4 *4 *4X3 3 35 5 59 9 9F F F:> > >K K K2+ + +0 0 00 0 0 0 0r   r   c                       e Zd Zd Z	 ddZd Zd Zd Zd Zd Z	d	 Z
d
 Zd Zd Zd Zd Zd Zd Zej        d             ZdS )TestSourcePositionsc                   	
 t          |dd          }t          |ddt          j                  }|                     t	          |          t          j        k               t                      t                      t                      t                      f\  	
 G 	
fddt          j                  } |            	                    |           |
                                D ]n\  }}}}|dk    r||                     |           ||                     |           ||                     |	           ||                     |
           o||fS )Nztest_compile.pyr   c                   (     e Zd Z fdZ xZS )LTestSourcePositions.check_positions_against_ast.<locals>.SourceOffsetVisitorc                    t                                          |           t          |t          j                  st          |t          j                  sd S                     |j                                       |j                                       |j	                                       |j
                   d S r   )supergeneric_visitr@  r-  rd  r   addr   
end_lineno
col_offsetend_col_offset)r   node	__class__columnsend_columns	end_linesr   s     r   r}  zZTestSourcePositions.check_positions_against_ast.<locals>.SourceOffsetVisitor.generic_visitM  s    %%d+++!$11 *T38:T:T F		$+&&&do...DO,,, 344444r   )rO   rP   rQ   r}  __classcell__)r  r  r  r  r   s   @r   SourceOffsetVisitorrz  L  sM        5 5 5 5 5 5 5 5 5 5 5 5 5r   r  r   )r   r   r!  r"  r#  r$  setr-  NodeVisitorvisitco_positionsr   )r   snippetrn   ast_treer  r  end_linecolend_colr  r  r  r   s            @@@@r   check_positions_against_astz/TestSourcePositions.check_positions_against_astC  s    w 16::7$5vt?QRRX$+5666 25suucee1K.y';	5 	5 	5 	5 	5 	5 	5 	5 	5 	5#/ 	5 	5 	5 	##H--- /3.?.?.A.A 	4 	4*T8S'qyy dE***#h	222c7+++"g{333X~r   r~   c                    t          t          j        |d          |                                d          D ]\  }}	|j        |k    rz|dz  }|ss|                     |	d         |           |                     |	d         |           |                     |	d         |           |                     |	d         |            d S |                     d| d	           d S )
NTrK  r  r~   r   r   r   zOpcode z not found in code)r  r  rN  r  r  r*   r^   )
r   rn   r  r  r  column
end_column
occurrencerQ  positions
             r   assertOpcodeSourcePositionIsz0TestSourcePositions.assertOpcodeSourcePositionIsi  s      #L4000$2C2C2E2Ed 
  
  
 
	 
	OE8 |v%%a
! $$Xa[$777$$Xa[(;;;$$Xa[&999$$Xa[*===FF		6F66677777r   c                 4    d}|                      |           d S )Nzx = 1)r  r   r  s     r   test_simple_assignmentz*TestSourcePositions.test_simple_assignmentz  s!    ((11111r   c           	          ddz  }|dz  }|                      |          \  }}|                     |dddddd	           |                     |dd
d
ddd	           d S )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_argz4TestSourcePositions.test_compiles_to_extended_op_arg~  s     f$ " 	  ;;GDDq))-jq 	* 	2 	2 	2 	))-jq 	* 	2 	2 	2 	2 	2r   c                 p    d}|                      |          \  }}|                     |ddddd           d S )Nzf(
    1, 2, 3, 4
)
CALLr~   r   r   r  r  r  r  r  r  s       r   test_multiline_expressionz-TestSourcePositions.test_multiline_expression  sW    
  ;;GDDq))-QqQ 	* 	8 	8 	8 	8 	8r   c                 |    d}d| d}|                      |          \  }}|                     |ddddd           d S )	N  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazg('z')r  r~   r   i  r  r  )r   long_stringr  r  r  s        r   test_very_long_line_end_offsetz2TestSourcePositions.test_very_long_line_end_offset  se     !'''';;GDDq))-QqT 	* 	; 	; 	; 	; 	;r   c           	      P   d}|                      |          \  }}|                     |ddddd           |                     |dddddd	           |                     |ddddd
d	           |                     |dddddd	           |                     |dddddd	           d S )Nza - b @ (c * x['key'] + 23)BINARY_SUBSCRr~         r  r  r  r     r   r3     r   r   r  r  s       r   #test_complex_single_line_expressionz7TestSourcePositions.test_complex_single_line_expression  s   /;;GDDq))-Qrb 	* 	: 	: 	:))-QqRA 	* 	G 	G 	G))-QqRA 	* 	G 	G 	G))-QqRA 	* 	G 	G 	G))-QqRA 	* 	G 	G 	G 	G 	Gr   c                    t          j        d          }|j        d         }t          j        t          j        t          j        t          j        dt          j                              dt          j                              g g                     }t          j        ||           t          j	        |           ||j        d<   t          |dd           d S )Nzassert (
42
)r   r|   eggsr   r   )r-  parser(  ExprCall	AttributeNameLoadcopy_locationfix_missing_locationsr   )r   treeold_nodenew_nodes       r   .test_multiline_assert_rewritten_as_method_callzBTestSourcePositions.test_multiline_assert_rewritten_as_method_call  s     y*++9Q<8HHVSXZZ00HJJ 
  

 

 	(H---!(+++	!h'''''r   c           
      0   d}dD ]}|                      |          5  i }t          j        |                    |                    }t	          ||           |d         j        }|                     |ddddd           d d d            n# 1 swxY w Y   d S )	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 + ...)()rg   LOAD_GLOBALrf   r3     r  )r  r  r  rb  r   r   r  )r   source_templater(  rt  r   rn   s         r   $test_push_null_load_global_positionsz8TestSourcePositions.test_push_null_load_global_positions  s    

 	 	D d##  	!)?)?)E)EFFVY''' ~.11!  2                 	 	s   A"B

B	B	c                     d}t          |dd          }|                     |ddddd           |                     |d	dddd           d S )
Nz/(
 lhs  
   .    
     rhs      
       ) += 42r   r   r  r3  rh   r  r  
STORE_ATTRr   r  r   r   rn   s      r   test_attribute_augassignz,TestSourcePositions.test_attribute_augassign  sx    Fvx00))+A! 	* 	
 	
 	
 	)),Q1 	* 	
 	
 	
 	
 	
r   c                 b    d}t          |dd          }|                     |ddddd           d S )	Nz-del (
 lhs  
   .    
     rhs      
       )r   r   DELETE_ATTRr3  rh   r  r  r  r  s      r   test_attribute_delz&TestSourcePositions.test_attribute_del  sL    Dvx00))-a!A! 	* 	
 	
 	
 	
 	
r   c                 b    d}t          |dd          }|                     |ddddd           d S )	Nz)(
 lhs  
   .    
     rhs      
       )r   r   r  r3  rh   r  r  r  r  s      r   test_attribute_loadz'TestSourcePositions.test_attribute_load  sL    @vx00))+A! 	* 	
 	
 	
 	
 	
r   c                 b    d}t          |dd          }|                     |ddddd           d S )	Nz.(
 lhs  
   .    
     rhs      
       ) = 42r   r   r  r3  rh   r  r  r  r  s      r   test_attribute_storez(TestSourcePositions.test_attribute_store  sL    Evx00)),Q1 	* 	
 	
 	
 	
 	
r   c                     d}t          |dd          }|                     |ddddd           |                     |d	dddd
           d S )Nz+(
 lhs  
   .    
     rhs      
       )()r   r   r  r3  rh   r  r  r  rf   r  r  s      r   test_method_callz$TestSourcePositions.test_method_call  sx    Bvx00))-a!A! 	* 	
 	
 	
 	))&q1Q2 	* 	
 	
 	
 	
 	
r   c                 *   d }|j                                         D ]u\  }}}}|                     |           |                     |           |                     |           |                     |           |                     ||f||f           vd S )Nc                      t           j         t                                            t                                          d                              d           d S r  )barbazfiles
setdefaultrR   r   r   rg   zHTestSourcePositions.test_weird_attribute_position_regressions.<locals>.f  s\     	
 	
 	
GG j    r   )r   r  assertIsNotNoner  )r   rg   r  r  r  r  s         r   )test_weird_attribute_position_regressionsz=TestSourcePositions.test_weird_attribute_position_regressions  s    
	 
	 
	 34*2I2I2K2K 	I 	I.D(FJ  &&&  ***  (((  ,,,  $(J1GHHHH	I 	Ir   c           	         dD ]Z}|                      |          5  t          | d| dd          }|                     t          |j                  d           |                     |j        d         t          j                   |                     |j        d         t          j                   |                     |j        d         |j        d                    |                     t          |j        d         
                                          t          |j        d         
                                                     d d d            n# 1 swxY w Y   \d S )N)z	lambda: az(a for b in c)z[a for b in c]z{a for b in c}z{a: b for c in d}r  r   r/   r   r   r~   )r  r   r*   r  r   r   rA  rB  r   rM   r  r  s      r    test_column_offset_deduplicationz4TestSourcePositions.test_column_offset_deduplication,  s|   
 	 	F f%% 	 	&44F44hGG  T^!4!4a888%%dnQ&7HHH%%dnQ&7HHH##DN1$5t~a7HIII##*7799::*7799::  	 	 	 	 	 	 	 	 	 	 	 	 	 	 		 	s   D+EE	E	Nr   )rO   rP   rQ   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   ru  r  rR   r   r   rw  rw  >  s&       
$ $ $N <=8 8 8 8"2 2 22 2 2(8 8 8; ; ;G G G( ( (*$ $ $L
 
 

 
 

 
 

 
 

 
 
I I I&     r   rw  c                   ~    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )TestExpressionStackSized   c                     t          |t                    rt          |dd          }t          j        t          j        t          |j                                      }|                     |j	        |           d S )N<foo>r
   )
r@  r   r   mathceillogr  co_coder  co_stacksize)r   rn   max_sizes      r   check_stack_sizez(TestExpressionStackSize.check_stack_sizeH  si     dC   	44(33D9TXc$,&7&78899T.99999r   c                 F    |                      d| j        z  dz              d S )Nzx and r   r  Nr   s    r   test_andz TestExpressionStackSize.test_andP  s(    h/#566666r   c                 F    |                      d| j        z  dz              d S )Nzx or r   r  r   s    r   test_orzTestExpressionStackSize.test_orS  s(    g.455555r   c                 F    |                      d| j        z  dz              d S )Nzx and x or r   r  r   s    r   test_and_orz#TestExpressionStackSize.test_and_orV  s(    mdf4s:;;;;;r   c                 F    |                      d| j        z  dz              d S )Nzx < r   r  r   s    r   test_chained_comparisonz/TestExpressionStackSize.test_chained_comparisonY  '    ftvo344444r   c                 F    |                      d| j        z  dz              d S )Nzx if x else r   r  r   s    r   test_if_elsez$TestExpressionStackSize.test_if_else\  s(    ntv5;<<<<<r   c                 F    |                      d| j        z  dz              d S )Nzx + r   r  r   s    r   
test_binopz"TestExpressionStackSize.test_binop_  r  r   c                 L    |                      dd| j        z  z   dz              d S )N[x, zx]r  r   s    r   	test_listz!TestExpressionStackSize.test_listb  ,    cEDFN2T9:::::r   c                 L    |                      dd| j        z  z   dz              d S )N(r  zx)r  r   s    r   
test_tuplez"TestExpressionStackSize.test_tuplee  r  r   c                 L    |                      dd| j        z  z   dz              d S )Nr;  r  zx}r  r   s    r   test_setz TestExpressionStackSize.test_seth  r  r   c                 L    |                      dd| j        z  z   dz              d S )Nr;  zx:x, zx:x}r  r   s    r   	test_dictz!TestExpressionStackSize.test_dictk  s-    cGdf$44v=>>>>>r   c                 L    |                      dd| j        z  z   dz              d S )Nf(r  )r  r   s    r   test_func_argsz&TestExpressionStackSize.test_func_argsn  s,    dUTV^3c9:::::r   c                     d t          | j                  D             }|                     dd                    |          z   dz              d S )Nc              3   "   K   | ]
}d | dV  dS r@   z=xNrR   r  s     r   r  z;TestExpressionStackSize.test_func_kwargs.<locals>.<genexpr>r  *      33)a)))333333r   r  r  r  r  r  r  r   r   kwargss     r   test_func_kwargsz(TestExpressionStackSize.test_func_kwargsq  sM    33U46]]333ddii&7&77#=>>>>>r   c                 L    |                      dd| j        z  z   dz              d S )No.m(r  r  r  r   s    r   test_meth_argsz&TestExpressionStackSize.test_meth_argsu  s,    futv~5;<<<<<r   c                     d t          | j                  D             }|                     dd                    |          z   dz              d S )Nc              3   "   K   | ]
}d | dV  dS r  rR   r  s     r   r  z;TestExpressionStackSize.test_meth_kwargs.<locals>.<genexpr>y  r  r   r  r  r  r  r  s     r   test_meth_kwargsz(TestExpressionStackSize.test_meth_kwargsx  sM    33U46]]333f		&(9(99C?@@@@@r   c                 N    d}|d| j         z  z  }|                     |           d S )Nz
def f(x):
z   x and x
)r  r  r   s     r   test_func_andz%TestExpressionStackSize.test_func_and|  s2    ''d#####r   c                 <    d}d|z  dz   }t          |dd           d S )N  zx,z=tr  r
   r   )r   rS   rn   s      r   test_stack_3050z'TestExpressionStackSize.test_stack_3050  s,    ax$gx(((((r   c                     d}d                     d t          |          D                       }d| d}t          |dd           d S )Nr  r  c              3   &   K   | ]}d | d| V  dS )r   z:typeNrR   r  s     r   r  z<TestExpressionStackSize.test_stack_3050_2.<locals>.<genexpr>  s3      ==q*q**q**======r   zdef f(z	):
  passr  r
   r
  )r   rS   argsrn   s       r   test_stack_3050_2z)TestExpressionStackSize.test_stack_3050_2  sU    yy==E!HH=====((((gx(((((r   N)rO   rP   rQ   r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r  r  r  r   rR   r   r   r  r  B  s,        	A: : :7 7 76 6 6< < <5 5 5= = =5 5 5; ; ;; ; ;; ; ;? ? ?; ; ;? ? ?= = =A A A$ $ $
) ) )) ) ) ) )r   r  c                       e Zd ZddZd Zd Zd Zd Zd Zd Z	d	 Z
d
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS ) TestStackSizeStabilityFc           	      b   fdfdt          dd          D             }t          t          |                    dk    ridd l}dd l}|                                } |j         d          |           |                     d|d	d	|                                           d S d S )
Nc                     i }d| z  z   }rd|z   }t          |dd          }t          |||           |d         j        S )Nzdef func():
zasync z<script>r   rx  )r   r   r   )r   r  scriptrn   async_r  s       r   compile_snippetz@TestStackSizeStability.check_stack_size.<locals>.compile_snippet  sX    B(1w;6F +!F*6:v66Dr2f:&&r   c                 0    g | ]} |          j         S rR   )r  )r  r   r'  s     r   r  z;TestStackSizeStability.check_stack_size.<locals>.<listcomp>  s&    FFFQ##0FFFr   r   rh   r~   r   )filez4stack sizes diverge with # of consecutive snippets: rz   )r  r  r  r  ioStringIOr^   getvalue)r   r  r&  sizesr  r*  outr'  s    ``    @r   r  z'TestStackSizeStability.check_stack_size  s    	' 	' 	' 	' 	' 	' GFFF%1++FFFs5zz??aNNNNNNN++--CCGOOA&&S1111III&+eeWWWcllnnnF G G G G G	  r   c                 4    d}|                      |           d S )Nz1
            if x:
                a
            r  r  s     r   test_ifzTestStackSizeStability.test_if  %     	g&&&&&r   c                 4    d}|                      |           d S )Nz{
            if x:
                a
            elif y:
                b
            else:
                c
            r0  r  s     r   r  z#TestStackSizeStability.test_if_else  %     	g&&&&&r   c                 4    d}|                      |           d S )NzV
            try:
                a
            except:
                b
            r0  r  s     r   test_try_except_barez+TestStackSizeStability.test_try_except_bare  %     	g&&&&&r   c                 4    d}|                      |           d S )Nz
            try:
                a
            except ImportError:
                b
            except:
                c
            else:
                d
            r0  r  s     r   test_try_except_qualifiedz0TestStackSizeStability.test_try_except_qualified  %    	 	g&&&&&r   c                 4    d}|                      |           d S )Nz
            try:
                a
            except ImportError as e:
                b
            except:
                c
            else:
                d
            r0  r  s     r   test_try_except_asz)TestStackSizeStability.test_try_except_as  r:  r   c                 4    d}|                      |           d S )Nz
            try:
                a
            except* ImportError:
                b
            else:
                c
            r0  r  s     r   test_try_except_star_qualifiedz5TestStackSizeStability.test_try_except_star_qualified  r4  r   c                 4    d}|                      |           d S )Nz
            try:
                a
            except* ImportError as e:
                b
            else:
                c
            r0  r  s     r   test_try_except_star_asz.TestStackSizeStability.test_try_except_star_as  r4  r   c                 4    d}|                      |           d S )Nz
                try:
                    a
                except* A:
                    b
                finally:
                    c
            r0  r  s     r   test_try_except_star_finallyz3TestStackSizeStability.test_try_except_star_finally  r4  r   c                 4    d}|                      |           d S )Nzg
                try:
                    a
                finally:
                    b
            r0  r  s     r   test_try_finallyz'TestStackSizeStability.test_try_finally  r7  r   c                 4    d}|                      |           d S )Nz8
            with x as y:
                a
            r0  r  s     r   	test_withz TestStackSizeStability.test_with  r2  r   c                 4    d}|                      |           d S )NzX
            while x:
                a
            else:
                b
            r0  r  s     r   test_while_elsez&TestStackSizeStability.test_while_else  r7  r   c                 4    d}|                      |           d S )Nz7
            for x in y:
                a
            r0  r  s     r   test_forzTestStackSizeStability.test_for  r2  r   c                 4    d}|                      |           d S )Nz[
            for x in y:
                a
            else:
                b
            r0  r  s     r   test_for_elsez$TestStackSizeStability.test_for_else  r7  r   c                 4    d}|                      |           d S )Nz
            for x in y:
                if z:
                    break
                elif u:
                    continue
                else:
                    a
            else:
                b
            r0  r  s     r   test_for_break_continuez.TestStackSizeStability.test_for_break_continue$  s%    
 	g&&&&&r   c                 4    d}|                      |           d S )Na6  
            for x in y:
                try:
                    if z:
                        break
                    elif u:
                        continue
                    else:
                        a
                finally:
                    f
            else:
                b
            r0  r  s     r   0test_for_break_continue_inside_try_finally_blockzGTestStackSizeStability.test_for_break_continue_inside_try_finally_block2  %     	g&&&&&r   c                 4    d}|                      |           d S )Na6  
            for x in y:
                try:
                    t
                finally:
                    if z:
                        break
                    elif u:
                        continue
                    else:
                        a
            else:
                b
            r0  r  s     r   ,test_for_break_continue_inside_finally_blockzCTestStackSizeStability.test_for_break_continue_inside_finally_blockC  rQ  r   c                 4    d}|                      |           d S )Na5  
            for x in y:
                try:
                    t
                except:
                    if z:
                        break
                    elif u:
                        continue
                    else:
                        a
            else:
                b
            r0  r  s     r   +test_for_break_continue_inside_except_blockzBTestStackSizeStability.test_for_break_continue_inside_except_blockT  rQ  r   c                 4    d}|                      |           d S )Na
  
            for x in y:
                with c:
                    if z:
                        break
                    elif u:
                        continue
                    else:
                        a
            else:
                b
            r0  r  s     r   )test_for_break_continue_inside_with_blockz@TestStackSizeStability.test_for_break_continue_inside_with_blocke  s%     	g&&&&&r   c                 4    d}|                      |           d S )Nz
            try:
                if z:
                    return
                else:
                    a
            finally:
                f
            r0  r  s     r   $test_return_inside_try_finally_blockz;TestStackSizeStability.test_return_inside_try_finally_blockt  %     	g&&&&&r   c                 4    d}|                      |           d S )Nz
            try:
                t
            finally:
                if z:
                    return
                else:
                    a
            r0  r  s     r    test_return_inside_finally_blockz7TestStackSizeStability.test_return_inside_finally_block  rZ  r   c                 4    d}|                      |           d S )Nz
            try:
                t
            except:
                if z:
                    return
                else:
                    a
            r0  r  s     r   test_return_inside_except_blockz6TestStackSizeStability.test_return_inside_except_block  rZ  r   c                 4    d}|                      |           d S )Nz~
            with c:
                if z:
                    return
                else:
                    a
            r0  r  s     r   test_return_inside_with_blockz4TestStackSizeStability.test_return_inside_with_block  s%     	g&&&&&r   c                 8    d}|                      |d           d S )Nz>
            async with x as y:
                a
            Tr&  r0  r  s     r   test_async_withz&TestStackSizeStability.test_async_with  *     	gd33333r   c                 8    d}|                      |d           d S )Nz=
            async for x in y:
                a
            Trb  r0  r  s     r   test_async_forz%TestStackSizeStability.test_async_for  rd  r   c                 8    d}|                      |d           d S )Nza
            async for x in y:
                a
            else:
                b
            Trb  r0  r  s     r   test_async_for_elsez*TestStackSizeStability.test_async_for_else  s*     	gd33333r   c                 8    d}|                      |d           d S )Na  
            for x in y:
                async with c:
                    if z:
                        break
                    elif u:
                        continue
                    else:
                        a
            else:
                b
            Trb  r0  r  s     r   /test_for_break_continue_inside_async_with_blockzFTestStackSizeStability.test_for_break_continue_inside_async_with_block  s*     	gd33333r   c                 8    d}|                      |d           d S )Nz
            async with c:
                if z:
                    return
                else:
                    a
            Trb  r0  r  s     r   #test_return_inside_async_with_blockz:TestStackSizeStability.test_return_inside_async_with_block  s*     	gd33333r   N)F)rO   rP   rQ   r  r1  r  r6  r9  r<  r>  r@  rB  rD  rF  rH  rJ  rL  rN  rP  rS  rU  rW  rY  r\  r^  r`  rc  rf  rh  rj  rl  rR   r   r   r"  r"    s       G G G G$' ' '	' 	' 	'' ' '' ' '' ' '	' 	' 	'	' 	' 	'	' 	' 	'' ' '' ' '' ' '' ' '' ' '' ' '' ' '"' ' '"' ' '"' ' '
' 
' 
'
' 
' 
'
' 
' 
'' ' '4 4 44 4 44 4 44 4 44 4 4 4 4r   r"  __main__)r  r  rQ  unittestrj   r-  r   rO  rA  r  r7  r   test.supportr   r   test.support.os_helperr   TestCaser   rw  r  r"  rO   mainrR   r   r   <module>rs     s   



  				  



 



           = = = = = = = = + + + + + +k0 k0 k0 k0 k0H% k0 k0 k0\! @ @ @ @ @(+ @ @ @FJ) J) J) J) J)h/ J) J) J)ZA4 A4 A4 A4 A4X. A4 A4 A4H
 zHMOOOOO r   