
    ;e                       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
Z
d dlmZ d dlmZ d Zg dZdgZg dZ G d d	ej                  Z G d
 dej                  Z G d dej                  Z G d dej                  Z G d dej                  Z G d dej                  Zej         G d dej                              Zd Zg ddgg fddgg fdddddg g dg g dg fdgg ddfgg fdddddg g dg g dg fd gg ddfgg fddd!ddg d"gdg g dg fd#gg ddfgg fddd$ddg d"gdg g dd%gfd&gg ddfgg fddd'ddg g d(g g dg fd)gg ddfgg fddd*ddg g d+g g dg fd,gg ddfgg fddd-ddg g d.d/d0d1d2d3d4d5d6d7d8d9d:edfgd;fd;fd;fdfg g dg fd<gg ddfgg fddd-ddg g d.d/d0d1d2d3d4d5d6d7d8d=gd;fd;fd;fdfg g dg fd<gg ddfgg fddd>ddg g dg g d?g fd@gg ddfgg fdddAddg g dBdCdDgdEgdFdGdHdIdJg d;fdKdLg g fgfdMgg ddfgg fdddNddg g dg g dg fdOgg d3dPdQd6dRdSgd;fd;fdfgg fdddTddg g dg g dg fdUgg d3dVdQd6dWdXdYgd;fd;fdfgg fdddZddg g dg g dg fd[gg d3d\dQd6d]dXd1d^d3d_d`d6dadbd9dcedfgd;fd;fd;fgd;fd;fdfgg fddddedfg g dggg fgg fddddTdfg g dhgg fgg fdddd>dfdigg d@gg fgg fddd$ddg g dg g dg fdjgg ddfgg fddkdldmgfgg fddndldogdpdfgg fddndqd6drdsdtgdufgdvdfgg fddndwd6dldxdygdufgdzdfgg fddndwdIdldxdygdufgdzdfgg fdd{dd|d3d}d~d6ddgd;fd;fddfgg fdd{d'd|d3dd~d6dddgd;fd;fddfgg fdd{dd|d3dd~d6ddd1dd3ddd6ddd9dedfgd;fd;fd;fgd;fd;fddfgg fddgg fddddddgg dfgg fdddeddggg fgg fdddwddgg fgg fdddddgddddgg fgfgg fdddddgddddgdgfgfgg fddddgdgdfgg fdddddgdgdfgg fdddddddgg fdfgg fddddgdddddgfgg g fgg fddddgg g dgfgg fddddgdddddgfgg g fgg fddgg fddddgfgg fdddddgd fgg fddddgfgg fddgg fddgg fddd$dddgg dfgg fddddddgg dfgg fddd'd6dddgdufdd)gg dfgg fdddd6dddgdufddgg dfgg fddddIdddgdufddgg dfgg fdddddd6dddgd;fdd6dddgdufdg d fgffgg fddddddddddg d fddddgd fgffgg fddddddddd6dddgdufdg d fgffgg fddddddddddgd fgffgg fddd$dd$ddd6dddgdufdg d fgffgg fdddddg g dg g dg fddddddddg g fffgg ddfgg fdddddg g dg g dg fdddddgdgdfgg ddfgg fdddddg g dg g dg fdddgdgdfgg ddfgg fddd!dKd!dd gdKddpgdgfdgffgg fdddedded1dddddgfd;fdgffgg fdddddg g dg g dg fddd	dd
dӐddg dfgffgg ddfgg fdddddg g dg g dg fdgddddg g fddddgg fgddfgg fdddddg g dg g dg fdgddddg g fddddgg fgddfgg fdddddfg g dgddddg g fddddgg fgfgg fdddddg g dg g dg fdgddddϐdddӐddg d fgfgg fgddfgg fdddddg g dg g dg fdgdgddfgg fdd gg fddd'ddd"gg dg g dg fd)gg ddfgg fddd!ddd"gg d"dg g dg fd#gg ddfgg fdddddd"gd$gdd%d&gddgdg fd'gg ddfgg fddd(ddd"gd$gdd%d&gddgd)g fd*gg ddfgg fdddddd"gg dg g dd+gfdgg ddfgg fdddddd"gd,d-gdg g dg d.fd'gg ddfgg fdddTddd"gd,gdd/gd0gdd+d1gfdUgg ddfgg fddd2ddd"gd,gdd/gdgdd+d1gfd3gg ddfgg fddd4ddd"gd,gdd/gd0gd5d+d1gfd6gg ddfgg fddd7ddd"gd,gdd/gdgd8d+d1gfd9gg ddfgg fZd:d;gfgZg d<d=d>dqd?d@dAgffdBdCd=dDdEdg g dg g dg fdFffd=dKdqdGgdHgffd=dKdIg g ffd=ddqdJgffd=dKdKdLgdMgffd=d	ddddʐdNdOgd fgffd=dddddʐdNdOgd fgffd=d	dd6dPdQdRgd;fdd6ddSdTgdufdUg d fgffd=d	dVd6dPdQdRgd;fdd6dWddXgdufdYg d fgffd=d	dVd6dPdQdRgd;fddIdWddXgdufdYg d fgffd=ddd6dPdQdRgd;fdd6ddSdTgdufdUg d fgffd=ddVd6dPdQdRgd;fdd6dWddXgdufdYg d fgffd=ddVd6dPdQdRgd;fddIdWddXgdufdYg d fgffd=ddd6dPdQdRgd;fdd6ddSdTgdufdUg d fgffd=dϐdVd6dPdQdRgd;fdd6dWddXgdufdYg d fgffd=dϐdVd6dPdQdRgd;fddIdWddXgdufdYg d fgffd=dZdwd[d\d\gdHd]gffd=ddd^g d_d`dagffd=ddd^d1dbdIdcdddegd;fd;fgg ffd=ddd^dϐdfdQdӐdgdhg d fgfgg ffdidjdkdldmd=dIdqg dnd;ffd=dIdIg d;ffd=d6dlg dod;ffd=d6dqg dnd;ffd=d6dIg d;ffd=dddpdqgg ffZ  e             dS (r      N)dedent)supportc           	      t   | +t          | t          t          t          f          s	| t          u r| S t          | t
                    rd | D             S | j        j        g}t          | d          rmt          | d          r]|	                    | j
        | j        f           t          | d          r,t          | d          r|dxx         | j        | j        fz  cc<   | j        t          |          S | j        D ]2}|	                    t!          t#          | |                               3t          |          S )Nc                 ,    g | ]}t          |          S  )to_tuple).0es     $/usr/lib/python3.11/test/test_ast.py
<listcomp>zto_tuple.<locals>.<listcomp>   s    ''''''    lineno
col_offset
end_linenoend_col_offset)
isinstancestrintcomplexEllipsislist	__class____name__hasattrappendr   r   r   r   _fieldstupler   getattr)tresultfs      r   r   r      s4   yJq3W"566y!x--	At		 (''Q''''k"#Fq( ;< 8 8 ;qx.///1l## 	;3C(D(D 	;2JJJ1<)9::JJJyV}}Y / /hwq!}}--....==r   )MNonez'module docstring'zdef f(): passzdef f(): 'function docstring'zdef f(a): passzdef f(a=0): passzdef f(*args): passzdef f(*args: *Ts): passz$def f(*args: *tuple[int, ...]): passz$def f(*args: *tuple[int, *Ts]): passzdef f(**kwargs): passzGdef f(a, b=1, c=None, d=[], e={}, *args, f=42, **kwargs): 'doc for f()'zdef f() -> tuple[*Ts]: passz def f() -> tuple[int, *Ts]: passz-def f() -> tuple[int, *tuple[int, ...]]: passzclass C:passz class C: 'docstring for class C'zclass C(object): passzdef f():return 1zdel vv = 1za,b = cz	(a,b) = cz	[a,b] = czx: tuple[*Ts]zx: tuple[int, *Ts]zx: tuple[int, *tuple[str, ...]]zv += 1zfor v in v:passzwhile v:passz	if v:passzif a:
  pass
elif b:
  passz(if a:
  pass
elif b:
  pass
else:
  passzwith x as y: passzwith x as y, z as q: passzraise Exception('string')z$try:
  pass
except Exception:
  passztry:
  pass
finally:
  passz%try:
  pass
except* Exception:
  passzassert vz
import syszfrom sys import vzglobal v1passzfor v in v:breakzfor v in v:continuezfor a,b in c: passzfor (a,b) in c: passzfor [a,b] in c: passzL(
    (
    Aa
    ,
       Bb
    )
    for
    Aa
    ,
    Bb in Cc
    )z"{a : b for w in x for m in p if g}z{a : b for v,w in x}z{r for l in x if g}z{r for l,m in x}z3async def f():
 'async function'
 await something()z,async def f():
 async for e in i: 1
 else: 2z$async def f():
 async with a as b: 1z{**{1:2}, 2:3}z{*{1, 2}, 3}z$async def f():
 [i async for b in c]z'@deco1
@deco2()
@deco3(1)
def f(): passz-@deco1
@deco2()
@deco3(1)
async def f(): passz'@deco1
@deco2()
@deco3(1)
class C: passz!@deco(a for a in b)
def f(): pass@a.b.c
def f(): passz(a := 1)zdef f(a, /,): passzdef f(a, /, c, d, e): passzdef f(a, /, c, *, d, e): passz'def f(a, /, c, *, d, e, **kwargs): passzdef f(a=1, /,): passzdef f(a=1, /, b=2, c=4): passz def f(a=1, /, b=2, *, c=4): passzdef f(a=1, /, b=2, *, c): passz*def f(a=1, /, b=2, *, c=4, **kwargs): passz(def f(a=1, /, b=2, *, c, **kwargs): passz1+2)#r#   za and ba + bznot vzlambda:Nonez{ 1:2 }{}z{None,}z&{
      1
        :
          2
     }z[a for b in c if d]z(a for b in c if d)z[(a,b) for a,b in c]z[(a,b) for (a,b) in c]z[(a,b) for [a,b] in c]z{(a,b) for a,b in c}z{(a,b) for (a,b) in c}z{(a,b) for [a,b] in c}z((a,b) for a,b in c)z((a,b) for (a,b) in c)z((a,b) for [a,b] in c)z	1 < 2 < 3zf(1,2,c=3,*d,**e)
