
    daf2                       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Zd dlmZ d dlmZ d dlmZ d dlmZ d dlmZmZ d dlmZ d Zg d	Zd
gZg dZ G d de	j8                        Z G d de	j8                        Z G d de	j8                        Z G d de	j8                        Z  G d de	j8                        Z! G d d      Z" G d de"e	j8                        Z# G d dee"e	j8                        Z$ejJ                   G d de	j8                               Z& G d de	j8                        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g f	gg fd!d$d)d&d'g g dg g dg fd*gg ddg f	gg fd!d$d+d&d'g d,gdg g dg fd-gg ddg f	gg fd!d$d.d&d'g d,gdg g dd/gfd0gg ddg f	gg fd!d$d1d&d'g g d2g g dg fd3gg ddg f	gg fd!d$d4d&d'g g d5g g dg fd6gg ddg f	gg fd!d$d7d&d'g g d8d9d:d;d<d=d>d?d@dAdBdCdDe)dfgdEfdEfdEfdfg g dg fdFgg ddg f	gg fd!d$d7d&d'g g d8d9d:d;d<d=d>d?d@dAdBdGgdEfdEfdEfdfg g dg fdFgg ddg f	gg fd!d$dHd&d'g g dg g dIg fdJgg ddg f	gg fd!d$dKd&d'g g dLdMdNgdOgdPdQdRdSdTg dEfdUdVg g fgfdWgg ddg f	gg fd!d$dXd&d'g g dg g dg fdYgg d=dZd[d@d\d]gdEfdEfdg f	gg fd!d$d^d&d'g g dg g dg fd_gg d=d`d[d@dadbdcgdEfdEfdg f	gg fd!d$ddd&d'g g dg g dg fdegg d=dfd[d@dgdbd;dhd=didjd@dkdldCdme)dfgdEfdEfdEfgdEfdEfdg f	gg fd!dndodpg g dqgg g fgg fd!dnd^dpg g drgg g fgg fd!dndHdpdsgg dJgg g fgg fd!d$d.d&d'g g dg g dg fdtgg ddg f	gg fd!dudvdwgfgg fd!dxdvdygdzdfgg fd!dxd{d@d|d}d~gdfgddfgg fd!dxdd@dvddgdfgddfgg fd!dxddSdvddgdfgddfgg fd!dd%dd=ddd@ddgdEfdEfddfgg fd!dd1dd=ddd@dddgdEfdEfddfgg fd!dddd=ddd@ddd;dd=ddd@dddCde)dfgdEfdEfdEfgdEfdEfddfgg fd!dgg fd!dddddgg dfgg fd!ddoddqgg fgg fd!ddddg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!dd1d@dddgdfdd3gg dfgg fd!ddd@dddgdfddgg dfgg fd!dddSdddgdfddgg dfgg fd!ddddd@dddgdEfdd@dddgdfdg d fgffgg fd!dddddddddg d fddddgd fgffgg fd!dddddddd@dddgdfdg d fgffgg fd!dddddddddgd fgffgg fd!dd.dd.ddd@dddgdf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g f	gg fd!ddd&d'g g dg g dg fdd dddgdgdfgg ddg f	gg fd!ddd&d'g g dg g dg fdddgd	gdfgg ddg f	gg fd!dd+dUd+dd
gdUddzgdgfdgffgg fd!ddoddod;dddddgfdEfdgffgg fd!ddd&d'g g dg g dg fdאdddddݐddg dfgffgg ddg 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g 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g f	gg fd!dnddpg g dgddddg g fddddgg fg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g f	gg fd!d$d!d&d'g g dg g dg fd"gd)gddg f	gg fd!d*gg fd!d$d1d&d'd,gg dg g dg fd3gg ddg f	gg fd!d$d+d&d'd,gg d,dg g dg fd-gg ddg f	gg fd!d$d)d&d'd,gd.gdd/d0gddgdg fd1gg ddg f	gg fd!d$d2d&d'd,gd.gdd/d0gddgd3g fd4gg ddg f	gg fd!d$dd&d'd,gg dg g dd5gfdgg ddg f	gg fd!d$d)d&d'd,gd6d7gdg g dg d8fd1gg ddg f	gg fd!d$d^d&d'd,gd6gdd9gd:gdd5d;gfd_gg ddg f	gg fd!d$d<d&d'd,gd6gdd9gdgdd5d;gfd=gg ddg f	gg fd!d$d>d&d'd,gd6gdd9gd:gd?d5d;gfd@gg ddg f	gg fd!d$dAd&d'd,gd6gdd9gdgdBd5d;gfdCgg ddg f	gg fd!dDdodEg dfgg fd!dDddEdFgdGfgg fd!dDd^dEg dHd@dIg dJdEffgg fd!dDdKdEg dLd@dMg dNdEffgg fd!dDdOdEdPdQdRd@dSdTdUgdEffdVdWgd@dXg dYdEffgg fd!dnd.dZg g d0gg d[gfgg fd!dnd+dZg g d-gg g d\fgg fd!dnddZg g d]gg g d^fgg fd!dnd_dZg g d`gg dPdadRd@dZdGdbgdEffdcddgfgg fd!d$d.d&d'g g dg g dg fd0gg dddegf	gg fd!d$d+d&d'g g dg g dg fd-gg ddg dff	gg fd!d$dd&d'g g dg g dg fd]gg ddg dgf	gg fd!d$d_d&d'g g dg g dg fd`gg dddPdhdRd@didjdkgdEffdldmgf	gg fZ*dndogfgZ+g dpdqdrd{dsdtdugffdvdwdqdxdyd'g g dg g dg fdzffdqdUd{d{gd|gffdqdUd}g g ffdqdd{d~gffdqdUddgdgffdqdddddԐddgd fgffdqdddddԐddgd fgffdqddd@dddgdEfdd@dddgdfdg d fgffdqddd@dddgdEfdd@dd'dgdfdg d fgffdqddd@dddgdEfddSdd'dgdfdg d fgffdqddd@dddgdEfdd@dddgdfdg d fgffdqddd@dddgdEfdd@dd'dgdfdg d fgffdqddd@dddgdEfddSdd'dgdfdg d fgffdqddd@dddgdEfdd@dddgdfdg d fgffdqdِdd@dddgdEfdd@dd'dgdfdg d fgffdqdِdd@dddgdEfddSdd'dgdfdg d fgffdqdddddgd|dgffdqdddg dddgffdqdddd;ddSdddgdEfdEfgg ffdqddddِdddݐddg d fgfgg ffddddddqdSd{g ddEffdqdSd}g dEffdqd@dvg ddEffdqd@d{g ddEffdqd@d}g dEffdqddddgg ffZ, e(        y(      N)partial)dedent)support)import_fresh_module)	os_helperscript_helper)ASTTestMixinc           	      |   | #t        | t        t        t        f      s| t        u r| S t        | t
              r| D cg c]  }t        |       c}S | j                  j                  g}t        | d      rnt        | d      rb|j                  | j                  | j                  f       t        | d      r/t        | d      r#|dxx   | j                  | j                  fz  cc<   | j                  t!        |      S | j                  D ]&  }|j                  t        t#        | |                   ( t!        |      S c c}w )Nlineno
col_offset
end_linenoend_col_offset)
isinstancestrintcomplexEllipsislistto_tuple	__class____name__hasattrappendr   r   r   r   _fieldstuplegetattr)teresultfs       (/root/Python-3.12.4/Lib/test/test_ast.pyr   r      s    yJq3W"56!x-	At	%&'''kk""#Fq(< 8qxx./1l#3C(D2J1<<)9)9::JyyV}YY /hwq!}-./= (s   D9)Z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): passtype X = intztype X[T] = intz type X[T, *Ts, **P] = (T, Ts, P)z%type X[T: int, *Ts, **P] = (T, Ts, P)z,type X[T: (int, str), *Ts, **P] = (T, Ts, P)class X[T]: passzclass X[T, *Ts, **P]: passzclass X[T: int, *Ts, **P]: passz&class X[T: (int, str), *Ts, **P]: passdef f[T](): passzdef f[T, *Ts, **P](): passzdef f[T: int, *Ts, **P](): passz&def f[T: (int, str), *Ts, **P](): 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                      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 Z!d  Z"d! Z#d" Z$e%jL                  d#        Z'd$ Z(d% Z)d& Z*d' Z+d( Z,d) Z-d* Z.d+ Z/d, Z0d- Z1d. Z2 e3jh                  e%jj                  d/      e%jL                  d0               Z6d1 Z7d2e8e9jt                     d3e;d4e;d5dfd6Z<d8d7Z=y)9	AST_TestsNc                 v    t        |t              syd|j                  vry|dk7  xr |d   j                         S )NFastASTr   )r   type
__module__isupper)selfnamenodes      r"   _is_ast_nodezAST_Tests._is_ast_node"  s8    $%'u}2a!22    c                    t        |t        j                        r|j                  y t        |t        j                  t        j
                  t        j                  f      rB|j                  |j                  f}| j                  ||       |j                  |j                  f}|j                  D ]t  }t        ||      }t        |t              rA|}|r#|dk(  r|d   j                  |d   j                  f}|D ]  }| j                  ||        `|c| j                  ||       v | j                  |j                  |j                         y )Ndecorator_listr   )r   r5   r6   r   exprstmtexcepthandlerr   r   assertGreaterEqualr   r   _assertTrueorderassertEqual__match_args__)r:   ast_node
parent_posnode_posr;   value	first_poschilds           r"   rE   zAST_Tests._assertTrueorder)  s   (CGG,0@0@0Hh388S5F5F GH )<)<=H##Hj9"//8+>+>?J$$ 		9DHd+E%&&	T%55!&q%(2E2E FI" <E))%;<"%%eZ8		9 	))8+B+BCr>   c                    t        j                         }| j                  |j                  d       d|_        | j                  |j                  d       | j                  |j
                  d   d       | j                  t              5  |j                   d d d        | j                  t              5  t        j                  d       d d d        y # 1 sw Y   =xY w# 1 sw Y   y xY w)N *   foobar   )
r5   r6   rF   r   rQ   __dict__assertRaisesAttributeErrorvararg	TypeErrorr:   xs     r"   test_AST_objectszAST_Tests.test_AST_objects<  s    GGIB'2&H-r2~. 	HH	 y) 	GGAJ	 		 		 	s   C2CCC&c                     G d d      }t        j                         } |       |_        ||j                  _        t	        j
                  |j                        }~t        j                          | j                   |              y )Nc                       e Zd Zy)0AST_Tests.test_AST_garbage_collection.<locals>.XNr   r8   __qualname__rO   r>   r"   Xr]   K      r>   r`   )	r5   r6   rY   aweakrefrefr   