f(*[0, 1])zf(a for a in b)10z'string'a.bza[b:c]vz[1,2,3]z[]z1,2,3z(1,2,3)()za.b.c.d(a.b[1:2])c                   n   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 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%d" Z&d# Z'd$ Z(d% Z)d& Z*d' Z+ej         d(             Z,d) Z-d*e.e/j0                 d+e1d,e1d-d.fd/Z2d1d0Z3d.S )2	AST_Testsc                     t          |t                    sdS d|j        vrdS |dk    o|d                                         S )NFastASTr   )r   type
__module__isupper)selfnamenodes      r   _is_ast_nodezAST_Tests._is_ast_node  sH    $%% 	5''5u}2a!2!22r   c                 `   t          |t          j                  r|j        d S t          |t          j        t          j        t          j        f          r2|j        |j        f}| 	                    ||           |j        |j        f}|j        D ]}t          ||          }t          |t                    r@|}|r |dk    r|d         j        |d         j        f}|D ]}|                     ||           g||                     ||           |                     |j        |j                   d S )Ndecorator_listr   )r   r2   r3   r   exprstmtexcepthandlerr   r   assertGreaterEqualr   r   _assertTrueorderassertEqual__match_args__)r7   ast_node
parent_posnode_posr8   value	first_poschilds           r   rA   zAST_Tests._assertTrueorder  sG   (CG,, 	0@0HFh38S5F GHH 	@ )<=H##Hj999"/8+>?J$ 		9 		9DHd++E%&& 9&	 GT%555!&q%(2E FI" < <E))%;;;;<"%%eZ888)8+BCCCCCr   c                    t          j                    }|                     |j        d           d|_        |                     |j        d           |                     |j        d         d           |                     t                    5  |j         d d d            n# 1 swxY w Y   |                     t                    5  t          j        d           d d d            d S # 1 swxY w Y   d S )Nr   *   foobar   )
r2   r3   rB   r   rL   __dict__assertRaisesAttributeErrorvararg	TypeErrorr7   xs     r   test_AST_objectszAST_Tests.test_AST_objects(  sX   GIIB'''2&&&H-r222~.. 	 	HH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 y)) 	 	GAJJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s$   B  B$'B$C''C+.C+c                     G d d          }t          j                    } |            |_        ||j        _        t	          j        |j                  }~t          j                     |                      |                       d S )Nc                       e Zd ZdS )0AST_Tests.test_AST_garbage_collection.<locals>.XNr   r5   __qualname__r   r   r   XrX   7          Dr   r[   )	r2   r3   rT   aweakrefrefr   
gc_collectassertIsNone)r7   r[   r]   r_   s       r   test_AST_garbage_collectionz%AST_Tests.test_AST_garbage_collection6  s    	 	 	 	 	 	 	 	GIIacck!###%%     r   c           	      "   t           t          dft          t          dft          t
          dffD ]\  }}}t          ||          D ]\  }}|                     d|          5  t          |d|t          j
                  }|                     t          |          |           |                     |d           d d d            n# 1 swxY w Y   |                     d||	          5  t          |d|           d d d            n# 1 swxY w Y   ˌd S )
Nexecsingleevalparsing)actioninput?)r   r   	compiling)rh   ri   kind)
exec_testsexec_resultssingle_testssingle_results
eval_testseval_resultszipsubTestcompiler2   PyCF_ONLY_ASTrB   r   rA   )r7   ri   outputrl   ioast_trees          r   test_snippetszAST_Tests.test_snippetsA  s   %/v$F%1>8$L%/v$F$H 		1 		1E64 E6** 1 11\\!\<< < <&q#tS5FGGH$$Xh%7%7;;;))(F;;;< < < < < < < < < < < < < < < \\AD\II 1 1Hc40001 1 1 1 1 1 1 1 1 1 1 1 1 1 11		1 		1s%   ACCC$DD	Dc                     t           t          z   t          z   }|D ]'}t          j        |          }t          |dd           (d S )N<string>rd   )rm   ro   rq   r2   parseru   )r7   snippets_to_validatesnippettrees       r   test_ast_validationzAST_Tests.test_ast_validationM  sO    )L8:E+ 	. 	.G9W%%DD*f----	. 	.r   c                    g d}|D ]\  }}|                      d| d|           5  d}t          j        |          }||j        d         _        ||j        d         _        |                     t                    5  t          |dd           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   g d}|D ]\  }}|                      d| d|           5  d}t          j        |          }||j        d         _	        ||j        d         _
        |                     t                    5  t          |dd           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d S )	N))
      )i)r   r   ))r   r   zCheck invalid linenos :za = 1r   r}   rd   zCheck invalid col_offset )rt   r2   r~   bodyr   r   rO   
ValueErrorru   r   r   )	r7   invalid_linenosr   r   r   r   invalid_col_offsetsr   r   s	            r   !test_invalid_position_informationz+AST_Tests.test_invalid_position_informationT  s   
 
 
 #2 	6 	6FJLvLL
LLMM 6 6!y))&,	!#*4	!'&&z22 6 6D*f5556 6 6 6 6 6 6 6 6 6 6 6 6 6 66 6 6 6 6 6 6 6 6 6 6 6 6 6 6
 
 
 +> 	6 	6&JW*WW~WWXX 6 6!y))*4	!'.<	!+&&z22 6 6D*f5556 6 6 6 6 6 6 6 6 6 6 6 6 6 66 6 6 6 6 6 6 6 6 6 6 6 6 6 6	6 	6sm   AB1<BB1BB1!B"B11B5	8B5	#AE-8E
E-EE-EE--E1	4E1	c           
         t          j        t          j        t          j        ddd          gdd          t          j        t          j        ddd          gdd          gg           }t	          |dd	           d S )
Nbuiltinsr   r   r8   r   r   )namesr   r   	traceback)r   type_ignoresr}   rd   )r2   ModuleImportaliasru   r7   r   s     r   >test_compilation_of_ast_nodes_with_default_end_position_valueszHAST_Tests.test_compilation_of_ast_nodes_with_default_end_position_valuesn  s    zJciZaPPPQZ[hijjjJci[qQQQR[\ijkkk 
    	j&)))))r   c                     t          j        d          j        d         j        j        }|                     |j                   |                     |j                   |                     |j                   d S )Nzx[::]r   )	r2   r~   r   rG   slicera   upperlowerstep)r7   slcs     r   
test_slicezAST_Tests.test_slicew  sg    i  %a(.4#)$$$#)$$$#(#####r   c                 x    t          j        d          j        d         }|                     |j                   d S )Nzfrom . import yr   )r2   r~   r   ra   module)r7   ims     r   test_from_importzAST_Tests.test_from_import}  s6    Y()).q1")$$$$$r   c                     t          j        d          }|                     |j        d         t           j                   d                                |j        d         _        t          |dd           d S )Nzfrom __future__ import divisionr   z __future__ <test>rd   )r2   r~   assertIsInstancer   
ImportFromstripr   ru   )r7   mods     r   !test_non_interned_future_from_astz+AST_Tests.test_non_interned_future_from_ast  sb    i9::chqk3>:::+1133Xv&&&&&r   c                    t          j        d          j        d         }|                     t	          |j                  d           |j        d         }|                     |j        d           |                     |j                   |                     |j	        d           |                     |j
        d           |                     |j        d           |                     |j        d           t          j        d          j        d         }|j        d         }|                     |j        d           |                     |j                   |                     |j	        d           |                     |j
        d           |                     |j        d           |                     |j        d           t          j        d	          j        d         }|j        d         }|                     |j        d           |                     |j        d
           |                     |j	        d           |                     |j
        d           |                     |j        d           |                     |j        d           t          j        d          j        d         }|j        d         }|                     |j        d           |                     |j        d           |                     |j	        d           |                     |j
        d           |                     |j        d           |                     |j        d           d S )Nzfrom bar import yr   r   y      zfrom bar import **zfrom bar import y as zz   zimport bar as foobarfoo   )r2   r~   r   rB   lenr   r8   ra   asnamer   r   r   r   )r7   r   r   s      r   
test_aliaszAST_Tests.test_alias  s   Y*++03RX***S)))%,'''q))))1---)2...-r222Y*++03S)))%,'''q))))1---)2...-r222Y/005a8S)))s+++q))))1---)2...-r222Y*++03U+++u---q))))1---)1----r22222r   c                    |                      t          t          j        t          j                             |                      t          t          j        t          j                             |                      t          t          j        t          j                             |                      t          t          j        t          j                             |                      t          t          j        t          j                             |                      t          t          j	        t          j                             d S N)

assertTrue
issubclassr2   Forr>   Namer=   r3   comprehensionGtr7   s    r   test_base_classeszAST_Tests.test_base_classes  s    
37CH55666
38SX66777
38SW55666
38SW55666
3#4cg>>???
36373344444r   c                 *   t           j                                        D ]s\  }}|                     ||          rX|dk    r" |            }t	          |t           j                  r-|                     t          |j                  t                     td S )NIndex)
r2   rN   itemsr:   r   r3   rB   r4   r   r   )r7   r8   itemrT   s       r   test_field_attr_existencez#AST_Tests.test_field_attr_existence  s    ,,,.. 	= 	=JD$  t,, =7?? DFFa)) =$$T!)__e<<<	= 	=r   c                    t          j                    }|                     |j        d           |                     t
                    5  |j         d d d            n# 1 swxY w Y   |                     |j                   t          j        t          dd           }|                     |j        d           |                     |j        d           d S )N)posonlyargsargsrQ   
kwonlyargskw_defaultskwargdefaultsr      rM      )
r2   	argumentsrB   r   rO   rP   r   ra   rQ   rangerS   s     r   test_argumentszAST_Tests.test_arguments  s   MOO %I 	J 	J 	J ~.. 	 	FF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	!(###M5A;;'###1%%%%%s   	AA!$A!c                 p    t          j                    }d|_        |                     |j        d           d S )Ni  )r2   Numr   rB   rS   s     r   test_field_attr_writablez"AST_Tests.test_field_attr_writable  s2    GII	C(((((r   c                    t          j                    }|                     |j        d           |                     t
                    5  |j         d d d            n# 1 swxY w Y   |                     t
                    5  |j         d d d            n# 1 swxY w Y   t          j        d          }|                     |j        d           |                     |j        d           |                     t
                    5  |j         d d d            n# 1 swxY w Y   |                     t
                    5  |j	         d d d            n# 1 swxY w Y   t          j        d          }|                     |j        d           t          j        dd          }|                     |j        d           |                     |j        d           |                     |j        d           |                     |j        d           |                     t          t           j        dd d           |                     t          t           j        dd dd           |                     t          j        dd          j        d           |                     t          j        dd          j        d           |                     t          d	          5  t          j        dd
           d d d            n# 1 swxY w Y   |                     t          d          5  t          j        dd           d d d            n# 1 swxY w Y   |                     t          j        d          j        d           |                     t          j        d          j        d           |                     t          j        d          j        d           |                     t          j        d          j        d           |                     t          j        d          j        d           |                     t          j        d          j        d           |                     t          j        d          j        d           |                     t          j        d           j        d            |                     t          j        d          j        d           |                     t          j        d          j        d           |                     t          j        d          j        d           |                     t          j        d          j        d           |                     t          j        d          j        d           |                     t          j        d          j        d           |                     t          j        d          j        d           |                     t          j        d           j        d            |                     t          j        d          j        d           d S )N)rG   rl   rK   rM   r   r   r   r   )r   z(Num got multiple values for argument 'n'nz1Constant got multiple values for argument 'value'rG         @              @42   42TF.)r2   r   rB   r   rO   rP   rG   r   r   rL   rR   Constantr   assertRaisesRegexStrsBytesassertIsNameConstantrS   s     r   test_classattrszAST_Tests.test_classattrs  s   GII$5666~.. 	 	GG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ~.. 	 	CC	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 GBKK"%%%b!!!~.. 	 	HH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ~.. 	 	HH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 G11%%%GBq!!!1%%%$5666"%%%b!!!)SWaq999)SWaqCCC 	aU3337???...2E:::##I/YZZ 	 	GAOOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	##I/bcc 	% 	%L!$$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	+++$///)5111$///5))+U333c&t,,2D999c&u--3U;;;c&t,,2D999b))/444d++14888e,,2E:::d++14888e,,2E:::cl4((.555cl5))/777cl4((.555cl3''-s33333sl   	AA!$A!BBBDD D>EEEK==LL#MM
M
c                 r   |                      t          t          j        d                    t          j                   |                      t          t          j        d                    t          j                   |                      t          t          j        d                    t          j                   |                      t          t          j        d                    t          j                   |                      t          t          j        d                    t          j                   |                      t          t          j        d                    t          j                   |                      t          t          j        d                    t          j                   |                      t          t          j        d                     t          j                   |                      t          t          j                              t          j                   d S )NrK   r   r   r   r   TF)	rB   r4   r2   r   r   r   r   r   r   r   s    r   test_realtypezAST_Tests.test_realtype  sy   cgbkk**CL999cgdmm,,cl;;;cgenn--s|<<<cgdmm,,cl;;;ci..//>>>c.t4455s|DDDc.u5566EEEc.t4455s|DDDclnn--s|<<<<<r   c           	      v   |                      t          t          j        d          t          j                             |                      t          t          j        d          t          j                             |                      t          t          j        d          t          j                             |                      t          t          j        d          t          j                             |                      t          t          j        d          t          j                             |                      t          t          j        d          t          j                             |                      t          t          j        d          t          j                             |                      t          t          j        d           t          j                             |                      t          t          j                    t          j                             |                      t          t          j        d          t          j                             |                      t          t          j        d          t          j                             |                      t          t          j        d          t          j                             |                      t          t          j        d          t          j                             |                      t          t          j        d          t          j                             |                      t          t          j        d          t          j                             |                      t          t          j        d          t          j                             |                      t          t          j        d           t          j                             |                      t          t          j        d          t          j                             | 	                    t          t          j        d          t          j                             | 	                    t          t          j        d          t          j                             | 	                    t          t          j        d          t          j                             | 	                    t          t          j        d          t          j                             | 	                    t          t          j        d          t          j                             | 	                    t          t          j        d          t          j                             | 	                    t          t          j        d          t          j                             | 	                    t          t          j        d          t          j                             | 	                    t          t          j        d          t          j                             | 	                    t          t          j        d          t          j                             | 	                    t          t          j        d          t          j                             | 	                    t          t          j        d          t          j                             | 	                    t          t          j        d          t          j                             | 	                    t          t          j        d          t          j                             | 	                    t          t          j                    t          j                             | 	                    t          t          j                    t          j                             | 	                    t          t          j                    t          j                             | 	                    t          t          j                    t          j                             | 	                    t          t          j                    t          j                              G d	 d
t                    }|                      t          t          j         |d                    t          j                             | 	                    t          t          j         |d                    t          j                             d S )NrK   g@y        @r   r   TF.c                       e Zd ZdS )$AST_Tests.test_isinstance.<locals>.SNrY   r   r   r   Sr   E  s          r   r   )r   r   r2   r   r   r   r   r   r   assertFalser   )r7   r   s     r   test_isinstancezAST_Tests.test_isinstance  sV   
372;;88999
373<<99:::
374==#'::;;;
374==#'::;;;
39U#3#3SY??@@@
3#3D#9#93;KLLMMM
3#3E#:#:C<LMMNNN
3#3D#9#93;KLLMMM
3<>>3<@@AAA
3<#3#3SW==>>>
3<#4#4cg>>???
3<#5#5sw??@@@
3<#5#5sw??@@@
3<#6#6	BBCCC
3<#5#5s7GHHIII
3<#6#68HIIJJJ
3<#5#5s7GHHIII
3<#4#4clCCDDDCGDMM37;;<<<CGBKK99:::CGDMM39==>>>CGBKK1ABBCCCCGBKK>>???C$4T$:$:CGDDEEEC$4U$;$;SWEEFFFCL$6$6@@AAACL$4$4cg>>???CL$6$6	BBCCCCL$4$4c6FGGHHHCL$4$4clCCDDDCL$6$6@@AAACL$7$7AABBBCLNNCG<<===CLNNCG<<===CLNNCI>>???CLNNC4DEEFFFCLNNCLAABBB
3<$#8#8#'BBCCCCL4$9$937CCDDDDDr   c                     G d dt           j                  } G d dt           j                  } |d          }|                     |j        d           |                     |j        d           |                     t          |          |           |                     t          ||                     |                     t          |t           j                             |                     t          ||                     |                     t          t          j        d          |                      |d          }|                     |j        d           |                     t          |          |           d S )Nc                        e Zd Z fdZ xZS )$AST_Tests.test_subclasses.<locals>.Nc                 H     t                      j        |i | d| _        d S )Nspam)super__init__r   )r7   r   kwargsr   s      r   r   z-AST_Tests.test_subclasses.<locals>.N.__init__K  s*      $1&111r   )r   r5   rZ   r   __classcell__)r   s   @r   Nr   J  s8                         r   r   c                       e Zd ZdS )%AST_Tests.test_subclasses.<locals>.N2NrY   r   r   r   N2r   N  r\   r   r   rK   r   r   )	r2   r   rB   r   r   r4   r   r   r   )r7   r   r   r   s       r   test_subclasseszAST_Tests.test_subclassesI  s|   	  	  	  	  	  	  	  	 	 	 	 	 	 	 	 	 AbEEb!!!f%%%a!$$$
1a(()))
1cg..///Ar**+++CGBKK33444AGGGb!!!a!$$$$$r   c                     t          j        d          g}t          j        |g           }|                     |j        |           d S )NrK   )r2   r   r   rB   r   )r7   r   rT   s      r   test_modulezAST_Tests.test_module]  s@    }JtR  &&&&&r   c           	         t          j                    }|                     |j        d           d|_        |                     |j        d           t          j        d          }t          j        d          }t          j                    }t          j        |||          }|                     |j        |           |                     |j        |           |                     |j	        |           t          j        ddd          }|                     |j        d           |                     |j        d           |                     |j	        d           t          j        dddd          }|                     |j        d           |                     |j        d           |                     |j	        d           |                     |j
        d           |                     t          t           j        dddd           |                     t          t           j        ddddd           t          j        dddd	          }|                     |j        d           |                     |j        d           |                     |j	        d           |                     |j
        d           t          j        dddd
          }|                     |j        d
           d S )N)leftopright   r   r   rM   r   r      )r  r  r  r   rK   )	foobarbaz)r2   BinOprB   r   r  r   Addr  r  r  r   rO   rR   )r7   rT   n1n3addops        r   test_nodeclasseszAST_Tests.test_nodeclassesb  s   IKK$;<<< a(((WQZZWQZZ		Ib%$$$$$u%%%"%%%IaA###q!!!!$$$IaAa(((###q!!!!$$$1%%% 	)SY1a;;;)SY1a1EEE I1!A666###q!!!!$$$1%%% IaA,,,b)))))r   c                 b    t          j                    }|                     |j        d           d S )Nr   )r2   SubrB   r   rS   s     r   test_no_fieldszAST_Tests.test_no_fields  s+    GIIB'''''r   c           	      `   dd l }|g}	 dd l}|                    |           n# t          $ r Y nw xY wg d}|D ]t}|D ]o}d t          D             D ][}|                    |                    ||                    }|                     t          |          t          |                     \pud S )Nr   )r   r   rM   c              3   :   K   | ]}t          |d dd          V  dS )rj   rd   i   N)ru   )r	   rx   s     r   	<genexpr>z*AST_Tests.test_pickling.<locals>.<genexpr>  s0      OOqGAsFE::OOOOOOr   )	picklecPickler   ImportErrorrm   loadsdumpsrB   r   )	r7   r  modsr  	protocolsr   protocolr2   ast2s	            r   test_picklingzAST_Tests.test_pickling  s    x	NNNKK     	 	 	D	II	 	D 	DC% D DOOJOOO D DC99SYYsH%=%=>>D$$Xd^^Xc]]CCCCDD	D 	Ds   # 
00c           	      h   t          dd          }t          j        t          j        t          j        di |fi |gg           }|                     t                    5 }t          |dd           d d d            n# 1 swxY w Y   |                     dt          |j
                             d S )NrM   r   r   r   r   rd   zbut got <ast.exprr   )dictr2   r   Exprr=   rO   rR   ru   assertInr   	exception)r7   posmcms       r   test_invalid_sumzAST_Tests.test_invalid_sum  s    !***JC88C8892>>y)) 	)RAx(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	))3r|+<+<=====s   !A??BBc           	         t          j        t          j        t          j        dt          j                                        gg           }t          j        |           |                     t                    5 }t          |dd           d d d            n# 1 swxY w Y   | 	                    dt          |j                             d S )NrK   r   rd   zidentifier must be of type str)r2   r   r   r   Loadfix_missing_locationsrO   rR   ru   r!  r   r"  )r7   r$  r%  s      r   test_invalid_identifierz!AST_Tests.test_invalid_identifier  s    J"chjj!9!9::;R@@!!$$$y)) 	)RAx(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)6BL8I8IJJJJJs   ;BB Bc                 X   t           ddt           ft          ddt           f          fD ]}t          j        t          j        |                    }t          j        |           |                     t          d          5  t          |dd           d d d            n# 1 swxY w Y   d S )Nr   rM   r   zinvalid type in Constant: typer   rf   )	r   	frozensetr2   
Expressionr   r)  r   rR   ru   )r7   invalid_constantr
   s      r   test_invalid_constantzAST_Tests.test_invalid_constant  s     #aC[)Q3K2H2H H 	- 	-CL1A$B$BCCCA%a((('';  - - 8V,,,- - - - - - - - - - - - - - -	- 	-s    BB"	%B"	c                 H   t          j        d          }d |j        d         j        d         j        _        |                     t
                    5 }t          |dd           d d d            n# 1 swxY w Y   |                     dt          |j	                             d S )Nzdef f():
 yield from g()r   r   rd   zfield 'value' is required)
r2   r~   r   rG   rO   r   ru   r!  r   r"  )r7   empty_yield_fromr%  s      r   test_empty_yield_fromzAST_Tests.test_empty_yield_from  s    9%@AA7;a %a(.4z** 	8b$h777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	813r|3D3DEEEEEs   A//A36A3c                     dd l }d }t          j        |d|          5  |                     t          t
          j        d           d d d            d S # 1 swxY w Y   d S )Nr   c                      d S r   r   r   s    r   bad_normalizez0AST_Tests.test_issue31592.<locals>.bad_normalize  s    4r   	normalizeu   ϕ)unicodedatar   	swap_attrrO   rR   r2   r~   )r7   r9  r7  s      r   test_issue31592zAST_Tests.test_issue31592  s     		 	 	{KGG 	> 	>iH===	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>s   'AAAc                    t          j        d          }|j        d         j        }|j        }|j        }|                     |j        d           |                     |j        d           |                     |j        d           |                     |j        d           |                     |j        d           |                     |j        d           t          j        d          }|j        d         j        }|j        }|j        }|                     |j        d           |                     |j        d           |                     |j        d           |                     |j	        d	           |                     |j        d           |                     |j        d           |                     |j        d	           |                     |j	        d	           |                     |j        d           |                     |j        d           |                     |j        d           |                     |j	        d           d S )
Nz4+5+6+7r   r   r  r   z
4+5-\
 6-7r   r  rM   )
r2   r~   r   rG   r  rB   r   r   r   r   )r7   r   parent_binopchild_binopgrandchild_binops        r    test_issue18374_binop_col_offsetz*AST_Tests.test_issue18374_binop_col_offset  s,   y##y|)"'&+0!4444a888/3333Q777)4a888)8!<<<y((y|)"'&+0!444,a0004a8880!444/333+Q///3Q777/333)4a888)0!444)8!<<<)4a88888r   c                     t          j        d          }|j        d         j        d         j        }|                     |j        d           d S )Nr'   r   r  )r2   r~   r   r<   rG   rB   r   )r7   r   attr_bs      r   *test_issue39579_dotted_name_end_col_offsetz4AST_Tests.test_issue39579_dotted_name_end_col_offset  sG    y0111,Q/5.22222r   c                 L   |                      t          j        j        d           |                      t          j        j        d           |                      t          j        j        d           |                      t          j        j        d           d t          j                                        D             }dt          j                                        d         j         |d<   | 	                    t          j        j        
                    d          |           d S )	Nz0withitem(expr context_expr, expr? optional_vars)GtEz%Name(identifier id, expr_context ctx)zBcmpop = Eq | NotEq | Lt | LtE | Gt | GtE | Is | IsNot | In | NotInc                 "    g | ]}d |j          S )z     | )__doc__)r	   r9   s     r   r   z5AST_Tests.test_ast_asdl_signature.<locals>.<listcomp>  s#    VVVD///VVVr   zexpr = r   
)rB   r2   withitemrG  rE  r   cmpopr=   __subclasses__assertCountEqualsplit)r7   expressionss     r   test_ast_asdl_signaturez!AST_Tests.test_ast_asdl_signature  s    -/abbb%000)+RSSS*,pqqqVVCH<S<S<U<UVVVI38#:#:#<#<Q#?#GIIAch.44T::KHHHHHr   c                    t          j        dd           t          j        dd           |                     t                    5  t          j        dd           d d d            n# 1 swxY w Y   |                     t                    5  t          j        dd           d d d            n# 1 swxY w Y   t          j        dd           t          j        dd           |                     t                    5  t          j        dd           d d d            n# 1 swxY w Y   |                     t                    5  t          j        dd           d d d            d S # 1 swxY w Y   d S )Nzdef foo(x, /): ...r   r   feature_versionzdef bar(x=1, /): ...r   r   zlambda x, /: ...zlambda x=1, /: ...r2   r~   rO   SyntaxErrorr   s    r   $test_positional_only_feature_versionz.AST_Tests.test_positional_only_feature_version  s   	&????	(&AAAA{++ 	D 	DI*FCCCC	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D{++ 	F 	FI,fEEEE	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 		$f====	&????{++ 	B 	BI(&AAAA	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B{++ 	D 	DI*FCCCC	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	DsH   A**A.1A.B22B69B6D&&D*-D*E//E36E3c                    t          j        dd           t          j        dd           |                     t                    5  t          j        dd           d d d            n# 1 swxY w Y   t          j        dd           d S )Nz#with (CtxManager() as example): ...r   r   rR  )r   	   rQ  z!with CtxManager() as example: ...rU  r   s    r   'test_parenthesized_with_feature_versionz1AST_Tests.test_parenthesized_with_feature_version  s    	7QQQQ	7PPPP{++ 	U 	UI;VTTTT	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U	5vNNNNNNs   A**A.1A.c                     t          j        dd           |                     t                    5  t          j        dd           d d d            d S # 1 swxY w Y   d S )Nzf"{x=}"rQ  rR  rT  rU  r   s    r   #test_debug_f_string_feature_versionz-AST_Tests.test_debug_f_string_feature_version  s    	)V4444{++ 	9 	9Ii8888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9   AAAc                     t          j        dd           |                     t                    5  t          j        dd           d d d            d S # 1 swxY w Y   d S )Nz(x := 0)rQ  rR  rT  rU  r   s    r   *test_assignment_expression_feature_versionz4AST_Tests.test_assignment_expression_feature_version  s    	*f5555{++ 	: 	:Ij&9999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:r^  c                     t          d          }t          j        |           |                     t                    5  t          j        |d           d d d            d S # 1 swxY w Y   d S )Nz9
        try: ...
        except* Exception: ...
        rY  rR  )r   r2   r~   rO   rV  )r7   codes     r   %test_exception_groups_feature_versionz/AST_Tests.test_exception_groups_feature_version  s        		${++ 	5 	5IdG4444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5s   A""A&)A&c                 8   dD ]}t          j        t          j        |t          j                                        }t          j        |           |                     t          d| d          5  t          |dd           d d d            n# 1 swxY w Y   d S )N)TrueFalser#   z"identifier field can't represent 'z
' constantr   rf   )r2   r.  r   r(  r)  r   r   ru   )r7   constantr=   s      r   test_constant_as_namezAST_Tests.test_constant_as_name"  s    / 	0 	0H>#(8SXZZ"@"@AAD%d+++''
4mYa4m4m4mnn 0 0h///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0	0 	0s   0BB	B	c                 t     G d dt           j                  }t          j        |t          j                   d S )Nc                   6   e Zd Z	  ej                    Z ej                    Z ej                    Z ej                    Z ej                    Z	 ej                    Z
 ej                    Z ej                    Z ej                    ZeZ ej                    Z ej                    Z ej                    Z ej                    Z ej                    Z ej                    Z ej                    Z ej                    Z ej                    Zd ZdS )3AST_Tests.test_precedence_enum.<locals>._Precedencec                 X    	 |                      | dz             S # t          $ r | cY S w xY w)Nr   )r   r   r   s    r   nextz8AST_Tests.test_precedence_enum.<locals>._Precedence.next@  sA     >>$(333!      KKK s    ))N)r   r5   rZ   enumauto
NAMED_EXPRTUPLEYIELDTESTORANDNOTCMPEXPRBORBXORBANDSHIFTARITHTERMFACTORPOWERAWAITATOMrm  r   r   r   _Precedencerk  *  s       G"JDIKKEDIKKE49;;DB$)++C$)++C$)++C49;;DC49;;D49;;DDIKKEDIKKE49;;DTY[[FDIKKEDIKKE49;;D         r   r  )rn  IntEnum_test_simple_enumr2   r  )r7   r  s     r   test_precedence_enumzAST_Tests.test_precedence_enum)  sK    	  	  	  	  	 $, 	  	  	 6 	{CO<<<<<r   c                      t          j                    dz  t          j                    dz  t          dz             fd} |dd            |dd            |dd            |dd	           d S )
Nr   i,  g      ?c                 r   | |	z  z   }t          j        |           fD ]}| ||z  z   }d                    | ||          }                    t          |          5  t          j                    5  t          j        |           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d S )NzCompiling ({!r} + {!r} * {})msg)r2   r~   formatrO   RecursionErrorr   infinite_recursion)
prefixrepeated	expect_okdepthbrokendetailscrash_depth
fail_depthr7   success_depths
         r   check_limitz7AST_Tests.test_ast_recursion_limit.<locals>.check_limitM  sN   M!99IIi   $k2 * *(U"228??"He5 5&&~7&CC * * 355 * *	&)))* * * * * * * * * * * * * * ** * * * * * * * * * * * * * *	* *s6   B+3BB+BB+BB++B/	2B/	r]   r.   z.bz[0]z*a)sysgetrecursionlimitr   )r7   r  r  r  r  s   ` @@@r   test_ast_recursion_limitz"AST_Tests.test_ast_recursion_limitG  s    *,,q0
+--3J-..		* 		* 		* 		* 		* 		* 		* 		* 	CCCCr   c                     |                      t          d          5  t          j        d           d d d            d S # 1 swxY w Y   d S )Nz,source code string cannot contain null bytesr  za b)rO   rV  r2   r~   r   s    r   test_null_byteszAST_Tests.test_null_bytes]  s    {>  @ @ 	 	If	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   ?AAr9   attrsourcereturnNc                    |                      |j         d|           5  t          j        |          }d}t          j        |          D ](}t          ||          rt          ||d            |dz  })|                     |d           t          j	        d| d|j                   }| 
                    t          d| d          5  t          |dd	           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )
N.r   r   zfield 'z' is required for ^$r   rd   )rt   r   r2   r~   walkr   setattrrB   reescaper   r   ru   )r7   r9   r  r  r   foundrI   r
   s           r   assert_none_checkzAST_Tests.assert_none_checkb  s   \\T]33T3344 
	0 
	09V$$DE$  eT** E4...QJEUA&&&	KDKKDMKKLLA''
HHHH== 0 0h///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
	0 
	0 
	0 
	0 
	0 
	0 
	0 
	0 
	0 
	0 
	0 
	0 
	0 
	0 
	0 
	0 
	0 
	0s6   B(C>C&C>&C*	*C>-C*	.C>>DDc           	         t           j        ddft           j        ddft           j        ddft           j        ddft           j        d	d
ft           j        ddft           j        ddfg}|D ]\  }}}|                     |||           d S )Nr8   zimport spam as SPAMargzdef spam(SPAM): spamtargetz[spam for SPAM in spam]iterz[spam for spam in SPAM]rG   zspam(**SPAM)patternzmatch spam:
 case SPAM: spamcontext_exprzwith SPAM: spam)r2   r   r  r   keyword
match_caserI  r  )r7   testsr9   r  r  s        r   test_none_checkszAST_Tests.test_none_checkso  s    Y 56We34*CD(AB['>2^Y(GH\>+<=
 #( 	7 	7D$""4v6666	7 	7r   )r  N)4r   r5   rZ   r:   rA   rU   rb   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r&  r*  r0  r3  r   cpython_onlyr;  r@  rC  rO  rW  r[  r]  r`  rc  rh  r  r  r  r4   r2   r3   r   r  r  r   r   r   r0   r0     s       3 3 3D D D&  	! 	! 	!
1 
1 
1. . .6 6 64* * *$ $ $% % %' ' '$3 $3 $3L5 5 5	= 	= 	=& & &) ) ):4 :4 :4x	= 	= 	=-E -E -E^% % %(' ' '
** ** **X( ( (
D D D> > >K K K- - -F F F > > >9 9 9>3 3 3
I I ID D DO O O9 9 9
: : :
5 5 50 0 0= = =<   *  
0d37m 03 0 0PT 0 0 0 07 7 7 7 7 7r   r0   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 Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )ASTHelpers_TestNc                     t          j        d          }t          dddt           j                  }|                     t          j        |          t          j        |                     d S )Nz
foo(1 + 1)z	<unknown>rd   )r2   r~   ru   rv   rB   dump)r7   r]   bs      r   
test_parsezASTHelpers_Test.test_parse  sS    Il##L+vs7HII!chqkk22222r   c                     	 ddz   d S # t           $ ri |                     t                    5 }t          j        d           d d d            n# 1 swxY w Y   |                     |j        j                   Y d S w xY w)Nr   r   z'\U')	ExceptionrO   rV  r2   literal_evalassertIsNotNoner"  __context__r7   r
   s     r   test_parse_in_errorz#ASTHelpers_Test.test_parse_in_error  s    	:aCCCC 	: 	: 	:"";// *1 )))* * * * * * * * * * * * * * *  !8999999	:s2   	 $A<AA<A	A<A	"A<;A<c                 &   t          j        d          }|                     t          j        |          d           |                     t          j        |d          d           |                     t          j        |d          d           d S )	Nspam(eggs, "and cheese")zModule(body=[Expr(value=Call(func=Name(id='spam', ctx=Load()), args=[Name(id='eggs', ctx=Load()), Constant(value='and cheese')], keywords=[]))], type_ignores=[])Fannotate_fieldszbModule([Expr(Call(Name('spam', Load()), [Name('eggs', Load()), Constant('and cheese')], []))], [])Tinclude_attributesa  Module(body=[Expr(value=Call(func=Name(id='spam', ctx=Load(), lineno=1, col_offset=0, end_lineno=1, end_col_offset=4), args=[Name(id='eggs', ctx=Load(), lineno=1, col_offset=5, end_lineno=1, end_col_offset=9), Constant(value='and cheese', lineno=1, col_offset=11, end_lineno=1, end_col_offset=23)], keywords=[], lineno=1, col_offset=0, end_lineno=1, end_col_offset=24), lineno=1, col_offset=0, end_lineno=1, end_col_offset=24)], type_ignores=[])r2   r~   rB   r  r7   r9   s     r   	test_dumpzASTHelpers_Test.test_dump  s    y344$/	
 	
 	

 	$>>>2	
 	
 	
 	$4@@@Z	
 	
 	
 	
 	
r   c                 .   t          j        d          }|                     t          j        |d          d           |                     t          j        |dd          d           |                     t          j        |d	d
          d           d S )Nr  r   indentzModule(
   body=[
      Expr(
         value=Call(
            func=Name(id='spam', ctx=Load()),
            args=[
               Name(id='eggs', ctx=Load()),
               Constant(value='and cheese')],
            keywords=[]))],
   type_ignores=[])F	)r  r  zModule(
	[
		Expr(
			Call(
				Name('spam', Load()),
				[
					Name('eggs', Load()),
					Constant('and cheese')],
				[]))],
	[])T)r  r  a  Module(
   body=[
      Expr(
         value=Call(
            func=Name(
               id='spam',
               ctx=Load(),
               lineno=1,
               col_offset=0,
               end_lineno=1,
               end_col_offset=4),
            args=[
               Name(
                  id='eggs',
                  ctx=Load(),
                  lineno=1,
                  col_offset=5,
                  end_lineno=1,
                  end_col_offset=9),
               Constant(
                  value='and cheese',
                  lineno=1,
                  col_offset=11,
                  end_lineno=1,
                  end_col_offset=23)],
            keywords=[],
            lineno=1,
            col_offset=0,
            end_lineno=1,
            end_col_offset=24),
         lineno=1,
         col_offset=0,
         end_lineno=1,
         end_col_offset=24)],
   type_ignores=[])r  r  s     r   test_dump_indentz ASTHelpers_Test.test_dump_indent  s    y344$q111 
4 
	 
	 
	 	$dKKK 
N	 
	
 
	
 
	
 	$4JJJ #M #	 #	 #	 #	 #	r   c                    t          j        dd          }|                     t          j        |          d           |                     t          j        |d          d           t          j        t          j        dt          j                    	          dd
          }|                     t          j        |          d           |                     t          j        |d          d           |                     t          j        |d          d           |                     t          j        |dd          d           t          j        t          j        dt          j                    	                    }|                     t          j        |          d           |                     t          j        |d          d           d S )Nr   r  r  zRaise()Tr  zRaise(lineno=3, col_offset=4)r
   )idctx)excr   r   z#Raise(exc=Name(id='e', ctx=Load()))Fr  zRaise(Name('e', Load()))z;Raise(exc=Name(id='e', ctx=Load()), lineno=3, col_offset=4))r  r  z0Raise(Name('e', Load()), lineno=3, col_offset=4))causez%Raise(cause=Name(id='e', ctx=Load()))zRaise(cause=Name('e', Load())))r2   RaiserB   r  r   r(  r  s     r   test_dump_incompletez$ASTHelpers_Test.test_dump_incomplete  s   ya000$	
 	
 	
 	$4@@@+	
 	
 	
 ySX#(**===aTUVVV$1	
 	
 	
 	$>>>&	
 	
 	
 	$4@@@I	
 	
 	
 	$RVWWW>	
 	
 	
 ysx3CHJJ???@@@$3	
 	
 	
 	$>>>,	
 	
 	
 	
 	
r   c                 R   t          j        dd          }t          j        t          j        d          |j        j                  |j        _        |                     t          j        |d          d           t          j        dddd	          }t          j        |t          j        d d 
                    }| 	                    |j
                   | 	                    |j                   |                     |j        d           |                     |j        d           d S )N1 + 1rf   moderM   Tr  zExpression(body=BinOp(left=Constant(value=1, lineno=1, col_offset=0, end_lineno=1, end_col_offset=1), op=Add(), right=Constant(value=2, lineno=1, col_offset=4, end_lineno=1, end_col_offset=5), lineno=1, col_offset=0, end_lineno=1, end_col_offset=5))r   )r   r   r   r   )r   r   )r2   r~   copy_locationr   r   r  rB   r  Callra   r   r   r   r   )r7   srcnews      r   test_copy_locationz"ASTHelpers_Test.test_copy_location  s   if---*371::sx~FF#$???=	
 	
 	
 h!A!ANNNSXd%K%K%KLL#.)))#,---Q'''+++++r   c                    t          j        d          }|j                            t          j        t          j        t          j        dt          j                              t          j        d          gg                                | 	                    |t          j
        |                     d | _        | 	                    t          j        |d          d           d S )Nzwrite("spam")r   eggsTr  a  Module(body=[Expr(value=Call(func=Name(id='write', ctx=Load(), lineno=1, col_offset=0, end_lineno=1, end_col_offset=5), args=[Constant(value='spam', lineno=1, col_offset=6, end_lineno=1, end_col_offset=12)], keywords=[], lineno=1, col_offset=0, end_lineno=1, end_col_offset=13), lineno=1, col_offset=0, end_lineno=1, end_col_offset=13), Expr(value=Call(func=Name(id='spam', ctx=Load(), lineno=1, col_offset=0, end_lineno=1, end_col_offset=0), args=[Constant(value='eggs', lineno=1, col_offset=0, end_lineno=1, end_col_offset=0)], keywords=[], lineno=1, col_offset=0, end_lineno=1, end_col_offset=0), lineno=1, col_offset=0, end_lineno=1, end_col_offset=0)], type_ignores=[]))r2   r~   r   r   r   r  r   r(  r   rB   r)  maxDiffr  r7   r  s     r   test_fix_missing_locationsz*ASTHelpers_Test.test_fix_missing_locations  s    i((#(638::*F*F+.76??*;R"A "A B B 	C 	C 	Cc7<<===#$???
	
 	
 	
 	
 	
r   c                    t          j        dd          }|                     t          j        |d          |           |                     t          j        |d          d           t          j        dd          }|                     t          j        |j        d          |j                   |                     t          j        |d          d           t          j        t          j        d	t          j                              g g d
          }|                     t          j        |          j	        d           | 
                    t          j        |          j                   d S )Nr  rf   r  r   r   Tr  zExpression(body=BinOp(left=Constant(value=1, lineno=4, col_offset=0, end_lineno=4, end_col_offset=1), op=Add(), right=Constant(value=1, lineno=4, col_offset=4, end_lineno=4, end_col_offset=5), lineno=4, col_offset=0, end_lineno=4, end_col_offset=5))testr   )funcr   keywordsr   rM   )r2   r~   rB   increment_linenor  r   r  r   r(  r   ra   r   r  s     r   test_increment_linenoz%ASTHelpers_Test.test_increment_lineno  sY   if----cQ777===#$???=	
 	
 	
 if----ch!<<<chGGG#$???=	
 	
 	
 h&#(**--BA
 
 
 	-c2291===#.s33>?????r   c                 \   t          j        t          d          d          }t          j        |d           |                     |j        d         j        d           |                     |j        d         j        d	           |                     |j        d         j        d
           d S )Nzb        a = 1
        b = 2 # type: ignore
        c = 3
        d = 4 # type: ignore@tag
        T)type_commentsr  r   r   r   r   rZ  z@tag)r2   r~   r   r  rB   r   r   tagr  s     r   test_increment_lineno_on_modulez/ASTHelpers_Test.test_increment_lineno_on_module7  s    i    
 !" " " 	SA&&&&)!,3Q777)!,3Q777)!,0&99999r   c                    t          j        dd          }t          t          j        |j                            }|                     |                    d          j        d           |                     |g g d           d S )Nfoo()rf   r  r  r   )r  r   )r2   r~   r  iter_fieldsr   rB   popr  )r7   r9   ds      r   test_iter_fieldsz ASTHelpers_Test.test_iter_fieldsC  sv    yv...++,,v)5111R8899999r   c           	      L   t          j        dd          }|                     t          t	          t          j        |j                                      d           t          j        |j                  }|                     t          |          j        d           |                     t          |          j	        d           |                     t          |          j	        d           |                     t          j
        t          |                    d           d S )	Nzspam(23, 42, eggs='leek')rf   r  r  r      rK   z1keyword(arg='eggs', value=Constant(value='leek')))r2   r~   rB   r   r   iter_child_nodesr   rm  r  rG   r  )r7   r9   iterators      r   test_iter_child_nodesz%ASTHelpers_Test.test_iter_child_nodesI  s    y46BBBT#"6ty"A"ABBCCQGGG'	22h*F333h-r222h-r222$x..11?	
 	
 	
 	
 	
r   c                 (   t          j        d          }|                     t          j        |          d           t          j        d          }|                     t          j        |j        d                   d           t          j        d          }|                     t          j        |j        d                   d           t          j        d          }|                     t          j        |j        d                   d           d S )Nz"""line one
  line two"""zline one
line twoz&class foo:
  """line one
  line two"""r   z&def foo():
  """line one
  line two"""z#async def foo():
  """spam
  ham"""zspam