gc_collectassertIsNone)r:   r`   rb   rd   s       r"   test_AST_garbage_collectionz%AST_Tests.test_AST_garbage_collectionJ  s\    	 	GGIckk!###% r>   c           	         t         t        dft        t        dft        t
        dffD ]  \  }}}t        ||      D ]  \  }}| j                  d|      5  t        |d|t        j                        }| j                  t        |      |       | j                  |d       d d d        | j                  d||	      5  t        d|       d d d          y # 1 sw Y   8xY w# 1 sw Y   xY w)
Nexecsingleevalparsing)actioninput?)r   r   	compiling)rm   rn   kind)
exec_testsexec_resultssingle_testssingle_results
eval_testseval_resultszipsubTestcompiler5   PyCF_ONLY_ASTrF   r   rE   )r:   rn   outputrq   ioast_trees          r"   test_snippetszAST_Tests.test_snippetsU  s    %/v$F%1>8$L%/v$F$H 		1E64 E6* 11\\!\< <&q#tS5F5FGH$$Xh%7;))(F;< \\AD\I 1Hc401 11		1< <1 1s   A
C9C C C)c                 ~    t         t        z   t        z   }|D ]$  }t        j                  |      }t        |dd       & y )N<string>ri   )rr   rt   rv   r5   parserz   )r:   snippets_to_validatesnippettrees       r"   test_ast_validationzAST_Tests.test_ast_validationa  s;    )L8:E+ 	.G99W%DD*f-	.r>   c                    g d}|D ]  \  }}| j                  d| d|       5  d}t        j                  |      }||j                  d   _        ||j                  d   _        | j                  t              5  t        |dd       d d d        d d d         g d}|D ]  \  }}| j                  d| d|       5  d}t        j                  |      }||j                  d   _	        ||j                  d   _
        | j                  t              5  t        |dd       d d d        d d d         y # 1 sw Y   xY w# 1 sw Y   AxY w# 1 sw Y   -xY w# 1 sw Y   xY w)	N))
      )i)r   r   ))r   r   zCheck invalid linenos :za = 1r   r   ri   zCheck invalid col_offset )ry   r5   r   bodyr   r   rT   
ValueErrorrz   r   r   )	r:   invalid_linenosr   r   r   r   invalid_col_offsetsr   r   s	            r"   !test_invalid_position_informationz+AST_Tests.test_invalid_position_informationh  sj   
 #2 	6FJ 6vha
|LM 6!yy)&,		!#*4		!'&&z2 6D*f566 6	6
 +> 	6&J 9*Q~FVWX 6!yy)*4		!'.<		!+&&z2 6D*f566 6	66 66 6"6 66 6sI   AD>9D2D><AEEE2D;7D>>E	EEE 	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	       y )
Nbuiltinsr   r   r;   r   r   )namesr   r   	traceback)r   type_ignoresr   ri   )r5   ModuleImportaliasrz   r:   r   s     r"   >test_compilation_of_ast_nodes_with_default_end_position_valueszHAST_Tests.test_compilation_of_ast_nodes_with_default_end_position_values  sl    zzJJciiZaPQZ[hijJJcii[qQR[\ijk 
  	j&)r>   c                    t        j                  d      j                  d   j                  j                  }| j                  |j                         | j                  |j                         | j                  |j                         y )Nzx[::]r   )	r5   r   r   rK   slicerf   upperlowerstep)r:   slcs     r"   
test_slicezAST_Tests.test_slice  s]    ii %%a(..44#))$#))$#((#r>   c                 ~    t        j                  d      j                  d   }| j                  |j                         y )Nzfrom . import yr   )r5   r   r   rf   module)r:   ims     r"   test_from_importzAST_Tests.test_from_import  s.    YY()..q1"))$r>   c                     t        j                  d      }| j                  |j                  d   t         j                         dj                         |j                  d   _        t        |dd       y )Nzfrom __future__ import divisionr   z __future__ <test>ri   )r5   r   assertIsInstancer   
ImportFromstripr   rz   )r:   mods     r"   !test_non_interned_future_from_astz+AST_Tests.test_non_interned_future_from_ast  sR    ii9:chhqk3>>:+113Xv&r>   c                    t        j                  d      j                  d   }| j                  t	        |j
                        d       |j
                  d   }| j                  |j                  d       | j                  |j                         | j                  |j                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j                  d       t        j                  d      j                  d   }|j
                  d   }| j                  |j                  d       | j                  |j                         | j                  |j                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j                  d       t        j                  d	      j                  d   }|j
                  d   }| j                  |j                  d       | j                  |j                  d
       | j                  |j                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j                  d       t        j                  d      j                  d   }|j
                  d   }| j                  |j                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j                  d       y )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   )r5   r   r   rF   lenr   r;   rf   asnamer   r   r   r   )r:   r   r   s      r"   
test_aliaszAST_Tests.test_alias  s   YY*+003RXX*S)%,,'q)))1-))2.--r2YY*+003S)%,,'q)))1-))2.--r2YY/055a8S)s+q)))1-))2.--r2YY*+003U+u-q)))1-))1---r2r>   c                    | j                  t        t        j                  t        j                               | j                  t        t        j
                  t        j                               | j                  t        t        j                  t        j                               | j                  t        t        j                  t        j                               | j                  t        t        j                  t        j                               | j                  t        t        j                  t        j                               y N)

assertTrue
issubclassr5   ForrB   NamerA   r6   comprehensionGtr:   s    r"   test_base_classeszAST_Tests.test_base_classes  s    
377CHH56
388SXX67
388SWW56
388SWW56
3#4#4cgg>?
36637734r>   c                     t        d      }d}dD ]<  }| j                  t        |j                  |            5  t	        ||       d d d        > y # 1 sw Y   IxY w)Nr5   zSast\.{} is deprecated and will be removed in Python 3.14; use ast\.Constant insteadNumStrBytesNameConstantr   )r   assertWarnsRegexDeprecationWarningformatr   )r:   r5   
depr_regexr;   s       r"   test_import_deprecatedz AST_Tests.test_import_deprecated  sh    !%() 	 F 	#D&&'9:;L;LT;RS #T"# #	## #s   AA	c                 2   t        j                         5  t        j                  ddt               ddlm}m}m}m}m	} d d d        dD ]  }t        t        |      }| j                  ||      s&| j                  |      5  | j                  t              5   |       }d d d        d d d        t        t        j                        s| j!                  t#        |j$                        t&                y # 1 sw Y   xY w# 1 sw Y   dxY w# 1 sw Y   hxY w)Nignore r   r   )warningscatch_warningsfilterwarningsr   r5   r   r   r   r   r   r   r=   ry   assertWarnsr   r6   assertIsr7   r   r   )	r:   r   r   r   r   r   r;   itemrY   s	            r"   $test_field_attr_existence_deprecatedz.AST_Tests.test_field_attr_existence_deprecated  s    $$& 	D##Hb2DECC	D H 	:D3%D  t,\\$' #))*<= # F## a)MM$qyy/59	:		D 	D# ## #s/   *C5 DDD5C>D
DD	c                 "   t         j                  j                         D ]n  \  }}|dv r|dk(  r| j                  ||      s$ |       }t	        |t         j
                        sF| j                  t        |j                        t               p y )N>   r   r   r   r   r   Index)
r5   rS   itemsr=   r   r6   r   r7   r   r   )r:   r;   r   rY   s       r"   test_field_attr_existencez#AST_Tests.test_field_attr_existence  ss    ,,,,. 
	:JD$JJw  t,Fa)MM$qyy/59
	:r>   c                    t        j                         }| j                  |j                  d       | j	                  t
              5  |j                   d d d        | j                  |j                         t        j                  t        dd       }| j                  |j                  d       | j                  |j                  d       y # 1 sw Y   yxY w)N)posonlyargsargsrV   
kwonlyargskw_defaultskwargdefaultsr      rR      )
r5   	argumentsrF   r   rT   rU   r   rf   rV   rangerX   s     r"   test_argumentszAST_Tests.test_arguments  s    MMO %I 	J ~. 	FF	!((#MM5A;'#1%	 	s   CCc                     t        j                         5  t        j                  ddt               t	        j
                         }d d d        d_        | j                  |j                  d       y # 1 sw Y   -xY w)Nr   r     )r   r   r   r   r5   r   r   rF   rX   s     r"   #test_field_attr_writable_deprecatedz-AST_Tests.test_field_attr_writable_deprecated  s^    $$& 	##Hb2DE	A	 	C(	 	s   0A11A:c                 r    t        j                         }d|_        | j                  |j                  d       y )Nr   )r5   Constantr   rF   rX   s     r"   test_field_attr_writablez"AST_Tests.test_field_attr_writable  s(    LLN	C(r>   c           	      F
   t        j                         5  t        j                  ddt               ddlm}m}m}m}m	} d d d        t        j                  d      5 }t        j                  ddt               t	        j
                         }| j                  |j                  d       | j                  t              5  |j                   d d d        | j                  t              5  |j                   d d d        t	        j
                  d	      }| j                  |j                  d	       | j                  |j                  d	       | j                  t              5  |j                    d d d        | j                  t              5  |j"                   d d d        t	        j
                  d
      }| j                  |j                   d
       t	        j
                  d	d      }| j                  |j                   d       | j                  |j                  d       | j                  |j                  d	       | j                  |j                  d	       | j                  t$        t        j
                  dd d
       | j                  t$        t        j
                  dd d
d       | j                  t	        j
                  dd      j&                  d       | j)                  t$        d      5  t	        j
                  dd
       d d d        | j                  t	        j
                  d	      j                  d	       | j                  t	        j
                  d      j                  d       | j                  t	        j
                  d      j                  d       | j                  t	        j                  d      j*                  d       | j                  t	        j                  d      j*                  d       | j-                  t	        j                  d      j                  d       | j-                  t	        j                  d      j                  d       | j-                  t	        j                  d       j                  d        d d d        | j                  D cg c]  }t/        |j0                         c}g d       y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   dxY w# 1 sw Y   xY w# 1 sw Y   xY wc c}w )Nr   r   r   r   TrecordalwaysrK   rq   rP   rR   r   r   r   r   z(Num got multiple values for argument 'n'n      @              @42   42F)Rast.Num is deprecated and will be removed in Python 3.14; use ast.Constant insteadOAttribute n is deprecated and will be removed in Python 3.14; use value insteadr   r  r   r   r  r   r   r   r   r  r   r  r   r  Rast.Str is deprecated and will be removed in Python 3.14; use ast.Constant insteadOAttribute s is deprecated and will be removed in Python 3.14; use value insteadTast.Bytes is deprecated and will be removed in Python 3.14; use ast.Constant insteadr  [ast.NameConstant is deprecated and will be removed in Python 3.14; use ast.Constant insteadr  r  )r   r   r   r   r5   r   r   r   r   r   rF   r   rT   rU   rK   r   r   rQ   rW   r   assertRaisesRegexsr   r   message)	r:   r   r   r   r   r   wlogrY   ws	            r"   test_classattrs_deprecatedz$AST_Tests.test_classattrs_deprecated	  s   $$& 	D##Hb2DECC	D $$D1 .	>T##Hb2DE	AQYY(9:"">2  "">2  AQWWb)QSS"%"">2  "">2  q!AQXXq)1%AQXXq)QYY(9:QWWb)QSS"%i!T1=i!T1QG SWWQE266>''	3]^  Q  SWWR[]]B/SWWT]__d3SWWU^--u5SWWT]__d3SYYu-//7MM#**4066=MM#**5177?MM#**4066=].	>` 	$7Q#aii.7 :
 	i	D 	D    $   I.	> .	>` 8s   *SA!T>ST(S5A*TS+,T	S8ET.TF TTSS	TS(	#T+S5	0T8T	=TT	
TTc                     t        j                         }| j                  |j                  d       | j	                  t
              5  |j                   d d d        t        j                  d      }| j                  |j                  d       | j	                  t
              5  |j                   d d d        | j	                  t
              5  |j                   d d d        t        j                  d      }| j                  |j                  d       t        j                  dd      }| j                  |j                  d       | j                  |j                  d       | j                  |j                  d       | j	                  t        t         j                  dd d       | j	                  t        t         j                  dd dd       | j                  t        j                  dd      j                  d       | j                  t        d	      5  t        j                  dd
       d d d        | j                  t        j                  d      j                  d       | j                  t        j                  d      j                  d       | j                  t        j                  d      j                  d       | j                  t        j                  d      j                  d       | j                  t        j                  d      j                  d       | j                  t        j                  d      j                  d       | j                  t        j                  d      j                  d       | j                  t        j                  d       j                  d        | j                  t        j                  d      j                  d       y # 1 sw Y   xY w# 1 sw Y   =xY w# 1 sw Y    xY w# 1 sw Y   xY w)Nr   rP   rR   r   r   r   r   r   z1Constant got multiple values for argument 'value'rK   r   r   r   r   TF.)r5   r   rF   r   rT   rU   rK   r   rQ   rW   r   r  r   rX   s     r"   test_classattrszAST_Tests.test_classattrsX  s   LLN$56~. 	GG	 LL"%~. 	HH	 ~. 	HH	 LL"1%LLA&1%$56"%)S\\1dA>)S\\1dAaH 	aU377?##I/bc 	%LL!$	% 	b)//4d+1148e,22E:d+1148e,22E:cll4(..5cll5)//7cll4(..5cll3'--s3K	 		 		 	"	% 	%s0   O!O)O6PO&)O36P Pc                    t        j                         5  t        j                  ddt               ddlm}m}m}m}m	} d d d        t        j                  d      5 }t        j                  ddt               | j                  t        t	        j
                  d            t        j                         | j                  t        t	        j
                  d	            t        j                         | j                  t        t	        j
                  d
            t        j                         | j                  t        t	        j                  d            t        j                         | j                  t        t	        j                  d            t        j                         | j                  t        t	        j                  d            t        j                         | j                  t        t	        j                  d            t        j                         | j                  t        t	        j                  d             t        j                         | j                  t        t	        j                               t        j                         d d d        | j                  D cg c]  }t        |j                         c}g d       y # 1 sw Y   xY w# 1 sw Y   LxY wc c}w )Nr   r   r   r   Tr   r   rP   r   r   r   r   F)	r   r   r   r  r  r  r  r  zWast.Ellipsis is deprecated and will be removed in Python 3.14; use ast.Constant instead)r   r   r   r   r5   r   r   r   r   r   r   r7   r   rF   r   r  )r:   r   r   r   r   r   r	  r
  s           r"   test_realtypezAST_Tests.test_realtype  s   $$& 	D##Hb2DECC	D $$D1 
	>T##Hb2DEMM$swwr{+S\\:MM$swwt}-s||<MM$swwu~.=MM$swwt}-s||<MM$syy/0#,,?MM$s//56EMM$s//67FMM$s//56EMM$s||~.=
	> 	$7Q#aii.7 
:
 
	!	D 	D
	> 
	> 8s   *KH7K+K+KK(c                 t   ddl m} t        j                         5  t        j                  ddt
               ddl m}m}m}m	}m
} d d d        d}t        | j                  t
        |j                  d            }t        | j                  t
        |j                  d            }	t        | j                  t
        |j                  d	            }
t        | j                  t
        |j                  d
            }t        | j                  t
        |j                  d            }dD ]W  }| j                  |      5   |       5   |      }d d d         |       5  | j                         d d d        d d d        Y  |	       5   d      }d d d         |	       5  | j                         d d d         |
       5   d      }d d d         |
       5  | j                         d d d        dD ]W  }| j                  |      5   |       5   |      }d d d         |       5  | j                         d d d        d d d        Y  |       5          }d d d         |       5  | j                         d d d        dD ]E  }| j                  |      5   |       5  | j                   ||             d d d        d d d        G  |	       5  | j                   |d             d d d         |
       5  | j                   |d             d d d        dD ]E  }| j                  |      5   |       5  | j                   ||             d d d        d d d        G  |       5  | j                   |d             d d d         |	       5   d      }d d d         || j                           |
| j                   |        |       5   |d      }d d d         |	| j                           || j                   |        || j                   |        |       5   |d      }d d d         |       5  | j!                  ||       d d d         |       5   |d      }d d d         |       5  | j!                  ||       d d d        dD ]E  }| j                  |      5   |       5  | j!                   ||      |       d d d        d d d        G  |	| j                    |d      |        |
| j                    |d      |        || j                    |d      |        || j                    |d      |        || j                    |       |        |	| j                    |       |        |
| j                    |       |        || j                    |       |        || j                    |       |        G d dt"              } |	       5  | j                   | |d            |       d d d         |       5  | j!                   | |d            |       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   CxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   qxY w# 1 sw Y   xY w# 1 sw Y   jxY w# 1 sw Y   UxY w# 1 sw Y   "xY w# 1 sw Y   mxY w# 1 sw Y   
xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   fxY w# 1 sw Y   xY w# 1 sw Y   
xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr   )r   r   r   r   zQast.{} is deprecated and will be removed in Python 3.14; use ast.Constant insteadr   r   r   r   r   )rP   g@y        @)argr   r   TFN.rP   TF)r   TFc                       e Zd Zy)$AST_Tests.test_isinstance.<locals>.SNr^   rO   r>   r"   Sr    s    r>   r  )r5   r   r   r   r   r   r   r   r   r   r   r   r   r   ry   r   assertNotIsInstancer   )r:   r   r   r   r   r   r   cls_depr_msgassertNumDeprecatedassertStrDeprecatedassertBytesDeprecatedassertNameConstantDeprecatedassertEllipsisDeprecatedr  r   r  br   r  s                      r"   test_isinstancezAST_Tests.test_isinstance  si    $$& 	D##Hb2DECC	D
' 	
 &!!#5|7J7J57Q
 &!!#5|7J7J57Q
 !(!!#5|7J7J77S!
 (/!!/(
$
 $+!!#5|7J7J:7V$
  ! 	2C#& 2(* !CA!(* 2))!S122 2	2 !" 	D	A	 " 	*!!!S)	* #$ 	eA	"$ 	,!!!U+	, % 	;C#& ;13 *$S)A*13 ;))!\:;; ;	; &' 	
A	%' 	/!!!X.	/ ! 	>C#& >(* >))(3-=>> >	>
 !" 	7!!(4.#6	7 #$ 	:!!(5/59	: % 	GC#& G13 G))(3-FGG G	G
 &' 	;!!(3-:	; !" 	D	A	D44a=d665A " 	BA	D44a=$T%=%=q,O !9!91hG)+ 	#T"A	# " 	-$$Q,	- *+ 	$U#A	$ " 	-$$Q,	- % 	AC#& A(* A,,Xc]C@AA A	A
 	D44hrlCHd66N$T%=%=x|\Z !9!98B<RD44hj#FD44hj#Fd66
EJ$T%=%=xz<X !9!98:xP " 	:!!(1T7"3S9	: " 	=$$Xag%6<	= 	=e	D 	D:! !2 22 2	 		* 	*	 		, 	,
* *; ;; ;	 		/ 	/
> >> >	7 	7	: 	:
G GG G	; 	;	 	
	 		# 	#	- 	-	$ 	$	- 	-
A AA A	: 	:	= 	=s  *X58Y 	Y	YY+Y	Y)Y6>	ZZZ7	ZZ7(Z*;Z7[+[[+%[>[+[8?\7\?\\1\,	\9	]-	]] '	]-?]:1^9^^^!^.5X?YYYYY&	)Y36Z ZZZ'"Z7*Z4/Z77[	[[[(#[++[5	8\\\\\)	,\69]]] ]*-]7:^^^^	!^+.^7c                    t        j                         5  t        j                  ddt               ddlm} d d d        t        j                  d      5 }t        j                  ddt                G d d	t        j
                        } G d
 dt        j
                        } |d      }| j                  |j                  d       | j                  |j                  d       | j                  t        |      |       | j                  ||       | j                  |t        j
                         | j                  ||       | j                  t	        j
                  d      |        |d      }| j                  |j                  d       | j                  t        |      |       d d d        | j                  D cg c]  }t        |j                         c}g d       y # 1 sw Y   xY w# 1 sw Y   LxY wc c}w )Nr   r   r   r   Tr   r   c                        e Zd Z fdZ xZS )8AST_Tests.test_constant_subclasses_deprecated.<locals>.Nc                 2    t        |   |i | d| _        y Nspamsuper__init__r   r:   r   kwargsr   s      r"   r)  zAAST_Tests.test_constant_subclasses_deprecated.<locals>.N.__init__   s    G$d5f5#DFr>   r   r8   r_   r)  __classcell__r   s   @r"   Nr#    s    $ $r>   r/  c                       e Zd Zy)9AST_Tests.test_constant_subclasses_deprecated.<locals>.N2Nr^   rO   r>   r"   N2r1  #      r>   r2  rP   r&  r   )r  r  r   r   r  r  )r   r   r   r   r5   r   rF   r   r   r   r7   r   r  r   r  )r:   r   r	  r/  r2  r   r
  s          r"   #test_constant_subclasses_deprecatedz-AST_Tests.test_constant_subclasses_deprecated  s   $$& 	 ##Hb2DE	  $$D1 	&T##Hb2DE$CGG $SWW  "AQSS"%QSS&)MM$q'1%!!!Q'!!!SWW-$$Q+$$SWWR[!4BAQSS"%MM$q'1%'	&* 	$7Q#aii.7 :
 	3	  	 	& 	&* 8s   "G%EG2>G>%G/2G;c                     G d dt         j                        } G d dt         j                        } |d      }| j                  |j                  d       | j                  |j                  d       | j                  t        |      |       | j                  t        ||             | j                  t        |t         j                               | j                  t        ||             | j                  t        t        j                  d      |              |d      }| j                  |j                  d       | j                  t        |      |       y )Nc                        e Zd Z fdZ xZS )-AST_Tests.test_constant_subclasses.<locals>.Nc                 2    t        |   |i | d| _        y r%  r'  r*  s      r"   r)  z6AST_Tests.test_constant_subclasses.<locals>.N.__init__=  s     $1&1r>   r,  r.  s   @r"   r/  r7  <  s       r>   r/  c                       e Zd Zy).AST_Tests.test_constant_subclasses.<locals>.N2Nr^   rO   r>   r"   r2  r:  @  ra   r>   r2  rP   r&  r  )	r5   r   rF   rK   r   r7   r   r   assertFalse)r:   r/  r2  r   s       r"   test_constant_subclassesz"AST_Tests.test_constant_subclasses;  s    	  	 	 	 bE"%f%a!$
1a()
1cll34Ar*+CLL$4a89BK"%a!$r>   c                     t        j                  d      g}t        j                  |g       }| j                  |j                  |       y )NrP   )r5   r   r   rF   r   )r:   r   rY   s      r"   test_modulezAST_Tests.test_moduleO  s7    R !JJtR &r>   c           	         t        j                         }| j                  |j                  d       d|_        | j                  |j                  d       t        j
                  d      }t        j
                  d      }t        j                         }t        j                  |||      }| j                  |j                  |       | j                  |j                  |       | j                  |j                  |       t        j                  ddd      }| j                  |j                  d       | j                  |j                  d       | j                  |j                  d       t        j                  dddd      }| j                  |j                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j                  d       | j                  t        t         j                  dddd       | j                  t        t         j                  ddddd       t        j                  dddd	      }| j                  |j                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j                  d       t        j                  dddd
      }| j                  |j                  d
       y )N)leftopright   r   r   rR   r   r      )r@  rA  rB  r   rP   )	foobarbaz)r5   BinOprF   r   rE  r   Addr@  rA  rB  r   rT   rW   )r:   rY   n1n3addops        r"   test_nodeclasseszAST_Tests.test_nodeclassesT  s3   IIK$;< a(\\!_\\!_	IIb%$$u%"%IIaA#q!!$IIaAa(#q!!$1% 	)SYY1a;)SYY1a1E II1!A6#q!!$1% IIaA,b)r>   c                 d    t        j                         }| j                  |j                  d       y )NrO   )r5   SubrF   r   rX   s     r"   test_no_fieldszAST_Tests.test_no_fields  s!    GGIB'r>   c                     dd l }t        |j                  dz         D ]Y  }d t        D        D ]G  }|j	                  |j                  ||            }| j                  t        |      t        |             I [ y )Nr   r   c              3   8   K   | ]  }t        |d dd        yw)ro   ri   i   N)rz   ).0r}   s     r"   	<genexpr>z*AST_Tests.test_pickling.<locals>.<genexpr>  s     K136Ks   )pickler   HIGHEST_PROTOCOLrr   loadsdumpsrF   r   )r:   rS  protocolr5   ast2s        r"   test_picklingzAST_Tests.test_pickling  sm    f559: 	@HK
K @||FLLh$?@  $#?@	@r>   c           	      R   t        dd      }t        j                  t        j                  t        j                  di |fi |gg       }| j                  t              5 }t        |dd       d d d        | j                  dt        j                               y # 1 sw Y   /xY w)NrR   r   r   r   r   ri   zbut got <ast.exprrO   )dictr5   r   ExprrA   rT   rW   rz   assertInr   	exception)r:   posmcms       r"   test_invalid_sumzAST_Tests.test_invalid_sum  s    !*JJC8C892>y) 	)RAx(	))3r||+<=	) 	)s   !BB&c           	         t        j                  t        j                  t        j                  dt        j                                     gg       }t        j
                  |       | j                  t              5 }t        |dd       d d d        | j                  dt        j                               y # 1 sw Y   /xY w)NrP   r   ri   zidentifier must be of type str)r5   r   r]  r   Loadfix_missing_locationsrT   rW   rz   r^  r   r_  )r:   ra  rb  s      r"   test_invalid_identifierz!AST_Tests.test_invalid_identifier  s    JJ"chhj!9:;R@!!!$y) 	)RAx(	)6BLL8IJ	) 	)s   ;B77C c                 :   t         ddt         ft        ddt         f      fD ]l  }t        j                  t        j                  |            }t        j
                  |       | j                  t        d      5  t        |dd       d d d        n y # 1 sw Y   yxY w)Nr   rR   r   zinvalid type in Constant: typer   rk   )	r   	frozensetr5   
Expressionr   rf  r  rW   rz   )r:   invalid_constantr   s      r"   test_invalid_constantzAST_Tests.test_invalid_constant  s     #aC[)Q3K2H H 	-CLL1A$BCA%%a(''; - 8V,- -	-- -s   8BB	c                 <   t        j                  d      }d |j                  d   j                  d   j                  _        | j	                  t
              5 }t        |dd       d d d        | j                  dt        j                               y # 1 sw Y   /xY w)Nzdef f():
 yield from g()r   r   ri   zfield 'value' is required)
r5   r   r   rK   rT   r   rz   r^  r   r_  )r:   empty_yield_fromrb  s      r"   test_empty_yield_fromzAST_Tests.test_empty_yield_from  s    99%@A7;a %%a(..4z* 	8b$h7	813r||3DE	8 	8s   BBc                     dd l }d }t        j                  |d|      5  | j                  t        t
        j                  d       d d d        y # 1 sw Y   y xY w)Nr   c                       y r   rO   r   s    r"   bad_normalizez0AST_Tests.test_issue31592.<locals>.bad_normalize  s    r>   	normalizeu   ϕ)unicodedatar   	swap_attrrT   rW   r5   r   )r:   rv  rt  s      r"   test_issue31592zAST_Tests.test_issue31592  sI     		{KG 	>iH=	> 	> 	>s   &AAc                    t        j                  d      }|j                  d   j                  }|j                  }|j                  }| j                  |j                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j                  d       t        j                  d      }|j                  d   j                  }|j                  }|j                  }| j                  |j                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j                  d	       | j                  |j                  d       | j                  |j                  d       | j                  |j                  d	       | j                  |j                  d	       | j                  |j                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j                  d       y )
Nz4+5+6+7r   r   rC  r   z
4+5-\
 6-7r   rD  rR   )
r5   r   r   rK   r@  rF   r   r   r   r   )r:   r   parent_binopchild_binopgrandchild_binops        r"    test_issue18374_binop_col_offsetz*AST_Tests.test_issue18374_binop_col_offset  s   yy#yy|))"''&++00!444a8//333Q7)44a8)88!<yy(yy|))"''&++00!4,,a044a800!4//3++Q/33Q7//3)44a8)00!4)88!<)44a8r>   c                     t        j                  d      }|j                  d   j                  d   j                  }| j                  |j                  d       y )Nr'   r   rD  )r5   r   r   r@   rK   rF   r   )r:   r   attr_bs      r"   *test_issue39579_dotted_name_end_col_offsetz4AST_Tests.test_issue39579_dotted_name_end_col_offset  sE    yy011,,Q/55..2r>   c                    | j                  t        j                  j                  d       | j                  t        j                  j                  d       | j                  t        j
                  j                  d       | j                  t        j                  j                  d       t        j                  j                         D cg c]  }d|j                    }}dt        j                  j                         d   j                   |d<   | j                  t        j                  j                  j                  d      |       y c c}w )	Nz0withitem(expr context_expr, expr? optional_vars)GtEz%Name(identifier id, expr_context ctx)zBcmpop = Eq | NotEq | Lt | LtE | Gt | GtE | Is | IsNot | In | NotInz     | zexpr = r   
)rF   r5   withitem__doc__r  r   cmpoprA   __subclasses__assertCountEqualsplit)r:   r<   expressionss      r"   test_ast_asdl_signaturez!AST_Tests.test_ast_asdl_signature  s    --/ab%0))+RS**,pq<?HH<S<S<UVD/VV"388#:#:#<Q#?#G#G"HIAchh..44T:KH Ws   	Ec                    t        j                  dd       t        j                  dd       | j                  t              5  t        j                  dd       d d d        | j                  t              5  t        j                  dd       d d d        t        j                  dd       t        j                  dd       | j                  t              5  t        j                  dd       d d d        | j                  t              5  t        j                  dd       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   WxY w# 1 sw Y   y xY w)Nzdef foo(x, /): ...r   r   feature_versionzdef bar(x=1, /): ...r   r   zlambda x, /: ...zlambda x=1, /: ...r5   r   rT   SyntaxErrorr   s    r"   $test_positional_only_feature_versionz.AST_Tests.test_positional_only_feature_version  s   		&?		(&A{+ 	DII*FC	D{+ 	FII,fE	F 			$f=		&?{+ 	BII(&A	B{+ 	DII*FC	D 	D	D 	D	F 	F
	B 	B	D 	Ds0   D29D>E
E2D;>E
EEc                     t        j                  dd       | j                  t              5  t        j                  dd       d d d        y # 1 sw Y   y xY w)Nz(x := 0)r  r  r  r  r   s    r"   *test_assignment_expression_feature_versionz4AST_Tests.test_assignment_expression_feature_version  sA    		*f5{+ 	:IIj&9	: 	: 	:s   AAc                 2    t        j                  dd       y )Nzwith (x() if y else z()): ...r  r  )r5   r   r   s    r"   @test_conditional_context_managers_parse_with_low_feature_versionzJAST_Tests.test_conditional_context_managers_parse_with_low_feature_version  s    		16Jr>   c                     t        d      }t        j                  |       | j                  t              5  t        j                  |d       d d d        y # 1 sw Y   y xY w)Nz9
        try: ...
        except* Exception: ...
        )r   r   r  )r   r5   r   rT   r  )r:   codes     r"   %test_exception_groups_feature_versionz/AST_Tests.test_exception_groups_feature_version  sO       			${+ 	5IIdG4	5 	5 	5s   AA c                    g d}|D ]f  }| j                  |      5  t        j                  |       | j                  t              5  t        j                  |d       d d d        d d d        h y # 1 sw Y   xY w# 1 sw Y   xY w)N)r(   r)   r*   )r      r  )ry   r5   r   rT   r  )r:   samplessamples      r"    test_type_params_feature_versionz*AST_Tests.test_type_params_feature_version  s}    

  	?Ff% ?		&!&&{3 ?IIfg>?? ?	?? ?? ?s#   +A=A1A=1A:6A==B	c                    | j                  t              5  t        j                  dd       d d d        | j                  t              5  t        j                  dd       d d d        y # 1 sw Y   ?xY w# 1 sw Y   y xY w)Nr&   )rR   r   r  )rD  r   )rT   r   r5   r   r   s    r"   "test_invalid_major_feature_versionz,AST_Tests.test_invalid_major_feature_version  si    z* 	6IIff5	6z* 	6IIff5	6 	6	6 	6	6 	6s   A,A8,A58Bc                 *   dD ]  }t        j                  t        j                  |t        j                                     }t        j                  |       | j                  t        d| d      5  t        |dd       d d d         y # 1 sw Y   xY w)N)TrueFalser#   z"identifier field can't represent 'z
' constantr   rk   )r5   rk  r   re  rf  r  r   rz   )r:   constantrA   s      r"   test_constant_as_namezAST_Tests.test_constant_as_name  s    / 	0H>>#((8SXXZ"@AD%%d+''
6XYaXbbl4mn 0h/0 0	00 0s   0B		B	c                 ~     G d dt         j                        }t        j                  |t        j                         y )Nc                   ~   e Zd 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y)3AST_Tests.test_precedence_enum.<locals>._Precedencez5Precedence table that originated from python grammar.c                 N    	 | j                  | 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.next4  s.     >>$(33!  K s    $$N)r   r8   r_   r  enumauto
NAMED_EXPRTUPLEYIELDTESTORANDNOTCMPEXPRBORBXORBANDSHIFTARITHTERMFACTORPOWERAWAITATOMr  rO   r>   r"   _Precedencer    s    G"JDIIKEDIIKE499;DB$))+C$))+C$))+C499;DC499;D499;DDIIKEDIIKE499;DTYY[FDIIKEDIIKE499;D r>   r  )r  IntEnum_test_simple_enumr5   r  )r:   r  s     r"   test_precedence_enumzAST_Tests.test_precedence_enum  s(    	 $,, 	 6 	{COO<r>   zexhausts limited stack on WASIc                      t         j                  dz   dt        t         j                  dz         fd} |dd        |dd        |dd        |dd	       y )
Nr   i g?c                 \   | |	z  z   }t        j                  |       fD ]o  }| ||z  z   }dj                  | ||      }j                  t        |      5  t        j                         5  t        j                  |       d d d        d d d        q y # 1 sw Y   xY w# 1 sw Y   xY w)NzCompiling ({!r} + {!r} * {})msg)r5   r   r   rT   RecursionErrorr   infinite_recursion)
prefixrepeated	expect_okdepthbrokendetailscrash_depth
fail_depthr:   success_depths
         r"   check_limitz7AST_Tests.test_ast_recursion_limit.<locals>.check_limitB  s    M!99IIIi $k2 *(U"228??"He5&&~7&C * 335 *		&)** *	*
* ** *s$   B"-BB"BB""B+	rb   r1   z.bz[0]z*a)r   C_RECURSION_LIMITr   )r:   r  r  r  r  s   ` @@@r"   test_ast_recursion_limitz"AST_Tests.test_ast_recursion_limit;  s^     ..2
G55;<		* 	CCCCr>   c                     | j                  t        d      5  t        j                  d       d d d        y # 1 sw Y   y xY w)Nz,source code string cannot contain null bytesr  za b)rT   r  r5   r   r   s    r"   test_null_byteszAST_Tests.test_null_bytesR  s<    {>  @ 	IIf	 	 	s	   7A r<   attrsourcereturnc                    | j                  |j                   d|       5  t        j                  |      }d}t        j                  |      D ]!  }t        ||      st        ||d        |dz  }# | j                  |d       t        j                  d| d|j                         }| j                  t        d| d      5  t        |dd	       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)
N.r   r   zfield 'z' is required for ^$r   ri   )ry   r   r5   r   walkr   setattrrF   reescaper  r   rz   )r:   r<   r  r  r   foundrM   r   s           r"   assert_none_checkzAST_Tests.assert_none_checkW  s    \\T]]O1TF34 
	099V$DE$ eT*E4.QJE UA&		GD6);DMM?KLA''
as!H= 0h/0
	0 
	00 0
	0 
	0s*   <C.A%C.C"C."C+	'C..C7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 ]  \  }}}| j                  |||        y )Nr;   zimport spam as SPAMr  zdef spam(SPAM): spamtargetz[spam for SPAM in spam]iterz[spam for spam in SPAM]rK   zspam(**SPAM)patternzmatch spam:
 case SPAM: spamcontext_exprzwith SPAM: spam)r5   r   r  r   keyword
match_caser  r  )r:   testsr<   r  r  s        r"   test_none_checkszAST_Tests.test_none_checksd  s    YY 56WWe34*CD(AB[['>2^^Y(GH\\>+<=
 #( 	7D$""4v6	7r>   )r  N)>r   r8   r_   maxDiffr=   rE   rZ   rg   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r4  r<  r>  rK  rN  rY  rc  rg  rm  rp  r   cpython_onlyrx  r}  r  r  r  r  r  r  r  r  r  r  unittestskipIfis_wasir  r  r7   r5   r6   r   r  r  rO   r>   r"   r3   r3     su   G3D&	!
1.64*$%'$3L5#::&))M^)4V:v=p!F%('
**X(
@>K-F > >9>3
ID:
K5
?60=< X__W__&FG  H*
0d377m 03 0 0PT 07r>   r3   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y)ASTHelpers_TestNc                     t        j                  d      }t        dddt         j                        }| j	                  t        j
                  |      t        j
                  |             y )Nz
foo(1 + 1)z	<unknown>ri   )r5   r   rz   r{   rF   dump)r:   rb   r  s      r"   
test_parsezASTHelpers_Test.test_parset  sF    IIl#L+vs7H7HI!chhqk2r>   c                     	 ddz   y # t         $ rh | j                  t              5 }t        j                  d       d d d        n# 1 sw Y   nxY w| j                  j                  j                         Y y w xY w)Nr   r   z'\U')	ExceptionrT   r  r5   literal_evalassertIsNotNoner_  __context__r:   r   s     r"   test_parse_in_errorz#ASTHelpers_Test.test_parse_in_errory  sh    	:aC 	:"";/ *1  )* * *  !8!89	:s%    A9A	A9A	
,A98A9c                    t        j                  d      }| j                  t        j                  |      d       | j                  t        j                  |d      d       | j                  t        j                  |d      d       y )	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=[])r5   r   rF   r  r:   r<   s     r"   	test_dumpzASTHelpers_Test.test_dump  ss    yy34$/	

 	$>2	
 	$4@Z	
r>   c                    t        j                  d      }| j                  t        j                  |d      d       | j                  t        j                  |dd      d       | j                  t        j                  |d	d
      d       y )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{    yy34$q1 
4 
	 	$dK 
N	 
	
 	$4J #M #	r>   c                    t        j                  dd      }| j                  t        j                  |      d       | j                  t        j                  |d      d       t        j                  t        j                  dt        j
                         	      dd
      }| j                  t        j                  |      d       | j                  t        j                  |d      d       | j                  t        j                  |d      d       | j                  t        j                  |dd      d       t        j                  t        j                  dt        j
                         	            }| j                  t        j                  |      d       | j                  t        j                  |d      d       y )Nr   rD  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())))r5   RaiserF   r  r   re  r  s     r"   test_dump_incompletez$ASTHelpers_Test.test_dump_incomplete  sM   yya0$	
 	$4@+	
 yySXX#((*=aTUV$1	
 	$>&	
 	$4@I	
 	$RVW>	
 yysxx3CHHJ?@$3	
 	$>,	
r>   c                 |   t        j                  dd      }t        j                  t        j                  d      |j                  j
                        |j                  _        | j                  t        j                  |d      d       t        j                  dddd	      }t        j                  |t        j                  d d 
            }| j                  |j                         | j                  |j                         | j                  |j                  d       | j                  |j                  d       y )N1 + 1rk   moderR   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   )r5   r   copy_locationr   r   rB  rF   r  Callrf   r   r   r   r   )r:   srcnews      r"   test_copy_locationz"ASTHelpers_Test.test_copy_location  s    iif-**3<<?CHHNNK#$?=	
 hh!A!ANSXXd%KL#..)#,,-Q'+r>   c                    t        j                  d      }|j                  j                  t        j                  t        j
                  t        j                  dt        j                               t        j                  d      gg                    | j                  |t        j                  |             d | _        | j                  t        j                  |d      d       y )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=[]))r5   r   r   r   r]  r  r   re  r   rF   rf  r  r  r:   r  s     r"   test_fix_missing_locationsz*ASTHelpers_Test.test_fix_missing_locations   s    ii(#((6388:*F+.<<+?*@""F G 	Hc77<=#$?
	
r>   c                    t        j                  dd      }| j                  t        j                  |d      |       | j                  t        j                  |d      d       t        j                  dd      }| j                  t        j                  |j
                  d      |j
                         | j                  t        j                  |d      d       t        j                  t        j                  d	t        j                               g g d
      }| j                  t        j                  |      j                  d       | j                  t        j                  |      j                         y )Nr  rk   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   rR   )r5   r   rF   increment_linenor  r   r  r   re  r   rf   r   r   s     r"   test_increment_linenoz%ASTHelpers_Test.test_increment_lineno  s   iif---cQ7=#$?=	
 iif---chh!<chhG#$?=	
 hh&#((*-BA
 	--c2991=#..s3>>?r>   c                 h   t        j                  t        d      d      }t        j                  |d       | j	                  |j
                  d   j                  d       | j	                  |j
                  d   j                  d	       | j	                  |j
                  d   j                  d
       y )Nzb        a = 1
        b = 2 # type: ignore
        c = 3
        d = 4 # type: ignore@tag
        T)type_commentsrC  r   r   r   r   	   z@tag)r5   r   r   r&  rF   r   r   tagr   s     r"   test_increment_lineno_on_modulez/ASTHelpers_Test.test_increment_lineno_on_module,  s    ii   
 !" 	SA&))!,33Q7))!,33Q7))!,00&9r>   c                    t        j                  dd      }t        t        j                  |j                              }| j                  |j                  d      j                  d       | j                  |g g d       y )Nfoo()rk   r  r$  r   )r%  r   )r5   r   r\  iter_fieldsr   rF   popr  )r:   r<   ds      r"   test_iter_fieldsz ASTHelpers_Test.test_iter_fields8  s\    yyv.+,v))51R89r>   c           	      ,   t        j                  dd      }| j                  t        t	        t        j
                  |j                                    d       t        j
                  |j                        }| j                  t        |      j                  d       | j                  t        |      j                  d       | j                  t        |      j                  d       | j                  t        j                  t        |            d       y )	Nzspam(23, 42, eggs='leek')rk   r  rD  r&     rP   z1keyword(arg='eggs', value=Constant(value='leek')))r5   r   rF   r   r   iter_child_nodesr   r  r  rK   r  )r:   r<   iterators      r"   test_iter_child_nodesz%ASTHelpers_Test.test_iter_child_nodes>  s    yy46BT#"6"6tyy"ABCQG''		2h**F3h--r2h--r2$x.1?	