ham)r2   r~   rB   get_docstringr   r  s     r   test_get_docstringz"ASTHelpers_Test.test_get_docstringT  s    y566*400-	/ 	/ 	/ yCDD*49Q<88-	/ 	/ 	/ yCDD*49Q<88-	/ 	/ 	/ y@AA*49Q<88+FFFFFr   c                 8   |                      t          j        t          j        d                               t          j        d          }|                      t          j        |                     t          j        d          }|                      t          j        |                     t          j        d          }|                      t          j        |j        d                              t          j        d          }|                      t          j        |j        d                              t          j        d          }|                      t          j        |j        d                              t          j        d          }|                      t          j        |j        d                              t          j        d          }|                      t          j        |j        d                              t          j        d	          }|                      t          j        |j        d                              t          j        d
          }|                      t          j        |j        d                              d S )N zx = "not docstring"zdef foo():
  passzclass foo:
  passr   z class foo:
  x = "not docstring"z class foo:
  def bar(self): passz def foo():
  x = "not docstring"zasync def foo():
  passz&async def foo():
  x = "not docstring")ra   r2   r  r~   r   r  s     r   test_get_docstring_nonez'ASTHelpers_Test.test_get_docstring_noned  s    #+CIbMM::;;;y.//#+D11222y-..#+D11222y-..#+DIaL99:::y<==#+DIaL99:::y<==#+DIaL99:::y-..#+DIaL99:::y<==#+DIaL99:::y344#+DIaL99:::yBCC#+DIaL99:::::r   c                    t          j        d          }|                     |j        d         j        d           |                     |j        d         j        d           |                     |j        d         j        d         j        d           |                     |j        d         j        d         j        d           |                     |j        d         j        d         j        d         j        d           |                     |j        d         j        d         j        d         j        d           |                     |j        d         j        d         j        d           |                     |j        d         j        d         j        d           |                     |j        d         j        d           |                     |j        d         j        d	           d S )
Nz"""line one
line two"""

def foo():
  """line one
  line two"""

  def bar():
    """line one
    line two"""
  """line one
  line two"""
"""line one
line two"""

r   r   rM   r  r  rZ        )r2   r~   rB   r   r   r   r  s     r   :test_multi_line_docstring_col_offset_and_lineno_issue16806zJASTHelpers_Test.test_multi_line_docstring_col_offset_and_lineno_issue16806|  s   y+
 
 	10!4441,a0001*1-8!<<<1*1-4a8881*1-215@!DDD1*1-215<a@@@1*1-8!<<<1*1-4b99910!4441,b11111r   c                     t          j        d          }|j        d         j        d         }|                     |j        d           |                     |j        d           d S )Nz if a:
    pass
elif b:
    pass
r   r   r2   r~   r   orelserB   r   r   r7   r9   	elif_stmts      r   test_elif_stmt_start_positionz-ASTHelpers_Test.test_elif_stmt_start_position  s]    y?@@IaL'*	)1----q11111r   c                     t          j        d          }|j        d         j        d         }|                     |j        d           |                     |j        d           d S )Nz/if a:
    pass
elif b:
    pass
else:
    pass
r   r   r  r  s      r   'test_elif_stmt_start_position_with_elsez7ASTHelpers_Test.test_elif_stmt_start_position_with_else  s]    yPQQIaL'*	)1----q11111r   c                     t          j        d          }|j        d         j        j        d         }|                     |j        d           |                     |j        d           d S )Nr*   r   r   rZ  )r2   r~   r   rG   r   rB   r   r   )r7   r9   starred_exprs      r   *test_starred_expr_end_position_within_callz:ASTHelpers_Test.test_starred_expr_end_position_within_call  s_    y&&y|).q10!4444a88888r   c                    |                      t          j        d          g d           |                      t          j        d          ddi           |                      t          j        d          d           |                      t          j        d          h d	           |                      t          j        d
          d           |                      t          j        d          t                                 |                     t
          t          j        d           |                      t          j        d          d           |                      t          j        d          d           |                      t          j        d          d           |                      t          j        d          d           |                      t          j        d          d           |                      t          j        d          d           |                      t          t          j        d                    d           |                     t
          t          j        d           |                     t
          t          j        d           |                     t
          t          j        d           d S )Nz	[1, 2, 3]r   rM   r   z{"foo": 42}r   rK   z(True, False, None))TFNz	{1, 2, 3}>   r   rM   r   zb"hi"s   hizset()r  6   z+6z-6iz3.25g      
@z+3.25z-3.25g      
z-0.0z++6z+Truez2+3)rB   r2   r  setrO   r   reprr   s    r   test_literal_evalz!ASTHelpers_Test.test_literal_eval  s;   )+66			BBB)-885"+FFF)*?@@BUVVV)+66			BBB)'22E:::)'22CEE:::*c&6@@@)#..222)$//333)$//444)&114888)'22D999)'22E:::c.v6677@@@*c&6>>>*c&6@@@*c&6>>>>>r   c                    t          j        d          5  t          j        d           |                     t
                    5 }t          j        d           d d d            n# 1 swxY w Y   |                     dt          |j                             |                     dt          |j                             d d d            d S # 1 swxY w Y   d S )Ni    3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333  33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333zExceeds the limit z Consider hexadecimal )	r   adjust_int_max_str_digitsr2   r  rO   rV  r!  r   r"  )r7   err_ctxs     r   test_literal_eval_str_int_limitz/ASTHelpers_Test.test_literal_eval_str_int_limit  sS   .t44 	L 	LX&&&"";// +7 ***+ + + + + + + + + + + + + + +MM.G4E0F0FGGGMM2C8I4J4JKKK	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	Ls6   /CA%C%A)	)C,A)	-ACCCc                    |                      t          j        d          d           |                      t          j        d          d           |                      t          j        d          d           |                      t          j        d          d           |                      t          j        d	          d
           |                      t          j        d          d           |                      t          j        d          d           |                      t          j        d          d           |                      t          j        d          d           |                      t          j        d          d           |                      t          j        d          d           |                      t          j        d          d           |                      t          j        d          d
           |                     t          t          j        d           |                     t          t          j        d           |                     t          t          j        d           |                     t          t          j        d           |                     t          t          j        d           d S )N6jy              @z-6jy             z6.75jy              @z-6.75jy             z3+6jy      @      @z-3+6jy            @z3-6jy      @      z-3-6jy            z
3.25+6.75jy      
@      @z-3.25+6.75jy      
      @z
3.25-6.75jy      
@      z-3.25-6.75jy      
      z(3+6j)z-6j+3z-6j+3jz3+-6jz3+(0+6j)z-(3+6j))rB   r2   r  rO   r   r   s    r   test_literal_eval_complexz)ASTHelpers_Test.test_literal_eval_complex  s<   )$//444)%00#666)'22E:::)(33V<<<)&114888)'22E:::)&114888)'22E:::),77DDD)-88+FFF),77DDD)-88+FFF)(33T:::*c&6@@@*c&6AAA*c&6@@@*c&6
CCC*c&6	BBBBBr   c                    t          j        t          j        d          t          j        d          gt          j        d          g          }|                     t          t           j        |           t          j        t          j        d          gt          j        d          t          j        d          g          }|                     t          t           j        |           d S )Nr   rM   r   )keysvalues)r2   Dictr   rO   r   r  )r7   	malformeds     r   &test_literal_eval_malformed_dict_nodesz6ASTHelpers_Test.test_literal_eval_malformed_dict_nodes  s    H3<??CLOO"Dcl[\ooM^___	*c&6	BBBH3<??"3S\!__cl[\oo<^___	*c&6	BBBBBr   c                 B   |                      t          j        d          d           |                      t          j        d          d           |                      t          j        d          d           |                     t          t          j        d           d S )Nz    -1r   z		-1z 	 -1z
 -1)rB   r2   r  rO   IndentationErrorr   s    r   test_literal_eval_trailing_wsz-ASTHelpers_Test.test_literal_eval_trailing_ws  s    )(33R888)(33R888)(33R888*C,<gFFFFFr   c           	      ,   d}|                      t          |          5  t          j        d           d d d            n# 1 swxY w Y   t          j        t          j                    t          j        t          j                    t          j        d                              }|                     t          |dd                      d}|                      t          |          5  t          j        |           d d d            d S # 1 swxY w Y   d S )Nz#malformed node or string on line 3:z{'a': 1,
'b':2,
'c':++3,
'd':4}r  r   zmalformed node or string:)	r   r   r2   r  UnaryOpUAddr   ra   r   )r7   r  r9   s      r   "test_literal_eval_malformed_linenoz2ASTHelpers_Test.test_literal_eval_malformed_lineno  s   4##J44 	C 	CABBB	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C {HJJCHJJQ@@B B'$$77888*##J44 	# 	#T"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#s!   ?AA'D		DDc                     |                      t          d          5  t          j        d           d d d            d S # 1 swxY w Y   d S )Nzunexpected indentz4
                \
                (\
            \ )r   rV  r2   r  r   s    r   test_literal_eval_syntax_errorsz/ASTHelpers_Test.test_literal_eval_syntax_errors  s    ##K1DEE 	 	    	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   >AAc                 b   t          j        dt          j        d          gd d d           g}t          j        |g           }|                     t
                    5 }t          |dd           d d d            n# 1 swxY w Y   |                     dt          |j	                             d S )Ntimesleepr8   r   r   levelr   r   r  rd   zinvalid integer value: None)
r2   r   r   r   rO   r   ru   r!  r   r"  )r7   r   r   r%  s       r   test_bad_integerz ASTHelpers_Test.test_bad_integer  s    f&)iW&=&=&=%>%)&*t= = = > jr""z** 	)bC(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)3S5F5FGGGGGs   A<<B B c                    t          j        dt          j        ddd          gd dd          g}t          j        |g           }t	          |dd          }i }t          ||           |                     d|           d S )Nr/  r0  r   r   r2  r  rd   )r2   r   r   r   ru   rd   r!  )r7   r   r   rb  nss        r   test_level_as_nonez"ASTHelpers_Test.test_level_as_none  s    f&)iW78Q'H 'H 'H &I%)&'A	7 7 7 8
 jr""sFF++T2gr"""""r   c                 f   t          j        t          j                    dd          }||_        |                     t
                    5  t          j                    5  t          t          j	        |          dd           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S Nr   )r  r   r   r   rf   
r2   r)  NotoperandrO   r  r   r  ru   r.  r  s     r   test_recursion_directz%ASTHelpers_Test.test_recursion_direct  s   K3799Q1===	~.. 	= 	=+-- = =q))8V<<<= = = = = = = = = = = = = = =	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=s6   
B&$BB&B	B&B	B&&B*-B*c                    t          j        t          j                    dd          }t          j        t          j                    dd          }||_        ||_        |                     t
                    5  t          j                    5  t          t          j	        |          dd           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S r9  r:  )r7   r
   r"   s      r   test_recursion_indirectz'ASTHelpers_Test.test_recursion_indirect  s@   K3799Q1===K3799Q1===		~.. 	= 	=+-- = =q))8V<<<= = = = = = = = = = = = = = =	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=s6   9C$B=1C=C	CC	CCC) r   r5   rZ   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r  r  r  r$  r'  r+  r-  r4  r7  r=  r?  r   r   r   r  r  |  s       G3 3 3
: : :
 
 
*; ; ;z
 
 
:, , , 
 
 
(@ @ @0
: 
: 
:: : :	
 	
 	
G G G ; ; ;02 2 2&2 2 22 2 29 9 9? ? ?&L L LC C C*C C CG G G
# 
# 
#  	H 	H 	H
# 
# 
#= = == = = = =r   r  c                   |	   e Zd ZdFeddZdGeddZdGd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" 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/d0 Z0d1 Z1d2 Z2 e3j4        d3          Z5 e3j6        e5          Z7 e3j4        d4          Z8 e3j6        e8          Z9 e3j4        d5          Z: e3j;        d5          Z< e3j=        d6 e3j>                              Z? e3j6         e3j@         e3j@         e3j=        d4 e3jA                              d7 e3j>                              d8 e3j>                                         e3j6         e3j@         e3j@         e3j=        d4 e3j>                              d7 e3jA                              d8 e3j>                                         e3j6         e3j4        d9                     e3j6         e3j4        d5                     e3j6         e3j4        d:                     e3j;        d;           e3jB         e3j;        d;          g           e3jB         e3jB         e3j;        d;          g          g           e3jC        e5e:ge9g           e3jC        e:e5ge9e7gd<=           e3jC        e: e3jD         e3j=        d> e3j>                               e3j>                              ge9e7gd?=           e3jE         e3j@         e3j@        e8d7 e3j>                              d8 e3j>                              g g g @           e3jE        e?g d<ge7g@           e3jE        e?g g e7g@           e3jE        e? e3j;        d;          gg g @           e3jE        e? e3jF                    gg g @           e3jE        e?g g  e3jF                    g@           e3jE        e:g d<ge7g@           e3jB         e3jF        d<          g           e3jG        dAB           e3jH        g            e3jH        e7g           e3jH        e7e9 e3j;        dC          g           e3jG        dDB           e3jF        d4B           e3jB         e3jF        dD          g           e3jC        g g dD=          gZIdE ZJdS )HASTValidatorTestsNrd   r  c                @   dx|_         |_        t          j        |           |t	          |d|           d S |                     |          5 }t	          |d|           d d d            n# 1 swxY w Y   |                     |t          |j                             d S )Nr   r   )	r   r   r2   r)  ru   rO   r!  r   r"  )r7   r   r  r  r  r%  s         r   r   zASTValidatorTests.mod  s    &''
S^!#&&&;C4(((((""3'' -2Xt,,,- - - - - - - - - - - - - - -MM#s2<0011111s   A++A/2A/c                    t          j        t          j        |          gg           }|                     |||           d S )NrB  )r2   r   r   r   )r7   r9   r  r  r   s        r   r=   zASTValidatorTests.expr$  s<    j#(4..)2..cs#####r   c                 ^    t          j        |gg           }|                     ||           d S r   )r2   r   r   )r7   r>   r  r   s       r   r>   zASTValidatorTests.stmt(  s/    j$$$cr   c           	      h   t          j        t          j        t          j        dt          j                                        g          }|                     |dd           t          j        t          j        dt          j                                        }|                     |dd           d S )NrT   must have Load contextre   rf   )r2   Interactiver   r   Storer   r.  )r7   r$  s     r   r   zASTValidatorTests.test_module,  s    OSXchsCIKK&@&@AABCC,h777N38C5566,f55555r   c                     	 	 	 dfd	}t          j        dt          j        dt          j                                        g} | ||          d            | ||          d            | ||          d            | |t          j        d          g          d	            | |t          j        d
          g          d           t          j        dt          j        dt          j                                        g} | ||t          j        dt          j                              g          d           t          j        dt          j        dt          j                                        t          j        dt          j        dt          j                                        g} | ||d t          j        dt          j                              g          d           d S )Nc           	      v    | g } |g }|g }|g }|g }t          j        | ||||||          }  |           S r   )r2   r   )r   r   rQ   r   r   r   r   facs          r   r   z5ASTValidatorTests._check_arguments.<locals>.arguments3  si     |" !
" ={FJ!,eX? ?D3t99r   rT   r6  rG  )r   )r   r   )r   z"more positional defaults than argsr  )r   z3length of kwonlyargs is not the same as kw_defaults)r   r   r]   r  r   )r   r   )NNNNNNN)r2   r  r   rI  r   r(  )r7   rL  checkr   r   s    `   r   _check_argumentsz"ASTValidatorTests._check_arguments2  s   :>-115	 	 	 	 	 	  SXc39;;77889iiT"""$<===iiD)))+CDDDii4(((*BCCCii#'!**...;	= 	= 	=iiSWQZZL111L	N 	N 	NSXc38::66778iiTSXc39;;-G-G,HIII/	1 	1 	1SXc38::6677SXc38::66779ii4'+SXc39;;-G-G&HJ J J2	4 	4 	4 	4 	4r   c                 d   t          j        g g d g g d g           }t          j        d|g g d           }|                     |d           t          j        d|t          j                    gt          j        dt          j                              gd           }|                     |d           t          j        d|t          j                    gg t          j        dt          j                                        }|                     |d           d }|                     || j                   d S )NrT   zempty body on FunctionDefrG  c                 V    t          j        d| t          j                    gg d           S NrT   )r2   FunctionDefPassr6  s    r   rL  z+ASTValidatorTests.test_funcdef.<locals>.fac^  s"    ?3sxzzlBEEEr   )r2   r   rR  r>   rS  r   rI  rN  )r7   r]   r"   rL  s       r   test_funcdefzASTValidatorTests.test_funcdefT  s   M"b$Bb99OCBD11		!0111OCSXZZL38C3M3M2N " "		!-...OCSXZZL"HS#)++668 8		!-...	F 	F 	Fc49-----r   c                 T   d
d}|                       |t          j        dt          j                              g          d           |                       |t          j        dt          j        dt          j                                        g          d           |                       |g           d           |                       |d g          d           |                       |t          j        dt          j                              g	          d           d S )Nc                 v    | g } |g }|t          j                    g}|g }t          j        d| |||          S )Nmyclass)r2   rS  ClassDef)basesr  r   r<   s       r   clsz,ASTValidatorTests.test_classdef.<locals>.clsc  sS    }|

|%!#<	5( $n6 6 6r   rT   )rY  rG  )r  r,  zempty body on ClassDefNone disallowed)r<   )NNNN)r>   r2   r   rI  r  )r7   rZ  s     r   test_classdefzASTValidatorTests.test_classdefb  s(   
	6 
	6 
	6 
	6 			##SXc39;;778999*	, 	, 	,		##C#sy{{1K1K L LMNNN*	, 	, 	,		##2,,, 8999		##D6"""$5666		##chsCIKK&@&@%ABBB*	, 	, 	, 	, 	,r   c           	      B   |                      t          j        g           d           |                      t          j        d g          d           |                      t          j        t          j        dt          j                              g          d           d S )Nzempty targets on Deleter[  rT   zmust have Del context)r>   r2   Deleter   r(  r   s    r   test_deletezASTValidatorTests.test_deletew  s    		#*R..";<<<		#*dV$$&7888		#*chsCHJJ77899)	+ 	+ 	+ 	+ 	+r   c           
         |                      t          j        g t          j        d                    d           |                      t          j        d gt          j        d                    d           |                      t          j        t          j        dt          j                              gt          j        d                    d           |                      t          j        t          j        dt          j                              gt          j        dt          j                                        d           d S )Nr   zempty targets on Assignr[  rT   must have Store contextr   rG  )r>   r2   Assignr   r   r(  rI  r   s    r   test_assignzASTValidatorTests.test_assign}  s    		#*R,,.GHHH		#*dVSWQZZ002CDDD		#*chsCHJJ778#'!**EE+	- 	- 	-		#*chsCIKK889 #cikk : :< <*	, 	, 	, 	, 	,r   c           	         t          j        t          j        dt          j                              t          j                    t          j        dt          j                                        }|                     |d           t          j        t          j        dt          j                              t          j                    t          j        dt          j                                        }|                     |d           d S )NrT   r   ra  rG  )r2   	AugAssignr   r(  r  r>   rI  )r7   augs     r   test_augassignz ASTValidatorTests.test_augassign  s    mCHS#(**55swyyHS#(**557 7		#0111mCHS#)++66		HS#)++668 8		#/00000r   c           
      |   t          j        dt          j                              }t          j        dt          j                              }t          j                    }|                     t          j        ||g g           d           |                     t          j        t          j        dt          j                              ||gg           d           |                     t          j        |t          j        dt          j                              |gg           d           t          j        t          j        dt          j                                        }|                     t          j        |||gg           d           |                     t          j        |||g|g          d           d S )NrT   r   zempty body on Forra  rG  )r2   r   rI  r(  rS  r>   r   r   )r7   rT   r   pr
   s        r   test_forzASTValidatorTests.test_for  sU   HS#)++&&HS#(**%%HJJ		#'!QB'')<===		#'#(3