r>   c                 "   t        j                  d      }| j                  t        j                  |      d       t        j                  d      }| j                  t        j                  |j                  d         d       t        j                  d      }| j                  t        j                  |j                  d         d       t        j                  d      }| j                  t        j                  |j                  d         d       y )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)r5   r   rF   get_docstringr   r  s     r"   test_get_docstringz"ASTHelpers_Test.test_get_docstringI  s    yy56**40-	/ yyCD**499Q<8-	/ yyCD**499Q<8-	/ yy@A**499Q<8+Fr>   c                 *   | j                  t        j                  t        j                  d                   t        j                  d      }| j                  t        j                  |             t        j                  d      }| j                  t        j                  |             t        j                  d      }| j                  t        j                  |j                  d                t        j                  d      }| j                  t        j                  |j                  d                t        j                  d      }| j                  t        j                  |j                  d                t        j                  d      }| j                  t        j                  |j                  d                t        j                  d      }| j                  t        j                  |j                  d                t        j                  d	      }| j                  t        j                  |j                  d                t        j                  d
      }| j                  t        j                  |j                  d                y )Nr   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")rf   r5   r9  r   r   r  s     r"   test_get_docstring_nonez'ASTHelpers_Test.test_get_docstring_noneY  s   #++CIIbM:;yy./#++D12yy-.#++D12yy-.#++DIIaL9:yy<=#++DIIaL9:yy<=#++DIIaL9:yy-.#++DIIaL9:yy<=#++DIIaL9:yy34#++DIIaL9:yyBC#++DIIaL9:r>   c                 2   t        j                  d      }| j                  |j                  d   j                  d       | j                  |j                  d   j
                  d       | j                  |j                  d   j                  d   j                  d       | j                  |j                  d   j                  d   j
                  d       | j                  |j                  d   j                  d   j                  d   j                  d       | j                  |j                  d   j                  d   j                  d   j
                  d       | j                  |j                  d   j                  d   j                  d       | j                  |j                  d   j                  d   j
                  d       | j                  |j                  d   j                  d       | j                  |j                  d   j
                  d	       y )
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   rR   rC  rD  r*  r     )r5   r   rF   r   r   r   r  s     r"   :test_multi_line_docstring_col_offset_and_lineno_issue16806zJASTHelpers_Test.test_multi_line_docstring_col_offset_and_lineno_issue16806q  s   yy+
 	100!41,,a01**1-88!<1**1-44a81**1-2215@@!D1**1-2215<<a@1**1-88!<1**1-44b9100!41,,b1r>   c                     t        j                  d      }|j                  d   j                  d   }| j	                  |j
                  d       | j	                  |j                  d       y )Nz if a:
    pass
elif b:
    pass
r   r   r5   r   r   orelserF   r   r   r:   r<   	elif_stmts      r"   test_elif_stmt_start_positionz-ASTHelpers_Test.test_elif_stmt_start_position  sU    yy?@IIaL''*	))1---q1r>   c                     t        j                  d      }|j                  d   j                  d   }| j	                  |j
                  d       | j	                  |j                  d       y )Nz/if a:
    pass
elif b:
    pass
else:
    pass
r   r   rA  rC  s      r"   'test_elif_stmt_start_position_with_elsez7ASTHelpers_Test.test_elif_stmt_start_position_with_else  sU    yyPQIIaL''*	))1---q1r>   c                     t        j                  d      }|j                  d   j                  j                  d   }| j                  |j                  d       | j                  |j                  d       y )Nr-   r   r   r*  )r5   r   r   rK   r   rF   r   r   )r:   r<   starred_exprs      r"   *test_starred_expr_end_position_within_callz:ASTHelpers_Test.test_starred_expr_end_position_within_call  sZ    yy&yy|))..q100!444a8r>   c                    | j                  t        j                  d      g d       | j                  t        j                  d      ddi       | j                  t        j                  d      d       | j                  t        j                  d      h d	       | j                  t        j                  d
      d       | j                  t        j                  d      t                      | j	                  t
        t        j                  d       | j                  t        j                  d      d       | j                  t        j                  d      d       | j                  t        j                  d      d       | j                  t        j                  d      d       | j                  t        j                  d      d       | j                  t        j                  d      d       | j                  t        t        j                  d            d       | j	                  t
        t        j                  d       | j	                  t
        t        j                  d       | j	                  t
        t        j                  d       y )Nz	[1, 2, 3]r   rR   r   z{"foo": 42}r   rP   z(True, False, None)r  z	{1, 2, 3}>   r   rR   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)rF   r5   r  setrT   r   reprr   s    r"   test_literal_evalz!ASTHelpers_Test.test_literal_eval  s   ))+6	B))-85"+F))*?@BUV))+6	B))'2E:))'2CE:*c&6&6@))#.2))$/3))$/4))&148))'2D9))'2E:c..v67@*c&6&6>*c&6&6@*c&6&6>r>   c                    t        j                  d      5  t        j                  d       | j	                  t
              5 }t        j                  d       d d d        | j                  dt        j                               | j                  dt        |j                               d d d        y # 1 sw Y   \xY w# 1 sw Y   y xY w)Ni    3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333  33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333zExceeds the limit z Consider hexadecimal )	r   adjust_int_max_str_digitsr5   r  rT   r  r^  r   r_  )r:   err_ctxs     r"   test_literal_eval_str_int_limitz/ASTHelpers_Test.test_literal_eval_str_int_limit  s    ..t4 	LX&"";/ +7  *+MM.G4E4E0FGMM2C8I8I4JK	L 	L+ +	L 	Ls$   +B>B2AB>2B;	7B>>Cc                 8   | j                  t        j                  d      d       | j                  t        j                  d      d       | j                  t        j                  d      d       | j                  t        j                  d      d       | j                  t        j                  d	      d
       | j                  t        j                  d      d       | j                  t        j                  d      d       | j                  t        j                  d      d       | j                  t        j                  d      d       | j                  t        j                  d      d       | j                  t        j                  d      d       | j                  t        j                  d      d       | j                  t        j                  d      d
       | j                  t        t        j                  d       | j                  t        t        j                  d       | j                  t        t        j                  d       | j                  t        t        j                  d       | j                  t        t        j                  d       y )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))rF   r5   r  rT   r   r   s    r"   test_literal_eval_complexz)ASTHelpers_Test.test_literal_eval_complex  s   ))$/4))%0#6))'2E:))(3V<))&148))'2E:))&148))'2E:)),7D))-8+F)),7D))-8+F))(3T:*c&6&6@*c&6&6A*c&6&6@*c&6&6
C*c&6&6	Br>   c                    t        j                  t        j                  d      t        j                  d      gt        j                  d      g      }| j                  t        t         j
                  |       t        j                  t        j                  d      gt        j                  d      t        j                  d      g      }| j                  t        t         j
                  |       y )Nr   rR   r   )keysvalues)r5   Dictr   rT   r   r  )r:   	malformeds     r"   &test_literal_eval_malformed_dict_nodesz6ASTHelpers_Test.test_literal_eval_malformed_dict_nodes  s    HH3<<?CLLO"Dcll[\oM^_	*c&6&6	BHH3<<?"3S\\!_cll[\o<^_	*c&6&6	Br>   c                 ,   | j                  t        j                  d      d       | j                  t        j                  d      d       | j                  t        j                  d      d       | j                  t        t        j                  d       y )Nz    -1r   z		-1z 	 -1z
 -1)rF   r5   r  rT   IndentationErrorr   s    r"   test_literal_eval_trailing_wsz-ASTHelpers_Test.test_literal_eval_trailing_ws  sl    ))(3R8))(3R8))(3R8*C,<,<gFr>   c           	         d}| j                  t        |      5  t        j                  d       d d d        t        j                  t        j
                         t        j                  t        j
                         t        j                  d                  }| j                  t        |dd              d}| j                  t        |      5  t        j                  |       d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nz#malformed node or string on line 3:z{'a': 1,
'b':2,
'c':++3,
'd':4}rN  r   zmalformed node or string:)	r  r   r5   r  UnaryOpUAddr   rf   r   )r:   r  r<   s      r"   "test_literal_eval_malformed_linenoz2ASTHelpers_Test.test_literal_eval_malformed_lineno  s    4##J4 	CAB	C {{HHJCHHJQ@B'$$78*##J4 	#T"	# 	#	C 	C	# 	#s   C+C7+C47D c                     | j                  t        d      5  t        j                  d       d d d        y # 1 sw Y   y xY w)Nzunexpected indentz4
                \
                (\
            \ )r  r  r5   r  r   s    r"   test_literal_eval_syntax_errorsz/ASTHelpers_Test.test_literal_eval_syntax_errors  s;    ##K1DE 	  	 	 	s   6?c                 H   t        j                  dt        j                  d      gd d d       g}t        j                  |g       }| j	                  t
              5 }t        |dd       d d d        | j                  dt        j                               y # 1 sw Y   /xY w)Ntimesleepr;   r   r   levelr   r   r#  ri   zinvalid integer value: None)
r5   r   r   r   rT   r   rz   r^  r   r_  )r:   r   r   rb  s       r"   test_bad_integerz ASTHelpers_Test.test_bad_integer  s    f&)iiW&=%>%)&*t= > jjr"z* 	)bC(	)3S5FG	) 	)s   BB!c                     t        j                  dt        j                  ddd      gd dd      g}t        j                  |g       }t	        |dd      }i }t        ||       | j                  d|       y )Nrk  rl  r   r   rn  r#  ri   )r5   r   r   r   rz   ri   r^  )r:   r   r   r  nss        r"   test_level_as_nonez"ASTHelpers_Test.test_level_as_none  su    f&)iiW78Q'H &I%)&'A	7 8
 jjr"sFF+T2gr"r>   c                 L   t        j                  t        j                         dd      }||_        | j	                  t
              5  t        j                         5  t        t        j                  |      dd       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY wNr   )rA  r   r   r   rk   
r5   re  NotoperandrT   r  r   r  rz   rk  r  s     r"   test_recursion_directz%ASTHelpers_Test.test_recursion_direct  s    KK3779Q1=	~. 	=++- =q)8V<=	= 	== =	= 	=s$   B!B=BB	BB#c                    t        j                  t        j                         dd      }t        j                  t        j                         dd      }||_        ||_        | j	                  t
              5  t        j                         5  t        t        j                  |      dd       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY wru  rv  )r:   r   r!   s      r"   test_recursion_indirectz'ASTHelpers_Test.test_recursion_indirect  s    KK3779Q1=KK3779Q1=		~. 	=++- =q)8V<=	= 	== =	= 	=s$   8C!B?.C?C	CC) r   r8   r_   r  r  r  r  r  r  r  r!  r'  r,  r2  r7  r:  r<  r?  rE  rG  rJ  rQ  rW  rZ  r`  rc  rg  ri  rp  rs  ry  r{  rO   r>   r"   r  r  q  s    G3
:
*;z
:, 
(@0
::	
G ;02&229?&LC*CG
#	H
#==r>   r  c                   
   e Zd ZdGeddZdHeddZdHd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/d/ Z0d0 Z1d1 Z2 e3jh                  d2      d3        Z5 e6jn                  d4      Z8 e6jr                  e8      Z: e6jn                  d5      Z; e6jr                  e;      Z< e6jn                  d6      Z= e6j|                  d6      Z? e6j                  d7 e6j                               ZB e6jr                   e6j                   e6j                   e6j                  d5 e6j                               d8 e6j                               d9 e6j                                      e6jr                   e6j                   e6j                   e6j                  d5 e6j                               d8 e6j                               d9 e6j                                      e6jr                   e6jn                  d:             e6jr                   e6jn                  d6             e6jr                   e6jn                  d;             e6j|                  d<       e6j                   e6j|                  d<      g       e6j                   e6j                   e6j|                  d<      g      g       e6j                  e8e=ge<g       e6j                  e=e8ge<e:gd=>       e6j                  e= e6j                   e6j                  d? e6j                                e6j                               ge<e:gd@>       e6j                   e6j                   e6j                  e;d8 e6j                               d9 e6j                               g g g A       e6j                  eBg d=ge:gA       e6j                  eBg g e:gA       e6j                  eB e6j|                  d<      gg g A       e6j                  eB e6j                         gg g A       e6j                  eBg g  e6j                         gA       e6j                  e=g d=ge:gA       e6j                   e6j                  d=      g       e6j                  dBC       e6j                  g        e6j                  e:g       e6j                  e:e< e6j|                  dD      g       e6j                  dEC       e6j                  d5C       e6j                   e6j                  dE      g       e6j                  g g dE>      gZLdF ZMy)IASTValidatorTestsNr  c                   dx|_         |_        t        j                  |       |t	        |d|       y | j                  |      5 }t	        |d|       d d d        | j                  |t        j                               y # 1 sw Y   /xY w)Nr   r   )	r   r   r5   rf  rz   rT   r^  r   r_  )r:   r   r  r  r  rb  s         r"   r   zASTValidatorTests.mod  sw    &''