33QR@@+	- 	- 	-		#'!SXc39;;77!bAA*	, 	, 	,HSXc39;;//00		#'!QR((*BCCC		#'!QaS))+CDDDDDr   c                 H   |                      t          j        t          j        d          g g           d           |                      t          j        t          j        dt          j                              t          j                    gg           d           |                      t          j        t          j        d          t          j                    gt          j        t          j        dt          j                                        g          d           d S )Nr   zempty body on WhilerT   rG  )r>   r2   Whiler   r   rI  rS  r   r   s    r   
test_whilezASTValidatorTests.test_while  s    		#)CGAJJB//1FGGG		#)CHS#)++66bII*	, 	, 	,		#)CGAJJ!hsxSY[['A'ABBCE E5	7 	7 	7 	7 	7r   c                 :   |                      t          j        t          j        d          g g           d           t          j        t          j        dt          j                              t          j                    gg           }|                      |d           t          j        t          j        d          t          j        t          j        dt          j                                        gg           }|                      |d           t          j        t          j        d          t          j                    gt          j        t          j        dt          j                                        g          }|                      |d           d S )Nr   zempty body on IfrT   rG  )r>   r2   Ifr   r   rI  rS  r   )r7   rx   s     r   test_ifzASTValidatorTests.test_if  s    		#&R,,.@AAAF38C--

|R@@		!-...F371::#sy{{)C)C D DErJJ		!-...F371::

|HSXc39;;77889; ;		!-.....r   c                    t          j                    }|                     t          j        g |g          d           t          j        t          j        d          d           }|                     t          j        |gg           d           t          j        t          j        dt          j                              d           }|                     t          j        |g|g          d           t          j        t          j        d          t          j        dt          j                                        }|                     t          j        |g|g          d           d S )Nzempty items on Withr   zempty body on WithrT   rG  ra  )	r2   rS  r>   WithrI  r   r   rI  r(  )r7   ri  rx   s      r   	test_withzASTValidatorTests.test_with  s
   HJJ		#(2s##%:;;;LT**		#(A3##%9:::L#sy{{33T::		#(A3$$&>???LSXc38::%>%>??		#(A3$$&?@@@@@r   c                    t          j        d t          j        d                    }|                     |d           t          j        t          j        dt          j                              d           }|                     |d           t          j        t          j        d          t          j        dt          j                                        }|                     |d           d S )Nr   z!Raise with cause but no exceptionrT   rG  r  )r2   r  r   r>   r   rI  )r7   rs     r   
test_raisezASTValidatorTests.test_raise  s    IdCGAJJ''		!8999IchsCIKK00$77		!-...Icgajj#(3	"<"<==		!-.....r   c                 ,   t          j                    }t          j        g g g |g          }|                     |d           t          j        t          j        t          j        dt          j                                        gg g |g          }|                     |d           t          j        |gg g g           }|                     |d           t          j        |gg |g|g          }|                     |d           t          j        |gt          j        d dg           gg g           }|                     |d           t          j        t          j        dt          j                              d|g          g}|                     t          j        |g|g g           d           t          j        d d|g          g}t          j        |g|t          j        t          j        dt          j                                        g|g          }|                     |d           t          j        |g||gt          j        t          j        dt          j                                        g          }|                     |d           d S )Nzempty body on TryrT   rG  z-Try has neither except handlers nor finalbodyz%Try has orelse but no except handlersempty body on ExceptHandlerr   )r2   rS  Tryr>   r   r   rI  ExceptHandlerr7   ri  r    r
   s       r   test_tryzASTValidatorTests.test_try  s)   HJJGBB$$		!()))GSXchsCIKK8899:BQCHH		!-...GQCR$$		!DEEEGQCaS1#&&		!<===GQC#+D#r::;RDD		!2333sxSY[[993DDE		#'1#q"b))+CDDDtS1#../GQCSXchsCIKK&@&@AABQCHH		!-...GQCQC#(38C+E+E"F"F!GHH		!-.....r   c                 ,   t          j                    }t          j        g g g |g          }|                     |d           t          j        t          j        t          j        dt          j                                        gg g |g          }|                     |d           t          j        |gg g g           }|                     |d           t          j        |gg |g|g          }|                     |d           t          j        |gt          j        d dg           gg g           }|                     |d           t          j        t          j        dt          j                              d|g          g}|                     t          j        |g|g g           d           t          j        d d|g          g}t          j        |g|t          j        t          j        dt          j                                        g|g          }|                     |d           t          j        |g||gt          j        t          j        dt          j                                        g          }|                     |d           d S )Nzempty body on TryStarrT   rG  z1TryStar has neither except handlers nor finalbodyz)TryStar has orelse but no except handlersrx  r   )r2   rS  TryStarr>   r   r   rI  rz  r{  s       r   test_try_starzASTValidatorTests.test_try_star  s)   HJJKBQC((		!,---K#(3	"<"<==>BLL		!-...KRR((		!HIIIKR!qc**		!@AAAKc/c2>>?RHH		!2333sxSY[[993DDE		#+qc1b"--/GHHHtS1#../KQ#(3	*D*D!E!E FLL		!-...KQchsxSY[[/I/I&J&J%KLL		!-.....r   c           	         |                      t          j        t          j        dt          j                              d           d           t          j        t          j        dt          j                              t          j        dt          j                                        }|                      |d           d S )NrT   rG  r   )r>   r2   Assertr   rI  r(  )r7   assrts     r   test_assertzASTValidatorTests.test_assert  s    		#*SXc39;;77>>*	, 	, 	,
38C448C557 7		%122222r   c                 V    |                      t          j        g           d           d S )Nzempty names on Import)r>   r2   r   r   s    r   test_importzASTValidatorTests.test_import  %    		#*R.."9:::::r   c                     t          j        d t          j        dd           gd          }|                     |d           |                     t          j        d g d          d           d S )NrT   izNegative ImportFrom levelr   zempty names on ImportFrom)r2   r   r   r>   )r7   imps     r   test_importfromz!ASTValidatorTests.test_importfrom  sb    nTCIc4$8$8#93??		#2333		#.r1--/JKKKKKr   c                 V    |                      t          j        g           d           d S )Nzempty names on Global)r>   r2   Globalr   s    r   test_globalzASTValidatorTests.test_global  r  r   c                 V    |                      t          j        g           d           d S )Nzempty names on Nonlocal)r>   r2   Nonlocalr   s    r   test_nonlocalzASTValidatorTests.test_nonlocal  s'    		#,r""$=>>>>>r   c                     t          j        t          j        dt          j                                        }|                     |d           d S NrT   rG  )r2   r   r   rI  r>   r  s     r   	test_exprzASTValidatorTests.test_expr  s>    HSXc39;;//00		!-.....r   c           	         t          j        t          j                    g           }|                     |d           t          j        t          j                    t          j        d          g          }|                     |d           t          j        t          j                    t          j        d          d g          }|                     |d           t          j        t          j                    t          j        d          t          j        dt          j                              g          }|                     |d           d S )Nzless than 2 valuesr   r  r[  rT   rG  )r2   BoolOpAndr=   r   r   rI  )r7   r  s     r   test_boolopzASTValidatorTests.test_boolop   s    Jswyy"%%		!)***Jswyy371::,//		!)***Jswyy371::t"455		!&'''Jswyy371::sxSY[[/I/I"JKK		!-.....r   c                     t          j        t          j                    t          j        dt          j                                        }|                     |d           d S r  )r2   r)  r;  r   rI  r=   )r7   us     r   test_unaryopzASTValidatorTests.test_unaryop
  sF    K		38C#=#=>>		!-.....r   c           
         t          j        g g d g g d g           }|                     t          j        |t          j        dt          j                                        d           d }|                     || j                   d S )NrT   rG  c                 t    t          j        | t          j        dt          j                                        S rQ  )r2   Lambdar   r(  r6  s    r   rL  z*ASTValidatorTests.test_lambda.<locals>.fac  s&    :dCHS#(**$=$=>>>r   )r2   r   r=   r  r   rI  rN  )r7   r]   rL  s      r   test_lambdazASTValidatorTests.test_lambda  s    M"b$Bb99		#*Qcikk : :;;*	, 	, 	,	? 	? 	?c49-----r   c                    t          j        dt          j                              }t          j        dt          j                              }|||f|||f|||ffD ]$}|                     t          j        | d           %d S NrT   r   rG  )r2   r   r(  rI  r=   IfExp)r7   lr   r   s       r   
test_ifexpzASTValidatorTests.test_ifexp  s    HS#(**%%HS#)++&&1I1ay1a)3 	B 	BDIIci&(@AAAA	B 	Br   c                 H   t          j        g t          j        dt          j                              g          }|                     |d           t          j        t          j        dt          j                              gd g          }|                     |d           d S )NrT   zsame number of keys as valuesr[  )r2   r"  r   r(  r=   )r7   r  s     r   	test_dictzASTValidatorTests.test_dict  s    HR#(3

33455		!4555HchsCHJJ//04&99		!&'''''r   c                     |                      t          j        d g          d           t          j        t          j        dt          j                              g          }|                      |d           d S Nr[  rT   rG  )r=   r2   Setr   rI  r7   r   s     r   test_setzASTValidatorTests.test_set"  s`    		#'4&//#4555GSXc39;;//011		!-.....r   c           	          |                       |g           d           t          j        t          j        dt          j                              t          j        dt          j                              g d          }|                       ||g          d           t          j        t          j        dt          j                              t          j        dt          j                              g d          }|                       ||g          d           t          j        dt          j                              }t          j        dt          j                              }t          j        ||d gd          }|                       ||g          d           t          j        ||t          j        dt          j                              gd          }|                       ||g          d           d S )Nz comprehension with no generatorsrT   r   ra  rG  r   r[  )r=   r2   r   r   r(  rI  )r7   rL  grT   r   s        r   _check_comprehensionz&ASTValidatorTests._check_comprehension'  s   		##b''=>>>chsCHJJ77!hsCHJJ77Q@ @		##qc((5666chsCIKK88!hsCIKK88"aA A		##qc((4555HS#)++&&HS#(**%%aTFA..		##qc((-...aSXc39;;%?%?$@!DD		##qc((455555r   c           	         t          j        t          j        dt          j                              t          j        dt          j                              g d          }|                      t          j        dt          j                              |g          d           fd}|                     |           d S )NrT   r   rG  c                 d     t          j        dt          j                              |           S rQ  )r2   r   rI  )gensrL  s    r   wrapz,ASTValidatorTests._simple_comp.<locals>.wrap;  s'    3sxSY[[114888r   )r2   r   r   rI  r(  r=   r  )r7   rL  r  r  s    `  r   _simple_compzASTValidatorTests._simple_comp6  s    chsCIKK88!hsCHJJ77Q@ @		##chsCIKK001#66*	, 	, 	,	9 	9 	9 	9 	9!!$'''''r   c                 D    |                      t          j                   d S r   )r  r2   ListCompr   s    r   test_listcompzASTValidatorTests.test_listcomp?  s    #,'''''r   c                 D    |                      t          j                   d S r   )r  r2   SetCompr   s    r   test_setcompzASTValidatorTests.test_setcompB  s    #+&&&&&r   c                 D    |                      t          j                   d S r   )r  r2   GeneratorExpr   s    r   test_generatorexpz#ASTValidatorTests.test_generatorexpE  s    #*+++++r   c                    t          j        t          j        dt          j                              t          j        dt          j                              g d          }t          j        t          j        dt          j                              t          j        dt          j                              |g          }|                     |d           t          j        t          j        dt          j                              t          j        dt          j                              |g          }|                     |d           d }|                     |           d S )Nr   ri  r   rT   rG  c                     t          j        dt          j                              }t          j        dt          j                              }t          j        |||           S )NrT   r   )r2   r   r(  DictComp)compskr-   s      r   factoryz0ASTValidatorTests.test_dictcomp.<locals>.factoryQ  sD    chjj))Achjj))A<1e,,,r   )r2   r   r   rI  r(  r  r=   r  )r7   r  cr  s       r   test_dictcompzASTValidatorTests.test_dictcompH  s   chsCIKK88!hsCHJJ77Q@ @L#sy{{33#sxzz22QC9 9		!-...L#sxzz22#sy{{33aS: :		!-...	- 	- 	- 	!!'*****r   c           	      6   |                      t          j        t          j        dt          j                                        d           |                      t          j        t          j        dt          j                                        d           d S )NrT   zmust have Load)r=   r2   Yieldr   rI  	YieldFromr   s    r   
test_yieldzASTValidatorTests.test_yieldW  sj    		#)CHS#)++66779IJJJ		#-cikk : :;;=MNNNNNr   c                    t          j        dt          j                              }t          j        |t          j                    gg           }|                     |d           t          j        |t          j                    gt          j        d          t          j        d          g          }|                     |d           t          j        t          j        d          t          j                    g|g          }|                     |           t          j        |t          j                    gt          j        d          g          }|                     |           d S )NrT   zno comparatorsr  r  z,different number of comparators and operandsblah)r2   r   r(  CompareInr=   r   )r7   r  comps      r   test_comparezASTValidatorTests.test_compare[  s    xSXZZ(({4#&((R00		$())){4#&((cgajj#'!**-EFF		$FGGG{376??SVXXJ??		${4#&((cgfoo->??		$r   c                    t          j        dt          j                              }t          j        dt          j                              g}t          j        dt          j        dt          j                                        g}t          j        t          j        dt          j                              ||          }|                     |d           t          j        |d g|          }|                     |d           t          j        dt          j        dt          j                                        g}t          j        |||          }|                     |d           d S )NrT   r   wr   rG  r[  )r2   r   r(  r  r  rI  r=   )r7   r  r   r  callbad_keywordss         r   	test_callzASTValidatorTests.test_callf  s   xSXZZ((chjj))*KSXc38::%>%>??@xcikk22D(CC		$0111xtfh//		$)***C#sy{{)C)CDDExdL11		$011111r   c                 n    G d dt                     } G d dt                    } G d dt                    }dD ])}|                     t	          j        |                     * |             |             |            fD ]1}|                     t	          j        |          dt          	           2d S )
Nc                       e Zd ZdS )*ASTValidatorTests.test_num.<locals>.subintNrY   r   r   r   subintr  s  r\   r   r  c                       e Zd ZdS ),ASTValidatorTests.test_num.<locals>.subfloatNrY   r   r   r   subfloatr  u  r\   r   r  c                       e Zd ZdS ).ASTValidatorTests.test_num.<locals>.subcomplexNrY   r   r   r   
subcomplexr  w  r\   r   r  )0hellozinvalid typerB  )r   floatr   r=   r2   r   rR   )r7   r  r  r  objs        r   test_numzASTValidatorTests.test_numr  s   	 	 	 	 	S 	 	 		 	 	 	 	u 	 	 		 	 	 	 	 	 	 	 	$ 	$CIIcgcll####688XXZZ5 	C 	CCIIcgcllN	IBBBB	C 	Cr   c                     t          j        t          j        dt          j                              dt          j                              }|                     |d           d S r  )r2   	Attributer   rI  r(  r=   )r7   r  s     r   test_attributez ASTValidatorTests.test_attribute~  sH    }SXc39;;77chjjII		$011111r   c           	      ~   t          j        t          j        dt          j                              t          j        d          t          j                              }|                     |d           t          j        dt          j                              }t          j        |t          j        dt          j                              t          j                              }|                     |d           t          j        dt          j                              }|d d fd |d fd d |ffD ]K}t          j        | }|                     t          j        ||t          j                              d           Lt          j        g t          j                              }|                     t          j        ||t          j                                         t          j        |gt          j                              }|                     t          j        ||t          j                              d           d S )NrT   r   rG  r   )	r2   	Subscriptr   rI  r   r(  r=   SliceTuple)r7   subrT   r   r   sls         r   test_subscriptz ASTValidatorTests.test_subscript  s   mCHS#)++66

HJJ( (		#/000HS#(**%%mAsxSY[[99HJJ( (		#/000HS#)++&&dOdAt_tT1oE 	0 	0DD!BIIcmAr38::66.0 0 0 0Yr38::&&		#-2sxzz22333YsCHJJ''		#-2sxzz224LMMMMMr   c           	      `   t          j        t          j        t          j        dt          j                              t          j                              gt          j                              }t          j        |gt          j        d                    }|                     |d           d S )NrT   r  ra  )	r2   ListStarredr   r(  rI  rb  r   r>   )r7   r  assigns      r   test_starredzASTValidatorTests.test_starred  s{    xSXc38::%>%>	LLM	% %TFCGAJJ//		&344444r   c           	         |                       |d gt          j                              d           |                       |t          j        dt          j                              gt          j                              d           d S r  )r=   r2   r(  r   rI  )r7   rL  s     r   	_sequencezASTValidatorTests._sequence  sw    		##tfchjj))+<===		##sxSY[[112CHJJ??*	, 	, 	, 	, 	,r   c                 D    |                      t          j                   d S r   )r  r2   r  r   s    r   	test_listzASTValidatorTests.test_list  s    sx     r   c                 D    |                      t          j                   d S r   )r  r2   r  r   s    r   
test_tuplezASTValidatorTests.test_tuple  s    sy!!!!!r   c                 T    |                      t          j        d                     d S )Nr  )r=   r2   r   r   s    r   test_nameconstantz#ASTValidatorTests.test_nameconstant  s%    		#"1%%&&&&&r   c                 .   t           j                            t          j                  }d t          j        |          D             }|                    ddg           |D ]}|                     |          5  t           j                            ||          }t          |dd          5 }|
                                }d d d            n# 1 swxY w Y   t          j        ||          }t          ||d           d d d            n# 1 swxY w Y   d S )Nc                 <    g | ]}|                     d           |S )z.py)endswith)r	   fns     r   r   z;ASTValidatorTests.test_stdlib_validates.<locals>.<listcomp>  s)    GGGBKK4F4FGGGGr   ztest/test_grammar.pyztest/test_unpack_ex.pyru  zutf-8)encodingrd   )ospathdirnamer2   __file__listdirextendrt   joinopenreadr~   ru   )r7   stdlibr  r   r  fpr  r   s           r   test_stdlib_validatesz'ASTValidatorTests.test_stdlib_validates  sz   ..GGbj00GGG,.FGHHH 	) 	)Ff%% ) )W\\&&11"cG444 'WWYYF' ' ' ' ' ' ' ' ' ' ' ' ' ' 'i++R((() ) ) ) ) ) ) ) ) ) ) ) ) ) )	) 	)s6   83D	+C D	CD	C)D		D	D	r   rT   Tcarterr   r   .r  stringre  )restlollegit)patterns	kwd_attrskwd_patternsrf  r1  xxx_c           
      <   t          j        dt          j                              }| j        D ]}|                     t          j        |d                    5  t          j        |t          j        |t          j                    g          g          }t          j	        |          }t          j
        |gg           }|                     t                    5  t          |dd           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d S )NrT   r  r  )r  r   )subjectcasesr   rd   )r2   r   r(  _MATCH_PATTERNSrt   r  Matchr  rS  r)  r   rO   r   ru   )r7   name_xr  r9   r   s        r   test_match_validation_patternz/ASTValidatorTests.test_match_validation_pattern9  s   #sxzz**+ 	6 	6Gchwq999:: 6 6y"$+$'HJJ<     066TFB//&&z22 6 6FHf5556 6 6 6 6 6 6 6 6 6 6 6 6 6 66 6 6 6 6 6 6 6 6 6 6 6 6 6 6	6 	6s7   BDC9-D9C==D C=DD	D	)Nrd   r   )Kr   r5   rZ   r   r   r=   r>   r   rN  rT  r\  r_  rc  rg  rj  rm  rp  rs  rv  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r2   r   
constant_1
MatchValue	pattern_1
constant_x	pattern_xconstant_trueMatchSingletonpattern_truer   r(  name_carterr  rI  MatchSequenceMatchMappingr  
MatchClass	MatchStarMatchAsMatchOrr  r  r   r   r   rA  rA    sg       2Z 2 2 2 2 2$* $ $ $ $ $   6 6 6 4  4  4D. . ., , ,*+ + +, , ,1 1 1E E E7 7 7/ / /A A A/ / // / /(/ / /(3 3 3; ; ;L L L
; ; ;? ? ?/ / // / // / /. . .B B B( ( (/ / /
6 6 6( ( (( ( (' ' ', , ,+ + +O O O	 	 	
2 
2 
2
C 
C 
C2 2 2N N N$5 5 5, , ,
! ! !" " "' ' '
) 
) 
) aJz**Ic""Jz**I CL&&M%3%d++L#(8XSXZZ00K 	CMCHS)#)++..  XSXZZ 	
 	
 	CMCHS(#(**--  XSXZZ 	
 	
 	CL	
 	
 	CL	
 	
 	CL!!	
 	
 	8$$
#
X
&
&
 	 	 	!!**844 	
 	
 	'K	
 	
 	J'	"	
 	
 	

 	KCK

(C(CXSXZZPPQ	"	
 	
 	

 	CM% % XSXZZ	! !
 2B	
 	
 	
 	h#		
 	
 	
 	#		
 	
 	
 	(c(223		
 	
 	
 	#cmoo&		
 	
 	
 	'#-//*		
 	
 	
 	h#		
 	
 	
 	f%%	
 	

 		
 	
 	
 		
 	
 	K	
 	
 		#53#5e#<#<=	
 	
 	3=3=--.//Rc***oxOt6 6 6 6 6r   rA  c                   f    e 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S )ConstantTestsc                    t          j        d          }|j        d         j        }t          j        |          }t          j        ||           ||j        d         _        t          |dd          }i }t          ||           |d         S )Nzx = 123r   r   r}   rd   rT   )r2   r~   r   rG   r   r  ru   rd   )r7   rG   r   r9   new_noderb  r6  s          r   compile_constantzConstantTests.compile_constantO  s~    y##y|!<e,,,(D)))%	!tZ00T2#wr   c                     |                      t                    5 }|                     g d           d d d            n# 1 swxY w Y   |                     t	          |j                  d           d S )Nr  z%got an invalid type in Constant: list)rO   rR   r-  rB   r   r"  )r7   r%  s     r   test_validationzConstantTests.test_validation]  s    y)) 	-R!!))),,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-R\**@	B 	B 	B 	B 	Bs   ?AAc                     d ddt           dt                      fD ][}|                     |          5  |                     |          }|                     ||           d d d            n# 1 swxY w Y   \d S )NFTr   )const)r   r-  rt   r-  r   )r7   r1  rG   s      r   test_singletonszConstantTests.test_singletonsc  s    E43	D 	, 	,EE** , ,--e44eU+++, , , , , , , , , , , , , , ,	, 	,s   ,A**A.	1A.	c           	      ~   d}t          dh          }t          d          D ]}|df}t          |dh          }ddddd	t          d
          t          d          ||f	}|D ][}|                     |          5  |                     |          }|                     ||           d d d            n# 1 swxY w Y   \d S )N)r   r   r   rM   {   g     ^@y             ^@unicode   bytesr   r-  r   )r-  r   r   rt   r-  rB   )r7   nested_tuplenested_frozensetr3  r!  rG   r!   s          r   test_valueszConstantTests.test_valuesi  s'   $aS>>1XX 	@ 	@E(!,L(*:A)>??udX..)K"8"8 02  	0 	0EE** 0 0..u55  ///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0	0 	0s   9,B11B5	8B5	c                    t          j        d          }|j        d         j        d         }t          j        d          }t          j        ||           ||j        d         j        d<   |                     t                    5 }t          |dd           d d d            n# 1 swxY w Y   | 	                    t          |j                  d           d S )Nx = 1r   r   r   r
  rd   z6expression which can't be assigned to in Store context)r2   r~   r   targetsr   r  rO   r   ru   rB   r   r"  )r7   r   r  
new_targetr%  s        r   test_assign_to_constantz%ConstantTests.test_assign_to_constantx  s   y!!1%a(\***
*f---",	!Qz** 	,bD(F+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,R\**/	0 	0 	0 	0 	0s   B$$B(+B(c                 ~    t          j        d          }|                     t          j        |          d           d S )Nz'docstring'
x = 1	docstring)r2   r~   rB   r  r   s     r   r  z ConstantTests.test_get_docstring  s9    y-..*400+>>>>>r   c                     t          |dd          }g }t          j        |          D ]'}|j        dk    r|                    |j                   (|S )Nr}   rd   
LOAD_CONST)ru   disget_instructionsopnamer   argval)r7   r   coconstsinstrs        r   get_load_constzConstantTests.get_load_const  s[     T:v..)"-- 	, 	,E||++el+++r   c                    g d}d                     d |D                       }|dz  }|                    t          d f           t          j        |          }|                     |                     |          |           t          |j        |          D ];\  }}t          j	        |          }t          j
        ||j                   ||_        <|                     |                     |          |           d S )N)	NTF|   g       @y              @r5  r6  r  rH  c                 8    g | ]}d                      |          S )zx={!r})r  )r	   r1  s     r   r   z1ConstantTests.test_load_const.<locals>.<listcomp>  s$    EEEU(//%00EEEr   z
x = ...r   )r  r  r   r2   r~   rB   rJ  rs   r   r   r  rG   )r7   rH  rb  r   r  r1  r,  s          r   test_load_constzConstantTests.test_load_const  s      yyEEfEEEFFx&'''y,,T22	! 	! 	! !F33 	$ 	$MFE|%000Hh555#FLL,,T22	! 	! 	! 	! 	!r   c                 z   t          j        d          }|j        d         j        }t          j        d          }t          j        ||j                   ||_        t          j        d          }t          j        ||j                   ||_        |                     t          j	        |          d           d S )Nz1 + 2r   r   r   y              4@y      $@      4@)
r2   r~   r   rG   r   r  r  r  rB   r  )r7   r   binopnew_left	new_rights        r   r  zConstantTests.test_literal_eval  s    y!!	!"<b)))(EJ///
Ls+++	)U[111)%00&99999r   c                    t          j        dd          j        }|                     |j        d           |                     |j        d            t          j        dd          j        }|                     |j        d           |                     |j        d           t          j        dd          j        }|                     |j        d           |                     |j        d            t          j        dd          j        }|                     |j        d	           |                     |j        d            d S )
Nz"x"rf   r  rT   zu"x"r  zr"x"zb"x"   x)r2   r~   r   rB   rG   rl   )r7   r  s     r   test_string_kindzConstantTests.test_string_kind  s$   Ie&))).#&&&&&&If6***/#&&&%%%If6***/#&&&&&&If6***/$'''&&&&&r   N)r   r5   rZ   r-  r/  r2  r9  r>  r  rJ  r   r  rN  r  rU  r   r   r   r*  r*  L  s        .  B B B, , ,0 0 00 0 0? ? ?   ! ! !8: : :' ' ' ' 'r   r*  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 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z dS ) EndPositionTestsc                 r    |                      |j        |           |                      |j        |           d S r   )rB   r   r   )r7   rD   r   r   s       r   _check_end_poszEndPositionTests._check_end_pos  s:    ,j9990.AAAAAr   c                 X    |                      t          j        ||          |           d S r   )rB   r2   get_source_segment)r7   r  rD   contents       r   _check_contentzEndPositionTests._check_content  s+    /AA7KKKKKr   c                 J    t          j        |          j        d         j        S )Nr   )r2   r~   r   rG   r  s     r   _parse_valuezEndPositionTests._parse_value  s     y|| #))r   c                     d}|                      |          }|                     ||j        d           |                     ||j        j        d         d           |                     ||j        j        d           d S )Nzlambda x, *y: Noner#   r   rT   r   )r_  r]  r   r   rQ   )r7   r   lams      r   r  zEndPositionTests.test_lambda  sw     ""Asx000Asx}Q/555Asx44444r   c                 ,   t          d                                          }t          j        |          j        d         }|                     |dd           |                     ||j        d         d           |                     ||j        j        d         d           |                     ||j        j        d         j        d           |                     ||j        j	        d           |                     ||j        j	        j        d	           d S )
Nz
            def func(x: int,
                     *args: str,
                     z: float = 0,
                     **kwargs: Any) -> bool:
                return True
            r   r     zreturn Truezx: intr   zkwargs: AnyAny)
r   r   r2   r~   r   rY  r]  r   
annotationr   r7   r   fdefs      r   test_func_defzEndPositionTests.test_func_def  s         	
 y|| #D!R(((Aty|];;;Aty~a0(;;;Aty~a0;UCCCAty>>>Aty95AAAAAr   c                    d}|                      |          }|                     ||j        d           |                     ||j        d         j        d           |                     ||j        d         j        d           d S )Nzfunc(x, y=2, **kw)r  r   2r   kw)r_  r]  r  r  rG   r7   r   r  s      r   r  zEndPositionTests.test_call  s~       ##Aty&111At}Q/5s;;;At}Q/5t<<<<<r   c                     d}|                      |          }|                     ||j        d           |                     |dd           d S )Nzx[0]()zx[0]r   r  )r_  r]  r  rY  rl  s      r   test_call_noargsz!EndPositionTests.test_call_noargs  sR      ##Aty&111D!Q'''''r   c                 <   t          d                                          }t          j        |          j        d         }|                     |dd           |                     ||j        d         d           |                     ||j        d         d           d S )Nz?
            class C(A, B):
                x: int = 0
        r   rM      r   Bz
x: int = 0)r   r   r2   r~   r   rY  r]  rY  r7   r   cdefs      r   test_class_defzEndPositionTests.test_class_def  s        UWW 	
 y|| #D!R(((Atz!}c222Aty|\:::::r   c                     d}t          j        |          j        d         }|                     ||j        d         j        d           d S )Nz$class S(metaclass=abc.ABCMeta): passr   zabc.ABCMeta)r2   r~   r   r]  r  rG   rr  s      r   test_class_kwzEndPositionTests.test_class_kw  sD    2y|| #At}Q/5}EEEEEr   c                     t          d                                          }t          j        |          j        d         }|                     |dd           |                     |j        dd           d S )Nzh
            x = """Some multi-line text.

            It goes on starting from same indent."""
        r   r   (   r   r   r2   r~   r   rY  rG   r7   r   r  s      r   test_multi_line_strz$EndPositionTests.test_multi_line_str  ss        UWW	 	

 1"1%FAr***FL!R00000r   c                     t          d                                          }t          j        |          j        d         }|                     |dd           |                     |j        dd           d S )NzB
            x = "first part" \
            "second part"
        r   rM   r  ry  rz  s      r   test_continued_strz#EndPositionTests.test_continued_str   ss        UWW 	
 1"1%FAr***FL!R00000r   c                 l   t          d                                          }t          j        |          }|j        d         }|j        d         }|j        d         }|j        d         }|j        d         }|                     |dd           |                     |dd	           |                     |d	d
           |                     |dd           |                     |dd           |                     ||j        d           |                     ||j        d         d           |                     ||j        d         j        d           |                     ||j	        d           |                     ||j        d         d           |                     ||j
        d         j        d           d S )Na  
            while True:
                pass

            if one():
                x = None
            elif other():
                y = None
            else:
                z = None

            for x, y in stuff:
                assert True

            try:
                raise RuntimeError
            except TypeError as e:
                pass

            pass
        r   r   rM   r   r  r   rZ     rc  r      re  zx = Nonezother()x, yzraise RuntimeErrorrR   )r   r   r2   r~   r   rY  r]  r  r  r  handlersr4   )r7   r   r   
while_loopif_stmtfor_looptry_stmt	pass_stmts           r   test_suiteszEndPositionTests.test_suites)  s       ( UWW) 	
* illXa[
(1+8A;8A;HQK	J1---GQ+++Hb"---Hb!,,,Ir1---Az777Aw|A
;;;Aw~a05yAAAAx777Ax}Q/1EFFFAx038+FFFFFr   c                     d}|                      |          }|j        d         j        }|                     ||d           d S )Nzx = f"abc {x + y} abc"r   zx + y)r_  r!  rG   r]  r7   r   fstrrP  s       r   test_fstringzEndPositionTests.test_fstringU  sF    $  ##A$Aug.....r   c                 4   t          d                                          }|                     |          }|j        d         j        }|                     |dd           |                     ||j        d           |                     ||j        d           d S )Nz
            f"""Some multi-line text.
            {
            arg_one
            +
            arg_two
            }
            It goes on..."""
        r   r  r   arg_onearg_two)	r   r   r_  r!  rG   rY  r]  r  r  r  s       r   test_fstring_multi_linez(EndPositionTests.test_fstring_multi_line[  s        UWW 	
   ##A$E1a(((Auz9555Au{I66666r   c                     t          d                                          }t          j        |          j        d         }|                     |dd           |                     |j        d         dd           d S )NzT
            from x.y.z import (
                a, b, c as c
            )
        r   r   r   rM   r   )r   r   r2   r~   r   rY  r   )r7   r   r  s      r   test_import_from_multi_linez,EndPositionTests.test_import_from_multi_linek  sw        UWW	 	

 ill"CA&&&CIaL!R00000r   c                 d   d}d}t          d                                          }t          | j        |||f          \  }}}|                     ||j        d           |                     ||j        j        d           |                     ||j        j        d           |                     ||j        j        d           |                     ||j        j	        d         j        d	           |                     ||j        j	        d
         j        d           | 
                    |dd           d S )Nzf()[1, 2] [0]zx[ a.b: c.d]zN
            x[ a.b: f () ,
               g () : c.d
              ]
        z	f()[1, 2]z1, 2r,   zc.dr   f ()r   g ()r   )r   r   mapr_  r]  rG   r   r   r   eltsrY  )r7   s1s2smi1i2r   s          r   test_sliceszEndPositionTests.test_slicesu  s"       UWW	 	
 *RRL99
BB+666B777B666B666Ba 0 6???Ba 0 6???B1%%%%%r   c                 R   t          d                                          }|                     |          }|                     |dd           |                     ||j        d           |                     ||j        d           |                     ||j        j        d           d S )NzF
            (1 * 2 + (3 ) +
                 4
            )
        rM   r  4z1 * 2 + (3 )3)r   r   r_  rY  r]  r  r  )r7   r   rP  s      r   