S^!!#&;C4(""3' -2Xt,-MM#s2<<01- -s   BB
c                    t        j                  t        j                  |      gg       }| j                  |||       y )Nr~  )r5   r   r]  r   )r:   r<   r  r  r   s        r"   rA   zASTValidatorTests.expr  s/    jj#((4.)2.cs#r>   c                 V    t        j                  |gg       }| j                  ||       y r   )r5   r   r   )r:   rB   r  r   s       r"   rB   zASTValidatorTests.stmt  s"    jj$$cr>   c           	      d   t        j                  t        j                  t        j                  dt        j                                     g      }| j                  |dd       t        j                  t        j                  dt        j                                     }| j                  |dd       y )NrY   must have Load contextrj   rk   )r5   Interactiver]  r   Storer   rk  )r:   ra  s     r"   r>  zASTValidatorTests.test_module!  sn    OOSXXchhsCIIK&@ABC,h7NN388C56,f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       y )Nc           	      r    | g } |g }|g }|g }|g }t        j                  | ||||||      }  |       S r   )r5   r   )r   r   rV   r   r   r   r   facs          r"   r   z5ASTValidatorTests._check_arguments.<locals>.arguments(  sb     |" !
" =={FJ!,eX?Dt9r>   rY   rs  r  )r   )r   r   )r   z"more positional defaults than argsrD  )r   z3length of kwonlyargs is not the same as kw_defaults)r   r   rb   r  r   )r   r   )NNNNNNN)r5   r  r   r  r   re  )r:   r  checkr   r   s    `   r"   _check_argumentsz"ASTValidatorTests._check_arguments'  sa   :>-115	  SXXc399;789iT"$<=iD)+CDi4(*BCi#,,q/!23;	=iS\\!_$56L	NSXXc388:678iTSXXc399;-G,HI/	1SXXc388:67SXXc388:679i4'+SXXc399;-G&HJ2	4r>   c                    t        j                  g g d g g d g       }t        j                  d|g g d d g       }| j                  |d       t        j                  d|t        j                         gt        j
                  dt        j                               gd d g       }| j                  |d       t        j                  d|t        j                         gg t        j
                  dt        j                               d g       }| j                  |d       t        j                  dt        j                         t        j                         g      }| j                  |       d }| j                  || j                         y )NrY   zempty body on FunctionDefr  c           	      ^    t        j                  d| t        j                         gg d d g       S NrY   )r5   FunctionDefPassrs  s    r"   r  z+ASTValidatorTests.test_funcdef.<locals>.facT  s%    ??3sxxzlBdBOOr>   )r5   r   r  rB   r  r   r  r  )r:   rb   r!   r  s       r"   test_funcdefzASTValidatorTests.test_funcdefI  s   MM"b$Bb9OOCBD$;		!01OOCSXXZL388C3M2NPTVZ\^_		!-.OOCSXXZL"HHS#))+6bB		!-.OOC388:,?		!	Pc499-r>   c                     d }d}t        j                  t        j                  |            }|j                  d   }| j                  |t         j                         | j                   ||             y )Nc                    | t         j                  dx\  dk(  rt         j                  d x\    r dk(  r\  t         j                  dx\  dk(  r  r dk(  r~\  t         j                  d xi\     rf dk(  ra\  t         j
                  dxL\  dk(  rFt         j                  d x3\   t         j
                  dx\  dk(  rt         j                  d x\   y    	 y	)
NrO   r   rs  r   r   capybarapacaranaTF)r5   r  r   r  r  r   re  )r<   s    r"   matcherz@ASTValidatorTests.test_funcdef_pattern_matching.<locals>.matcherZ  sx    __ GUCMM,P?O?O%1\chhj%G%Gchh&Fz388:%(XX%Ej#((*	G
  r>   zZ
            @capybara
            def foo(bar) -> pacarana:
                pass
        r   )r5   r   textwrapr   r   r   r  r   )r:   r  r  r  funcdefs        r"   test_funcdef_pattern_matchingz/ASTValidatorTests.test_funcdef_pattern_matchingX  sY    	!
 8??401++a.gs7()r>   c                    d
d}| j                   |t        j                  dt        j                               g      d       | j                   |t        j                  dt        j                  dt        j                                     g      d       | j                   |g       d       | j                   |d g      d       | j                   |t        j                  dt        j                               g	      d       y )Nc                     | g } |g }|t        j                         g}|g }|g }t        j                  d| ||||      S )Nmyclass)r5   r  ClassDef)basesr%  r   r@   type_paramss        r"   clsz,ASTValidatorTests.test_classdef.<locals>.clso  s_    }|
|%!#" <<	5( $nkC Cr>   rY   )r  r  )r%  ri  zempty body on ClassDefNone disallowed)r@   )NNNNN)rB   r5   r   r  r  )r:   r  s     r"   test_classdefzASTValidatorTests.test_classdefn  s    	C 			#SXXc399;789*	,		#C#syy{1K LMN*	,		#2, 89		#D6"$56		#chhsCIIK&@%AB*	,r>   c           	      2   | j                  t        j                  g       d       | j                  t        j                  d g      d       | j                  t        j                  t        j                  dt        j                               g      d       y )Nzempty targets on Deleter  rY   zmust have Del context)rB   r5   Deleter   re  r   s    r"   test_deletezASTValidatorTests.test_delete  sa    		#**R.";<		#**dV$&78		#**chhsCHHJ789)	+r>   c           
         | j                  t        j                  g t        j                  d            d       | j                  t        j                  d gt        j                  d            d       | j                  t        j                  t        j                  dt        j
                               gt        j                  d            d       | j                  t        j                  t        j                  dt        j                               gt        j                  dt        j                                     d       y )Nr   zempty targets on Assignr  rY   must have Store contextr   r  )rB   r5   Assignr   r   re  r  r   s    r"   test_assignzASTValidatorTests.test_assign  s    		#**Ra13LM		#**dVS\\!_57HI		#**chhsCHHJ78#,,q/J+	-		#**chhsCIIK89 #ciik :<*	,r>   c           	          t        j                  t        j                  dt        j                               t        j                         t        j                  dt        j                                     }| j                  |d       t        j                  t        j                  dt        j                               t        j                         t        j                  dt        j                                     }| j                  |d       y )NrY   r   r  r  )r5   	AugAssignr   re  rG  rB   r  )r:   augs     r"   test_augassignz ASTValidatorTests.test_augassign  s    mmCHHS#((*5swwyHHS#((*57		#01mmCHHS#))+6	HHS#))+68		#/0r>   c           
      t   t        j                  dt        j                               }t        j                  dt        j                               }t        j                         }| j                  t        j                  ||g g       d       | j                  t        j                  t        j                  dt        j                               ||gg       d       | j                  t        j                  |t        j                  dt        j                               |gg       d       t        j                  t        j                  dt        j                                     }| j                  t        j                  |||gg       d       | j                  t        j                  |||g|g      d       y )NrY   r   zempty body on Forr  r  )r5   r   r  re  r  rB   r   r]  )r:   rY   r   pr   s        r"   test_forzASTValidatorTests.test_for  s   HHS#))+&HHS#((*%HHJ		#''!QB')<=		#''#((3
3QR@+	-		#''!SXXc399;7!bA*	,HHSXXc399;/0		#''!QR(*BC		#''!QaS)+CDr>   c                 F   | j                  t        j                  t        j                  d      g g       d       | j                  t        j                  t        j                  dt        j
                               t        j                         gg       d       | j                  t        j                  t        j                  d      t        j                         gt        j                  t        j                  dt        j
                                     g      d       y )Nr   zempty body on WhilerY   r  )rB   r5   Whiler   r   r  r  r]  r   s    r"   
test_whilezASTValidatorTests.test_while  s    		#))CLLOR46KL		#))CHHS#))+6bI*	,		#))CLLOchhj\!hhsxxSYY['ABCE5	7r>   c                 :   | j                  t        j                  t        j                  d      g g       d       t        j                  t        j                  dt        j
                               t        j                         gg       }| j                  |d       t        j                  t        j                  d      t        j                  t        j                  dt        j
                                     gg       }| j                  |d       t        j                  t        j                  d      t        j                         gt        j                  t        j                  dt        j
                                     g      }| j                  |d       y )Nr   zempty body on IfrY   r  )rB   r5   Ifr   r   r  r  r]  )r:   r}   s     r"   test_ifzASTValidatorTests.test_if  s    		#&&a"b13EFFF388C-
|R@		!-.FF3<<?SXXchhsCIIK.H%I$JBO		!-.FF3<<?SXXZLHHSXXc399;789;		!-.r>   c                    t        j                         }| j                  t        j                  g |g      d       t        j                  t        j
                  d      d       }| j                  t        j                  |gg       d       t        j                  t        j                  dt        j                               d       }| j                  t        j                  |g|g      d       t        j                  t        j
                  d      t        j                  dt        j                                     }| j                  t        j                  |g|g      d       y )Nzempty items on Withr   zempty body on WithrY   r  r  )	r5   r  rB   Withr  r   r   r  re  )r:   r  r}   s      r"   	test_withzASTValidatorTests.test_with  s    HHJ		#((2s#%:;LLa$/		#((A3#%9:LL#syy{3T:		#((A3$&>?LLa#((3
*CD		#((A3$&?@r>   c                    t        j                  d t        j                  d            }| j                  |d       t        j                  t        j                  dt        j
                               d       }| j                  |d       t        j                  t        j                  d      t        j                  dt        j
                                     }| j                  |d       y )Nr   z!Raise with cause but no exceptionrY   r  rD  )r5   r  r   rB   r   r  )r:   rs     r"   
test_raisezASTValidatorTests.test_raise  s    IIdCLLO,		!89IIchhsCIIK0$7		!-.IIcll1osxxSYY['AB		!-.r>   c                    t        j                         }t        j                  g g g |g      }| j                  |d       t        j                  t        j                  t        j
                  dt        j                                     gg g |g      }| j                  |d       t        j                  |gg g g       }| j                  |d       t        j                  |gg |g|g      }| j                  |d       t        j                  |gt        j                  d dg       gg g       }| j                  |d       t        j                  t        j
                  dt        j                               d|g      g}| j                  t        j                  |g|g g       d       t        j                  d d|g      g}t        j                  |g|t        j                  t        j
                  dt        j                                     g|g      }| j                  |d       t        j                  |g||gt        j                  t        j
                  dt        j                                     g      }| j                  |d       y )Nzempty body on TryrY   r  z-Try has neither except handlers nor finalbodyz%Try has orelse but no except handlersempty body on ExceptHandlerr   )r5   r  TryrB   r]  r   r  ExceptHandlerr:   r  r   r   s       r"   test_tryzASTValidatorTests.test_try  s   HHJGGBB$		!()GGSXXchhsCIIK89:BQCH		!-.GGQCR$		!DEGGQCaS1#&		!<=GGQC#++D#r:;RD		!23sxxSYY[93DE		#''1#q"b)+CDtS1#./GGQCSXXchhsCIIK&@ABQCH		!-.GGQCQC#((388C+E"F!GH		!-.r>   c                    t        j                         }t        j                  g g g |g      }| j                  |d       t        j                  t        j                  t        j
                  dt        j                                     gg g |g      }| j                  |d       t        j                  |gg g g       }| j                  |d       t        j                  |gg |g|g      }| j                  |d       t        j                  |gt        j                  d dg       gg g       }| j                  |d       t        j                  t        j
                  dt        j                               d|g      g}| j                  t        j                  |g|g g       d       t        j                  d d|g      g}t        j                  |g|t        j                  t        j
                  dt        j                                     g|g      }| j                  |d       t        j                  |g||gt        j                  t        j
                  dt        j                                     g      }| j                  |d       y )Nzempty body on TryStarrY   r  z1TryStar has neither except handlers nor finalbodyz)TryStar has orelse but no except handlersr  r   )r5   r  TryStarrB   r]  r   r  r  r  s       r"   test_try_starzASTValidatorTests.test_try_star  s   HHJKKBQC(		!,-KK#((3		"<=>BL		!-.KKRR(		!HIKKR!qc*		!@AKKc//c2>?RH		!23sxxSYY[93DE		#++qc1b"-/GHtS1#./KKQ#((3		*D!E FL		!-.KKQchhsxxSYY[/I&J%KL		!-.r>   c           	         | j                  t        j                  t        j                  dt        j                               d       d       t        j                  t        j                  dt        j
                               t        j                  dt        j                                     }| j                  |d       y )NrY   r  r   )rB   r5   Assertr   r  re  )r:   assrts     r"   test_assertzASTValidatorTests.test_assert  ss    		#**SXXc399;7>*	,

388C488C57		%12r>   c                 N    | j                  t        j                  g       d       y )Nzempty names on Import)rB   r5   r   r   s    r"   test_importzASTValidatorTests.test_import      		#**R."9:r>   c                     t        j                  d t        j                  dd       gd      }| j                  |d       | j                  t        j                  d g d      d       y )NrY   izNegative ImportFrom levelr   zempty names on ImportFrom)r5   r   r   rB   )r:   imps     r"   test_importfromz!ASTValidatorTests.test_importfrom  sM    nnTCIIc4$8#93?		#23		#..r1-/JKr>   c                 N    | j                  t        j                  g       d       y )Nzempty names on Global)rB   r5   Globalr   s    r"   test_globalzASTValidatorTests.test_global  r  r>   c                 N    | j                  t        j                  g       d       y )Nzempty names on Nonlocal)rB   r5   Nonlocalr   s    r"   test_nonlocalzASTValidatorTests.test_nonlocal  s    		#,,r"$=>r>   c                     t        j                  t        j                  dt        j                                     }| j	                  |d       y NrY   r  )r5   r]  r   r  rB   r  s     r"   	test_exprzASTValidatorTests.test_expr
  s0    HHSXXc399;/0		!-.r>   c           	         t        j                  t        j                         g       }| j                  |d       t        j                  t        j                         t        j                  d      g      }| j                  |d       t        j                  t        j                         t        j                  d      d g      }| j                  |d       t        j                  t        j                         t        j                  d      t        j
                  dt        j                               g      }| j                  |d       y )Nzless than 2 valuesr   rD  r  rY   r  )r5   BoolOpAndrA   r   r   r  )r:   r  s     r"   test_boolopzASTValidatorTests.test_boolop  s    JJswwy"%		!)*JJswwy3<<?"34		!)*JJswwy3<<?D"9:		!&'JJswwy3<<?CHHS#))+4N"OP		!-.r>   c                     t        j                  t        j                         t        j                  dt        j                                     }| j                  |d       y r  )r5   re  rw  r   r  rA   )r:   us     r"   test_unaryopzASTValidatorTests.test_unaryop  s8    KK	388C#=>		!-.r>   c           
         t        j                  g g d g g d g       }| j                  t        j                  |t        j                  dt        j
                                     d       d }| j                  || j                         y )NrY   r  c                 z    t        j                  | t        j                  dt        j                                     S r  )r5   Lambdar   re  rs  s    r"   r  z*ASTValidatorTests.test_lambda.<locals>.fac   s$    ::dCHHS#((*$=>>r>   )r5   r   rA   r  r   r  r  )r:   rb   r  s      r"   test_lambdazASTValidatorTests.test_lambda  sb    MM"b$Bb9		#**Qciik :;*	,	?c499-r>   c                    t        j                  dt        j                               }t        j                  dt        j                               }|||f|||f|||ffD ]$  }| j	                  t        j
                  | d       & y NrY   r   r  )r5   r   re  r  rA   IfExp)r:   lr  r   s       r"   
test_ifexpzASTValidatorTests.test_ifexp$  sp    HHS#((*%HHS#))+&1I1ay1a)3 	BDIIcii&(@A	Br>   c                 B   t        j                  g t        j                  dt        j                               g      }| j	                  |d       t        j                  t        j                  dt        j                               gd g      }| j	                  |d       y )NrY   zsame number of keys as valuesr  )r5   r^  r   re  rA   )r:   r1  s     r"   	test_dictzASTValidatorTests.test_dict*  sj    HHR#((3
345		!45HHchhsCHHJ/04&9		!&'r>   c                     | j                  t        j                  d g      d       t        j                  t        j                  dt        j                               g      }| j                  |d       y Nr  rY   r  )rA   r5   Setr   r  r:   r  s     r"   test_setzASTValidatorTests.test_set0  sL    		#''4&/#45GGSXXc399;/01		!-.r>   c           	         | j                   |g       d       t        j                  t        j                  dt        j                               t        j                  dt        j                               g d      }| j                   ||g      d       t        j                  t        j                  dt        j
                               t        j                  dt        j
                               g d      }| j                   ||g      d       t        j                  dt        j
                               }t        j                  dt        j                               }t        j                  ||d gd      }| j                   ||g      d       t        j                  ||t        j                  dt        j
                               gd      }| j                   ||g      d       y )Nz comprehension with no generatorsrY   r   r  r  r   r  )rA   r5   r   r   re  r  )r:   r  grY   r   s        r"   _check_comprehensionz&ASTValidatorTests._check_comprehension5  sO   		#b'=>chhsCHHJ7!hhsCHHJ7Q@		#qc(56chhsCIIK8!hhsCIIK8"aA		#qc(45HHS#))+&HHS#((*%aTFA.		#qc(-.aSXXc399;%?$@!D		#qc(45r>   c           	      z   t        j                  t        j                  dt        j                               t        j                  dt        j                               g d      }| j                   t        j                  dt        j                               |g      d       fd}| j                  |       y )NrY   r   r  c                 b     t        j                  dt        j                               |       S r  )r5   r   r  )gensr  s    r"   wrapz,ASTValidatorTests._simple_comp.<locals>.wrapI  s!    sxxSYY[1488r>   )r5   r   r   r  re  rA   r  )r:   r  r  r  s    `  r"   _simple_compzASTValidatorTests._simple_compD  s}    chhsCIIK8!hhsCHHJ7Q@		#chhsCIIK01#6*	,	9!!$'r>   c                 B    | j                  t        j                         y r   )r  r5   ListCompr   s    r"   test_listcompzASTValidatorTests.test_listcompM  s    #,,'r>   c                 B    | j                  t        j                         y r   )r  r5   SetCompr   s    r"   test_setcompzASTValidatorTests.test_setcompP  s    #++&r>   c                 B    | j                  t        j                         y r   )r  r5   GeneratorExpr   s    r"   test_generatorexpz#ASTValidatorTests.test_generatorexpS  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      }| j                  |d       t        j
                  t        j                  dt        j                               t        j                  dt        j                               |g      }| j                  |d       d }| j                  |       y )Nr   r  r   rY   r  c                     t        j                  dt        j                               }t        j                  dt        j                               }t        j                  |||       S )NrY   r   )r5   r   re  DictComp)compskr0   s      r"   factoryz0ASTValidatorTests.test_dictcomp.<locals>.factory_  sA    chhj)Achhj)A<<1e,,r>   )r5   r   r   r  re  r  rA   r  )r:   r  cr  s       r"   test_dictcompzASTValidatorTests.test_dictcompV  s    chhsCIIK8!hhsCHHJ7Q@LL#syy{3#sxxz2QC9		!-.LL#sxxz2#syy{3aS:		!-.	- 	!!'*r>   c           	      0   | j                  t        j                  t        j                  dt        j                                     d       | j                  t        j
                  t        j                  dt        j                                     d       y )NrY   zmust have Load)rA   r5   Yieldr   r  	YieldFromr   s    r"   
test_yieldzASTValidatorTests.test_yielde  sT    		#))CHHS#))+679IJ		#--ciik :;=MNr>   c                    t        j                  dt        j                               }t        j                  |t        j                         gg       }| j                  |d       t        j                  |t        j                         gt        j                  d      t        j                  d      g      }| j                  |d       t        j                  t        j                  d      t        j                         g|g      }| j                  |       t        j                  |t        j                         gt        j                  d      g      }| j                  |       y )NrY   zno comparatorsrD  rC  z,different number of comparators and operandsblah)r5   r   re  CompareInrA   r   )r:   r@  comps      r"   test_comparezASTValidatorTests.test_comparei  s    xxSXXZ({{4#&&(R0		$(){{4#&&(cll1os||A-OP		$FG{{3<</#&&(dVD		${{4#&&(cll6.B-CD		$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
                               ||      }| j                  |d       t        j                  |d g|      }| j                  |d       t        j                  dt        j                  dt        j
                                     g}t        j                  |||      }| j                  |d       y )NrY   r   r
  r   r  r  )r5   r   re  r  r  r  rA   )r:   r$  r   r%  callbad_keywordss         r"   	test_callzASTValidatorTests.test_callt  s    xxSXXZ(chhj)*KKSXXc388:%>?@xxciik2D(C		$01xxtfh/		$)*C#syy{)CDExxdL1		$01r>   c                    t        j                  d      5 }t        j                  ddt               ddlm} d d d        t        j                  d      5 }t        j                  ddt                G d d	t              } G d
 dt              } G d dt              }dD ]&  }| j                  t	        j
                  |             (  |        |        |       fD ]-  }| j                  t	        j
                  |      dt               / 	 d d d        | j                  D cg c]  }t        |j                         c}g d       y # 1 sw Y   xY w# 1 sw Y   LxY wc c}w )NTr   r   r   r   r!  r   c                       e Zd Zy)*ASTValidatorTests.test_num.<locals>.subintNr^   rO   r>   r"   subintr    r3  r>   r  c                       e Zd Zy),ASTValidatorTests.test_num.<locals>.subfloatNr^   rO   r>   r"   subfloatr    r3  r>   r  c                       e Zd Zy).ASTValidatorTests.test_num.<locals>.subcomplexNr^   rO   r>   r"   
subcomplexr    r3  r>   r  )0hellozinvalid typer~  )r   r   r   r   r   )r   r   r   r   r5   r   r   floatr   rA   rW   rF   r   r  )r:   r	  r   r  r  r  objr
  s           r"   test_numzASTValidatorTests.test_num  s(   $$D1 	 T##Hb2DE	  $$D1 	GT##Hb2DE 5 W # (		#''#,'(xZ\9 G		#''#,I	FG	G 	$7Q#aii.7 :
 	#	  	 	G 	G 8s   "EB8E'E'EE$c                     t        j                  t        j                  dt        j                               dt        j                               }| j                  |d       y r  )r5   	Attributer   r  re  rA   )r:   r  s     r"   test_attributez ASTValidatorTests.test_attribute  s:    }}SXXc399;7chhjI		$01r>   c           	         t        j                  t        j                  dt        j                               t        j                  d      t        j
                               }| j                  |d       t        j                  dt        j
                               }t        j                  |t        j                  dt        j                               t        j
                               }| j                  |d       t        j                  dt        j                               }|d d fd |d fd d |ffD ]M  }t        j                  | }| j                  t        j                  ||t        j
                               d       O t        j                  g t        j
                               }| j                  t        j                  ||t        j
                                      t        j                  |gt        j
                               }| j                  t        j                  ||t        j
                               d       y )NrY   r   r  r   )	r5   	Subscriptr   r  r   re  rA   SliceTuple)r:   subrY   r  r   sls         r"   test_subscriptz ASTValidatorTests.test_subscript  sw   mmCHHS#))+6QHHJ(		#/0HHS#((*%mmAsxxSYY[9HHJ(		#/0HHS#))+&dOdAt_tT1oE 	0DD!BIIcmmAr388:6.0	0 YYr388:&		#--2sxxz23YYsCHHJ'		#--2sxxz24LMr>   c           	      f   t        j                  t        j                  t        j                  dt        j                               t        j
                               gt        j
                               }t        j                  |gt        j                  d            }| j                  |d       y )NrY   rD  r  )	r5   ListStarredr   re  r  r  r   rB   )r:   r@  assigns      r"   test_starredzASTValidatorTests.test_starred  si    xxSXXc388:%>		LM		%TFCLLO4		&34r>   c           	          | j                   |d gt        j                               d       | j                   |t        j                  dt        j                               gt        j                               d       y r  )rA   r5   re  r   r  )r:   r  s     r"   	_sequencezASTValidatorTests._sequence  sR    		#tfchhj)+<=		#sxxSYY[12CHHJ?*	,r>   c                 B    | j                  t        j                         y r   )r5  r5   r0  r   s    r"   	test_listzASTValidatorTests.test_list  s    sxx r>   c                 B    | j                  t        j                         y r   )r5  r5   r+  r   s    r"   