test_binopzEndPositionTests.test_binop  s        UWW	 	

 !!!$$E1a(((Au{C000Auz>:::Auz/55555r   c                    t          d                                          }t          j        |          j        d         j        }|                     |dd           |                     ||j        d         d           d S )Nz{
            if (one_condition and
                    (other_condition or yet_another_one)):
                pass
        r   rM   ,   r   z"other_condition or yet_another_one)	r   r   r2   r~   r   r  rY  r]  r!  )r7   r   bops      r   r  zEndPositionTests.test_boolop  s        UWW	 	

 ill"'CB'''Asz!}@	B 	B 	B 	B 	Br   c                 H   d}d}d}t          d                                          }t          | j        ||||f          \  }}}}|                     ||d           |                     ||d           |                     ||d           |                     |dd	           d S )
Nzx = () ;z	x = 1 , ;zx = (1 , 2 ) ;z?
            x = (
                a, b,
            )
        r.   z1 ,z(1 , 2 )r   r   )r   r   r  r_  r]  rY  )	r7   r  r  s3r  t1t2t3tms	            r   test_tupleszEndPositionTests.test_tuples  s        UWW	 	
 T.RR0@AABBBD)))BE***BJ///B1%%%%%r   c                     d}|                      |          }|                     |||           |                     ||j        d         d           d S )Nzfunc(x. y .z)r   zx. y .z)r_  r]  r   rl  s      r   test_attribute_spacesz&EndPositionTests.test_attribute_spaces  sV      ##AtQ'''Aty|Y77777r   c                    d}t          j        |          j        d         j        }|                     t          |          j        d           |                     ||d           d|z   }t          j        |          j        d         j        j        }|                     t          |          j        d           |                     ||d           d S )Nz( ( ( a + b ) ) )r   r  r(   await )r2   r~   r   rG   rB   r4   r   r]  )r7   r   r-   r  s       r   test_redundant_parenthesisz+EndPositionTests.test_redundant_parenthesis  s    IaLLa &a)7333Aq'***\IbMMq!'-a)7333B7+++++r   c                    d}|D ]\  }}|                      |          5  t          j        |          j        d         j        }|                     t          |          j        |           |                     |||           d|z   }t          j        |          j        d         j        j        }|                     t          |          j        |           |                     |||           d d d            n# 1 swxY w Y   d S )N))z( ( ( a ) ) ) ( )r  )z( ( ( a ) ) ) ( b )r  )z( ( ( a ) ) ) [ b ]r  )z( ( ( a ) ) ) . br  r   r  )	rt   r2   r~   r   rG   rB   r4   r   r]  )r7   r  r   r    r-   r  s         r   (test_trailers_with_redundant_parenthesisz9EndPositionTests.test_trailers_with_redundant_parenthesis  s8   
  	. 	.DAqa . .IaLL%a(.  a!11555##Aq!,,,\IbMM&q)/5  a!11555##B1---. . . . . . . . . . . . . . .	. 	.s   CC==D	D	c                    d}d}|                      |          }|                      |          }|                     ||j        d         d           |                     ||j        d         d           |                     ||j        d         d           |                     ||j        d         d	           |                     ||j        d         d
           d S )Nz[{}, {1, }, {1, 2,} ]z{a: b, f (): g () ,}r   r)   r   z{1, }rM   z{1, 2,}r  r  )r_  r]  r  r   r!  )r7   r  r  c1c2s        r   test_displayszEndPositionTests.test_displays  s    $#r""r""B
D111B
G444B
I666B
F333B	!f55555r   c                    t          d                                          }|                     |          }|                     |dd           |                     ||j        d         j        d           |                     ||j        j        d         j        d           |                     ||j        j        d         j        d         d           |                     ||j        j        d         j	        d           d S )	Nza
            x = [{x for x, y in stuff
                  if cond.x} for stuff in things]
        rM   %   r   thingsstuffzcond.xr  )