test_tuplezASTValidatorTests.test_tuple  s    syy!r>   c                    t        j                  d      5 }t        j                  ddt               ddlm} d d d        t        j                  d      5 }t        j                  ddt               | j                  t	        j
                  d             d d d        | j                  D cg c]  }t        |j                         c}d	g       y # 1 sw Y   xY w# 1 sw Y   JxY wc c}w )
NTr   r   r   r   )r   r   rD  r  )
r   r   r   r   r5   r   rA   rF   r   r  )r:   r	  r   r
  s       r"   test_nameconstantz#ASTValidatorTests.test_nameconstant  s    $$D1 	)T##Hb2DE(	) $$D1 	+T##Hb2DEIIc&&q)*	+ 	$7Q#aii.7i:
 		) 	)	+ 	+ 8s   "CA C .C,C C)cpuc                 <   t         j                  j                  t        j                        }t        j
                  |      D cg c]  }|j                  d      s| }}|j                  ddg       |D ]  }| j                  |      5  t         j                  j                  ||      }t        |dd      5 }|j                         }d d d        t        j                  |      }t        ||d       d d d         y c c}w # 1 sw Y   <xY w# 1 sw Y   xY w)Nz.pyztest/test_grammar.pyztest/test_unpack_ex.pyr  utf-8encodingri   )ospathdirnamer5   __file__listdirendswithextendry   joinopenreadr   rz   )r:   stdlibfnr  r   fpr  r   s           r"   test_stdlib_validatesz'ASTValidatorTests.test_stdlib_validates  s    . jj0GBKK4FGG,.FGH 	)Ff% )WW\\&&1"cG4 'WWYF'ii+R() )	) H
' ') )s0   DD/D:D+DDDD	r   rY   Tcarterr   r   .rL  stringr  )restlollegit)patterns	kwd_attrskwd_patternsr  rm  xxx_c           
      2   t        j                  dt        j                               }| j                  D ]  }| j	                  t        j
                  |d            5  t        j                  |t        j                  |t        j                         g      g      }t        j                  |      }t        j                  |gg       }| j                  t              5  t        |dd       d d d        d d d         y # 1 sw Y   xY w# 1 sw Y   xY w)NrY   rD  r
  )r  r   )subjectcasesr   ri   )r5   r   re  _MATCH_PATTERNSry   r  Matchr  r  rf  r   rT   r   rz   )r:   name_xr  r<   r   s        r"   test_match_validation_patternz/ASTValidatorTests.test_match_validation_pattern`  s    #sxxz*++ 	6Gchhwq9: 6yy"$+$'HHJ< 006TFB/&&z2 6FHf566 6	66 66 6s%   BD D.DD
DD	)Nri   r   )Nr   r8   r_   r   r   rA   rB   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  r  r  r  r  r$  r'  r.  r3  r5  r7  r9  r;  r   requires_resourcerN  r5   r   
constant_1
MatchValue	pattern_1
constant_x	pattern_xconstant_trueMatchSingletonpattern_truer   re  name_carterr&  r  MatchSequenceMatchMappingr1  
MatchClass	MatchStarMatchAsMatchOrr\  r_  rO   r>   r"   r}  r}    s   2Z 2$* $6 4D.*,,.+,1E7/A//(/(3;L
;?///.B(/
6((',+O	
242N$5,
!" Wu%
) &
) aJz*Ic"Jz*I CLL&M%3%%d+L#((8XSXXZ0K 	CMMCHHS)#))+. XSXXZ	
 	CMMCHHS(#((*- XSXXZ	
 	CLL	
 	CLL	
 	CLL!	
 	8$
#

X
&
 	 	!!!***84	
 	'K	
 	J'	"	

 	KCKK
(CXSXXZPQ	"	

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

 		
 		
 	K	
 		#53#5#5e#<=	
 	3=3==-./Rc*oxOt6r>   r}  c                   j    e 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y)ConstantTestsz$Tests on the ast.Constant node type.c                    t        j                  d      }|j                  d   j                  }t        j                  |      }t        j
                  ||       ||j                  d   _        t        |dd      }i }t        ||       |d   S )Nzx = 123r   r  r   ri   rY   )r5   r   r   rK   r   r  rz   ri   )r:   rK   r   r<   new_noder  rr  s          r"   compile_constantzConstantTests.compile_constantv  sv    yy#yy|!!<<e,(D)%		!tZ0T2#wr>   c                     | j                  t              5 }| j                  g d       d d d        | j                  t	        j
                        d       y # 1 sw Y   /xY w)NrL  z%got an invalid type in Constant: list)rT   rW   rt  rF   r   r_  )r:   rb  s     r"   test_validationzConstantTests.test_validation  sR    y) 	-R!!),	-R\\*@	B	- 	-s   AA!c                     d ddt         dt               fD ]@  }| j                  |      5  | j                  |      }| j	                  ||       d d d        B y # 1 sw Y   MxY w)NFTr>   )const)r   rj  ry   rt  r   )r:   rx  rK   s      r"   test_singletonszConstantTests.test_singletons  sf    E43	D 	,EE* ,--e4eU+, ,	,, ,s   $A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 ]@  }| j                  |      5  | j	                  |      }| j                  ||       d d d        B y # 1 sw Y   MxY w)N)r   r   r   rR   {   g     ^@y             ^@unicode   bytesr   rj  r  )rj  r   r   ry   rt  rF   )r:   nested_tuplenested_frozensetro  r]  rK   r    s          r"   test_valueszConstantTests.test_values  s    $aS>1X 	@E(!,L(*:A)>?	@ udX.)K"8 02  	0EE* 0..u5  /0 0	00 0s   $$BB	c                    t        j                  d      }|j                  d   j                  d   }t        j                  d      }t        j
                  ||       ||j                  d   j                  d<   | j                  t              5 }t        |dd       d d d        | j                  t        j                        d       y # 1 sw Y   /xY w)Nx = 1r   r   r  rP  ri   z6expression which can't be assigned to in Store context)r5   r   r   targetsr   r  rT   r   rz   rF   r   r_  )r:   r   r  
new_targetrb  s        r"   test_assign_to_constantz%ConstantTests.test_assign_to_constant  s    yy!1%%a(\\*
*f-",		!Qz* 	,bD(F+	,R\\*/	0	, 	,s   CCc                 x    t        j                  d      }| j                  t        j                  |      d       y )Nz'docstring'
x = 1	docstring)r5   r   rF   r9  r   s     r"   r:  z ConstantTests.test_get_docstring  s,    yy-.**40+>r>   c                     t        |dd      }g }t        j                  |      D ]<  }|j                  dk(  s|j                  dk(  s"|j	                  |j
                         > |S )Nr   ri   
LOAD_CONSTRETURN_CONST)rz   disget_instructionsopnamer   argval)r:   r   coconstsinstrs        r"   get_load_constzConstantTests.get_load_const  s_     T:v.))"- 	,E|||+u||~/Mell+	, r>   c                 v   g d}dj                  |D cg c]  }dj                  |       c}      }|dz  }|j                  t        d f       t	        j
                  |      }| j                  | j                  |      |       t        |j                  |      D ]v  \  }}t        |t        j                        sJ t	        j                  |             t	        j                  |      }t	        j                  ||j                         ||_        x | j                  | j                  |      |       y c c}w )N)	NTF|   g       @y              @r|  r}  rL  r  zx={!r}z
x = ...r  )rH  r   rG  r   r5   r   rF   r  rx   r   r   r  r  r   r  rK   )r:   r  rx  r  r   r2  rs  s          r"   test_load_constzConstantTests.test_load_const  s    yyfEU(//%0EFx&'yy,,T2	! !F3 	$MFEfcjj1C388F3CC1||%0Hh5#FL		$ 	,,T2	! Fs   D6c                    t        j                  d      }|j                  d   j                  }t        j                  d      }t        j
                  ||j                         ||_        t        j                  d      }t        j
                  ||j                         ||_        | j                  t        j                  |      d       y )Nz1 + 2r   r   r  y              4@y      $@      4@)
r5   r   r   rK   r   r  r@  rB  rF   r  )r:   r   binopnew_left	new_rights        r"   rQ  zConstantTests.test_literal_eval  s    yy!		!""<<b)(EJJ/
LLs+	)U[[1))%0&9r>   c                    t        j                  dd      j                  }| j                  |j                  d       | j                  |j
                  d        t        j                  dd      j                  }| j                  |j                  d       | j                  |j
                  d       t        j                  dd      j                  }| j                  |j                  d       | j                  |j
                  d        t        j                  dd      j                  }| j                  |j                  d	       | j                  |j
                  d        y )
Nz"x"rk   r  rY   zu"x"r  zr"x"zb"x"   x)r5   r   r   rF   rK   rq   )r:   r  s     r"   test_string_kindzConstantTests.test_string_kind  s    IIe&)..#&&IIf6*//#&%IIf6*//#&&IIf6*//$'&r>   N)r   r8   r_   r  rt  rv  ry  r  r  r:  r  r   r  r  rQ  r  rO   r>   r"   rq  rq  s  sM    .B,00? ! !8:'r>   rq  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 Z!d  Z"y!)"EndPositionTestszTests for end position of AST nodes.

    Testing end positions of nodes requires a bit of extra care
    because of how LL parsers work.
    c                 t    | j                  |j                  |       | j                  |j                  |       y r   )rF   r   r   )r:   rH   r   r   s       r"   _check_end_poszEndPositionTests._check_end_pos  s.    ,,j900.Ar>   c                 P    | j                  t        j                  ||      |       y r   )rF   r5   get_source_segment)r:   r  rH   contents       r"   _check_contentzEndPositionTests._check_content	  s    //A7Kr>   c                 Z    t        j                  |      j                  d   j                  S )Nr   )r5   r   r   rK   r  s     r"   _parse_valuezEndPositionTests._parse_value	  s#     yy|  #)))r>   c                    d}| j                  |      }| j                  ||j                  d       | j                  ||j                  j                  d   d       | j                  ||j                  j                  d       y )Nzlambda x, *y: Noner#   r   rY   r   )r  r  r   r   rV   )r:   r  lams      r"   r  zEndPositionTests.test_lambda
	  sf     "Asxx0Asxx}}Q/5Asxx4r>   c                 L   t        d      j                         }t        j                  |      j                  d   }| j                  |dd       | j                  ||j                  d   d       | j                  ||j                  j                  d   d       | j                  ||j                  j                  d   j                  d       | j                  ||j                  j                  d       | j                  ||j                  j                  j                  d	       y )
Nz
            def func(x: int,
                     *args: str,
                     z: float = 0,
                     **kwargs: Any) -> bool:
                return True
            r   rC     zreturn Truezx: intr   zkwargs: AnyAny)
r   r   r5   r   r   r  r  r   
annotationr   r:   r  fdefs      r"   test_func_defzEndPositionTests.test_func_def	  s        	
 yy|  #D!R(Atyy|];Atyy~~a0(;Atyy~~a0;;UCAtyy>Atyy995Ar>   c                    d}| j                  |      }| j                  ||j                  d       | j                  ||j                  d   j                  d       | j                  ||j                  d   j                  d       y )Nzfunc(x, y=2, **kw)r$  r   2r   kw)r  r  r$  r%  rK   r:   r  r  s      r"   r  zEndPositionTests.test_call!	  so       #Atyy&1At}}Q/55s;At}}Q/55t<r>   c                     d}| j                  |      }| j                  ||j                  d       | j                  |dd       y )Nzx[0]()zx[0]r   rN  )r  r  r$  r  r  s      r"   test_call_noargsz!EndPositionTests.test_call_noargs(	  s?      #Atyy&1D!Q'r>   c                     t        d      j                         }t        j                  |      j                  d   }| j                  |dd       | j                  ||j                  d   d       | j                  ||j                  d   d       y )Nz?
            class C(A, B):
                x: int = 0
        r   rR      r   Bz
x: int = 0)r   r   r5   r   r   r  r  r  r:   r  cdefs      r"   test_class_defzEndPositionTests.test_class_def.	  s}       UW 	
 yy|  #D!R(Atzz!}c2Atyy|\:r>   c                     d}t        j                  |      j                  d   }| j                  ||j                  d   j
                  d       y )Nz$class S(metaclass=abc.ABCMeta): passr   zabc.ABCMeta)r5   r   r   r  r%  rK   r  s      r"   test_class_kwzEndPositionTests.test_class_kw8	  s@    2yy|  #At}}Q/55}Er>   c                     t        d      j                         }t        j                  |      j                  d   }| j                  |dd       | j                  |j                  dd       y )Nzh
            x = """Some multi-line text.

            It goes on starting from same indent."""
        r   r   (   r   r   r5   r   r   r  rK   r:   r  r2  s      r"   test_multi_line_strz$EndPositionTests.test_multi_line_str=	  s_       UW	 	

 1""1%FAr*FLL!R0r>   c                     t        d      j                         }t        j                  |      j                  d   }| j                  |dd       | j                  |j                  dd       y )NzB
            x = "first part" \
            "second part"
        r   rR   r>  r  r  s      r"   test_continued_strz#EndPositionTests.test_continued_strG	  s_       UW 	
 1""1%FAr*FLL!R0r>   c                 P   t        d      j                         }t        j                  |      }|j                  d   }|j                  d   }|j                  d   }|j                  d   }|j                  d   }| j                  |dd       | j                  |dd	       | j                  |d	d
       | j                  |dd       | j                  |dd       | j                  ||j                  d       | j                  ||j                  d   d       | j                  ||j                  d   j                  d       | j                  ||j                  d       | j                  ||j                  d   d       | j                  ||j                  d   j                  d       y )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   rR   r   rD  r   r*     r  r      r  zx = Nonezother()x, yzraise RuntimeErrorrW   )r   r   r5   r   r   r  r  r#  rB  r  handlersr7   )r:   r  r   
while_loopif_stmtfor_looptry_stmt	pass_stmts           r"   test_suiteszEndPositionTests.test_suitesP	  so      ( UW) 	
* iilXXa[
((1+88A;88A;HHQK	J1-GQ+Hb"-Hb!,Ir1-Az7Aw||A
;Aw~~a055yAAx7Ax}}Q/1EFAx00388+Fr>   c                     d}| j                  |      }|j                  d   j                  }| j                  ||d       y )Nzx = f"abc {x + y} abc"r   zx + y)r  r]  rK   r  r:   r  fstrr  s       r"   test_fstringzEndPositionTests.test_fstring|	  s<    $  #A$$Aug.r>   c                 $   t        d      j                         }| j                  |      }|j                  d   j                  }| j                  |dd       | j                  ||j                  d       | j                  ||j                  d       y )Nz
            f"""Some multi-line text.
            {
            arg_one
            +
            arg_two
            }
            It goes on..."""
        r   rC  r   arg_onearg_two)	r   r   r  r]  rK   r  r  r@  rB  r  s       r"   test_fstring_multi_linez(EndPositionTests.test_fstring_multi_line	  s       UW 	
   #A$$E1a(Auzz95Au{{I6r>   c                     t        d      j                         }t        j                  |      j                  d   }| j                  |dd       | j                  |j                  d   dd       y )NzT
            from x.y.z import (
                a, b, c as c
            )
        r   r   r   rR   r   )r   r   r5   r   r   r  r   )r:   r  r  s      r"   test_import_from_multi_linez,EndPositionTests.test_import_from_multi_line	  sc       UW	 	

 iil"CA&CIIaL!R0r>   c                    d}d}t        d      j                         }t        | j                  |||f      \  }}}| j	                  ||j
                  d       | j	                  ||j
                  j                  d       | j	                  ||j                  j                  d       | j	                  ||j                  j                  d       | j	                  ||j                  j                  d   j                  d	       | j	                  ||j                  j                  d
   j                  d       | j                  |dd       y )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  rK   r   r   r   eltsr  )r:   s1s2smi1i2r   s          r"   test_sliceszEndPositionTests.test_slices	  s      UW	 	
 **RRL9
BB+6B7B6B6Ba 0 6 6?Ba 0 6 6?B1%r>   c                 @   t        d      j                         }| j                  |      }| j                  |dd       | j	                  ||j
                  d       | j	                  ||j                  d       | j	                  ||j                  j
                  d       y )NzF
            (1 * 2 + (3 ) +
                 4
            )
        rR   rN  4z1 * 2 + (3 )3)r   r   r  r  r  rB  r@  )r:   r  r  s      r"   
test_binopzEndPositionTests.test_binop	  s       UW	 	

 !!!$E1a(Au{{C0Auzz>:Auzz//5r>   c                     t        d      j                         }t        j                  |      j                  d   j
                  }| j                  |dd       | j                  ||j                  d   d       y )Nz{
            if (one_condition and
                    (other_condition or yet_another_one)):
                pass
        r   rR   ,   r   z"other_condition or yet_another_one)	r   r   r5   r   r   r#  r  r  r]  )r:   r  bops      r"   r  zEndPositionTests.test_boolop	  sm       UW	 	

 iil"''CB'Aszz!}@	Br>   c                    d}d}d}t        d      j                         }t        | j                  ||||f      \  }}}}| j	                  ||d       | j	                  ||d       | j	                  ||d       | j                  |dd	       y )
Nzx = () ;z	x = 1 , ;zx = (1 , 2 ) ;z?
            x = (
                a, b,
            )
        r1   z1 ,z(1 , 2 )r   r   )r   r   r  r  r  r  )	r:   r  r  s3r  t1t2t3tms	            r"   test_tupleszEndPositionTests.test_tuples	  s       UW	 	
 T..RR0@ABBBD)BE*BJ/B1%r>   c                     d}| j                  |      }| j                  |||       | j                  ||j                  d   d       y )Nzfunc(x. y .z)r   zx. y .z)r  r  r   r  s      r"   test_attribute_spacesz&EndPositionTests.test_attribute_spaces	  sC      #AtQ'Atyy|Y7r>   c                    d}t        j                  |      j                  d   j                  }| j	                  t        |      j                  d       | j                  ||d       d|z   }t        j                  |      j                  d   j                  j                  }| j	                  t        |      j                  d       | j                  ||d       y )Nz( ( ( a + b ) ) )r   rF  r+   await )r5   r   r   rK   rF   r7   r   r  )r:   r  r0   r  s       r"   test_redundant_parenthesisz+EndPositionTests.test_redundant_parenthesis	  s    IIaLa &&a))73Aq'*\IIbMq!''--a))73B7+r>   c                    d}|D ]  \  }}| j                  |      5  t        j                  |      j                  d   j                  }| j                  t        |      j                  |       | j                  |||       d|z   }t        j                  |      j                  d   j                  j                  }| j                  t        |      j                  |       | j                  |||       d d d         y # 1 sw Y   xY w)N))z( ( ( a ) ) ) ( )r  )z( ( ( a ) ) ) ( b )r  )z( ( ( a ) ) ) [ b ]r)  )z( ( ( a ) ) ) . br&  r   r  )	ry   r5   r   r   rK   rF   r7   r   r  )r:   r  r  r   r0   r  s         r"   (test_trailers_with_redundant_parenthesisz9EndPositionTests.test_trailers_with_redundant_parenthesis	  s    
  	.DAqa .IIaL%%a(..  a!1!115##Aq!,\IIbM&&q)//55  a!1!115##B1-. .	.. .s   CC??D		c                    d}d}| j                  |      }| j                  |      }| j                  ||j                  d   d       | j                  ||j                  d   d       | j                  ||j                  d   d       | j                  ||j                  d   d	       | j                  ||j                  d   d
       y )Nz[{}, {1, }, {1, 2,} ]z{a: b, f (): g () ,}r   r,   r   z{1, }rR   z{1, 2,}r  r  )r  r  r  r\  r]  )r:   r  r  c1c2s        r"   test_displayszEndPositionTests.test_displays	  s    $#r"r"B
D1B
G4B
I6B
F3B		!f5r>   c                    t        d      j                         }| j                  |      }| j                  |dd       | j	                  ||j
                  d   j                  d       | j	                  ||j                  j
                  d   j                  d       | j	                  ||j                  j
                  d   j                  d   d       | j	                  ||j                  j
                  d   j                  d       y )	Nza
            x = [{x for x, y in stuff
                  if cond.x} for stuff in things]
        rR   %   r   thingsstuffzcond.xr  )
r   r   r  r  r  
generatorsr  eltifsr  )r:   r  cmps      r"   test_comprehensionsz$EndPositionTests.test_comprehensions	  s       UW 	
 "CB'As~~a055x@Asww11!4997CAsww11!488;XFAsww11!4;;VDr>   c                 "   t        d      j                         }t        j                  |      j                  d   }| j                  ||j                  d   j                  d       | j                  ||j                  d   j                  d       y )NzT
            async def f():
                yield x
                await y
        r   zyield xr   zawait y)r   r   r5   r   r   r  rK   r  s      r"   test_yield_awaitz!EndPositionTests.test_yield_await
  sw       UW	 	

 yy|  #Atyy|119=Atyy|119=r>   c                     t        d      j                         }t        d      j                         }| j                  |      }| j                  t	        j
                  ||j                        |       y )NzD
            x = (
                a, b,
            ) + ()
        z;
            (
                a, b,
            )
        )r   r   r  rF   r5   r  r@  )r:   s_origs_tupler  s       r"   test_source_segment_multiz*EndPositionTests.test_source_segment_multi
  sm       UW	 	
    UW	 	
 !!&)//

CWMr>   c                     t        d      j                         }d}t        j                  |      j                  d   }| j                  t        j                  ||j                  d   d      |       y )Nuf   
            class C:
                def fun(self) -> None:
                    "ЖЖЖЖЖ"
        u/       def fun(self) -> None:
        "ЖЖЖЖЖ"r   Tpaddedr   r   r5   r   r   rF   r  )r:   r
  s_methodr  s       r"   test_source_segment_paddedz+EndPositionTests.test_source_segment_padded#
  sg       UW	 	
*yy %%a(//		!TR!	#r>   c                    d}t        j                  |      j                  \  }}}}}| j                  ||d       | j                  ||d       | j                  ||d       | j                  ||d       | j                  ||d       y )Nz!v = 1
w = 1
x = 1
y = 1z = 1
r$   zw = 1r  zy = 1zz = 1)r5   r   r   r  )r:   r  r0   r
  rY   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      j                         }d}t        j                  |      j                  d   }| j                  t        j                  ||j                  d   d      |       y )Nzb
            class C:
              	  def fun(self) -> None:
              	      pass
        z+  	  def fun(self) -> None:
  	      passr   Tr  r  )r:   r  r  r  s       r"   test_source_segment_tabsz)EndPositionTests.test_source_segment_tabs8
  se       UW	 	

& yy|  #//499Q<MxXr>   c                 J   d}t        j                  |      j                  \  }}}| j                  ||d       | j                  ||d       | j                  ||d       d}t        j                  |      j                  d   }| j                  |||j	                                y )Nz3def f():
  pass
def g():  pass
def h():
  pass
zdef f():
  passzdef g():  passzdef h():
  passz"def f():
  a = 1  b = 2
  c = 3
r   )r5   r   r   r  rstrip)r:   r  r!   r  hs        r"   test_source_segment_newlinesz-EndPositionTests.test_source_segment_newlinesD
  s    J))A,##1aAq"45Aq"45Aq"675IIaLa Aq!((*-r>   c                    d}t        j                  |      j                  \  }}}}|`|`|`|`| j                  t        j                  ||             | j                  t        j                  ||             | j                  t        j                  ||             | j                  t        j                  ||             y )Nzv = 1
w = 1
x = 1
y = 1
)	r5   r   r   r   r   r   r   rf   r  )r:   r  r0   r
  rY   r   s         r"    test_source_segment_missing_infoz1EndPositionTests.test_source_segment_missing_infoO
  s    0YYq\&&
1aHLL#00A67#00A67#00A67#00A67r>   N)#r   r8   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  r  rO   r>   r"   r  r    s    
BL*
5B =(;F
11*GX/7 1&"
6	B&8,."	6
E>N
#+
Y	.
8r>   r  c                       e Zd Zd Zy)BaseNodeVisitorCasesc                     G fdd| j                         }t        j                  t        d            } |       }g t	        j
                  d      5 }t	        j                  ddt               |j                  |       d d d        | j                  g d       | j                  D cg c]  }t        |j                         c}g d	       y # 1 sw Y   SxY wc c}w )
Nc                   @    e Zd Z fdZ fdZ fdZ fdZ fdZy)=BaseNodeVisitorCases.test_old_constant_nodes.<locals>.Visitorc                 V    j                  |j                  d|j                  f       y )Nr   )r   r   r   r:   r<   logs     r"   	visit_NumzGBaseNodeVisitorCases.test_old_constant_nodes.<locals>.Visitor.visit_Num_
      

DKK78r>   c                 V    j                  |j                  d|j                  f       y )Nr   r   r   r  r#  s     r"   	visit_StrzGBaseNodeVisitorCases.test_old_constant_nodes.<locals>.Visitor.visit_Stra
  r&  r>   c                 V    j                  |j                  d|j                  f       y )Nr   r(  r#  s     r"   visit_ByteszIBaseNodeVisitorCases.test_old_constant_nodes.<locals>.Visitor.visit_Bytesc
  s    

DKK$&&9:r>   c                 V    j                  |j                  d|j                  f       y )Nr   )r   r   rK   r#  s     r"   visit_NameConstantzPBaseNodeVisitorCases.test_old_constant_nodes.<locals>.Visitor.visit_NameConstante
  s    

DKKDEr>   c                 B    j                  |j                  ddf       y )Nr   .)r   r   r#  s     r"   visit_EllipsiszLBaseNodeVisitorCases.test_old_constant_nodes.<locals>.Visitor.visit_Ellipsisg
  s    

DKKS9:r>   N)r   r8   r_   r%  r)  r+  r-  r/  )r$  s   r"   Visitorr!  ^
  s    99;F;r>   r0  z            i = 42
            f = 4.25
            c = 4.25j
            s = 'string'
            b = b'bytes'
            t = True
            n = None
            e = ...
            Tr   r   r   ))r   r   rP   )rR   r   r   )r   r   r   )rD  r   rP  )rC  r   r}  )rN  r   T)r   r   N)r   r   .)+visit_Num is deprecated; add visit_Constantr  r1  r  r1  r  z+visit_Str is deprecated; add visit_Constantr  z-visit_Bytes is deprecated; add visit_Constantr  4visit_NameConstant is deprecated; add visit_Constantr2  z0visit_Ellipsis is deprecated; add visit_Constant)visitor_classr5   r   r   r   r   r   r   visitrF   r   r  )r:   r0  r   visitorr	  r
  r$  s         @r"   test_old_constant_nodesz,BaseNodeVisitorCases.test_old_constant_nodes]
  s    
	;d(( 
	; ii 	  	 	 )$$D1 	T##Hb2DEMM#	 	 	
 		 	$7Q#aii.7 :
 		 	 8s   -C.C!CN)r   r8   r_   r6  rO   r>   r"   r  r  [
  s    3r>   r  c                   $    e Zd Zej                  Zy)NodeVisitorTestsN)r   r8   r_   r5   NodeVisitorr3  rO   r>   r"   r8  r8  
  s    OOMr>   r8  c                   H    e Zd Zej                  Zd Zd Zd Zd Z	d Z
d Zy)NodeTransformerTestsc                     t        j                  t        |            }t        j                  t        |            } |       }t        j                  |j	                  |            }| j                  ||       y r   )r5   r   r   rf  r4  assertASTEqual)r:   tranformer_classinitial_codeexpected_codeinitial_astexpected_ast
tranformer
result_asts           r"   assertASTTransformationz,NodeTransformerTests.assertASTTransformation
  s[    ii| 45yy!67%'
..z/?/?/LM
J5r>   c                 d    d}d} G d dt         j                        }| j                  |||       y )Nzdef func(arg) -> SomeType: ...zdef func(arg): ...c                   ,    e Zd Zdej                  fdZy)ENodeTransformerTests.test_node_remove_single.<locals>.SomeTypeRemoverr<   c                 H    | j                  |       |j                  dk(  ry |S )NSomeType)generic_visitr  r  s     r"   
visit_NamezPNodeTransformerTests.test_node_remove_single.<locals>.SomeTypeRemover.visit_Name
  s$    ""4(77j(r>   N)r   r8   r_   r5   r   rL  rO   r>   r"   SomeTypeRemoverrH  
      sxx r>   rM  r5   NodeTransformerrE  )r:   r  expectedrM  s       r"   test_node_remove_singlez,NodeTransformerTests.test_node_remove_single
  s2    /'	c11 	 	$$_dHEr>   c                 d    d}d} G d dt         j                        }| j                  |||       y )NzM
        def func(arg):
            print(arg)
            yield arg
        7
        def func(arg):
            print(arg)
        c                   ,    e Zd Zdej                  fdZy)ENodeTransformerTests.test_node_remove_from_list.<locals>.YieldRemoverr<   c                 r    | j                  |       t        |j                  t        j                        ry |S r   )rK  r   rK   r5   r	  r  s     r"   
visit_ExprzPNodeTransformerTests.test_node_remove_from_list.<locals>.YieldRemover.visit_Expr
  s*    ""4(djj#))4r>   N)r   r8   r_   r5   r]  rX  rO   r>   r"   YieldRemoverrV  
  rN  r>   rY  rO  )r:   r  rQ  rY  s       r"   test_node_remove_from_listz/NodeTransformerTests.test_node_remove_from_list
  s6    
	3.. 	 	$$\4Br>   c                 d    d}d} G d dt         j                        }| j                  |||       y )Nz0
        class DSL(Base, kw1=True): ...
        zE
        class DSL(Base, kw1=True, kw2=True, kw3=False): ...
        c                   ,    e Zd Zdej                  fdZy)BNodeTransformerTests.test_node_return_list.<locals>.ExtendKeywordsr<   c                     | j                  |       |j                  dk(  rS|t        j                  dt        j                  d            t        j                  dt        j                  d            gS |S )Nkw1kw2Tkw3F)rK  r  r5   r  r   r  s     r"   visit_keywordzPNodeTransformerTests.test_node_return_list.<locals>.ExtendKeywords.visit_keyword
  s^    ""4(88u$E3<<+=>E3<<+>? 
 r>   N)r   r8   r_   r5   r  rb  rO   r>   r"   ExtendKeywordsr]  
  s    #++ r>   rc  rO  )r:   r  rQ  rc  s       r"   test_node_return_listz*NodeTransformerTests.test_node_return_list
  s6    		S00 		 	$$^T8Dr>   c                 d    d}d} G d dt         j                        }| j                  |||       y )NrT  z5
        def func(arg):
            log(arg)
        c                   ,    e Zd Zdej                  fdZy)9NodeTransformerTests.test_node_mutate.<locals>.PrintToLogr<   c                     | j                  |       t        |j                  t        j                        r*|j                  j
                  dk(  rd|j                  _        |S )Nprintr$  )rK  r   r$  r5   r   r  r  s     r"   
visit_CallzDNodeTransformerTests.test_node_mutate.<locals>.PrintToLog.visit_Call
  sA    ""4(dii2tyy||w7N#(DIILr>   Nr   r8   r_   r5   r  rj  rO   r>   r"   
PrintToLogrg  
  rN  r>   rl  rO  r:   r  rQ  rl  s       r"   test_node_mutatez%NodeTransformerTests.test_node_mutate
  s6    
	,, 	 	$$Zx@r>   c                 d    d}d} G d dt         j                        }| j                  |||       y )NrT  zH
        def func(arg):
            logger.log(arg, debug=True)
        c                   ,    e Zd Zdej                  fdZy):NodeTransformerTests.test_node_replace.<locals>.PrintToLogr<   c           
         | j                  |       t        |j                  t        j                        r|j                  j
                  dk(  rt        j                  t        j                  t        j                  dt        j                               dt        j                               |j                  t        j                  dt        j                  d            g      S |S )	Nri  logger)r  r$  )r  r  debugT)r$  r   r%  )rK  r   r$  r5   r   r  r  r&  re  r   r  r   r  s     r"   rj  zENodeTransformerTests.test_node_replace.<locals>.PrintToLog.visit_Call
  s    ""4(dii2tyy||w7N88 ]]HHX388:>!& #

 "YY"%++gs||D7I"J!K  r>   Nrk  rO   r>   r"   rl  rq  
  s    sxx r>   rl  rO  rm  s       r"   test_node_replacez&NodeTransformerTests.test_node_replace
  s6    
	,, 	 	$$Zx@r>   N)r   r8   r_   r5   rP  r3  rE  rR  rZ  rd  rn  ru  rO   r>   r"   r;  r;  
  s0    ''M6FC,E*A&Ar>   r;  c                   $    e Zd Zd Zd Zd Zd Zy)ModuleStateTestsc                     d}d}d}t        |||t        j                        }t        |||      }| j                  |t        j
                         y )Nzx + 1r   rk   )flags)rz   r5   r{   r   typesCodeType)r:   r  filenamer  r   s        r"   check_ast_modulez!ModuleStateTests.check_ast_module  sM     44s7H7HI x40dENN3r>   c                 8   t        j                  t        j                  dd       5  t        j                  d= dd l}t        j                  d= dd l}| j                          d d d        ~~t        j                          | j                          y # 1 sw Y   0xY w)N_astr   )r   	swap_itemsysmodulesr  r}  re   )r:   ast1rX  s      r"   test_reload_modulez#ModuleStateTests.test_reload_module  sw    s{{FD9 	$F#F#!!#	$ 	$ 	$s   ;BBc                    t               fd}t        j                  t        j                  dd       5  t        j                  d= t        j
                  t        d|      5  | j                          | j                  dt        j                         dd l	}| j                  |       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nc                 .    t         j                  | <   S r   )r  r  )r;   r   r  lazy_mods      r"   	my_importz4ModuleStateTests.test_sys_modules.<locals>.my_import5  s     (CKKOr>   r  
__import__r   )objectr   r  r  r  rw  r   r}  assertNotInr  r   )r:   r  r  r  s      @r"   test_sys_modulesz!ModuleStateTests.test_sys_modules0  s     8	 s{{FD9 
	.F#""8\9E .%%'  5 dH-.
	. 
	.. .
	. 
	.s$   -C#AB;*C;C	 CCc                 h    t        d      }t        j                  |      }| j                  |d       y )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_subinterprF   )r:   r  ress      r"   test_subinterpreterz$ModuleStateTests.test_subinterpreterE  s5       & &&t,a r>   N)r   r8   r_   r}  r  r  r  rO   r>   r"   rw  rw    s    4 $.*!r>   rw  c                       e Zd Zd Zy)ASTMainTestsc                    d}t        j                  t        j                  |      d      }t        j                         5 }t
        j                  j                  |d      }t        |dd      5 }|j                  |       d d d        t        j                  dd	|      \  }}d d d        | j                  j                  d
       | j                  |j                         |j                  j!                  d      j                                | j                  |j"                  d       y # 1 sw Y   xY w# 1 sw Y   xY w)Nzprint(1, 2, 3)r   r
  ztest_module.pyr
  r>  r?  z-mr5   r>   utf8r   )r5   r  r   r   temp_dirrA  rB  rH  rI  writer   run_python_until_endrF   err
splitlinesoutdecoderc)r:   r  rQ  tmp_dirr|  r!   r  rX  s           r"   test_cli_file_inputz ASTMainTests.test_cli_file_inputb  s    88CIIdOA6! 	OWww||G-=>Hhg6 !"77eXNFC		O 	#&,,./::<	># 	O 	Os$   /D80D,"D8,D5	1D88EN)r   r8   r_   r  rO   r>   r"   r  r  _  s    $r>   r  c                  j   t         dk7  ry t        j                  dd  dgk(  r~t        dft        dft
        dffD ]S  \  } }t        |dz          | D ]0  }t        j                  |d|      }t        t        |      d	       2 t        d
       U t        d       t        t        j                          y )N__main__r   z-gri   rj   rk   z_results = [ro   ,]zmain())r   r  argvrr   rt   rv   ri  r5   r   r   