r   r   r_  rY  r]  
generatorsr  eltifsr  )r7   r   cmps      r   test_comprehensionsz$EndPositionTests.test_comprehensions  s        UWW 	
 ""CB'''As~a05x@@@Asw1!497CCCAsw1!48;XFFFAsw1!4;VDDDDDr   c                 "   t          d                                          }t          j        |          j        d         }|                     ||j        d         j        d           |                     ||j        d         j        d           d S )NzT
            async def f():
                yield x
                await y
        r   zyield xr   zawait y)r   r   r2   r~   r   r]  rG   rf  s      r   test_yield_awaitz!EndPositionTests.test_yield_await  s        UWW	 	

 y|| #Aty|19===Aty|19=====r   c                    t          d                                          }t          d                                          }|                     |          }|                     t	          j        ||j                  |           d S )NzD
            x = (
                a, b,
            ) + ()
        z;
            (
                a, b,
            )
        )r   r   r_  rB   r2   r[  r  )r7   s_origs_tuplerP  s       r   test_source_segment_multiz*EndPositionTests.test_source_segment_multi  s        UWW	 	
     UWW	 	
 !!&))/
CCWMMMMMr   c                     t          d                                          }d}t          j        |          j        d         }|                     t          j        ||j        d         d          |           d S )Nuf   
            class C:
                def fun(self) -> None:
                    "ЖЖЖЖЖ"
        u/       def fun(self) -> None:
        "ЖЖЖЖЖ"r   Tpaddedr   r   r2   r~   r   rB   r[  )r7   r  s_methodrs  s       r   test_source_segment_paddedz+EndPositionTests.test_source_segment_padded  s        UWW	 	
*y  %a(/	!TRRR!	# 	# 	# 	# 	#r   c                 .   d}t          j        |          j        \  }}}}}|                     ||d           |                     ||d           |                     ||d           |                     ||d           |                     ||d           d S )Nz!v = 1
w = 1
x = 1
y = 1z = 1
r$   zw = 1r;  zy = 1zz = 1)r2   r~   r   r]  )r7   r   r-   r  rT   r   r   s          r   test_source_segment_endingsz,EndPositionTests.test_source_segment_endings	  s    7	!)1aAAq'***Aq'***Aq'***Aq'***Aq'*****r   c                     t          d                                          }d}t          j        |          j        d         }|                     t          j        ||j        d         d          |           d S )Nzb
            class C:
              	  def fun(self) -> None:
              	      pass
        z+  	  def fun(self) -> None:
  	      passr   Tr  r  )r7   r   r  rs  s       r   test_source_segment_tabsz)EndPositionTests.test_source_segment_tabs	  sv        UWW	 	

& y|| #/49Q<MMMxXXXXXr   c                    d}t          j        |          j        \  }}}}|`|`|`|`|                     t          j        ||                     |                     t          j        ||                     |                     t          j        ||                     |                     t          j        ||                     d S )Nzv = 1
w = 1
x = 1
y = 1
)	r2   r~   r   r   r   r   r   ra   r[  )r7   r   r-   r  rT   r   s         r    test_source_segment_missing_infoz1EndPositionTests.test_source_segment_missing_info	  s    0Yq\\&
1aHLL#0A66777#0A66777#0A66777#0A6677777r   N)!r   r5   rZ   rY  r]  r_  r  rh  r  rn  rt  rv  r{  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   rW  rW    s       
B B BL L L* * *
5 5 5B B B = = =( ( (; ; ;F F F
1 1 11 1 1*G *G *GX/ / /7 7 7 1 1 1& & &"
6 
6 
6	B 	B 	B& & &8 8 8, , ,. . ."	6 	6 	6
E 
E 
E> > >N N N
# 
# 
#+ + +
Y 
Y 
Y
8 
8 
8 
8 
8r   rW  c                       e Zd Zd ZdS )NodeVisitorTestsc                     G fddt           j                  }t          j        t          d                    } |            }g t	          j        d          5 }t	          j        ddt                     |                    |           d d d            n# 1 swxY w Y   | 	                    g d           | 	                    d	 |D             g d
           d S )Nc                   B    e Zd Z fdZ fdZ fdZ fdZ fdZdS )9NodeVisitorTests.test_old_constant_nodes.<locals>.Visitorc                 L                         |j        d|j        f           d S )Nr   )r   r   r   r7   r9   logs     r   	visit_NumzCNodeVisitorTests.test_old_constant_nodes.<locals>.Visitor.visit_Num,	  &    

DK788888r   c                 L                         |j        d|j        f           d S )Nr   r   r   r   r  s     r   	visit_StrzCNodeVisitorTests.test_old_constant_nodes.<locals>.Visitor.visit_Str.	  r  r   c                 L                         |j        d|j        f           d S )Nr   r  r  s     r   visit_ByteszENodeVisitorTests.test_old_constant_nodes.<locals>.Visitor.visit_Bytes0	  s&    

DK$&9:::::r   c                 L                         |j        d|j        f           d S )Nr   )r   r   rG   r  s     r   visit_NameConstantzLNodeVisitorTests.test_old_constant_nodes.<locals>.Visitor.visit_NameConstant2	  s&    

DKDEEEEEr   c                 B                         |j        ddf           d S )Nr   .)r   r   r  s     r   visit_EllipsiszHNodeVisitorTests.test_old_constant_nodes.<locals>.Visitor.visit_Ellipsis4	  s$    

DKS9:::::r   N)r   r5   rZ   r  r  r  r  r  )r  s   r   Visitorr  +	  s        9 9 9 9 99 9 9 9 9; ; ; ; ;F F F F F; ; ; ; ; ; ;r   r  z            i = 42
            f = 4.25
            c = 4.25j
            s = 'string'
            b = b'bytes'
            t = True
            n = None
            e = ...
            T)recordalwaysr  ))r   r   rK   )rM   r   r   )r   r   r   )r  r   r
  )r  r   r6  )r  r   T)r   r   N)r   r   .c                 6    g | ]}t          |j                  S r   )r   message)r	   r  s     r   r   z<NodeVisitorTests.test_old_constant_nodes.<locals>.<listcomp>O	  s     777Q#ai..777r   )+visit_Num is deprecated; add visit_Constantr  r  z+visit_Str is deprecated; add visit_Constantz-visit_Bytes is deprecated; add visit_Constant4visit_NameConstant is deprecated; add visit_Constantr  z0visit_Ellipsis is deprecated; add visit_Constant)
r2   NodeVisitorr~   r   warningscatch_warningsfilterwarningsDeprecationWarningvisitrB   )r7   r  r   visitorwlogr  s        @r   test_old_constant_nodesz(NodeVisitorTests.test_old_constant_nodes*	  sl   
	; 
	; 
	; 
	; 
	; 
	; 
	;co 
	; 
	; 
	; i 	  	 	 	 	 '))$D111 	T#Hb2DEEEMM#	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 	
 	
 		 		 		 	77$777 	:
 	:
 	:
 		 		 		 		 		s   1BB"BN)r   r5   rZ   r  r   r   r   r  r  )	  s#        . . . . .r   r  c                   &    e Zd Zd Zd Zd Zd ZdS )ModuleStateTestsc                     d}d}d}t          |||t          j                  }t          |||          }|                     |t          j                   d S )Nzx + 1r}   rf   )flags)ru   r2   rv   r   typesCodeType)r7   rb  filenamer  rz   s        r   check_ast_modulez!ModuleStateTests.check_ast_module_	  s]     44s7HIII x400dEN33333r   c                 4   t          j        t          j        dd           5  t          j        d= dd l}t          j        d= dd l}|                                  d d d            n# 1 swxY w Y   ~~t          j                     |                                  d S )N_astr   )r   	swap_itemr  modulesr  r  r`   )r7   ast1r  s      r   test_reload_modulez#ModuleStateTests.test_reload_modulel	  s    s{FD99 	$ 	$F#F#!!###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ s   7A$$A(+A(c                    t                      fd}t          j        t          j        dd           5  t          j        d= t          j        t          d|          5  |                                  |                     dt          j                   dd l	}| 
                    |           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nc                 &    t           j        | <   S r   )r  r   )r8   r   rk  lazy_mods      r   	my_importz4ModuleStateTests.test_sys_modules.<locals>.my_import	  s     (CKOr   r  
__import__r   )objectr   r  r  r   r:  r   r  assertNotInr  r   )r7   r  r  r  s      @r   test_sys_modulesz!ModuleStateTests.test_sys_modules~	  sa    88	 	 	 	 	 s{FD99 
	. 
	.F#"8\9EE . .%%'''  555 dH---. . . . . . . . . . . . . . .
	. 
	. 
	. 
	. 
	. 
	. 
	. 
	. 
	. 
	. 
	. 
	. 
	. 
	. 
	. 
	. 
	. 
	.s6   )CAB9-C9B=	=C B=	CCCc                 x    t          d          }t          j        |          }|                     |d           d S )Nap  
            import _ast
            import ast
            import gc
            import sys
            import types

            # Create _ast.AST subclasses instances and call PyAST_Check()
            ast_tree = compile('x+1', '<string>', 'eval',
                               flags=ast.PyCF_ONLY_AST)
            code = compile(ast_tree, 'string', 'eval')
            if not isinstance(code, types.CodeType):
                raise AssertionError

            # Unloading the _ast module must not crash.
            del ast, _ast
            del sys.modules['ast'], sys.modules['_ast']
            gc.collect()
        r   )r   r   run_in_subinterprB   )r7   rb  ress      r   test_subinterpreterz$ModuleStateTests.test_subinterpreter	  sF        & &t,,a     r   N)r   r5   rZ   r  r  r
  r  r   r   r   r  r  [	  sP        4 4 4     $. . .*! ! ! ! !r   r  c                     t           dk    rd S t          j        dd          dgk    rt          dft          dft
          dffD ]`\  } }t          |dz              | D ]7}t          j        |d|          }t          t          |          d	           8t          d
           at          d           t          t          j                     d S )N__main__r   z-grd   re   rf   z_results = [rj   ,]zmain())r   r  argvrm   ro   rq   printr2   r~   r   
SystemExitunittestmain)
statementsrl   	statementr   s       r   r  r  	  s    :
x|v",f!5h7O",f!5!7 	 	J$~%&&&' 1 1	yC66x~~~~/0000#JJJJhMOOOOOr   r   )r   r   r   r   r  r   r  NN)r   r   r   r      )r   r  zmodule docstringNrR  )r   r   r   r  r"   r   )rS  )r   rZ  r   r  )r   r   r      )r   r   rZ  r   r  )r   r  zfunction docstringN)r   r   r   rp  r  r   r  r   r   r]   NN)rS  )r   r   r   rp  )r   r   r   r   )r   r   r   r   rZ  r   N)rS  )r   r  r   r   r  )r  r   r   r   r  r   NN)rS  )r   rp  r   r  )r   r   r   r  )r  )r   r   r   r   r   )r  r   r  r   r   )r   )r   rp  r   r   Tsr(  r&  N)rS  )r   r  r   r  )r   r   r   $   r  )r   r   r   r  r   r  )r   r  r   r  r  )r   rp  r   r  )r   )r   rp  r   r  r   r&  r  )r      r      )r   )r   r(  r   r  r   r&  r   r      r   r)  r&  )rS  )r       r   r'  )r  r*  )r   )r      r   r)  r%  r&  r&  )r   r   r      )r  r   r   r   rp  r   NN)rS  )r   r   r   r.  )r   r   r   G   )r   )r  r   rZ  r   r   r  NN)r  r   rp  r   rc  r  NN)r  r   r   r   r  r  NN)r  )r   r)  r   r  r
   NN)r  r   #   r   '   r   NN)r  )r   )   r   rK   r"   NN)r   )r   +   r   -   rK   N)r  )r   1   r   7   r   NN)r   r   r  r   r  r   N)r   r   r   r   r(  NNr  )r      r   r-  r"  )r      r   r,  )r   r   :   r   r0  )r   r@  zdoc for f()N)r   r   r      )rS  )r   r  r   rB  )r   r  r   r.  )r   r   r  r   r   r   r&  r   r   r   r(  )r  rD  )r   )r   r  r   r(  r%  r&  r&  )r   r   r   r,  )rS  )r   r)  r   r,  )r   r  r   r-  )r   r   r   r+  )r   rD  r   r&  )r  )r   r   r   r+  )r   )r   r  r   r+  r%  r&  r&  )r   r   r   r9  )rS  )r   r7  r   r9  )r   r  r   r6  )r   r   r   &   )r   r   r   rE  )r   r  r   rE  )r   )r   r  r   r)  r   r&  )r   r  r   r  )r   )r   r  r   r,  r   r&  )r   "   r   r  rX  )r   r   r   r  C)rS  )r   r   r   r  )r   r   rZ  r   r,  )r   rH  zdocstring for class CN)r   r/  r  r&  )Returnr   r   r   r   )r   r   rc  r   r   r   Nr^  r   r   r   r  )r   r   r  r   r  r-   )Delrb  r   r   r   r   r   r-   rI  )r   rM  r   Nr   r   r   r   r   r   r   r   )r   rP  r]   rQ  )r   r   rM   r   r   r  rQ  rQ  )r   r!  r  r&  )r   r   r   rZ  r   r   r   r   rM   r]   rQ  )r   r   r   r   r  r  rQ  )r   r"  r  r&  	AnnAssign)r   rP  rT   rQ  )r   r   r   r  )r   r   r   r   r   r   r&  r   rZ  r   r  )r  rZ  )r   r   r   r   r  r%  r&  r&  r   )r   r   r   r  )r   rZ  r   r   )r   rZ  r   r&  )r  )r   rp  r   r   )r   )r   rc  r   r   r%  r&  r&  )r   r   r      )r   r   r   r\  )r   rZ  r   r?  )r   rp  r   r?  )r   rc  r   r?  )r   )r   rc  r   r(  r   r&  )r   r.  r   r  )r   )r   r.  r   r>  r   r&  )r   r-  r   r  )re  r   r   r   r  rO  r  )r   r   r  r   r  r   Nr   )r   r   r   rc  )r   rM  r-   rQ  )r   r1  r-   r&  )rS  )r   r  r   rc  rl  )r   r!  r-   r&  ro  )r   rW  r-   r&  )rS  )r   r  r   rZ  )r   r   r  r  )r   rW  r]   r&  )rS  )rM   rM   rM   r  )r   r   r  r  )r   )r   r  r   r  r  r&  )rS  )r  rM   r  r  )r   r   r  r  )r   r   r  r  )rS  )r  rM   r  r  rr  )r   r   r   r   )rI  )r   r_  rT   r&  )r   r   r   r   r  r   rQ  )rS  )r   r  r   r   )r   r   r   r+  )rI  )r   r   r  r   rp  r   r&  )r   r   r  r   r  qrQ  )rS  )r   r.  r   r+  r  r  )r   r  r   r+  )r   )r   r  r   rc  r  r&  )r   )r   r   r   r>  r
  Nry  rz  )r   r   r   r   r   r  r&  r~  )r   )r   r   r   r   r  r&  )r  r   r   r   r   )r   r   r   r   r   r-   r&  Nr   )r   r   r   r   )r   r   r   r   r   r  Nr   r  )r   r   r   r   r   r-   Nr  re  r-   )r   rP  r   rP  r   N)rS  r  )BreakrC  )r   r   r   r  )Continue)r   r  r   r  )r   r  r   r   )r   rM  r]   rQ  )r   r!  r  rQ  )r   r<  r  r&  )r   r   r   r(  )r   r  r   rZ  )r   r_  r]   rQ  )r   rf  r  rQ  )r   ra  r  r&  )rS  r=  r   )r   r   r  r  r  )rM   r  r  r  )r   )r   r  r   r  Aar&  )r   )r  r   r  rZ  Bbr&  r   )r   r  r   r  )r   )r   r  r   r  rl  rQ  )r   )r   r  r   r  rm  rQ  )r   )r   r   r   r  Ccr&  )r   r   r   rF  r  r   rV  r]   r&  )r   r_  r  r&  )r   r<  r  rQ  )r   rh  rT   r&  )r   r3  r$  rQ  )r   )r   rB  r   r)  ri  r&  )r   )r   r,  r   !   r  r&  )r   r  r   rp  )r   r<  r-   rQ  )r   ra  r  rQ  )r   rb  rT   r&  r  )r   rV  ru  r&  )r   rf  r  rQ  )r   r   r  r   r  rT   r&  )r   r   r   r   r  r  r&  rg  )r   r1  r$  rQ  )r   r2  rT   r&  AsyncFunctionDef)r   r   r   r  )r   rM   r   rM   r   )r   rt  zasync functionN)r   r   r   r  Await)r   r   r   r  )r   rd  	somethingr&  )r   r   r   r   AsyncFor)rM   r   r   r   )r   )rM   r  rM   r  r
   rQ  )r   )rM   r   rM   r   rx   r&  )r   rM   r  rM   r(  )r   rx  r   N)r   r   r   r   r   )r   ry  rM   N)r   r   rM   r.  	AsyncWith)rM   r   rM   r.  )rI  )r   )rM   r  rM   r  r]   r&  )r   )rM   r   rM   r  r  rQ  )r   rM   r(  rM   r.  )r   r{  r   N)r   r`  rM   NrY  )r   r!  rM   N)r   rq  r   Nr  )r   r   r   r   )r   rM   r   r   )r   rW  r   N)r   r`  r   Nr  )r   )rM   rM   rM   r   rx   r&  )r   )rM   rp  rM   rc  r  rQ  )r   rx  r  r&  )r  r   r  r  )rS  )r  rZ  r  r  )r   r   r   r   r  deco1r&  )rM   r   rM   r   )r   )rM   r   rM   r  deco2r&  )r   r   r   rZ  )r   )r   r   r   r  deco3r&  )r   ry  r   N)r  r   r  r  )rS  )r  rc  r  r  )rM   r   rM   r  )rS  )rM   rZ  rM   r  )r   r   r   r  )r   r   r   r   r  decor&  )r   r  r   r  )r   r!  r]   r&  )r   rq  r]   rQ  )r   rr  r  r&  )r  r|  )r  )r   r   r   r  ro  r  r&  r  r&  )r   re  )	NamedExpr)r   r   r   r   rU  )r   r!  r   N)r   r   r   r-  )r  rq  r  NN)r  rK  r  NN)r  rb  r
   NN)rS  )r   r   r   r-  r  )r  rb  r  NN)r  r   r.  r   r   r
   NN)rS  )r   r+  r   r  )r   r   r   r6  )r  )r   r-  r   r,  r   NN)rS  r4  r   r"  r   N)r  r2  r  NN)r  )r   r  r   r(  r  NN)r  r   rh  rM   N)r   r  r  N)r  r3  r  NN)r   )r   r>  r   r+  r  Nr  )r   r   r   r?  )rS  )r   r-  r   r?  )r   r   r   rK   )r  )r   r  r   r5  r   NN)rS  )r   rE  r   rK   )r   r   r   rx  )r  )r   rB  r   rp  r   NN)rS  )r   r'  r   rx  rH  )r   rS  )r  rS  ri  r^  r   rT  rM   N)r.  r  r.  r  )r  r   rP  r]   r&  )r   r!  r  r&  )r.  )r  rL  r  r^  r   rM  r  r&  )r.  )r)  rL  )r;  )r   rM  r-   r&  r  )r   r   r   r  )r   r#  NNr   rT  r   Nr   rM  rM   Nr   r   r   rM   )r   r  NN)r   r   r  r  )r   )rM   r  rM   r   r   N)r   )r  r   r  r  rM   N)r   rq  r  r&  )r   rr  r  r&  r|  )r   rT  r]   r&  r  )r   r<  r]   rQ  )r   ra  r  rQ  )r   rb  r  r&  )r   r   r   r   rC  )r   r2  r  rQ  )r   )r   r(  r   r.  r  r&  r  ri  )Ltr   r"  r   N)r   rP  r"   r&  )r  r  )r  r[  )r   r<  r  r&  r&  )r  )r   r  r   rZ  r  r  )r  r$  N)r   rK  r
   r&  )r   rM   r   rZ  )r   r   r   rZ  )r   rM  r   N)r   rf  r   N)r   r   r   rc  )r   r"  r]   rQ  )r   ra  r  r&  )r.  )r   r  r   N)r.  )r   re  r
  N)r.  r  rS  r  r  r&  )r.  )r  r]  r  )r  )r   rM   r   r  )r   rT  r  r&  )r   rM  r  r&  Nr&  )r.  )r   rP  r-   r&  ))r   rV  r   N)r   rW  rM   N)r   r_  r   N)ri  r  )r   rM  r   N)r  rR  )r  rL  r  r  r&  r  r&  )r  rJ  )r  )r   r   r   r  )r   r"  r]   r&  r  r&  )r  )r   r  r   rc  )r   rq  r   N)r   r2  rM   NNr&  )!r2   r   rC  rn  r  r  r  r  r  r  r^   textwrapr   r  r   r   rm   ro   rq   TestCaser0   r  rA  r*  rW  r  r  r  r  r   rn   rp   rr   r   r   r   <module>r     s)/   



  



  				 				 



                  &S S S
r 
F F F
Vn	7 n	7 n	7 n	7 n	7! n	7 n	7 n	7`Y= Y= Y= Y= Y=h' Y= Y= Y=xq6 q6 q6 q6 q6) q6 q6 q6hB' B' B' B' B'H% B' B' B'JV8 V8 V8 V8 V8x( V8 V8 V8p
/ / / / /x( / / /d 	N! N! N! N! N!x( N! N! N!b   N	JKR PN	Z[]_ `N 
]M3b"dBPRTXZ\0]`w_xz|  C  EI  J  K  MO  PN 
]M3b"dBPRTXZ\0]  aq  `r  tv  x|  ~B  C  D  FH  I	N
 
]M3bCiBjlprtvxz~  AC  1D  G_  F`  bd  fj  lp  q  r  tv  wN 
]M3bCiBjlprtvxz~  Be  Af  1g  jB  iC  EG  IM  OS  T  U  WY  ZN 
]M3b"Fprtvxz~  AC  1D  G_  F`  bd  fj  lp  q  r  tv  wN 
]M3b"  G~  @B  DF  HL  NP  1Q  Tl  Sm  oq  sw  y}  ~    AC  DN 
]M3b"um]cfoq  CN  P^  `L  OV  Xf  iS  V`  bp  rz  |@  UA  hB  DM  NN  PY  BZ  \e  ff  hl  Gm  oq  su  w{  }  1@  C[  B\  ^`  bf  hl  m  n  pr  sN 
]M3b"um]cfoq  CN  P^  `L  OV  Xf  iS  Uf  hg  ir  Ns  u~  B  AJ  fK  MQ  GR  TV  XZ  \`  bd  1e  h@  gA  CE  GK  MQ  R  S  UW  XN 
]M3b"dBPR  UA  CE  1F  Ia  Hb  df  hl  nr  s  t  vx  yN 
]M3b  CR  CR  CR  T  Bj  Ak  nT  mU  WD  Gl  nV  Y_  ao  qs  u~  X  B	H	  J	X	  Z	\	  ^	`	  A	a	  Fb	  1c	  f	q
  e	r
  t
v
  x
|
  ~
B  C  D  FH  IN 
]M3b"dBPRTXZ\0]`x_y{}  AL  N\  ^J  MT  Vd  gx  fy  {D  LE  GP  @Q  SW  X  Y  []  ^N 
]M3b"dBPRTXZ\0]`x_y{}  AL  N\  ^J  MT  Vd  gQ  Sd  fe  gp  Lq  s|  @}  C  D  E  GI  JN 
]M3b"dBPRTXZ\0]`x_y{}  AL  N\  ^J  MT  Vd  gQ  T]  _m  p{  }K  My  |C  ES  V@  CM  O]  _g  im  Bn  Uo  qz  {{  }F  oG  IR  SS  fT  V_  L`  bk  @l  nr  s  t  vx  yN  
ZR6M5NPRSTVX Y!N" 
ZR  7J  6K  MO  P  Q  SU  V#N$ 
Z.Z-[]_bza{}  A  B  DF  G%N& 
]M3b"dBPRTXZ\0]  aa  `b  df  hl  nr  s  t  vx  y'N( 
X|&K%LMNPR S)N* 
X|&M%NPsuyz{}  A+N, 
X|w?f  iP  ?Q  S]  '^  &_  aG  IM  N  O  QS  T-N. 
X|w?f  iP  ?Q  S]  '^  &_  aG  IM  N  O  QS  T/N0 
X|v|>e  hO  >P  R\  ']  &^  `F  HL  M  N  PR  S1N2 
[-)PS^`m  pZ  ]d  fs  vF  uG  IR  \S  U^  S_  ae  gh  i  j  ln  o3N4 
[-)PS^`m  pZ  ]d  fs  v_  ar  us  u~  \  AJ  SK  MQ  ST  U  V  XZ  [5N6 
[-)PS^`m  pZ  ]d  fs  v_  bk  m{  ~I  KY  [G  JQ  Sa  dN  Q[  ]k  mu  w{  P|  c}  H  II  KT  }U  W`  aa  ub  dm  \n  py  Sz  |@  BC  D  E  GI  J7N8 
  A  CE  F9N: 
UM#JLs  wO  vP  RT  VZ  [  \  ^`  a;N< 
Wm%KNeMfhjklnp q=N> 
T<!GJ`Iacefgik l?N@ 
T<!GJ`Iaeikw  z`  cy  bz  |~  e  d@  A  B  DF  GANB 
T<!GJ`Iaeikw  z`  cy  bz  }S  |T  eU  dV  W  X  Z\  ]CND 
V]  &E  %F  Ia  Hb  dh  i  j  ln  oENF 
V]  &E  Gh  %i  lD  kE  GK  L  M  OQ  RGNH 
Wmfm=l  p\  o]  _a  &b  dh  i  j  ln  oINJ 
UL#9":o|  ^M  OS  Vl  Um  >n  =o  qs  uw  x  y  {}  ~KNL 
UL#9":BE[D\]^`b cMNN 
Y'=&>/S_  bQ  SW  Zp  Yq  Br  As  uw  y{  |  }  A  BONP 
RSUW XQNR 
X}'L&MNOQS TSNT 
\=%2V1WYZ[\^` aUNV 
X|cU+,b 1WNX 
GH" MYNZ 
"#R ([N\ 
UM#JLs  wP  vQ  SU  W[  \  ]  _a  b]N^ 
UM#JLs  wS  vT  VX  Z^  _  `  bd  e_N` 
UMG\<c  fM  <N  PZ  $[  ]E  H`  Ga  ce  gk  l  m  oq  raNb 
UMG\<c  fM  <N  PZ  $[  ]E  H`  Ga  ce  gk  l  m  oq  rcNd 
UMFL;b  eL  ;M  OY  $Z  \D  G_  F`  bd  fj  k  l  np  qeNf 
V]^]Wl  ^E  Gn  ]o  qz  E{  N  QX  Zg  jR  T~  i  AK  PL  Ny  {}  @  ~A  }B  %C  D  E  GI  JgNh 
V]Z@f  iO  Sb  dM  Ow  y{  }~  R  BQ  S|  ~f  iQ  hR  TU  AV  QW  %X  Y  Z  \^  _iNj 
V]Z@f  iO  Sb  el  n|  h  jS  ~T  V`  da  cK  MO  QR  RS  QT  %U  V  W  Y[  \kNl 
V]Y?eix  {b  dL  Ow  Nx  z{  i|  h}  %~    @  BD  EmNn 
V]Y?eix  |C  ER  U|  ~f  Tg  is  {t  v^  `b  de  if  hg  %h  i  j  ln  ooNp 
k2r4QSUWY]_a5b  fr  u{  }J  MT  Vc  fl  n{  }l  np  rt  eu  Lv  tw  ex  z|  ~B  DH  I  J  LN  OqNr 
s["b$PRTVX\^`4aeoq}  @i  kS  VU  UV  YT  XU  W[  e\  d]  _a  cg  im  n  o  qs  tsNt 
k2r4QSUWY]_a5bfq  tA  De  Cf  ih  hi  ko  fp  eq  su  w{  }A  B  C  EG  HuNv 
V]V]TCh<ims  vB  Eh  Di  lO  kP  mQ  Sx  ly  %z  {  |  ~@  AwNx 
V]UMYW\^j  nQ  Sv  mw  Wx  zC  =D  Fk  <l  %m  n  o  qs  tyNz 
k2r4QSUWY]_a5bfln{  I  KX  Z@  DS  U~  @h  jl  no  Cp  Bq  ~r  fs  et  vx  z~  @D  E  F  HJ  K{N| 
]M3b"dBPRTXZ\0]`w_x  |f  io  q}  i  km  oq  hr  u{  }I  Ku  x[  w\  ^`  ta  {b  dh  jn  o  p  rt  u}N~ 
k2r4QSUWY]_a5be}d~  Bl  ou  wC  Eo  qs  uw  nx  {A  CO  Q{  ~a  }b  df  zg  Ah  jn  pt  u  v  xz  {N@ 
ZR6M5NQ{  E  GS  U  AC  EG  ~H  KQ  S_  aK  Nq  Mr  tv  Jw  Qx  y  z  |~  ANB 
]M3b"dBPRTXZ\0]`w_x  }C  ER  T}  AO  Q^  `F  JY  [D  Fn  pr  tu  Iv  Hw  @x  y  {}  |~  {  AE  GK  L  M  OQ  RCND 
]M3b"dBPRTXZ\0]`w_x  ||  {}  C  EI  J  K  MO  PENF 
  N  O  QS  TGNH 
]M3?e>fhjlprtvxz~  AC  1D  G_  F`  bd  fj  lp  q  r  tv  wINJ 
]M3?e>f  ig  ig  ig  im  oq  su  w{  }  1@  C[  B\  ^`  bf  hl  m  n  pr  sKNL 
]M3?e>f  jR  iS  UY  \D  Fn  [o  rv  x|  q}  C  EG  1H  Kc  Jd  fh  jn  pt  u  v  xz  {MNN 
]M3?e>f  jR  iS  UY  \D  Fn  [o  rv  x|  q}  l  np  1q  tL  sM  OQ  SW  Y]  ^  _  ac  dONP 
]M3?e>fhjlprtvxz~  Be  Af  1g  jB  iC  EG  IM  OS  T  U  WY  ZQNR 
]M3?e>f  jR  T|  i}  C  EG  IK  MQ  SF  SF  SF  1G  Jb  Ic  eg  im  os  t  u  wy  zSNT 
]M3?e>f  jR  iS  UY  \D  [E  Hm  Gn  pt  wZ  \A  vB  1C  F^  E_  ac  ei  ko  p  q  su  vUNV 
]M3?e>f  jR  iS  UY  \D  [E  HL  GM  OS  Vy  {`  Ua  1b  e}  d~  @B  DH  JN  O  P  RT  UWNX 
]M3?e>f  jR  iS  UY  \D  [E  Hm  Gn  p]  `C  Ej  _k  1l  oG  nH  JL  NR  TX  Y  Z  \^  _YNZ 
]M3?e>f  jR  iS  UY  \D  [E  HL  GM  O|  b  dI  ~J  1K  Nf  Mg  ik  mq  sw  x  y  {}  ~[N`   U  V  W$ 6$,3Y  \B  3C  D  E$ B$ \	$
 -+r2tRTSU)VX  A  B$ 'J&KNqMrs t$ b"- .$ |&L%MN O$ 'J&KNsMtu v$ 
M+QUd  gN  Px  {c  zd  fg  Uh  Ti  j  k$ /UYh  kR  T|  g  ~h  jk  Yl  Xm  n  o$ 
MG\Dj  mS  DT  V_  ,`  ds  v}  M  Py  {d  Oe  gq  ur  t\  ^`  bc  cd  be  f  g$ 
MG\Dj  mS  DT  V_  ,`  ds  v}  M  Py  {d  Oe  gq  ur  t\  ^`  bc  cd  be  f  g$ 
MG\Dj  mS  DT  V_  ,`  ds  v|  ~L  Ox  zc  Nd  fp  uq  s[  ]_  ab  cc  bd  e  f$ 	=7LCi  lR  CS  U^  +_  cr  u|  ~L  Ox  zc  Nd  fp  tq  s[  ]_  ab  bc  ad  e  f$  	=7LCi  lR  CS  U^  +_  cr  u|  ~L  Ox  zc  Nd  fp  tq  s[  ]_  ab  bc  ad  e  f!$" 	=7LCi  lR  CS  U^  +_  cr  u{  }K  Nw  yb  Mc  eo  tp  rZ  \^  `a  bb  ac  d  e#$$ Hn  qW  HX  Zc  0d  hw  zA  CQ  T}  h  Si  ku  yv  x`  bd  fg  gh  fi  j  k%$& Hn  qW  HX  Zc  0d  hw  zA  CQ  T}  h  Si  ku  yv  x`  bd  fg  gh  fi  j  k'$( Hn  qW  HX  Zc  0d  hw  z@  BP  S|  ~g  Rh  jt  yu  w_  ac  ef  gg  fh  i  j)$* 	<)LwX_N`  dG  Il  cm  n  o+$, 'M  Pl  Pl  Pl  or  t  n@  A  B-$. 'MQZ\hkqs  Cf  hK  BL  NW  kX  Zc  Qd  Pe  gi  j  k/$0 'MQ_an  qW  [j  lS  U}  A  CD  ZE  YF  QG  PH  JL  M  N1$2 53$4 ;5$6 d7$8 N9$: 7;$<   'V  'V  'V  Xa  b  c=$> b)4 5?$@   (W  (W  (W  Yb  c  dA$B   (W  (W  (W  Yb  c  dC$D r95 6E$F   (U  XD  WE  GI  J  KG$J r   