SystemExitr  main)
statementsrq   	statementr   s       r"   r  r  r  s    :
xx|v",f!5h7O",f!5!7 	J$~%&' 1	yyC6x~/01 #J	 	hMMOr>   r   )r]  r   r   r   rD  r   r  NN)r]  r   r   r      )r   r  zmodule docstringNr  )r   r   r   r>  r!   r   )r  )r   r*  r   r>  )r   r   r      )r]  r   r*  r   r  )r   r  zfunction docstringN)r   r   r   r  r  r   rN  r   r   rb   NN)r  )r   r   r   r  )r   r   r   r   )r   r   r   r   r*  r   N)r  )r   r  r   r   r  )r  r   r   r   r  r   NN)r  )r   r  r   r  )r   r   r   r4  )r  )r   r   r   r   r   )r1  r   r>  r   r   )r   )r   r  r   r   Tsre  r  N)r  )r   r  r   r4  )r   r   r   $   r  )r   r   r   r  r   r1  )r   r>  r   r  r)  )r   r  r   r  )r   )r   r  r   r  r   r  r+  )r      r      )r   r   r  r   r4  r   r  r   r      r   r  r  )r  )r       r   r  )r1  r  r   )r      r   r  r  r  r  )r   r   r      )r  r   r   r   r  r+  NN)r  )r   r   r   r  )r   r   r   G   )r  )r  r   r*  r   r   r  NN)r  r   r  r   r  r  NN)r  r   r   r   r4  r1  NN)r  r   r  r   r  r   NN)r  r   #   r   '   r   NN)r  )r   )   r   rP   r!   NN)r   )r   +   r   -   rP   N)r  )r   1   r   7   r+  NN)r   r   r  r   r  r   N)r   r   r   r   r  NNr0  )r      r   r  r^  )r      r   r  )r]  r   :   r   r  )r   r  zdoc for f()N)r   r   r      )r  )r   r4  r   r  )r   r  r   r  )r   r   r  r   r   r   r  r   r   r   r  )r1  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  )r1  r   r   r   r  )r   )r   r4  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   r4  r   r  )r   )r   r4  r   r  r   r  )r   r  r   r  )r   )r   r  r   r  r   r  )r   "   r   r  r  )r   r   r   r  C)r  )r   r   r   r  )r]  r   r*  r   r  )r   r  zdocstring for class CN)r   r  r  r  )Returnr   r   r   r   )r   r   r  r   r   r   Nr  r   r   r   rC  )r   r   rD  r   rC  r0   )Delr  r   r   r   r   r   r0   r  )r   r  r   Nr   r   r   r   r   r   r   r   )r   r  rb   r  )r   r   rR   r   r   r  r  r  )r   r  r  r  )r   r   r   r*  r   r   r   r   rR   rb   r  )r   r   r   r   rD  r  r  )r   r  r  r  	AnnAssign)r   r  rY   r  )r   r   r   r>  )r   r   r   r   r   r   r  r   r*  r   r  )r1  r  )r   r   r   r   r  r  r  r  r   )r   r   r   r  )r   r*  r   r   r   r  r   r  )r1  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   )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   rN  r  rG  )r   r   rC  r   rN  r   Nr   )r   r   r   r  )r   r  r0   r  )r   r  r0   r  )r  )r   r  r   r  r  )r   r  r0   r  r  )r   r  r0   r  )r  )r   rC  r   r*  )r   r   rD  rN  )r   r  rb   r  )r  )rR   rR   rR   rN  )r   r   rD  rN  )r   )r   rC  r   rN  r  r  )r  )rD  rR   rD  rN  )r   r   rN  rN  )r   r   rN  rN  )r  )rN  rR   rN  rN  r  )r   r   r   r   )r  )r   r  rY   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  qr  )r  )r   r  r   r  r  r  )r   rN  r   r  )r   )r   rN  r   r  r  r  )r   )r   r   r   r  rP  Nr  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   r0   r  Nr   )r   r   r   r   )r   r   r   r   r   r  Nr   r  )r   r   r   r   r   r0   Nr  r  r0   )r]  r  r   r  r   N)r  r  )Breakr  )r   r   r   r  )Continue)r   r  r   r  )r   rD  r   r   )r   r  rb   r  )r   r  r  r  )r   r  r  r  )r   r   r   r  )r   rD  r   r*  )r   r  rb   r  )r   r  r  r  )r   r  r  r  )r  r  r]  )r   r   r  rC  r  )rR   rD  rN  rC  )r   )r   rD  r   rN  Aar  )r   )rC  r   rC  r*  Bbr  r   )r   rD  r   rN  )r   )r   rD  r   rN  r  r  )r   )r   rD  r   rN  r  r  )r   )r   r   r   r  Ccr  )r   r   r   r  r  r   r  rb   r  )r   r  r  r  )r   r  r
  r  )r   r  rY   r  )r   r  ra  r  )r   )r   r  r   r  r  r  )r   )r   r  r   !   r  r  r   r  r   r  )r   r  r0   r  )r   r  r
  r  )r   r  rY   r  r  )r   r  r  r  )r   r  r  r  )r   r   r  r   r>  rY   r  )r   r   r   r   r  r  r  r  )r   r  ra  r  )r   r  rY   r  AsyncFunctionDef)r   r   r   r  )r]  rR   r   rR   r   )r   r  zasync functionN)r   r   r   r  Await)r   r   r   r  )r   r  	somethingr  )r   r   r   r   AsyncFor)rR   r   r   r   )r   )rR   r  rR   r  r   r  )r   )rR   r   rR   r   r}   r  )r]  rR   r  rR   r  )r   r  r   N)r]  r   r   r   r   )r   r  rR   N)r   r   rR   r  	AsyncWith)rR   r   rR   r  )r  )r   )rR   r  rR   r>  rb   r  )r   )rR   r   rR   r  r  r  )r]  rR   r  rR   r  )r   r  r   N)r   r  rR   Nr  )r   r  rR   N)r   r  r   Nr  )r   r   r   r   )r   rR   r   r   )r   r  r   N)r   r  r   Nr  )r   )rR   rR   rR   r   r}   r  )r   )rR   r  rR   r  r  r  )r   r  r  r  )rD  r   rD  r>  )r  )rD  r*  rD  r>  )r   r   r   r   rN  deco1r  )rR   r   rR   r   )r   )rR   r   rR   rN  deco2r  )r   r   r   r*  )r   )r   r   r   rN  deco3r  )r   r  r   N)rD  r   rD  r  )r  )rD  r  rD  r  )rR   r   rR   r>  )r  )rR   r*  rR   r>  )r   r   r   r  )r   r   r   r   rC  decor  )r   rC  r   r  )r   r  rb   r  )r   r  rb   r  )r   r	  r  r  )r&  r  )r&  )r   r   r   rD  r  r  r  r  r  )r]  r  )	NamedExpr)r   r   r   r   r  )r   r  r   N)r   r   r   r  )r  r  r  NN)r  r  r1  NN)r  r  r   NN)r  )r   r   r   r  r  )r  r  r1  NN)r  r   r  r   r   r   NN)r  )r   r  r   r  )r   r   r   r  )r  )r   r  r   r  r+  NN)r  r  r   r  r   N)r  r  r  NN)r  )r   r  r   r  r  NN)r  r   r  rR   N)r   r  rD  N)r  r  r  NN)r   )r   r  r   r  rD  Nr  )r   r   r   r  )r  )r   r  r   r  )r   r   r   rP   )r  )r   r  r   r  r+  NN)r  )r   r  r   rP   )r   r   r   r  )r  )r   r  r   r  r+  NN)r  )r   r  r   r  	TypeAlias)r   r  r`   r  TypeVarr  TN)r   r   r  r   r  r   r  )r  )TypeVarTupler   r   r   r>  r  )	ParamSpecr   r  r   r  P)r   r   r   r  ))r   )r   r4  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'  )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!  )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  )r   )r   r  r   r  r  r  )r   )r   rP   r   r  r'  r  r`   r   r  r!  N)r,  )r#  r  r  )r%  r+  r'  )r  )r   r  r   r  ))r   r  r!  r*  )r#  r+  r  )r%  r  r'  )r   r   r   r  )r  )r   r  r   r  )r   r   r   r  )r   r  r   r  )r#  )r   r4  r   r  r  )r%  )r   r  r   r  r'  r   r  r!  N)r-  )r#  r  r  )r%  r  r'  ))r   )r   rN  r   r  r!  r  )r#  r  r  )r%  )r   r  r   r   r'  )r   rN  r   r  )r   r*  r   r  r(  )r   r&  r   r  )r#  r  r  )r%  r  r'  r  )r]  r  )rF  r  r  r  r   r  rR   N)rk  r  rk  r  )r  r   r  rb   r  )r   r  r  r  )rk  )rF  r  r/  r  r   r  r  r  )rk  )re  r  )rw  )r   r  r0   r  r  )r   r   r   r  )r   r  NNr   r  r   Nr   r  rR   Nr   r   r   rR   )r   r  NN)r   r   rC  rN  )r   )rR   rN  rR   r   r   N)r   )rD  r   rD  r  rR   N)r   r  r  r  )r   r	  r1  r  r  )r   r  rb   r  r0  )r   r  rb   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  )Ltr   r  r   N)r   r  r!   r  )r1  r2  )r1  r  )r   r  r1  r  r  )r  )r   rN  r   r*  r  r5  )r  r  N)r   r  r   r  )r   rR   r   r*  )r   r   r   r*  )r   r  r   N)r   r  r   N)r   r   r   r  )r   r  rb   r  )r   r  r  r  )rk  )r   r3  r   N)rk  )r   r  rP  N)rk  r&  r  r/  r  r  )rk  )r)  r  r/  )r*  )r   rR   r   rC  )r   r  r  r  )r   r  r  r  Nr  )rk  )r   r  r0   r  ))r   r  r   N)r   r  rR   N)r   r  r   N)r  r.  )r   r  r   N)r&  r  )r&  r  r6  r  r  r1  r  )r)  r  )r&  )r   r   r   r  )r   r  rb   r  r  r  )r*  r"  )r   r  r   N)r   r  rR   NNr  )-r5   r   r  r  rA  r  r  r  rz  r  r   rc   	functoolsr   r   r#  r   test.support.import_helperr   test.supportr   r   test.support.ast_helperr	   r   rr   rt   rv   TestCaser3   r  r}  rq  r  r  r8  r;  r  rw  r  r  r   rs   ru   rw   rO   r>   r"   <module>r<     s3   
  
  	 	 
         : 1 0&b
P 
E
TP7!! P7dY=h'' Y=xc	6)) c	6LB'H%% B'Ja8x(( a8F5 5p$+X->-> $sA<)=x?P?P sAl 	N!x(( N! N!b$8$$ $& [	JKR P[	Z[]_ `[ 
]M3b"dBPRTXZ\0]`w_xz|  C  EI  KM  N  O  QS  T[ 
]M3b"dBPRTXZ\0]  aq  `r  tv  x|  ~B  DF  G  H  JL  M	[
 
]M3bCiBjlprtvxz~  AC  1D  G_  F`  bd  fj  lp  rt  u  v  xz  {[ 
]M3bCiBjlprtvxz~  Be  Af  1g  jB  iC  EG  IM  OS  UW  X  Y  []  ^[ 
]M3b"Fprtvxz~  AC  1D  G_  F`  bd  fj  lp  rt  u  v  xz  {[ 
]M3b"  G~  @B  DF  HL  NP  1Q  Tl  Sm  oq  sw  y}  A  B  C  EG  H[ 
]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  np  q  r  tv  w[ 
]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  SU  V  W  Y[  \[ 
]M3b"dBPR  UA  CE  1F  Ia  Hb  df  hl  nr  tv  w  x  z|  }[ 
]M3b  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  DF  G  H  JL  M[ 
]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  Y[  \  ]  _a  b[ 
]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  EG  H  I  KM  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  tv  w  x  z|  }[  
ZR6M5NPRTVWXZ\ ]![" 
ZR  7J  6K  MO  QS  T  U  WY  Z#[$ 
Z.Z-[]_bza{}  BD  E  F  HJ  K%[& 
]M3b"dBPRTXZ\0]  aa  `b  df  hl  nr  tv  w  x  z|  }'[( 
X|&K%LMNPR S)[* 
X|&M%NPsuyz{}  A+[, 
X|w?f  iP  ?Q  S]  '^  &_  aG  IM  N  O  QS  T-[. 
X|w?f  iP  ?Q  S]  '^  &_  aG  IM  N  O  QS  T/[0 
X|v|>e  hO  >P  R\  ']  &^  `F  HL  M  N  PR  S1[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3[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  [5[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7[8 
  A  CE  F9[: 
UM#JLs  wO  vP  RT  VZ  [  \  ^`  a;[< 
Wm%KNeMfhjklnp q=[> 
T<!GJ`Iacefgik l?[@ 
T<!GJ`Iaeikw  z`  cy  bz  |~  e  d@  A  B  DF  GA[B 
T<!GJ`Iaeikw  z`  cy  bz  }S  |T  eU  dV  W  X  Z\  ]C[D 
V]  &E  %F  Ia  Hb  dh  i  j  ln  oE[F 
V]  &E  Gh  %i  lD  kE  GK  L  M  OQ  RG[H 
Wmfm=l  p\  o]  _a  &b  dh  i  j  ln  oI[J 
UL#9":o|  ^M  OS  Vl  Um  >n  =o  qs  uw  x  y  {}  ~K[L 
UL#9":BE[D\]^`b cM[N 
Y'=&>/S_  bQ  SW  Zp  Yq  Br  As  uw  y{  |  }  A  BO[P 
RSUW XQ[R 
X}'L&MNOQS TS[T 
\=%2V1WYZ[\^` aU[V 
X|cU+,b 1W[X 
GH" MY[Z 
"#R ([[\ 
UM#JLs  wP  vQ  SU  W[  \  ]  _a  b][^ 
UM#JLs  wS  vT  VX  Z^  _  `  bd  e_[` 
UMG\<c  fM  <N  PZ  $[  ]E  H`  Ga  ce  gk  l  m  oq  ra[b 
UMG\<c  fM  <N  PZ  $[  ]E  H`  Ga  ce  gk  l  m  oq  rc[d 
UMFL;b  eL  ;M  OY  $Z  \D  G_  F`  bd  fj  k  l  np  qe[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[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[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[l 
V]Y?eix  {b  dL  Ow  Nx  z{  i|  h}  %~    @  BD  Em[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[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  JL  M  N  PR  Sq[r 
s["b$PRTVX\^`4aeoq}  @i  kS  VU  UV  YT  XU  W[  e\  d]  _a  cg  im  oq  r  s  uw  xs[t 
k2r4QSUWY]_a5bfq  tA  De  Cf  ih  hi  ko  fp  eq  su  w{  }A  CE  F  G  IK  Lu[v 
V]V]TCh<ims  vB  Eh  Di  lO  kP  mQ  Sx  ly  %z  {  |  ~@  Aw[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[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  FH  I  J  LN  O{[| 
]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  pr  s  t  vx  y}[~ 
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  vx  y  z  |~  [@ 
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  z|  }  ~  @B  CA[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  MO  P  Q  SU  VC[D 
]M3b"dBPRTXZ\0]`w_x  ||  {}  C  EI  KM  N  O  QS  TE[F 
  N  O  QS  TG[H 
]M3?e>fhjlprtvxz~  AC  1D  G_  F`  bd  fj  lp  rt  u  v  xz  {I[J 
]M3?e>f  ig  im  oq  su  w{  }  1@  C[  B\  ^`  bf  hl  np  q  r  tv  wK[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  vx  y  z  |~  M[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  b  c  eg  hO[P 
]M3?e>fhjlprtvxz~  Be  Af  1g  jB  iC  EG  IM  OS  UW  X  Y  []  ^Q[R 
]M3?e>f  jR  T|  i}  C  EG  IK  MQ  SF  1G  Jb  Ic  eg  im  os  uw  x  y  {}  ~S[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  qs  t  u  wy  zU[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  PR  S  T  VX  YW[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  Z\  ]  ^  `b  cY[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  y{  |  }  A  B[[\ 
[-)PRTV  A  B  DF  G][^ 
[-)PSwRx  {e  f  g  ik  l_[` 
[-)P  SE  HO  Q_  a`  bk  Gl  m  n  pr  sa[b 
[-)P  Sl  ov  xF  HG  IR  nS  T  U  WY  Zc[d 
[-)PT]_lnqt{  ~L  Oy  {e  Nf  hq  tr  Ts  u[  ]  S@  CJ  LZ  \[  ]f  Bg  h  i  km  ne[f 
ZR6N5OQSVzU{|}  @B  Cg[h 
ZR6N5OQS  VH  I  J  LN  Oi[j 
ZR6N5OQS  Vo  p  q  su  vk[l 
ZR6N5OQSW`boqtw~  AO  R|  ~h  Qi  kt  wu  Wv  x^  `B  VC  D  E  GI  Jm[n 
]M3b"dBPRTXZ\0]`x_y{}  @D  FJ  Mq  Lr  s  t  vx  yo[p 
]M3b"dBPRTXZ\0]`x_y{}  @D  FJ  L}  ~    AC  Dq[r 
]M3b"dBPRTXZ\0]`x_y{}  @D  FJ  Ld  e  f  hj  ks[t 
]M3b"dBPRTXZ\0]`x_y{}  @D  FJ  NW  Yf  hk  nu  wD  Gq  s]  F^  `i  mj  Mk  mS  Uw  Lx  y  z  |~  u[z   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  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  Xa  b  c=$> b)4 5?$@   (W  Yb  c  dA$B   (W  Yb  c  dC$D r95 6E$F   (U  XD  WE  GI  J  KG$J r>   