python (3.12.0)

(root)/
lib/
python3.12/
test/
__pycache__/
test_ast.cpython-312.pyc

͑e3ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlm
Z
ddlmZddlmZddlmZddlmZmZddlmZdZgd	Zd
gZgdZGdd
e	j8ZGdde	j8ZGdde	j8ZGdde	j8Z Gdde	j8Z!GddZ"Gdde"e	j8Z#Gddee"e	j8Z$ejJGdde	j8Z&Gdde	j8Z'd Z(gd!d"ggfd!d#ggfd!d$d%d&d'ggdggdgfd(ggddgf	ggfd!d$d)d&d'ggdggdgfd*ggddgf	ggfd!d$d+d&d'gd,gdggdgfd-ggddgf	ggfd!d$d.d&d'gd,gdggdd/gfd0ggddgf	ggfd!d$d1d&d'ggd2ggdgfd3ggddgf	ggfd!d$d4d&d'ggd5ggdgfd6ggddgf	ggfd!d$d7d&d'ggd8d9d:d;d<d=d>d?d@dAdBdCdDe)dfgdEfdEfdEfdfggdgfdFggddgf	ggfd!d$d7d&d'ggd8d9d:d;d<d=d>d?d@dAdBdGgdEfdEfdEfdfggdgfdFggddgf	ggfd!d$dHd&d'ggdggdIgfdJggddgf	ggfd!d$dKd&d'ggdLdMdNgdOgdPdQdRdSdTgdEfdUdVggfgfdWggddgf	ggfd!d$dXd&d'ggdggdgfdYggd=dZd[d@d\d]gdEfdEfdgf	ggfd!d$d^d&d'ggdggdgfd_ggd=d`d[d@dadbdcgdEfdEfdgf	ggfd!d$ddd&d'ggdggdgfdeggd=dfd[d@dgdbd;dhd=didjd@dkdldCdme)dfgdEfdEfdEfgdEfdEfdgf	ggfd!dndodpggdqgggfggfd!dnd^dpggdrgggfggfd!dndHdpdsggdJgggfggfd!d$d.d&d'ggdggdgfdtggddgf	ggfd!dudvdwgfggfd!dxdvdygdzdfggfd!dxd{d@d|d}d~gdfgddfggfd!dxdd@dvddgdfgddfggfd!dxddSdvddgdfgddfggfd!dd%dd=ddd@ddgdEfdEfddfggfd!dd1dd=ddd@dddgdEfdEfddfggfd!dddd=ddd@ddd;dd=ddd@dddCde)dfgdEfdEfdEfgdEfdEfddfggfd!dggfd!dddddggdfggfd!ddoddqggfggfd!ddddggfggfd!ddddgddddggfgfggfd!ddddgddddgdgfgfggfd!dddgdgdfggfd!ddddgdgdfggfd!ddddddggfdfggfd!dddgdddddgfgggfggfd!dddgggdgfggfd!dddgdddddgfgggfggfd!dggfd!dddgfggfd!ddddgdfggfd!dddgfggfd!dggfd!dggfd!dd.dddggdfggfd!dddddggdfggfd!dd1d@dddgdfdd3ggdfggfd!ddd@dddgdfddggdfggfd!dddSdddgdfddggdfggfd!ddddd@dddgdEfdd@dddgdfdgdfgffggfd!dddddddddgdfddddgdfgffggfd!dddddddd@dddgdfdgdfgffggfd!dddddddddgdfgffggfd!dd.dd.ddd@dddgdfdgdfgffggfd!ddd&d'ggdggdgfddddddddggfffggddgf	ggfd!ddd&d'ggdggdgfdddddgdgdfggddgf	ggfd!ddd&d'ggdggdgfdddgd	gdfggddgf	ggfd!dd+dUd+dd
gdUddzgdgfd
gffggfd!ddoddod;dddddgfdEfdgffggfd!ddd&d'ggdggdgfdאdddddݐddgdfgffggddgf	ggfd!d$dd&d'ggdggdgfdgddddggfddddggfgddgf	ggfd!ddd&d'ggdggdgfd gddddggfddddggfgddgf	ggfd!dnddpggdgddddggfddddggfggfggfd!d$d!d&d'ggdggdgfd"gdd#d$dِd%d&dݐd'd(gdfgfggfgddgf	ggfd!d$d!d&d'ggdggdgfd"gd)gddgf	ggfd!d*ggfd!d$d1d&d'd,ggdggdgfd3ggddgf	ggfd!d$d+d&d'd,ggd,dggdgfd-ggddgf	ggfd!d$d)d&d'd,gd.gdd/d0gddgdgfd1ggddgf	ggfd!d$d2d&d'd,gd.gdd/d0gddgd3gfd4ggddgf	ggfd!d$dd&d'd,ggdggdd5gfdggddgf	ggfd!d$d)d&d'd,gd6d7gdggdgd8fd1ggddgf	ggfd!d$d^d&d'd,gd6gdd9gd:gdd5d;gfd_ggddgf	ggfd!d$d<d&d'd,gd6gdd9gdgdd5d;gfd=ggddgf	ggfd!d$d>d&d'd,gd6gdd9gd:gd?d5d;gfd@ggddgf	ggfd!d$dAd&d'd,gd6gdd9gdgdBd5d;gfdCggddgf	ggfd!dDdodEgdfggfd!dDddEdFgdGfggfd!dDd^dEgdHd@dIgdJdEffggfd!dDdKdEgdLd@dMgdNdEffggfd!dDdOdEdPdQdRd@dSdTdUgdEffdVdWgd@dXgdYdEffggfd!dnd.dZggd0ggd[gfggfd!dnd+dZggd-gggd\fggfd!dnddZggd]gggd^fggfd!dnd_dZggd`ggdPdadRd@dZdGdbgdEffdcddgfggfd!d$d.d&d'ggdggdgfd0ggdddegf	ggfd!d$d+d&d'ggdggdgfd-ggddgdff	ggfd!d$dd&d'ggdggdgfd]ggddgdgf	ggfd!d$d_d&d'ggdggdgfd`ggdddPdhdRd@didjdkgdEffdldmgf	ggfZ*dndogfgZ+gdpdqdrd{dsdtdugffdvdwdqdxdyd'ggdggdgfdzffdqdUd{d{gd|gffdqdUd}ggffdqdd{d~gffdqdUddgdgffdqdddddԐddgdfgffdqdddddԐddgdfgffdqddd@dddgdEfdd@dddgdfdgdfgffdqddd@dddgdEfdd@dd'dgdfdgdfgffdqddd@dddgdEfddSdd'dgdfdgdfgffdqddd@dddgdEfdd@dddgdfdgdfgffdqddd@dddgdEfdd@dd'dgdfdgdfgffdqddd@dddgdEfddSdd'dgdfdgdfgffdqddd@dddgdEfdd@dddgdfdgdfgffdqdِdd@dddgdEfdd@dd'dgdfdgdfgffdqdِdd@dddgdEfddSdd'dgdfdgdfgffdqdddddgd|dgffdqdddgdddgffdqdddd;ddSdddgdEfdEfggffdqddddِdddݐddgdfgfggffddddddqdSd{gddEffdqdSd}gdEffdqd@dvgddEffdqd@d{gddEffdqd@d}gdEffdqddddggffZ,e(y(N)partial)dedent)support)import_fresh_module)	os_helper
script_helper)ASTTestMixinc	||#t|tttfs|tur|St|t
r|Dcgc]
}t
|c}S|jjg}t|drnt|drb|j|j|jft|dr/t|dr#|dxx|j|jfz
cc<|jt!|S|jD]&}|jt
t#||(t!|Scc}w)Nlineno
col_offset
end_linenoend_col_offset)
isinstancestrintcomplexEllipsislistto_tuple	__class____name__hasattrappendrrr
r_fieldstuplegetattr)teresultfs    A/BuggyBox/python/3.12.0/bootstrap/lib/python3.12/test/test_ast.pyrrsyJq3W"56!x-	At	%&'''kk""
#Fq(< 8

qxx./1l#3C(D2J1<<)9)9::JyyV}
YY/

hwq!}-./=(sD9)ZNonez'module docstring'z
def f(): passzdef f(): 'function docstring'zdef f(a): passzdef f(a=0): passzdef f(*args): passzdef f(*args: *Ts): passz$def f(*args: *tuple[int, ...]): passz$def f(*args: *tuple[int, *Ts]): passzdef f(**kwargs): passzGdef f(a, b=1, c=None, d=[], e={}, *args, f=42, **kwargs): 'doc for f()'zdef 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'zclass C(object): passzdef f():return 1zdel vv = 1za,b = cz	(a,b) = cz	[a,b] = cz
x: tuple[*Ts]zx: tuple[int, *Ts]zx: tuple[int, *tuple[str, ...]]zv += 1zfor v in v:passzwhile v:passz	if v:passzif a:
  pass
elif b:
  passz(if a:
  pass
elif b:
  pass
else:
  passzwith x as y: passzwith x as y, z as q: passzraise Exception('string')z$try:
  pass
except Exception:
  passztry:
  pass
finally:
  passz%try:
  pass
except* Exception:
  passzassert vz
import syszfrom sys import vzglobal v1passzfor v in v:breakzfor v in v:continuezfor a,b in c: passzfor (a,b) in c: passzfor [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)zdef f(a, /,): passzdef f(a, /, c, d, e): passzdef f(a, /, c, *, d, e): passz'def f(a, /, c, *, d, e, **kwargs): passzdef f(a=1, /,): passzdef f(a=1, /, b=2, c=4): passz def f(a=1, /, b=2, *, c=4): passzdef 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 = intztype 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]: passzclass X[T, *Ts, **P]: passzclass X[T: int, *Ts, **P]: passz&class X[T: (int, str), *Ts, **P]: passdef f[T](): passzdef f[T, *Ts, **P](): passzdef f[T: int, *Ts, **P](): passz&def f[T: (int, str), *Ts, **P](): passz1+2)#r#za and ba + bznot vzlambda: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 < 3zf(1,2,c=3,*d,**e)
f(*[0, 1])zf(a for a in b)10z'string'a.bza[b:c]vz[1,2,3]z[]z1,2,3z(1,2,3)()za.b.c.d(a.b[1:2])ceZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!d Z"d!Z#d"Z$e%jLd#Z'd$Z(d%Z)d&Z*d'Z+d(Z,d)Z-d*Z.d+Z/d,Z0d-Z1d.Z2e3jhe%jjd/e%jLd0Z6d1Z7d2e8e9jtd3e;d4e;d5dfd6Z<d8d7Z=y)9	AST_TestsNcvt|tsyd|jvry|dk7xr|djS)NFastASTr)rtype
__module__isupper)selfnamenodes   r"_is_ast_nodezAST_Tests._is_ast_node"s8$%'u}2a!22ct|tjr|jyt|tjtj
tjfrB|j|jf}|j|||j|jf}|jD]t}t||}t|trA|}|r#|dk(r|dj|djf}|D]}|j||`|c|j||v|j|j|jy)Ndecorator_listr)rr5r6rexprstmt
excepthandlerrrassertGreaterEqualrr_assertTrueorderassertEqual__match_args__)r:ast_node
parent_posnode_posr;value	first_poschilds        r"rEzAST_Tests._assertTrueorder)s(CGG,0@0@0Hh388S5F5F GH )<)<=H##Hj9"//8+>+>?J$$		9DHd+E%&&	T%55!&q%(2E2E FI"<E))%;<"%%eZ8		9	
))8+B+BCr>ctj}|j|jdd|_|j|jd|j|j
dd|j
t5|jddd|j
t5tjddddy#1swY=xYw#1swYyxYw)N*foobar)
r5r6rFrrQ__dict__assertRaisesAttributeErrorvararg	TypeErrorr:xs  r"test_AST_objectszAST_Tests.test_AST_objects<sGGIB'2&H-r2


~
.	
HH	

y
)	GGAJ						s
C2CCC&cGdd}tj}||_||j_t	j
|j}~t
j|j|y)NceZdZy)0AST_Tests.test_AST_garbage_collection.<locals>.XNrr8__qualname__rOr>r"Xr]Kr>r`)	r5r6rYaweakrefrefr
gc_collectassertIsNone)r:r`rbrds    r"test_AST_garbage_collectionz%AST_Tests.test_AST_garbage_collectionJs\		GGIckk!##
#% r>c	ttdfttdftt
dffD]\}}}t
||D]\}}|jd|5t|d|tj}|jt|||j|dddd|jd||	5td|dddy#1swY8xYw#1swYxYw)
Nexecsingleevalparsing)actioninput?)rr	compiling)rmrnkind)
exec_testsexec_resultssingle_testssingle_results
eval_testseval_resultszipsubTestcompiler5
PyCF_ONLY_ASTrFrrE)r:rnoutputrqioast_trees       r"
test_snippetszAST_Tests.test_snippetsUs%/v$F%1>8$L%/v$F$H		1E64E6*
11\\!\<<&q#tS5F5FGH$$Xh%7;))(F;<\\AD\I1Hc4011
1		1<<11sA
C9C C C)c~ttztz}|D]$}tj|}t|dd&y)N<string>ri)rrrtrvr5parserz)r:snippets_to_validatesnippettrees    r"test_ast_validationzAST_Tests.test_ast_validationas;)L8:E+	.G99W%DD*f-	.r>cgd}|D]\}}|jd|d|5d}tj|}||jd_||jd_|j
t5t|ddddddddgd}|D]\}}|jd|d|5d}tj|}||jd_	||jd_
|j
t5t|ddddddddy#1swYxYw#1swYAxYw#1swY-xYw#1swYxYw)	N))
)i)rr))rrzCheck invalid linenos :za = 1rrrizCheck invalid col_offset )ryr5rbodyrr
rT
ValueErrorrzrr)	r:invalid_linenosrr
rrinvalid_col_offsetsrrs	         r"!test_invalid_position_informationz+AST_Tests.test_invalid_position_informationhsj
#2	6FJ 6vha
|LM
6!yy)&,		!#*4		!'&&z26D*f56
6
6	6
+>	6&J 9*Q~FVWX
6!yy)*4		!'.<		!+&&z26D*f56
6
6	6
66
6
6"66
6
6sIAD>9D2D><AEEE2D;7D>>E	EEE 	c
tjtjtjdddgddtjtjdddgddgg}t	|dd	y)
Nbuiltinsrrr;rr)namesrr	traceback)rtype_ignoresrri)r5ModuleImportaliasrzr:rs  r">test_compilation_of_ast_nodes_with_default_end_position_valueszHAST_Tests.test_compilation_of_ast_nodes_with_default_end_position_valuesslzzJJciiZaPQZ[hijJJcii[qQR[\ijk 
	j&)r>ctjdjdjj}|j|j|j|j|j|jy)Nzx[::]r)	r5rrrKslicerfupperlowerstep)r:slcs  r"
test_slicezAST_Tests.test_slices]ii %%a(..44#))$#))$#((#r>c~tjdjd}|j|jy)Nzfrom . import yr)r5rrrfmodule)r:ims  r"test_from_importzAST_Tests.test_from_imports.
YY(
)
.
.q
1"))$r>ctjd}|j|jdtjdj|jd_t|ddy)Nzfrom __future__ import divisionrz __future__ <test>ri)r5rassertIsInstancer
ImportFromstriprrz)r:mods  r"!test_non_interned_future_from_astz+AST_Tests.test_non_interned_future_from_astsRii9:chhqk3>>:+113Xv&r>ctjdjd}|jt	|j
d|j
d}|j|jd|j|j|j|jd|j|jd|j|jd|j|jdtjdjd}|j
d}|j|jd|j|j|j|jd|j|jd|j|jd|j|jdtjd	jd}|j
d}|j|jd|j|jd
|j|jd|j|jd|j|jd|j|jdtjdjd}|j
d}|j|jd
|j|jd|j|jd|j|jd|j|jd|j|jdy)Nzfrom bar import yrryzfrom bar import **zfrom bar import y as zzzimport bar as foobarfoo)
r5rrrFlenrr;rfasnamerr
rr)r:rrs   r"
test_aliaszAST_Tests.test_aliass
YY*
+
0
0
3RXX*S)%,,'q)))1-))2.--r2
YY*
+
0
0
3S)%,,'q)))1-))2.--r2
YY/
0
5
5a
8S)s+q)))1-))2.--r2
YY*
+
0
0
3U+u-q)))1-))1---r2r>c|jttjtj|jttj
tj|jttjtj|jttjtj|jttjtj|jttjtjyN)

assertTrue
issubclassr5ForrBNamerAr6
comprehensionGtr:s r"test_base_classeszAST_Tests.test_base_classess
377CHH56
388SXX67
388SWW56
388SWW56
3#4#4cgg>?
36637734r>ctd}d}dD]<}|jt|j|5t	||ddd>y#1swYIxYw)Nr5zSast\.{} is deprecated and will be removed in Python 3.14; use ast\.Constant insteadNumStrBytesNameConstantr)rassertWarnsRegexDeprecationWarningformatr)r:r5
depr_regexr;s    r"test_import_deprecatedz AST_Tests.test_import_deprecatedsh!%(
)	F	#D&&'9:;L;LT;RS
#T"
#
#	#
#
#s
AA	c2tj5tjddtddlm}m}m}m}m	}ddddD]}tt|}|j||s&|j|5|jt5|}ddddddttjs|j!t#|j$t&y#1swYxYw#1swYdxYw#1swYhxYw)Nignorerr)warningscatch_warningsfilterwarningsrr5rrrrrrr=ryassertWarnsrr6assertIsr7rr)	r:rrrrrr;itemrYs	         r"$test_field_attr_existence_deprecatedz.AST_Tests.test_field_attr_existence_deprecateds

$
$
&	D##Hb2DECC	DH	:D3%D  t,\\$'#))*<=# F##a)MM$qyy/59	:		D	D####s/*C5D
DD
5C>D
D

D	c"tjjD]n\}}|dvr|dk(r|j||s$|}t	|tj
sF|j
t|jtpy)N>rrrrrIndex)
r5rSitemsr=rr6rr7rr)r:r;rrYs    r"test_field_attr_existencez#AST_Tests.test_field_attr_existencess,,,,.
	:JD$JJw  t,Fa)MM$qyy/59
	:r>ctj}|j|jd|j	t
5|jddd|j|jtjtdd}|j|jd|j|jdy#1swYyxYw)N)posonlyargsargsrV
kwonlyargskw_defaultskwargdefaultsrrR)
r5	argumentsrFrrTrUrrfrVrangerXs  r"test_argumentszAST_Tests.test_argumentssMMO%I	J

~
.	
FF	!((#MM5A;'#1%
		s
CCctj5tjddtt	j
}dddd_|j|jdy#1swY-xYw)Nrr)rrrrr5rrrFrXs  r"#test_field_attr_writable_deprecatedz-AST_Tests.test_field_attr_writable_deprecateds^

$
$
&	##Hb2DE	A		C(		s0A11A:crtj}d|_|j|jdy)Nr)r5ConstantrrFrXs  r"test_field_attr_writablez"AST_Tests.test_field_attr_writables(LLN	C(r>c	F
tj5tjddtddlm}m}m}m}m	}dddtjd5}tjddtt	j
}|j|jd|jt5|jddd|jt5|jdddt	j
d	}|j|jd	|j|jd	|jt5|j ddd|jt5|j"dddt	j
d
}|j|j d
t	j
d	d}|j|j d|j|jd|j|jd	|j|jd	|jt$tj
ddd
|jt$tj
ddd
d|jt	j
dd
j&d
|j)t$d5t	j
dd
ddd|jt	j
d	jd	|jt	j
djd|jt	j
djd|jt	jdj*d|jt	jdj*d|j-t	jdjd|j-t	jdjd|j-t	jdjdddd|jDcgc]}t/|j0c}gdy#1swYxYw#1swYxYw#1swYxYw#1swYxYw#1swYdxYw#1swYxYw#1swYxYwcc}w)NrrrrTrecordalwaysrKrqrPrRrrrrz(Num got multiple values for argument 'n'n@@4242F)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 insteadrrrrrrrrrrrrrrRast.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 insteadrr)rrrrr5rrrrrrFrrTrUrKrrrQrWrassertRaisesRegexsrrmessage)	r:rrrrrwlogrYws	         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
SWWQE266>''	3]^
 Q
 
SWWR[]]B/SWWT]__d3SWWU^--u5SWWT]__d3SYYu-//7MM#**4066=MM#**5177?MM#**4066=].	>`	
$7Q#aii.7:
	i	D	D







$
 
 I.	>.	>`8s*SA!T>
ST(
S5A*T
S+,T	
S8ET.TFTTSS	TS(	#T+S5	0T8T	=TT	
TTc tj}|j|jd|j	t
5|jdddtjd}|j|jd|j	t
5|jddd|j	t
5|jdddtjd}|j|jdtjdd}|j|jd|j|jd|j|jd|j	ttjddd|j	ttjdddd|jtjddjd|jtd	5tjdd
ddd|jtjdjd|jtjdjd|jtjdjd|jtjd
jd
|jtjdjd|jtjdjd|jtjdjd|jtjdjd|jtjdjdy#1swYxYw#1swY=xYw#1swY xYw#1swYxYw)NrrPrRrrrrrz1Constant got multiple values for argument 'value'rKrrrrTF.)
r5rrFrrTrUrKrrQrWrrrrXs  r"test_classattrszAST_Tests.test_classattrsXsLLN$56


~
.	
GG	
LL"%


~
.	
HH	

~
.	
HH	
LL"1%LLA&1%$56"%)S\\1dA>)S\\1dAaH	
aU377?

#
#I/b
c	%LL!$	%	
b)//4d+1148e,22E:d+1148e,22E:

cll4(..5

cll5)//7

cll4(..5

cll3'--s3K						"	%	%s0
O!
O)
O6PO&)O36PP
ctj5tjddtddlm}m}m}m}m	}dddtjd5}tjddt|jtt	j
dtj|jtt	j
d	tj|jtt	j
d
tj|jtt	jdtj|jtt	jdtj|jtt	jdtj|jtt	jd
tj|jtt	jdtj|jtt	jtjddd|jDcgc]}t|jc}gdy#1swYxYw#1swYLxYwcc}w)NrrrrTrrrPrrrrF)	rrrrrrrrzWast.Ellipsis is deprecated and will be removed in Python 3.14; use ast.Constant instead)rrrrr5rrrrrrr7rrFrr)r:rrrrrr	r
s        r"
test_realtypezAST_Tests.test_realtypes

$
$
&	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//56EMM$s//67FMM$s//56EMM$s||~.=
	>	
$7Q#aii.7
:

	!	D	D
	>
	>8s*KH7K+K+KK(ctddlm}tj5tjddt
ddlm}m}m}m	}m
}dddd}t|jt
|jd}t|jt
|jd}	t|jt
|jd	}
t|jt
|jd
}t|jt
|jd}dD]W}
|j|

5|5|
}ddd|5|jddddddY|	5d}ddd|	5|jddd|
5d}ddd|
5|jddddD]W}
|j|

5|5|
}ddd|5|jddddddY|5}ddd|5|jddddD]E}
|j|

5|5|j||
ddddddG|	5|j|dddd|
5|j|dddddD]E}
|j|

5|5|j||
ddddddG|5|j|dddd|	5d}ddd||j |
|j ||5|d}ddd|	|j ||j |||j ||5|d}ddd|5|j!||ddd|5|d}ddd|5|j!||ddddD]E}
|j|

5|5|j!||
|ddddddG|	|j |d||
|j |d|||j |d|||j |d|||j |||	|j |||
|j ||||j ||||j ||Gddt"}|	5|j||d|ddd|5|j!||d|dddy#1swYxYw#1swYxYw#1swYxYw#1swYCxYw#1swYxYw#1swYxYw#1swYxYw#1swYxYw#1swYxYw#1swYqxYw#1swYxYw#1swYjxYw#1swYUxYw#1swY"xYw#1swYmxYw#1swY
xYw#1swYxYw#1swYxYw#1swYxYw#1swYxYw#1swYxYw#1swYfxYw#1swYxYw#1swY
xYw#1swYxYw#1swYxYw#1swYxYw#1swYxYw#1swYxYw#1swYyxYw)Nr)rrrrzQast.{} is deprecated and will be removed in Python 3.14; use ast.Constant insteadrrrrr)rPg@y@)argrrTFN.rPTF)rTFceZdZy)$AST_Tests.test_isinstance.<locals>.SNr^rOr>r"Srsr>r)r5rrrrrrrrrrrrrryrassertNotIsInstancer)r:rrrrrrcls_depr_msgassertNumDeprecatedassertStrDeprecatedassertBytesDeprecatedassertNameConstantDeprecatedassertEllipsisDeprecatedrrrbrrs                   r"test_isinstancezAST_Tests.test_isinstancesi 

$
$
&	D##Hb2DECC	D

'	
&!!#5|7J7J57Q
&!!#5|7J7J57Q
!(!!#5|7J7J77S!
(/!!/(
$
$+!!#5|7J7J:7V$
 !	2C#&
2(*!CA!(*2))!S12
2
2	2!
"	D	A	
 
"	*!!!S)	*#
$	eA	
"
$	,!!!U+	,%	;C#&
;13*$S)A*13;))!\:;
;
;	;&
'	
A	
%
'	/!!!X.	/!	>C#&
>(*>))(3-=>
>
>	>
!
"	7!!(4.#6	7#
$	:!!(5/59	:%	GC#&
G13G))(3-FG
G
G	G
&
'	;!!(3-:	;!
"	D	A	D44a=d665A
 
"	BA	D44a=$T%=%=q,O !9!91hG
)
+	#T"A	#
 
"	-$$Q,	-*
+	$U#A	$
 
"	-$$Q,	-%	AC#&
A(*A,,Xc]C@A
A
A	A
	D44hrlCHd66N$T%=%=x|\Z !9!98B<RD44hj#FD44hj#Fd66
EJ$T%=%=xz<X !9!98:xP
 
"	:!!(1T7"3S9	:
 
"	=$$Xag%6<	=	=e	D	D:!!22
2
2			*	*			,	,
**;;
;
;			/	/
>>
>
>	7	7	:	:
GG
G
G	;	;		
			#	#	-	-	$	$	-	-
AA
A
A	:	:	=	=s*X58Y	Y	YY+Y	Y)Y6>	ZZZ7	ZZ7(Z*;Z7[+[[+%[>[+[8?\7\?\\1\,	\9	]-	]] '	]-?]:1^9^^^!
^.5X?YYYYY&	)Y36ZZ
ZZ'"Z7*Z4/Z77[	[[[(#[++[5	8\\\\\)	,\69]]] ]*-]7:^^^^	!^+.^7ctj5tjddtddlm}dddtjd5}tjddtGdd	tj
}Gd
dtj
}|d}|j
|jd|j
|jd
|jt|||j|||j|tj
|j|||jt	j
d||d}|j
|jd|jt||ddd|j
Dcgc]}t|jc}gdy#1swYxYw#1swYLxYwcc}w)NrrrrTrrceZdZfdZxZS)8AST_Tests.test_constant_subclasses_deprecated.<locals>.Nc2t||i|d|_yNspamsuper__init__rr:rkwargsrs   r"r)zAAST_Tests.test_constant_subclasses_deprecated.<locals>.N.__init__ sG$d5f5#DFr>rr8r_r)
__classcell__rs@r"Nr#s
$$r>r/ceZdZy)9AST_Tests.test_constant_subclasses_deprecated.<locals>.N2Nr^rOr>r"N2r1#r>r2rPr&r)rrrrrr)rrrrr5rrFrrrr7rrrr)r:rr	r/r2rr
s       r"#test_constant_subclasses_deprecatedz-AST_Tests.test_constant_subclasses_deprecateds

$
$
&	 ##Hb2DE	 
$
$D
1	&T##Hb2DE
$CGG
$
SWW
"AQSS"%QSS&)MM$q'1%!!!Q'!!!SWW-$$Q+$$SWWR[!4BAQSS"%MM$q'1%'	&*	
$7Q#aii.7:
	3	 	 	&	&*8s"G%EG2>G>%G/2G;cGddtj}Gddtj}|d}|j|jd|j|jd|jt|||j
t|||j
t|tj|jt|||jttjd||d}|j|jd|jt||y)NceZdZfdZxZS)-AST_Tests.test_constant_subclasses.<locals>.Nc2t||i|d|_yr%r'r*s   r"r)z6AST_Tests.test_constant_subclasses.<locals>.N.__init__=s $1&1r>r,r.s@r"r/r7<s

 
 r>r/ceZdZy).AST_Tests.test_constant_subclasses.<locals>.N2Nr^rOr>r"r2r:@rar>r2rPr&r
)	r5rrFrKrr7rrassertFalse)r:r/r2rs    r"test_constant_subclassesz"AST_Tests.test_constant_subclasses;s	 	 		
bE"%f%a!$
1a()
1cll34Ar*+CLL$4a89
BK"%a!$r>ctjdg}tj|g}|j|j|y)NrP)r5rrrFr)r:rrYs   r"test_modulezAST_Tests.test_moduleOs7R !JJtR &r>c	tj}|j|jdd|_|j|jdtj
d}tj
d}tj}tj|||}|j|j||j|j||j|j|tjddd}|j|jd|j|jd|j|jdtjdddd}|j|jd|j|jd|j|jd|j|jd|jttjdddd|jttjdddddtjdddd	}|j|jd|j|jd|j|jd|j|jdtjdddd
}|j|jd
y)N)leftoprightrrrRrr)r@rArBrrP)	foobarbaz)
r5BinOprFrrErAddr@rArBrrTrW)r:rYn1n3addops     r"test_nodeclasseszAST_Tests.test_nodeclassesTs3IIK$;<a(
\\!_
\\!_	IIb%$$u%"%IIaA#q!!$IIaAa(#q!!$1%	
)SYY1a;)SYY1a1E
II1!A6#q!!$1%
IIaA,b)r>cdtj}|j|jdy)NrO)r5SubrFrrXs  r"test_no_fieldszAST_Tests.test_no_fieldss!GGIB'r>cddl}t|jdzD]Y}dtDD]G}|j	|j||}|j
t|t|I[y)Nrrc38K|]}t|dddyw)roriiN)rz).0r}s  r"	<genexpr>z*AST_Tests.test_pickling.<locals>.<genexpr>sK136Ks)picklerHIGHEST_PROTOCOLrrloadsdumpsrFr)r:rSprotocolr5ast2s     r"
test_picklingzAST_Tests.test_picklingsmf559:	@HK
K
@||FLLh$?@  $#?
@	@r>c	Rtdd}tjtjtjdi|fi|gg}|jt5}t|ddddd|jdtjy#1swY/xYw)NrRrrrrrizbut got <ast.exprrO)dictr5rExprrArTrWrzassertInr	exception)r:posmcms    r"test_invalid_sumzAST_Tests.test_invalid_sums!*JJC8C892>


y
)	)RAx(	)

)3r||+<=	)	)s!BB&c	tjtjtjdtjgg}tj
||j
t5}t|ddddd|jdtjy#1swY/xYw)NrPrrizidentifier must be of type str)r5rr]rLoadfix_missing_locationsrTrWrzr^rr_)r:rarbs   r"test_invalid_identifierz!AST_Tests.test_invalid_identifiersJJ"chhj!9:;R@!!!$


y
)	)RAx(	)

6BLL8IJ	)	)s;B77Cc:tddtftddtffD]l}tjtj|}tj
||j
td5t|dddddny#1swYyxYw)NrrRrzinvalid type in Constant: typerrk)	r	frozensetr5
ExpressionrrfrrWrz)r:invalid_constantrs   r"test_invalid_constantzAST_Tests.test_invalid_constants #aC[)Q3K2H H	-CLL1A$BCA%%a('';
-8V,
-
-	-
-
-s8BB	c<tjd}d|jdjdj_|j	t
5}t
|ddddd|jdtjy#1swY/xYw)Nzdef f():
 yield from g()rrrizfield 'value' is required)
r5rrrKrTrrzr^rr_)r:empty_yield_fromrbs   r"test_empty_yield_fromzAST_Tests.test_empty_yield_froms99%@A7;a %%a(..4


z
*	8b$h7	8

13r||3DE	8	8sBBcddl}d}tj|d|5|jtt
jddddy#1swYyxYw)NrcyrrOrs r"
bad_normalizez0AST_Tests.test_issue31592.<locals>.bad_normalizesr>	normalizeuϕ)unicodedatar	swap_attrrTrWr5r)r:rvrts   r"test_issue31592zAST_Tests.test_issue31592sI		


{K
G	>iH=	>	>	>s&AActjd}|jdj}|j}|j}|j|jd|j|jd|j|jd|j|jd|j|jd|j|jdtjd}|jdj}|j}|j}|j|jd|j|jd|j|jd|j|jd	|j|jd|j|jd|j|jd	|j|jd	|j|jd|j|jd|j|jd|j|jdy)
Nz4+5+6+7rrrCrz
4+5-\
 6-7rrDrR)
r5rrrKr@rFrrrr
)r:rparent_binopchild_binopgrandchild_binops     r" test_issue18374_binop_col_offsetz*AST_Tests.test_issue18374_binop_col_offsetsyy#yy|))"''&++00!444a8//333Q7)44a8)88!<yy(yy|))"''&++00!4,,a044a800!4//3++Q/33Q7//3)44a8)00!4)88!<)44a8r>ctjd}|jdjdj}|j|jdy)Nr'rrD)r5rrr@rKrFr)r:rattr_bs   r"*test_issue39579_dotted_name_end_col_offsetz4AST_Tests.test_issue39579_dotted_name_end_col_offsetsEyy011,,Q/55..2r>c|jtjjd|jtjjd|jtj
jd|jtjjdtjjDcgc]}d|j}}dtjjdj|d<|jtjjjd|ycc}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     | zexpr = r
)rFr5withitem__doc__rrcmpoprA__subclasses__assertCountEqualsplit)r:r<expressionss   r"test_ast_asdl_signaturez!AST_Tests.test_ast_asdl_signatures--/ab%0))+RS**,pq<?HH<S<S<UVD/VV"388#:#:#<Q#?#G#G"HIAchh..44T:KHWs	Ectjddtjdd|jt5tjddddd|jt5tjdddddtjddtjdd|jt5tjddddd|jt5tjdddddy#1swYxYw#1swYxYw#1swYWxYw#1swYyxYw)Nzdef foo(x, /): ...rrfeature_versionzdef bar(x=1, /): ...rrzlambda x, /: ...zlambda x=1, /: ...r5rrTSyntaxErrorrs r"$test_positional_only_feature_versionz.AST_Tests.test_positional_only_feature_versions		&?		(&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	Ds0D29D>E
E2D;>E
EEctjddtjdd|jt5tjdddddtjddy#1swY!xYw)Nz#with (CtxManager() as example): ...rrr)r	rz!with CtxManager() as example: ...rrs r"'test_parenthesized_with_feature_versionz1AST_Tests.test_parenthesized_with_feature_versionse		7Q		7P


{
+	UII;VT	U		5vN	U	UsA<<Bctjdd|jt5tjdddddy#1swYyxYw)Nz(x := 0)rrrrrs r"*test_assignment_expression_feature_versionz4AST_Tests.test_assignment_expression_feature_versionsA		*f5


{
+	:IIj&9	:	:	:sAActd}tj||jt5tj|ddddy#1swYyxYw)Nz9
        try: ...
        except* Exception: ...
        rr)rr5rrTr)r:codes  r"%test_exception_groups_feature_versionz/AST_Tests.test_exception_groups_feature_versionsO
			$


{
+	5IIdG4	5	5	5sAA cgd}|D]f}|j|5tj||jt5tj|dddddddhy#1swYxYw#1swYxYw)N)r(r)r*)rr)ryr5rrTr)r:samplessamples   r" test_type_params_feature_versionz*AST_Tests.test_type_params_feature_versions}

	?Ff%
?		&!&&{3?IIfg>?
?
?	???
?
?s#+A=A1A=1A:6A==B	c|jt5tjddddd|jt5tjdddddy#1swY?xYw#1swYyxYw)Nr&)rRrr)rDr)rTrr5rrs r""test_invalid_major_feature_versionz,AST_Tests.test_invalid_major_feature_versionsi


z
*	6IIff5	6


z
*	6IIff5	6	6	6	6	6	6sA,A8,A58Bc*dD]}tjtj|tj}tj||jtd|d5t|dddddy#1swYxYw)N)TrueFalser#z"identifier field can't represent 'z
' constantrrk)r5rkrrerfrrrz)r:constantrAs   r"test_constant_as_namezAST_Tests.test_constant_as_names/	0H>>#((8SXXZ"@AD%%d+''
6XYaXbbl4mn
0h/
0
0	0
0
0s0B		B	c~Gddtj}tj|tjy)Nc~eZdZdZej
Zej
Zej
Zej
Z	ej
Z
ej
Zej
Zej
Z
ej
ZeZej
Zej
Zej
Zej
Zej
Zej
Zej
Zej
Zej
ZdZy)3AST_Tests.test_precedence_enum.<locals>._Precedencez5Precedence table that originated from python grammar.cN	|j|dzS#t$r|cYSwxYw)Nr)rrrs r"nextz8AST_Tests.test_precedence_enum.<locals>._Precedence.next8s. >>$(33! K s$$N)rr8r_renumauto
NAMED_EXPRTUPLEYIELDTESTORANDNOTCMPEXPRBORBXORBANDSHIFTARITHTERMFACTORPOWERAWAITATOMrrOr>r"_Precedencer"sG"JDIIKEDIIKE499;DB$))+C$))+C$))+C499;DC499;D499;DDIIKEDIIKE499;DTYY[FDIIKEDIIKE499;D
 r>r)rIntEnum_test_simple_enumr5r)r:rs  r"test_precedence_enumzAST_Tests.test_precedence_enum!s(	 $,,	 6	
{COO<r>zexhausts limited stack on WASIctjddfd}|dd|dd|dd|ddy)	Niic\||	zz}tj|fD]o}|||zz}dj|||}jt|5tj5tj|ddddddqy#1swYxYw#1swYxYw)NzCompiling ({!r} + {!r} * {})msg)r5rrrTRecursionErrorrinfinite_recursion)
prefixrepeated	expect_okdepthbrokendetailscrash_depth
fail_depthr:
success_depths
      r"check_limitz7AST_Tests.test_ast_recursion_limit.<locals>.check_limitFsM!99IIIi $k2
*(U"228??"He5&&~7&C* 335*		&)***	
*
****s$B"-BB"BB""B+	rbr1z.bz[0]z*a)rEXCEEDS_RECURSION_LIMIT)r:rrrrs` @@@r"test_ast_recursion_limitz"AST_Tests.test_ast_recursion_limit?sI44

		*	CCCCr>c|jtd5tjddddy#1swYyxYw)Nz,source code string cannot contain null bytesrzab)rTrr5rrs r"test_null_byteszAST_Tests.test_null_bytesVs<


{>@	IIf			s	7Ar<attrsourcereturnc|j|jd|5tj|}d}tj|D]!}t||st
||d|dz
}#|j|dtjd|d|j}|jtd|d5t|dd	ddddddy#1swYxYw#1swYyxYw)
N.rrzfield 'z' is required for ^$rri)
ryrr5rwalkrsetattrrFreescaperrrz)r:r<rrrfoundrMrs        r"assert_none_checkzAST_Tests.assert_none_check[s
\\T]]O1TF3
4
	099V$DE$
eT*E4.QJE

UA&		GD6);DMM?KLA''
as!H=
0h/
0
	0
	0
0
0
	0
	0s*<C.A%C.C"C."C+	'C..C7c	@tjddftjddftjddftjddftjd	d
ftj
ddftjd
dfg}|D]\}}}|j|||y)Nr;zimport spam as SPAMrzdef spam(SPAM): spamtargetz[spam for SPAM in spam]iterz[spam for spam in SPAM]rKzspam(**SPAM)patternzmatch spam:
 case SPAM: spamcontext_exprzwith SPAM: spam)r5rrrkeyword
match_caserr)r:testsr<rrs     r"test_none_checkszAST_Tests.test_none_checkshs
YY 56
WWe34


*CD


(AB
[['>2
^^Y(GH
\\>+<=
#(	7D$""4v6	7r>)rN)>rr8r_maxDiffr=rErZrgrrrrrrrrrrrrrrrrrrrr4r<r>rKrNrYrcrgrmrprcpython_onlyrxr}rrrrrrrrrrunittestskipIfis_wasirrr7r5r6rrrrOr>r"r3r3suG3D&	!
1.64*$%'$3L5#::&))M^)4V:v=p!F%('
**X(
@>K-F
>>9>3
I
DO:
5
?60=<X__W__&FGH*
0d377m0300PT07r>r3ceZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZy)ASTHelpers_TestNctjd}tdddtj}|j	tj
|tj
|y)Nz
foo(1 + 1)z	<unknown>ri)r5rrzr{rFdump)r:rbrs   r"
test_parsezASTHelpers_Test.test_parsexsFIIl#L+vs7H7HI!chhqk2r>c	ddzy#t$rh|jt5}tjddddn#1swYnxYw|jjjYywxYw)Nrrz'\U')	ExceptionrTrr5literal_evalassertIsNotNoner___context__r:rs  r"test_parse_in_errorz#ASTHelpers_Test.test_parse_in_error}sh	:
aC	:"";/
*1  )
*
*
*  !8!89	:s%A9A	A9A	
,A98A9ctjd}|jtj|d|jtj|dd|jtj|ddy)	Nspam(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=[])Fannotate_fieldszbModule([Expr(Call(Name('spam', Load()), [Name('eggs', Load()), Constant('and cheese')], []))], [])Tinclude_attributesaModule(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=[])r5rrFrr:r<s  r"	test_dumpzASTHelpers_Test.test_dumpssyy34$
/	

	
$>
2	
	
$4@
Z	
r>ctjd}|jtj|dd|jtj|ddd|jtj|d	d
dy)NrrindentzModule(
   body=[
      Expr(
         value=Call(
            func=Name(id='spam', ctx=Load()),
            args=[
               Name(id='eggs', ctx=Load()),
               Constant(value='and cheese')],
            keywords=[]))],
   type_ignores=[])F	)rr
zModule(
	[
		Expr(
			Call(
				Name('spam', Load()),
				[
					Name('eggs', Load()),
					Constant('and cheese')],
				[]))],
	[])T)rr
aModule(
   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=[])rr	s  r"test_dump_indentz ASTHelpers_Test.test_dump_indents{yy34$q1
4
		
$dK
N	
	
	
$4J#M#	r>ctjdd}|jtj|d|jtj|ddtjtjdtj
	dd
}|jtj|d|jtj|d
d|jtj|dd|jtj|dddtjtjdtj
	}|jtj|d|jtj|d
dy)NrrDr[zRaise()TrzRaise(lineno=3, col_offset=4)r)idctx)excrrz#Raise(exc=Name(id='e', ctx=Load()))FrzRaise(Name('e', Load()))z;Raise(exc=Name(id='e', ctx=Load()), lineno=3, col_offset=4))rrz0Raise(Name('e', Load()), lineno=3, col_offset=4))causez%Raise(cause=Name(id='e', ctx=Load()))zRaise(cause=Name('e', Load())))r5RaiserFrrrer	s  r"test_dump_incompletez$ASTHelpers_Test.test_dump_incompletesMyya0$	
	
$4@+	
yySXX#((*=aTUV$1	
	
$>&	
	
$4@I	
	
$RVW>	
yysxx3CHHJ?@$3	
	
$>,	
r>c|tjdd}tjtjd|jj
|j_|j
tj|ddtjdddd	}tj|tjdd
}|j|j|j|j|j
|jd|j
|jdy)N1 + 1rkmoderRTrzExpression(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rr
r)rr)r5r
copy_locationrrrBrFrCallrfr
rrr)r:srcnews   r"test_copy_locationz"ASTHelpers_Test.test_copy_locationsiif-**3<<?CHHNNK#$?
=	
hh!A!ANSXXd%KL#..)#,,-Q'+r>ctjd}|jjtjtj
tjdtjtjdgg|j|tj|d|_|jtj|ddy)Nz
write("spam")r&eggsTraModule(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=[]))
r5rrrr]rrrerrFrfrrr:rs  r"test_fix_missing_locationsz*ASTHelpers_Test.test_fix_missing_locationssii(#((6388:*F+.<<+?*@""FG	Hc77<=#$?

	
r>ctjdd}|jtj|d||jtj|ddtjdd}|jtj|j
d|j
|jtj|ddtjtjd	tjggd
}|jtj|jd|jtj|jy)
NrrkrrrTrzExpression(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)funcrkeywordsrrR)r5rrFincrement_linenorrrrrerrfr
r"s  r"test_increment_linenoz%ASTHelpers_Test.test_increment_linenosiif---cQ7=#$?
=	
iif---chh!<chhG#$?
=	
hh&#((*-BA
	
--c2991=#..s3>>?r>chtjtdd}tj|d|j	|j
djd|j	|j
djd	|j	|j
djd
y)Nzb        a = 1
        b = 2 # type: ignore
        c = 3
        d = 4 # type: ignore@tag
        T)
type_commentsrCrrrrrz@tag)r5rrr(rFrrtagr"s  r"test_increment_lineno_on_modulez/ASTHelpers_Test.test_increment_lineno_on_module0sii 
!"	SA&))!,33Q7))!,33Q7))!,00&9r>ctjdd}ttj|j}|j|j
djd|j|ggdy)Nfoo()rkrr&r)r'r)r5rr\iter_fieldsrrFpopr)r:r<ds   r"test_iter_fieldsz ASTHelpers_Test.test_iter_fields<s\yyv.+,v))51R89r>c	,tjdd}|jtt	tj
|jdtj
|j}|jt|jd|jt|jd|jt|jd|jtjt|dy)	Nzspam(23, 42, eggs='leek')rkrrDr&rPz1keyword(arg='eggs', value=Constant(value='leek')))r5rrFrriter_child_nodesrrrrKr)r:r<iterators   r"test_iter_child_nodesz%ASTHelpers_Test.test_iter_child_nodesBsyy46BT#"6"6tyy"ABCQG''		2h**F3h--r2h--r2$x.1?	
r>c"tjd}|jtj|dtjd}|jtj|jddtjd}|jtj|jddtjd}|jtj|jddy)Nz"""line one
  line two"""zline one
line twoz&class foo:
  """line one
  line two"""rz&def foo():
  """line one
  line two"""z#async def foo():
  """spam
  ham"""zspam
ham)r5rrF
get_docstringrr	s  r"test_get_docstringz"ASTHelpers_Test.test_get_docstringMsyy56**40-	/yyCD**499Q<8-	/yyCD**499Q<8-	/yy@A**499Q<8+Fr>c*|jtjtjdtjd}|jtj|tjd}|jtj|tjd}|jtj|jdtjd}|jtj|jdtjd}|jtj|jdtjd}|jtj|jdtjd}|jtj|jdtjd	}|jtj|jdtjd
}|jtj|jdy)Nrzx = "not docstring"zdef foo():
  passzclass foo:
  passrz class foo:
  x = "not docstring"z class foo:
  def bar(self): passz def foo():
  x = "not docstring"zasync def foo():
  passz&async def foo():
  x = "not docstring")rfr5r:rrr	s  r"test_get_docstring_nonez'ASTHelpers_Test.test_get_docstring_none]s#++CIIbM:;yy./#++D12yy-.#++D12yy-.#++DIIaL9:yy<=#++DIIaL9:yy<=#++DIIaL9:yy-.#++DIIaL9:yy<=#++DIIaL9:yy34#++DIIaL9:yyBC#++DIIaL9:r>c2tjd}|j|jdjd|j|jdj
d|j|jdjdjd|j|jdjdj
d|j|jdjdjdjd|j|jdjdjdj
d|j|jdjdjd|j|jdjdj
d|j|jdjd|j|jdj
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"""

rrrRrCrDrr
)r5rrFrrrr	s  r":test_multi_line_docstring_col_offset_and_lineno_issue16806zJASTHelpers_Test.test_multi_line_docstring_col_offset_and_lineno_issue16806usyy
+
	
100!41,,a01**1-88!<1**1-44a81**1-2215@@!D1**1-2215<<a@1**1-88!<1**1-44b9100!41,,b1r>ctjd}|jdjd}|j	|j
d|j	|jdy)Nz if a:
    pass
elif b:
    pass
rrr5rrorelserFrrr:r<	elif_stmts   r"test_elif_stmt_start_positionz-ASTHelpers_Test.test_elif_stmt_start_positionsUyy?@IIaL''*	))1---q1r>ctjd}|jdjd}|j	|j
d|j	|jdy)Nz/if a:
    pass
elif b:
    pass
else:
    pass
rrrBrDs   r"'test_elif_stmt_start_position_with_elsez7ASTHelpers_Test.test_elif_stmt_start_position_with_elsesUyyPQIIaL''*	))1---q1r>ctjd}|jdjjd}|j|jd|j|jdy)Nr-rrr)r5rrrKrrFr
r)r:r<starred_exprs   r"*test_starred_expr_end_position_within_callz:ASTHelpers_Test.test_starred_expr_end_position_within_callsZyy&yy|))..q100!444a8r>c|jtjdgd|jtjdddi|jtjdd|jtjdhd	|jtjd
d|jtjdt|j	t
tjd
|jtjdd|jtjdd|jtjdd|jtjdd|jtjdd|jtjdd|jt
tjdd|j	t
tjd|j	t
tjd|j	t
tjdy)Nz	[1, 2, 3]rrRrz{"foo": 42}rrPz(True, False, None)rz	{1, 2, 3}>rrRrzb"hi"shizset()r/6z+6z-6iz3.25g
@z+3.25z-3.25g
z-0.0z++6z+Truez2+3)rFr5rsetrTrreprrs r"test_literal_evalz!ASTHelpers_Test.test_literal_evals))+6	B))-85"+F))*?@BUV))+6	B))'2E:))'2CE:*c&6&6@))#.2))$/3))$/4))&148))'2D9))'2E:c..v67@*c&6&6>*c&6&6@*c&6&6>r>ctjd5tjd|j	t
5}tjdddd|j
dtj|j
dt|jdddy#1swY\xYw#1swYyxYw)Ni333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333zExceeds the limit z Consider hexadecimal )	radjust_int_max_str_digitsr5rrTrr^rr_)r:err_ctxs  r"test_literal_eval_str_int_limitz/ASTHelpers_Test.test_literal_eval_str_int_limits

.
.t
4	LX&"";/
+7  *
+MM.G4E4E0FGMM2C8I8I4JK	L	L
+
+	L	Ls$+B>B2AB>2B;	7B>>Cc8|jtjdd|jtjdd|jtjdd|jtjdd|jtjd	d
|jtjdd|jtjd
d|jtjdd|jtjdd|jtjdd|jtjdd|jtjdd|jtjdd
|jttjd|jttjd|jttjd|jttjd|jttjdy)N6jy@z-6jyz6.75jy@z-6.75jyz3+6jy@@z-3+6jy@z3-6jy@z-3-6jyz
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+3jz3+-6jz3+(0+6j)z-(3+6j))rFr5rrTrrs r"test_literal_eval_complexz)ASTHelpers_Test.test_literal_eval_complexs))$/4))%0#6))'2E:))(3V<))&148))'2E:))&148))'2E:)),7D))-8+F)),7D))-8+F))(3T:*c&6&6@*c&6&6A*c&6&6@*c&6&6
C*c&6&6	Br>ctjtjdtjdgtjdg}|jttj
|tjtjdgtjdtjdg}|jttj
|y)NrrRr)keysvalues)r5DictrrTrr)r:	malformeds  r"&test_literal_eval_malformed_dict_nodesz6ASTHelpers_Test.test_literal_eval_malformed_dict_nodessHH3<<?CLLO"Dcll[\oM^_	*c&6&6	BHH3<<?"3S\\!_cll[\o<^_	*c&6&6	Br>c,|jtjdd|jtjdd|jtjdd|jttjdy)Nz    -1rz		-1z 	 -1z
 -1)rFr5rrTIndentationErrorrs r"test_literal_eval_trailing_wsz-ASTHelpers_Test.test_literal_eval_trailing_wssl))(3R8))(3R8))(3R8*C,<,<gFr>c	d}|jt|5tjddddtjtj
tjtj
tjd}|jt|ddd}|jt|5tj|dddy#1swYxYw#1swYyxYw)Nz#malformed node or string on line 3:z{'a': 1,
'b':2,
'c':++3,
'd':4}rOrzmalformed node or string:)	rrr5rUnaryOpUAddrrfr)r:rr<s   r""test_literal_eval_malformed_linenoz2ASTHelpers_Test.test_literal_eval_malformed_linenos4

#
#J
4	CAB	C{{HHJCHHJQ@B'$$78*

#
#J
4	#T"	#	#	C	C	#	#sC+C7+C47Dc|jtd5tjddddy#1swYyxYw)Nzunexpected indentz4
                \
                (\
            \ )rrr5rrs r"test_literal_eval_syntax_errorsz/ASTHelpers_Test.test_literal_eval_syntax_errorss;

#
#K1D
E	
			s6?cHtjdtjdgdddg}tj|g}|j	t
5}t
|ddddd|jdtjy#1swY/xYw)Ntimesleepr;rrlevelrrr%rizinvalid integer value: None)
r5rrrrTrrzr^rr_)r:rrrbs    r"test_bad_integerz ASTHelpers_Test.test_bad_integersf&)iiW&=%>%)&*t=>jjr"


z
*	)bC(	)

3S5FG	)	)sBB!ctjdtjdddgdddg}tj|g}t	|dd}i}t|||j
d|y)Nrlrmrrror%ri)r5rrrrzrir^)r:rrrnss     r"test_level_as_nonez"ASTHelpers_Test.test_level_as_nonesuf&)iiW78Q'H&I%)&'A	78
jjr"sFF+
T2

gr"r>cLtjtjdd}||_|j	t
5t
j5ttj|ddddddddy#1swYxYw#1swYyxYwNr)rArrrrk
r5rfNotoperandrTrrrrzrkrs  r"test_recursion_directz%ASTHelpers_Test.test_recursion_directsKK3779Q1=	


~
.	=++-
=q)8V<
=	=	=
=
=	=	=s$B!B=BB	BB#ctjtjdd}tjtjdd}||_||_|j	t
5t
j5ttj|ddddddddy#1swYxYw#1swYyxYwrvrw)r:rr!s   r"test_recursion_indirectz'ASTHelpers_Test.test_recursion_indirectsKK3779Q1=KK3779Q1=		


~
.	=++-
=q)8V<
=	=	=
=
=	=	=s$8C
!B?.C?C	CC) rr8r_rrrr
rrrr#r)r-r3r8r;r=r@rFrHrKrRrXr[rardrhrjrqrtrzr|rOr>r"rrusG3
:
*;z
:, 
(@0
::	
G ;02&229?&LC*CG
#	H
#==r>rc
eZdZdGeddZdHeddZdHdZdZdZdZ	d	Z
d
ZdZdZ
d
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ 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/Z0d0Z1d1Z2e3jhd2d3Z5e6jnd4Z8e6jre8Z:e6jnd5Z;e6jre;Z<e6jnd6Z=e6j|d6Z?e6jd7e6jZBe6jre6je6je6jd5e6jd8e6jd9e6je6jre6je6je6jd5e6jd8e6jd9e6je6jre6jnd:e6jre6jnd6e6jre6jnd;e6j|d<e6je6j|d<ge6je6je6j|d<gge6je8e=ge<ge6je=e8ge<e:gd=>e6je=e6je6jd?e6je6jge<e:gd@>e6je6je6je;d8e6jd9e6jgggAe6jeBgd=ge:gAe6jeBgge:gAe6jeBe6j|d<gggAe6jeBe6jgggAe6jeBgge6jgAe6je=gd=ge:gAe6je6jd=ge6jdBCe6jge6je:ge6je:e<e6j|dDge6jdECe6jd5Ce6je6jdEge6jggdE>gZLdFZMy)IASTValidatorTestsNrcdx|_|_tj||t	|d|y|j|5}t	|d|ddd|j
|tjy#1swY/xYw)Nrr)	rrr5rfrzrTr^rr_)r:rrrrrbs      r"rzASTValidatorTests.modsw&''
S^!!#&;C4(""3'
-2Xt,
-MM#s2<<01
-
-sBB
ctjtj|gg}|j|||y)Nr)r5rr]r)r:r<rrrs     r"rAzASTValidatorTests.exprs/jj#((4.)2.cs#r>cVtj|gg}|j||yr)r5rr)r:rBrrs    r"rBzASTValidatorTests.stmt!s"jj$$cr>c	dtjtjtjdtjg}|j|ddtjtjdtj}|j|ddy)NrYmust have Load contextrjrk)r5Interactiver]rStorerrk)r:ras  r"r>zASTValidatorTests.test_module%snOOSXXchhsCIIK&@ABC,h7NN388C56,f5r>c			dfd	}tjdtjdtjg}|||d|||d|||d||tjdgd	||tjd
gdtjdtjdtj
g}|||tjdtjg
dtjdtjdtj
tjdtjdtj
g}|||dtjdtjgdy)Nc	r|g}|g}|g}|g}|g}tj|||||||}|Sr)r5r)rrrVrrrrfacs       r"rz5ASTValidatorTests._check_arguments.<locals>.arguments,sb|" !
" =={FJ!,eX?Dt9r>rYrsr)r)rr)rz"more positional defaults than argsrD)rz3length of kwonlyargs is not the same as kw_defaults)rrrbrr)rr)NNNNNNN)r5rrrrre)r:rcheckrrs `   r"_check_argumentsz"ASTValidatorTests._check_arguments+sa:>-115	 SXXc399;789
iT"$<=
iD)+CD
i4(*BC
i#,,q/!23;	=
iS\\!_$56L	NSXXc388:678
iTSXXc399;-G,HI/	1SXXc388:67SXXc388:679
i4'+SXXc399;-G&HJ2	4r>ctjggdggdg}tjd|ggddg}|j|dtjd|tjgtj
dtjgddg}|j|dtjd|tjggtj
dtjdg}|j|dtjdtjtjg}|j|d}|j||jy)NrYzempty body on FunctionDefrc	^tjd|tjggddgSNrY)r5FunctionDefPassrss r"rz+ASTValidatorTests.test_funcdef.<locals>.facXs%??3sxxzlBdBOOr>)r5rrrBrrrr)r:rbr!rs    r"test_funcdefzASTValidatorTests.test_funcdefMsMM"b$Bb9OOCBD$;		!01OOCSXXZL388C3M2NPTVZ\^_		!-.OOCSXXZL"HHS#))+6b
B		!-.OOC388:,?		!	Pc499-r>cd}d}tjtj|}|jd}|j|tj|j||y)Nc|tjdx\dk(rtjdx\ rdk(r\tjdx\dk(r rdk(r~\tjdxi\ rfdk(ra\tj
dxL\dk(rFtjdx3\tj
dx\dk(rtjdx\y	y	)
NrOrrsrrcapybarapacaranaTF)r5rrrrrre)r<s r"matcherz@ASTValidatorTests.test_funcdef_pattern_matching.<locals>.matcher^sx__GUCMM,P?O?O%1\chhj%G%Gchh&Fz388:%(XX%Ej#((*	G
 r>zZ
            @capybara
            def foo(bar) -> pacarana:
                pass
        r)r5rtextwraprrrrr)r:rrrfuncdefs     r"test_funcdef_pattern_matchingz/ASTValidatorTests.test_funcdef_pattern_matching\sY	!
8??401++a.gs7()r>cd
d}|j|tjdtjgd|j|tjdtjdtjgd|j|gd|j|dgd|j|tjdtjg	dy)Nc|g}|g}|tjg}|g}|g}tjd|||||S)Nmyclass)r5rClassDef)basesr'rr@type_paramss     r"clsz,ASTValidatorTests.test_classdef.<locals>.clsss_}|
|%!#" <<	5( $nkC
Cr>rY)rr)r'rizempty body on ClassDefNone disallowed)r@)NNNNN)rBr5rrr)r:rs  r"
test_classdefzASTValidatorTests.test_classdefrs	C	
		#SXXc399;789*	,		#C#syy{1K LMN*	,		#2, 89		#D6"$56		#chhsCIIK&@%AB*	,r>c	2|jtjgd|jtjdgd|jtjtjdtjgdy)Nzempty targets on DeleterrYzmust have Del context)rBr5Deleterrers r"test_deletezASTValidatorTests.test_deletesa		#**R.";<		#**dV$&78		#**chhsCHHJ789)	+r>c
|jtjgtjdd|jtjdgtjdd|jtjtjdtj
gtjdd|jtjtjdtjgtjdtjdy)Nrzempty targets on AssignrrYmust have Store contextrr)rBr5Assignrrrerrs r"test_assignzASTValidatorTests.test_assigns		#**Ra13LM		#**dVS\\!_57HI		#**chhsCHHJ78#,,q/J+	-		#**chhsCIIK89 #ciik :<*	,r>c	 tjtjdtjtjtjdtj}|j|dtjtjdtjtjtjdtj}|j|dy)NrYrrr)r5	AugAssignrrerGrBr)r:augs  r"test_augassignz ASTValidatorTests.test_augassignsmmCHHS#((*5swwyHHS#((*57		#01mmCHHS#))+6	HHS#))+68		#/0r>c
ttjdtj}tjdtj}tj}|jtj||ggd|jtjtjdtj||ggd|jtj|tjdtj|ggdtjtjdtj}|jtj|||ggd|jtj|||g|gdy)NrYrzempty body on Forrr)r5rrrerrBrr])r:rYrprs     r"test_forzASTValidatorTests.test_forsHHS#))+&HHS#((*%HHJ		#''!QB')<=		#''#((3
3QR@+	-		#''!SXXc399;7!bA*	,HHSXXc399;/0		#''!QR(*BC		#''!QaS)+CDr>c
F|jtjtjdggd|jtjtjdtj
tjggd|jtjtjdtjgtjtjdtj
gdy)Nrzempty body on WhilerYr)rBr5Whilerrrrr]rs r"
test_whilezASTValidatorTests.test_whiles		#))CLLOR46KL		#))CHHS#))+6bI*	,		#))CLLOchhj\!hhsxxSYY['ABCE5	7r>c:|jtjtjdggdtjtjdtj
tjgg}|j|dtjtjdtjtjdtj
gg}|j|dtjtjdtjgtjtjdtj
g}|j|dy)Nrzempty body on IfrYr)rBr5Ifrrrrr])r:r}s  r"test_ifzASTValidatorTests.test_ifs		#&&a"b13EFFF388C-
|R@		!-.FF3<<?SXXchhsCIIK.H%I$JBO		!-.FF3<<?SXXZLHHSXXc399;789
;		!-.r>ctj}|jtjg|gdtjtj
dd}|jtj|ggdtjtjdtjd}|jtj|g|gdtjtj
dtjdtj}|jtj|g|gdy)Nzempty items on Withrzempty body on WithrYrr)	r5rrBWithrrrrre)r:rr}s   r"	test_withzASTValidatorTests.test_withsHHJ		#((2s#%:;LLa$/		#((A3#%9:LL#syy{3T:		#((A3$&>?LLa#((3
*CD		#((A3$&?@r>ctjdtjd}|j|dtjtjdtj
d}|j|dtjtjdtjdtj
}|j|dy)Nrz!Raise with cause but no exceptionrYrrD)r5rrrBrr)r:rs  r"
test_raisezASTValidatorTests.test_raisesIIdCLLO,		!89IIchhsCIIK0$7		!-.IIcll1osxxSYY['AB		!-.r>ctj}tjggg|g}|j|dtjtjtj
dtjggg|g}|j|dtj|gggg}|j|dtj|gg|g|g}|j|dtj|gtjddgggg}|j|dtjtj
dtjd|gg}|jtj|g|ggdtjdd|gg}tj|g|tjtj
dtjg|g}|j|dtj|g||gtjtj
dtjg}|j|dy)Nzempty body on TryrYrz-Try has neither except handlers nor finalbodyz%Try has orelse but no except handlersempty body on ExceptHandlerr)r5rTryrBr]rr
ExceptHandlerr:rrrs    r"test_tryzASTValidatorTests.test_trysHHJGGBB$		!()GGSXXchhsCIIK89:BQCH		!-.GGQCR$		!DEGGQCaS1#&		!<=GGQC#++D#r:;RD		!23


sxxSYY[93
DE		#''1#q"b)+CD


tS1#
./GGQCSXXchhsCIIK&@ABQCH		!-.GGQCQC#((388C+E"F!GH		!-.r>ctj}tjggg|g}|j|dtjtjtj
dtjggg|g}|j|dtj|gggg}|j|dtj|gg|g|g}|j|dtj|gtjddgggg}|j|dtjtj
dtjd|gg}|jtj|g|ggdtjdd|gg}tj|g|tjtj
dtjg|g}|j|dtj|g||gtjtj
dtjg}|j|dy)Nzempty body on TryStarrYrz1TryStar has neither except handlers nor finalbodyz)TryStar has orelse but no except handlersrr)r5rTryStarrBr]rrrrs    r"
test_try_starzASTValidatorTests.test_try_starsHHJKKBQC(		!,-KK#((3		"<=>BL		!-.KKRR(		!HIKKR!qc*		!@AKKc//c2>?RH		!23


sxxSYY[93
DE		#++qc1b"-/GH


tS1#
./KKQ#((3		*D!E FL		!-.KKQchhsxxSYY[/I&J%KL		!-.r>c	|jtjtjdtjddtjtjdtj
tjdtj}|j|dy)NrYrr)rBr5Assertrrre)r:assrts  r"test_assertzASTValidatorTests.test_assertss		#**SXXc399;7>*	,

388C488C57		%12r>cN|jtjgdy)Nzempty names on Import)rBr5rrs r"test_importzASTValidatorTests.test_import		#**R."9:r>ctjdtjddgd}|j|d|jtjdgddy)NrYizNegative ImportFrom levelrzempty names on ImportFrom)r5rrrB)r:imps  r"test_importfromz!ASTValidatorTests.test_importfromsMnnTCIIc4$8#93?		#23		#..r1-/JKr>cN|jtjgdy)Nzempty names on Global)rBr5Globalrs r"test_globalzASTValidatorTests.test_globalrr>cN|jtjgdy)Nzempty names on Nonlocal)rBr5Nonlocalrs r"
test_nonlocalzASTValidatorTests.test_nonlocals		#,,r"$=>r>ctjtjdtj}|j	|dyNrYr)r5r]rrrBrs  r"	test_exprzASTValidatorTests.test_exprs0HHSXXc399;/0		!-.r>c	tjtjg}|j|dtjtjtjdg}|j|dtjtjtjddg}|j|dtjtjtjdtj
dtjg}|j|dy)Nzless than 2 valuesrrDrrYr)r5BoolOpAndrArrr)r:rs  r"test_boolopzASTValidatorTests.test_boolopsJJswwy"%		!)*JJswwy3<<?"34		!)*JJswwy3<<?D"9:		!&'JJswwy3<<?CHHS#))+4N"OP		!-.r>ctjtjtjdtj}|j|dyr)r5rfrxrrrA)r:us  r"test_unaryopzASTValidatorTests.test_unaryops8KK	388C#=>		!-.r>c
tjggdggdg}|jtj|tjdtj
dd}|j
||jy)NrYrcztj|tjdtjSr)r5Lambdarrerss r"rz*ASTValidatorTests.test_lambda.<locals>.fac$s$::dCHHS#((*$=>>r>)r5rrArrrr)r:rbrs   r"test_lambdazASTValidatorTests.test_lambda sbMM"b$Bb9		#**Qciik :;*	,	?c499-r>ctjdtj}tjdtj}|||f|||f|||ffD]$}|j	tj
|d&yNrYrr)r5rrerrAIfExp)r:lrrs    r"
test_ifexpzASTValidatorTests.test_ifexp(spHHS#((*%HHS#))+&1I1ay1a)3	BDIIcii&(@A	Br>cBtjgtjdtjg}|j	|dtjtjdtjgdg}|j	|dy)NrYzsame number of keys as valuesr)r5r_rrerA)r:r2s  r"	test_dictzASTValidatorTests.test_dict.sjHHR#((3
345		!45HHchhsCHHJ/04&9		!&'r>c|jtjdgdtjtjdtjg}|j|dyNrrYr)rAr5Setrrr:rs  r"test_setzASTValidatorTests.test_set4sL		#''4&/#45GGSXXc399;/01		!-.r>c	|j|gdtjtjdtjtjdtjgd}|j||gdtjtjdtj
tjdtj
gd}|j||gdtjdtj
}tjdtj}tj||dgd}|j||gdtj||tjdtj
gd}|j||gdy)Nz comprehension with no generatorsrYrrrrr)rAr5rrrer)r:rgrYrs     r"_check_comprehensionz&ASTValidatorTests._check_comprehension9sO		#b'=>chhsCHHJ7!hhsCHHJ7Q
@		#qc(56chhsCIIK8!hhsCIIK8"a
A		#qc(45HHS#))+&HHS#((*%aTFA.		#qc(-.aSXXc399;%?$@!D		#qc(45r>c	ztjtjdtjtjdtjgd}|jtjdtj|gdfd}|j
|y)NrYrrcbtjdtj|Sr)r5rr)gensrs r"wrapz,ASTValidatorTests._simple_comp.<locals>.wrapMs!sxxSYY[1488r>)r5rrrrerAr)r:rrrs `  r"_simple_compzASTValidatorTests._simple_compHs}chhsCIIK8!hhsCHHJ7Q
@		#chhsCIIK01#6*	,	9!!$'r>cB|jtjyr)rr5ListComprs r"
test_listcompzASTValidatorTests.test_listcompQs#,,'r>cB|jtjyr)rr5SetComprs r"test_setcompzASTValidatorTests.test_setcompTs#++&r>cB|jtjyr)rr5GeneratorExprs r"test_generatorexpz#ASTValidatorTests.test_generatorexpWs#**+r>ctjtjdtjtjdtjgd}tj
tjdtjtjdtj|g}|j
|dtj
tjdtjtjdtj|g}|j
|dd}|j|y)NrrrrYrctjdtj}tjdtj}tj|||S)NrYr)r5rreDictComp)compskr0s   r"factoryz0ASTValidatorTests.test_dictcomp.<locals>.factorycsAchhj)Achhj)A<<1e,,r>)r5rrrrerrAr)r:rcrs    r"
test_dictcompzASTValidatorTests.test_dictcompZschhsCIIK8!hhsCHHJ7Q
@LL#syy{3#sxxz2QC
9		!-.LL#sxxz2#syy{3aS
:		!-.	-	
!!'*r>c	0|jtjtjdtjd|jtj
tjdtjdy)NrYzmust have Load)rAr5Yieldrr	YieldFromrs r"
test_yieldzASTValidatorTests.test_yieldisT		#))CHHS#))+679IJ		#--ciik :;=MNr>ctjdtj}tj|tjgg}|j|dtj|tjgtjdtjdg}|j|dtjtjdtjg|g}|j|tj|tjgtjdg}|j|y)NrYzno comparatorsrDrCz,different number of comparators and operandsblah)r5rreCompareInrAr)r:r@comps   r"test_comparezASTValidatorTests.test_comparemsxxSXXZ({{4#&&(R0		$(){{4#&&(cll1os||A-OP		$FG{{3<</#&&(dVD		${{4#&&(cll6.B-CD		$r>ctjdtj}tjdtjg}tjdtjdtjg}tjtjdtj
||}|j
|dtj|dg|}|j
|dtjdtjdtj
g}tj|||}|j
|dy)NrYrr
rrr)r5rrerrrrA)r:r&rr'callbad_keywordss      r"	test_callzASTValidatorTests.test_callxsxxSXXZ(chhj)*KKSXXc388:%>?@xxciik2D(C		$01xxtfh/		$)*C#syy{)CDExxdL1		$01r>ctjd5}tjddtddlm}dddtjd5}tjddtGdd	t}Gd
dt}Gdd
t}dD]&}|jt	j
|(|||fD]-}|jt	j
|dt/	ddd|jDcgc]}t|jc}gdy#1swYxYw#1swYLxYwcc}w)NTrrrrr!rceZdZy)*ASTValidatorTests.test_num.<locals>.subintNr^rOr>r"subintrr3r>rceZdZy),ASTValidatorTests.test_num.<locals>.subfloatNr^rOr>r"subfloatrr3r>rceZdZy).ASTValidatorTests.test_num.<locals>.subcomplexNr^rOr>r"
subcomplexrr3r>r )0hellozinvalid typer)rrrrr)rrrrr5rrfloatrrArWrFrr)r:r	rrrr objr
s        r"test_numzASTValidatorTests.test_nums(

$
$D
1	 T##Hb2DE	 
$
$D
1	GT##Hb2DE


5

W
#
(		#''#,'
(xZ\9
G		#''#,I	F
G	G	
$7Q#aii.7:
	#	 	 	G	G8s"EB8E'E'EE$ctjtjdtjdtj}|j|dyr)r5	AttributerrrerA)r:rs  r"test_attributez ASTValidatorTests.test_attributes:}}SXXc399;7chhjI		$01r>c	tjtjdtjtjdtj
}|j
|dtjdtj
}tj|tjdtjtj
}|j
|dtjdtj}|ddfd|dfdd|ffD]M}tj|}|j
tj||tj
dOtjgtj
}|j
tj||tj
tj|gtj
}|j
tj||tj
dy)NrYrrr)	r5	SubscriptrrrrerASliceTuple)r:subrYrrsls      r"test_subscriptz ASTValidatorTests.test_subscriptswmmCHHS#))+6QHHJ(		#/0HHS#((*%mmAsxxSYY[9HHJ(		#/0HHS#))+&dOdAt_tT1oE	0DD!BIIcmmAr388:6.
0	0YYr388:
&		#--2sxxz23
YYsCHHJ
'		#--2sxxz24LMr>c	ftjtjtjdtjtj
gtj
}tj|gtjd}|j|dy)NrYrDr)	r5ListStarredrrerrrrB)r:r@assigns   r"test_starredzASTValidatorTests.test_starredsixxSXXc388:%>		LM		%TFCLLO4		&34r>c	|j|dgtjd|j|tjdtjgtjdyr)rAr5rerr)r:rs  r"	_sequencezASTValidatorTests._sequencesR		#tfchhj)+<=		#sxxSYY[12CHHJ?*	,r>cB|jtjyr)r6r5r1rs r"	test_listzASTValidatorTests.test_listssxx r>cB|jtjyr)r6r5r,rs r"
test_tuplezASTValidatorTests.test_tuplessyy!r>ctjd5}tjddtddlm}dddtjd5}tjddt|j
t	j
dddd|jDcgc]}t|jc}d	gy#1swYxYw#1swYJxYwcc}w)
NTrrrr)rrrDr)
rrrrr5rrArFrr)r:r	rr
s    r"test_nameconstantz#ASTValidatorTests.test_nameconstants

$
$D
1	)T##Hb2DE(	)
$
$D
1	+T##Hb2DEIIc&&q)*	+	
$7Q#aii.7i:
		)	)	+	+8s"CAC .C,C C)cpuc<tjjtj}tj
|Dcgc]}|j
ds|}}|jddg|D]}|j|5tjj||}t|dd5}|j}dddtj|}t||ddddycc}w#1swY<xYw#1swYxYw)Nz.pyztest/test_grammar.pyztest/test_unpack_ex.pyrutf-8encodingri)ospathdirnamer5__file__listdirendswithextendryjoinopenreadrrz)r:stdlibfnrrfprrs        r"test_stdlib_validatesz'ASTValidatorTests.test_stdlib_validatess. jj0GBKK4FGG
,.FGH	)Ff%
)WW\\&&1"cG4'WWYF'ii+R(
)
)	)H
''
)
)s0DD/D:D+DDDD	rrYTcarterrr.rMstringr)restlollegit)patterns	kwd_attrskwd_patternsrrnxxx_c
2tjdtj}|jD]}|j	tj
|d5tj|tj|tjgg}tj|}tj|gg}|jt5t|ddddddddy#1swYxYw#1swYxYw)NrYrDr)rr)subjectcasesrri)r5rre_MATCH_PATTERNSryrMatchrrrfrrTrrz)r:name_xrr<rs     r"test_match_validation_patternz/ASTValidatorTests.test_match_validation_patternds#sxxz*++	6Gchhwq9:

6yy"$+$'HHJ<006TFB/&&z26FHf56

6

6	666

6

6s%BD
 D.D
D
D

D	)Nrir)Nrr8r_rrrArBr>rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr%r(r/r4r6r8r:r<rrequires_resourcerOr5r
constant_1
MatchValue	pattern_1
constant_x	pattern_x
constant_trueMatchSingletonpattern_truerrename_carterr'r
MatchSequenceMatchMappingr2
MatchClass	MatchStarMatchAsMatchOrr]r`rOr>r"r~r~s2Z2$*$6 4D
.*,,.+,1E7/A//(/(3;L
;?///.B(/

6((',
+O	
242N$5,
!"Wu%
)&
)aJz*Ic"Jz*I CLL&M%3%%d+L#((8XSXXZ0K	CMM

CHHS)#))+.XSXXZ
	
	CMM

CHHS(#((*-XSXXZ
	
	CLL	
	CLL	
	CLL!	
	8$
#

X
&
		!!!***84
	
	
'
K	
	
J'
	"	

	
KCKK
(CXSXXZPQ
	"	

	CMM

%XSXXZ	
!
2B
	
	h#		
	#		
	(c((23		
	#cmmo&		
	'#--/*		
	h#		
	

f%
	

		
		
	
K	
	
	#53#5#5e#<=	
	

3=3==-./Rc*oxOt6r>r~cjeZdZdZdZdZdZdZdZdZ	dZ
ejd	Z
d
ZdZy)

ConstantTestsz$Tests on the ast.Constant node type.ctjd}|jdj}tj|}tj
||||jd_t
|dd}i}t|||dS)Nzx = 123rr
rrirY)r5rrrKrrrzri)r:rKrr<new_noderrss       r"compile_constantzConstantTests.compile_constantzsvyy#yy|!!<<e,(D)%		!tZ0
T2#wr>c|jt5}|jgdddd|jt	j
dy#1swY/xYw)NrMz%got an invalid type in Constant: list)rTrWrurFrr_)r:rbs  r"test_validationzConstantTests.test_validationsR


y
)	-R!!),	-R\\*@	B	-	-sAA!cdddtdtfD]@}|j|5|j|}|j	||dddBy#1swYMxYw)NFTr>)const)rrjryrur)r:ryrKs   r"test_singletonszConstantTests.test_singletonssfE43	D	,EE*
,--e4

eU+
,
,	,
,
,s$AA"	c	>d}tdh}tdD]}|df}t|dh}ddddd	td
td||f	}|D]@}|j|5|j	|}|j||dddBy#1swYMxYw)
N)rrrrR{g^@y^@unicodebytesrrjr
)rjrrryrurF)r:nested_tuplenested_frozensetrpr^rKr s       r"test_valueszConstantTests.test_valuess$aS>1X	@E(!,L(*:A)>?	@udX.)K"8 02	0EE*
0..u5  /
0
0	0
0
0s$$BB	ctjd}|jdjd}tjd}tj
||||jdjd<|j
t5}t|ddddd|jtjdy#1swY/xYw)Nx = 1rrr
rQriz6expression which can't be assigned to in Store context)r5rrtargetsrrrTrrzrFrr_)r:rr
new_targetrbs     r"test_assign_to_constantz%ConstantTests.test_assign_to_constantsyy!1%%a(\\*
*f-",		!Q


z
*	,bD(F+	,R\\*/	0	,	,sCCcxtjd}|jtj|dy)Nz'docstring'
x = 1	docstring)r5rrFr:rs  r"r;z ConstantTests.test_get_docstrings,yy-.**40+>r>ct|dd}g}tj|D]<}|jdk(s|jdk(s"|j	|j
>|S)Nrri
LOAD_CONSTRETURN_CONST)rzdisget_instructionsopnamerargval)r:rcoconstsinstrs     r"get_load_constzConstantTests.get_load_consts_T:v
.))"-	,E|||+u||~/M

ell+	,
r>cvgd}dj|Dcgc]}dj|c}}|dz
}|jtdft	j
|}|j
|j||t|j|D]v\}}t|tjsJt	j|t	j|}t	j||j||_x|j
|j||ycc}w)N)	NTF|g@y@r}r~rMrzx={!r}z
x = ...r
)rIrrHrr5rrFrrxrrrrrrrK)r:rryrrr3rts       r"test_load_constzConstantTests.test_load_constsyyfEU(//%0EF

x&'yy,,T2	!!F3	$MFEfcjj1C388F3CC||%0Hh5#FL		$	
,,T2	!FsD6ctjd}|jdj}tjd}tj
||j||_tjd}tj
||j||_|jtj|dy)Nz1 + 2rrr
y4@y$@4@)
r5rrrKrrr@rBrFr)r:rbinopnew_left	new_rights     r"rRzConstantTests.test_literal_evalsyy!		!""<<b)(EJJ/
LLs+	)U[[1))%0&9r>ctjddj}|j|jd|j|j
dtjddj}|j|jd|j|j
dtjddj}|j|jd|j|j
dtjddj}|j|jd	|j|j
dy)
Nz"x"rkrrYzu"x"rzr"x"zb"x"x)r5rrrFrKrq)r:rs  r"test_string_kindzConstantTests.test_string_kindsIIe&)..#&&IIf6*//#&%IIf6*//#&&IIf6*//$'&r>N)rr8r_rrurwrzrrr;rrrrrRrrOr>r"rrrrwsM.B,
00?
!!8:'r>rrceZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!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.
    ct|j|j||j|j|yr)rFr
r)r:rHr
rs    r"_check_end_poszEndPositionTests._check_end_pos	s.,,j900.Ar>cP|jtj|||yr)rFr5get_source_segment)r:rrHcontents    r"_check_contentzEndPositionTests._check_content	s//A7Kr>cZtj|jdjS)Nr)r5rrrKrs  r"_parse_valuezEndPositionTests._parse_value		s#yy|  #)))r>cd}|j|}|j||jd|j||jjdd|j||jjdy)Nzlambda x, *y: Noner#rrYr)rrrrrV)r:rlams   r"rzEndPositionTests.test_lambda	sf "Asxx0Asxx}}Q/5Asxx4r>cLtdj}tj|jd}|j|dd|j
||jdd|j
||jjdd|j
||jjdjd|j
||jjd|j
||jjjd	y)
Nz
            def func(x: int,
                     *args: str,
                     z: float = 0,
                     **kwargs: Any) -> bool:
                return True
            rrCzreturn Truezx: intrzkwargs: AnyAny)
rrr5rrrrr
annotationrr:rfdefs   r"
test_func_defzEndPositionTests.test_func_def	s

	
yy|  #D!R(Atyy|];Atyy~~a0(;Atyy~~a0;;UCAtyy
>Atyy995Ar>cd}|j|}|j||jd|j||jdjd|j||jdjdy)Nzfunc(x, y=2, **kw)r&r2rkw)rrr&r'rKr:rrs   r"rzEndPositionTests.test_call%	so   #Atyy&1At}}Q/55s;At}}Q/55t<r>cd}|j|}|j||jd|j|ddy)Nzx[0]()zx[0]rrO)rrr&rrs   r"test_call_noargsz!EndPositionTests.test_call_noargs,	s?  #Atyy&1D!Q'r>c tdj}tj|jd}|j|dd|j
||jdd|j
||jddy)Nz?
            class C(A, B):
                x: int = 0
        rrRrBz
x: int = 0)rrr5rrrrrr:rcdefs   r"test_class_defzEndPositionTests.test_class_def2	s}

UW	
yy|  #D!R(Atzz!}c2Atyy|\:r>cd}tj|jd}|j||jdj
dy)Nz$class S(metaclass=abc.ABCMeta): passrzabc.ABCMeta)r5rrrr'rKrs   r"
test_class_kwzEndPositionTests.test_class_kw<	s@2yy|  #At}}Q/55}Er>ctdj}tj|jd}|j|dd|j|jddy)Nzh
            x = """Some multi-line text.

            It goes on starting from same indent."""
        rr(rrr5rrrrKr:rr3s   r"test_multi_line_strz$EndPositionTests.test_multi_line_strA	s_

UW		

1""1%FAr*FLL!R0r>ctdj}tj|jd}|j|dd|j|jddy)NzB
            x = "first part" \
            "second part"
        rrRr?rrs   r"test_continued_strz#EndPositionTests.test_continued_strK	s_

UW	
1""1%FAr*FLL!R0r>cPtdj}tj|}|jd}|jd}|jd}|jd}|jd}|j|dd|j|dd	|j|d	d
|j|dd|j|dd|j
||jd
|j
||jdd|j
||jdjd|j
||jd|j
||jdd|j
||jdjdy)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
        rrrRrrDrrrrrzx = Nonezother()x, yzraise RuntimeErrorrW)rrr5rrrrr%rCrhandlersr7)r:rr
while_loopif_stmtfor_looptry_stmt	pass_stmts        r"test_suiteszEndPositionTests.test_suitesT	so


(UW)	
*iilXXa[
((1+88A;88A;HHQK	J1-GQ+Hb"-Hb!,Ir1-Az7Aw||A
;Aw~~a055yAAx7Ax}}Q/1EFAx00388+Fr>cd}|j|}|jdj}|j||dy)Nzx = f"abc {x + y} abc"rzx + y)rr^rKrr:rfstrrs    r"test_fstringzEndPositionTests.test_fstring	s<$  #A$$Aug.r>c$tdj}|j|}|jdj}|j|dd|j
||jd|j
||jdy)Nz
            f"""Some multi-line text.
            {
            arg_one
            +
            arg_two
            }
            It goes on..."""
        rrCrarg_onearg_two)	rrrr^rKrrr@rBrs    r"test_fstring_multi_linez(EndPositionTests.test_fstring_multi_line	s

UW	
  #A$$E1a(Auzz95Au{{I6r>ctdj}tj|jd}|j|dd|j|jdddy)NzT
            from x.y.z import (
                a, b, c as c
            )
        rrrrRr)rrr5rrrr)r:rrs   r"test_import_from_multi_linez,EndPositionTests.test_import_from_multi_line	sc

UW		

iil"CA&CIIaL!R0r>cd}d}tdj}t|j|||f\}}}|j	||j
d|j	||j
jd|j	||jjd|j	||jjd|j	||jjdjd	|j	||jjd
jd|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]z1, 2r/zc.drf ()rg ()r)rrmaprrrKrrreltsr)r:s1s2smi1i2rs       r"test_sliceszEndPositionTests.test_slices	s



UW		
**RRL9
BB+6B7B6B6B

a 0 6 6?B

a 0 6 6?B1%r>c@tdj}|j|}|j|dd|j	||j
d|j	||jd|j	||jj
dy)NzF
            (1 * 2 + (3 ) +
                 4
            )
        rRrO4z1 * 2 + (3 )3)rrrrrrBr@)r:rrs   r"
test_binopzEndPositionTests.test_binop	s

UW		

!!!$E1a(Au{{C0Auzz>:Auzz//5r>ctdj}tj|jdj
}|j
|dd|j||jddy)Nz{
            if (one_condition and
                    (other_condition or yet_another_one)):
                pass
        rrR,rz"other_condition or yet_another_one)	rrr5rrr%rrr^)r:rbops   r"rzEndPositionTests.test_boolop	sm

UW		

iil"''CB'Aszz!}@	Br>cd}d}d}tdj}t|j||||f\}}}}|j	||d|j	||d|j	||d|j|dd	y)
Nzx = () ;z	x = 1 , ;zx = (1 , 2 ) ;z?
            x = (
                a, b,
            )
        r1z1 ,z(1 , 2 )rr)rrrrrr)	r:rrs3rt1t2t3tms	         r"test_tupleszEndPositionTests.test_tuples	s




UW		
T..RR0@ABBBD)BE*BJ/B1%r>cd}|j|}|j||||j||jddy)Nz
func(x. y .z)rzx. y .z)rrrrs   r"test_attribute_spacesz&EndPositionTests.test_attribute_spaces	sC  #AtQ'Atyy|Y7r>cd}tj|jdj}|j	t|jd|j||dd|z}tj|jdjj}|j	t|jd|j||dy)Nz( ( ( a + b ) ) )rrFr+await )r5rrrKrFr7rr)r:rr0rs    r"test_redundant_parenthesisz+EndPositionTests.test_redundant_parenthesis	sIIaLa &&a))73Aq'*
\IIbMq!''--a))73B7+r>cd}|D]\}}|j|5tj|jdj}|jt
|j||j|||d|z}tj|jdjj}|jt
|j||j|||dddy#1swYxYw)N))z( ( ( a ) ) ) ( )r)z( ( ( a ) ) ) ( b )r)z( ( ( a ) ) ) [ b ]r*)z( ( ( a ) ) ) . br'rr)	ryr5rrrKrFr7rr)r:rrrr0rs      r"(test_trailers_with_redundant_parenthesisz9EndPositionTests.test_trailers_with_redundant_parenthesis	s
	.DAqa
.IIaL%%a(..  a!1!115##Aq!,\IIbM&&q)//55  a!1!115##B1-
.
.	.
.
.sCC??D		cd}d}|j|}|j|}|j||jdd|j||jdd|j||jdd|j||jdd	|j||jdd
y)Nz[{}, {1, }, {1, 2,} ]z{a: b, f (): g () ,}rr,rz{1, }rRz{1, 2,}rr)rrrr]r^)r:rrc1c2s     r"
test_displayszEndPositionTests.test_displays	s
$
#


r
"


r
"B
D1B
G4B
I6B
F3B		!f5r>ctdj}|j|}|j|dd|j	||j
djd|j	||jj
djd|j	||jj
djdd|j	||jj
djdy)	Nza
            x = [{x for x, y in stuff
                  if cond.x} for stuff in things]
        rR%rthingsstuffzcond.xr)
rrrrr
generatorsreltifsr)r:rcmps   r"test_comprehensionsz$EndPositionTests.test_comprehensions
s

UW	
"CB'As~~a055x@Asww11!4997CAsww11!488;XFAsww11!4;;VDr>c"tdj}tj|jd}|j||jdjd|j||jdjdy)NzT
            async def f():
                yield x
                await y
        rzyield xrzawait y)rrr5rrrrKrs   r"test_yield_awaitz!EndPositionTests.test_yield_await
sw

UW		

yy|  #Atyy|119=Atyy|119=r>ctdj}tdj}|j|}|jt	j
||j|y)NzD
            x = (
                a, b,
            ) + ()
        z;
            (
                a, b,
            )
        )rrrrFr5rr@)r:s_origs_tuplers    r"test_source_segment_multiz*EndPositionTests.test_source_segment_multi
sm
UW		

UW		
!!&)//

CWMr>ctdj}d}tj|jd}|jtj||jdd|y)Nuf
            class C:
                def fun(self) -> None:
                    "ЖЖЖЖЖ"
        u/    def fun(self) -> None:
        "ЖЖЖЖЖ"rTpaddedrrr5rrrFr)r:rs_methodrs    r"test_source_segment_paddedz+EndPositionTests.test_source_segment_padded'
sg
UW		
*yy %%a(//		!TR!	#r>cd}tj|j\}}}}}|j||d|j||d|j||d|j||d|j||dy)Nz!v = 1
w = 1
x = 1

y = 1
z = 1
r$zw = 1rzy = 1zz = 1)r5rrr)r:rr0r
rYrrs       r"test_source_segment_endingsz,EndPositionTests.test_source_segment_endings3
s~7		!))
1aAAq'*Aq'*Aq'*Aq'*Aq'*r>ctdj}d}tj|jd}|jtj||jdd|y)Nzb
            class C:
              	  def fun(self) -> None:
              	      pass
        z+  	  def fun(self) -> None:
  	      passrTrr)r:rrrs    r"test_source_segment_tabsz)EndPositionTests.test_source_segment_tabs<
se

UW		

&yy|  #//499Q<MxXr>cJd}tj|j\}}}|j||d|j||d|j||dd}tj|jd}|j|||j	y)Nz3def f():
  pass
def g():
  pass
def h():
  pass
zdef f():
  passzdef g():
  passzdef h():
  passz"def f():
  a = 1
  b = 2
  c = 3
r)r5rrrrstrip)r:rr!rhs     r"test_source_segment_newlinesz-EndPositionTests.test_source_segment_newlinesH
sJ))A,##1aAq"45Aq"45Aq"675IIaLa Aq!((*-r>cd}tj|j\}}}}|`|`|`|`|jtj|||jtj|||jtj|||jtj||y)Nzv = 1
w = 1
x = 1

y = 1
)	r5rrrr
rrrfr)r:rr0r
rYrs      r" test_source_segment_missing_infoz1EndPositionTests.test_source_segment_missing_infoS
s0YYq\&&
1a
H
L
L
#00A67#00A67#00A67#00A67r>N)#rr8r_rrrrrrrrrrrrrrrrrrrrrrrrrr	r
rrrrrrOr>r"rrs
BL*
5B =(;F
11*GX/7 1&"
6	B
&8,."	6
E>N
#+
Y	.
8r>rceZdZdZy)BaseNodeVisitorCasescGfdd|j}tjtd}|}gt	j
d5}t	jddt|j|ddd|jgd|jDcgc]}t|jc}gd	y#1swYSxYwcc}w)
Nc@eZdZfdZfdZfdZfdZfdZy)=BaseNodeVisitorCases.test_old_constant_nodes.<locals>.VisitorcVj|jd|jfy)Nr)rrrr:r<logs  r"	visit_NumzGBaseNodeVisitorCases.test_old_constant_nodes.<locals>.Visitor.visit_Numc


DKK78r>cVj|jd|jfy)Nrrrrr$s  r"	visit_StrzGBaseNodeVisitorCases.test_old_constant_nodes.<locals>.Visitor.visit_Stre
r'r>cVj|jd|jfy)Nrr)r$s  r"visit_ByteszIBaseNodeVisitorCases.test_old_constant_nodes.<locals>.Visitor.visit_Bytesg
s

DKK$&&9:r>cVj|jd|jfy)Nr)rrrKr$s  r"visit_NameConstantzPBaseNodeVisitorCases.test_old_constant_nodes.<locals>.Visitor.visit_NameConstanti
s

DKKDEr>cBj|jddfy)Nr.)rrr$s  r"visit_EllipsiszLBaseNodeVisitorCases.test_old_constant_nodes.<locals>.Visitor.visit_Ellipsisk
s

DKKS9:r>N)rr8r_r&r*r,r.r0)r%sr"Visitorr"b
s
9
9
;
F
;r>r1z            i = 42
            f = 4.25
            c = 4.25j
            s = 'string'
            b = b'bytes'
            t = True
            n = None
            e = ...
            Trrr))rrrP)rRrr)rrr)rDrrQ)rCrr~)rOrT)rrN)rr.)
+visit_Num is deprecated; add visit_Constantrr2rr2rz+visit_Str is deprecated; add visit_Constantrz-visit_Bytes is deprecated; add visit_Constantr4visit_NameConstant is deprecated; add visit_Constantr3z0visit_Ellipsis is deprecated; add visit_Constant)
visitor_classr5rrrrrrvisitrFrr)r:r1rvisitorr	r
r%s      @r"test_old_constant_nodesz,BaseNodeVisitorCases.test_old_constant_nodesa
s
	;d((
	;ii	 		)

$
$D
1	T##Hb2DEMM#		
	
			
$7Q#aii.7:
			8s-C.C!CN)rr8r_r7rOr>r"rr_
s3r>rc$eZdZejZy)NodeVisitorTestsN)rr8r_r5NodeVisitorr4rOr>r"r9r9
sOOMr>r9cHeZdZejZdZdZdZdZ	dZ
dZy)NodeTransformerTestsctjt|}tjt|}|}tj|j	|}|j||yr)r5rrrfr5assertASTEqual)r:tranformer_classinitial_code
expected_codeinitial_astexpected_ast
tranformer
result_asts        r"assertASTTransformationz,NodeTransformerTests.assertASTTransformation
s[ii| 45yy
!67%'
..z/?/?/LM
J5r>cdd}d}Gddtj}|j|||y)Nzdef func(arg) -> SomeType: ...zdef func(arg): ...c,eZdZdejfdZy)ENodeTransformerTests.test_node_remove_single.<locals>.SomeTypeRemoverr<cH|j||jdk(ry|S)NSomeType)
generic_visitrr	s  r"
visit_NamezPNodeTransformerTests.test_node_remove_single.<locals>.SomeTypeRemover.visit_Name
s$""4(77j(r>N)rr8r_r5rrMrOr>r"SomeTypeRemoverrI

sxx
r>rNr5NodeTransformerrF)r:rexpectedrNs    r"test_node_remove_singlez,NodeTransformerTests.test_node_remove_single
s2/'	c11		
$$_dHEr>cdd}d}Gddtj}|j|||y)NzM
        def func(arg):
            print(arg)
            yield arg
        7
        def func(arg):
            print(arg)
        c,eZdZdejfdZy)ENodeTransformerTests.test_node_remove_from_list.<locals>.YieldRemoverr<cr|j|t|jtjry|Sr)rLrrKr5r
r	s  r"
visit_ExprzPNodeTransformerTests.test_node_remove_from_list.<locals>.YieldRemover.visit_Expr
s*""4(djj#))4r>N)rr8r_r5r]rYrOr>r"YieldRemoverrW
rOr>rZrP)r:rrRrZs    r"test_node_remove_from_listz/NodeTransformerTests.test_node_remove_from_list
s6
	3..		
$$\4Br>cdd}d}Gddtj}|j|||y)Nz0
        class DSL(Base, kw1=True): ...
        zE
        class DSL(Base, kw1=True, kw2=True, kw3=False): ...
        c,eZdZdejfdZy)BNodeTransformerTests.test_node_return_list.<locals>.ExtendKeywordsr<c|j||jdk(rS|tjdtjdtjdtjdgS|S)Nkw1kw2Tkw3F)rLrr5rrr	s  r"
visit_keywordzPNodeTransformerTests.test_node_return_list.<locals>.ExtendKeywords.visit_keyword
s^""4(88u$E3<<+=>E3<<+>?
r>N)rr8r_r5rrcrOr>r"ExtendKeywordsr^
s
#++
r>rdrP)r:rrRrds    r"test_node_return_listz*NodeTransformerTests.test_node_return_list
s6		S00			
$$^T8Dr>cdd}d}Gddtj}|j|||y)NrUz5
        def func(arg):
            log(arg)
        c,eZdZdejfdZy)9NodeTransformerTests.test_node_mutate.<locals>.PrintToLogr<c|j|t|jtjr*|jj
dk(rd|j_|S)Nprintr%)rLrr&r5rrr	s  r"
visit_CallzDNodeTransformerTests.test_node_mutate.<locals>.PrintToLog.visit_Call
sA""4(dii2tyy||w7N#(DIILr>Nrr8r_r5rrkrOr>r"
PrintToLogrh
rOr>rmrPr:rrRrms    r"test_node_mutatez%NodeTransformerTests.test_node_mutate
s6
	,,		
$$Zx@r>cdd}d}Gddtj}|j|||y)NrUzH
        def func(arg):
            logger.log(arg, debug=True)
        c,eZdZdejfdZy):NodeTransformerTests.test_node_replace.<locals>.PrintToLogr<c
|j|t|jtjr|jj
dk(rtjtjtjdtjdtj|jtjdtjdgS|S)	Nrjlogger)rr%)rrdebugT)r&rr')rLrr&r5rrrr'rerrrr	s  r"rkzENodeTransformerTests.test_node_replace.<locals>.PrintToLog.visit_Calls""4(dii2tyy||w7N88 ]]HHX388:>!& #

"YY"%++gs||D7I"J!Kr>NrlrOr>r"rmrr
s
sxx
r>rmrPrns    r"test_node_replacez&NodeTransformerTests.test_node_replace
s6

	,,
		
$$Zx@r>N)rr8r_r5rQr4rFrSr[rerorvrOr>r"r<r<
s0''M6
FC,E*A&Ar>r<c$eZdZdZdZdZdZy)ModuleStateTestscd}d}d}t|||tj}t|||}|j|tj
y)Nzx + 1rrk)flags)rzr5r{rtypesCodeType)r:rfilenamerrs     r"check_ast_modulez!ModuleStateTests.check_ast_modulesM44s7H7HIx40dENN3r>c8tjtjdd5tjd=ddl}tjd=ddl}|jddd~~tj|jy#1swY0xYw)N_astr)r	swap_itemsysmodulesrr~re)r:ast1rXs   r"test_reload_modulez#ModuleStateTests.test_reload_module"sw


s{{FD
9	$F#F#!!#	$
	$	$s;BBctfd}tjtjdd5tjd=tj
td|5|j|jdtjddl	}|j|ddddddy#1swYxYw#1swYyxYw)Nc.tj|<Sr)rr)r;rrlazy_mods   r"	my_importz4ModuleStateTests.test_sys_modules.<locals>.my_import9s (CKKOr>r
__import__r)objectrrrrrwrr~assertNotInrr)r:rrrs   @r"test_sys_modulesz!ModuleStateTests.test_sys_modules4s8	

s{{FD
9
	.F#""8\9E
.%%'  5

dH-
.
	.
	.
.
.
	.
	.s$-C#AB;*C;C	CCchtd}tj|}|j|dy)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)rrrun_in_subinterprF)r:rress   r"test_subinterpreterz$ModuleStateTests.test_subinterpreterIs5
&&&t,a r>N)rr8r_r~rrrrOr>r"rxrxs4 $.*!r>rxceZdZdZy)ASTMainTestscd}tjtj|d}tj5}t
jj|d}t|dd5}|j|dddtjdd	|\}}ddd|jjd
|j|j|jj!dj|j|j"dy#1swYxYw#1swYxYw)
Nzprint(1, 2, 3)rrztest_module.pyr
r?r@z-mr5r>utf8r)r5rrrtemp_dirrBrCrIrJwriterrun_python_until_endrFerr
splitlinesoutdecoderc)r:rrRtmp_dirr}r!rrYs        r"test_cli_file_inputz ASTMainTests.test_cli_file_inputfs88CIIdOA6



!	OWww||G-=>Hhg6
!

"77eXNFC		O	
#&,,./::<	>#

	O	Os$/D80D,"D8,D5	1D88EN)rr8r_rrOr>r"rrcs
$r>rcjtdk7rytjdddgk(r~tdftdft
dffD]S\}}t
|dz|D]0}tj|d|}t
t|d	2t
d
Ut
dttjy)N__main__rz-grirjrkz_results = [ro,]zmain())
rrargvrrrtrvrjr5rr
SystemExitrmain)
statementsrq	statementrs    r"rrvs:
xx|v",f!5h7O",f!5!7	J$~%&'
1	yyC6x~/0
1
#J
		hMMOr>r)r]rrrrDrrNN)r]rrr)rrzmodule docstringNr)rrrr?r!r)r)rrrr?)rrr)r]rrrr)rrzfunction docstringN)rrrrrrrOrrrbNN)r)rrrr)rrrr)rrrrrrN)r)rrrrr)rrrrrrNN)r)rrrr)rrrr5)r)rrrrr)r2rr?rr)r)rrrrTsrerN)r)rrrr5)rrr$r)rrrrrr2)rr?rrr*)rrrr)r)rrrrrrr,)rr)rrrrr5rrrrrrr)r)r rr)r2rr)rrrrrr)rrr)rrrrrr+NN)r)rrrr)rrrG)r)rrrrrrNN)rrrrrrNN)rrrrr5r2NN)rrrrrrNN)rr#r'rNN)r)r)rrPr!NN)r)r+r-rPN)r)r1r7r+NN)rrrrrrN)rrrrrNNr1)rrrr_)rrr)r]r:rr)rrzdoc for f()N)rrr)r)rr5rr)rrrr)rrrrrrrrrrr)r2r)r)rrrrrrr)rrrr)r)rrrr)rrrr)rrrr)rrrr)r2rrrr)r)rr5rrrrr)rrrr)r)rrrr)rrrr)rrr&)rrrr)rr5rr)r)rr5rrrr)rrrr)r)rrrrrr)r"rrr)rrrrC)r)rrrr)r]rrrr)rrzdocstring for class CN)rrrr)Returnrrrr)rrrrrrNrrrrrC)rrrDrrCr0)Delrrrrrrr0r)rrrNrrrrrrrr)rrrbr)rrrRrrrrr)rrrr)rrrrrrrrrRrbr)rrrrrDrr)rrrr	AnnAssign)rrrYr)rrrr?)rrrrrrrrrrr)r2r)rrrrrrrrr)rrrr)rrrrrrrr)r2rrrr)r)rrrrrrr)rrr)rrrr)rrrr)rrrr)rrrr)r)rrrrrr)rrrr)rrrrrrrrrrr)rrrrrOrrG)rrrCrrOrNr)rrrr)rrr0r)rrr0r)r)rrrrr)rrr0rr)rrr0r)r)rrCrr)rrrDrO)rrrbr)r)rRrRrRrO)rrrDrO)r)rrCrrOrr)r)rDrRrDrO)rrrOrO)rrrOrO)r)rOrRrOrOr)rrrr)r)rrrYr)rrrrrrr)r)rr?rr)rrrr)r)rrr?rrrr)rrrrrqr)r)rrrrrr)rrOrr)r)rrOrrrr)r)rrrrrQNrr)rrrrrrrr)r)rrrrrr)rrrrr)rrrrrr0rNr)rrrr)rrrrrrNrr)rrrrrr0Nrrr0)r]rrrrN)rr)Breakr)rrrr)Continue)rrrr)rrDrr)rrrbr)rrrr)rrrr)rrrr)rrDrr)rrrbr)rrrr)rrrr)rrr])rrrrCr)rRrDrOrC)r)rrDrrOAar)r)rCrrCrBbrr)rrDrrO)r)rrDrrOrr)r)rrDrrOrr)r)rrrrCcr)rrrrrrrrbr)rrrr)rrr
r)rrrYr)rrrar)r)rrrrrr)r)rrr!rrrrrr)rrr0r)rrr
r)rrrYrr)rrrr)rrrr)rrrrr?rYr)rrrrrrrr)rrrar)rrrYrAsyncFunctionDef)rrrr)r]rRrrRr)rrzasync functionN)rrrrAwait)rrrr)rr	somethingr)rrrrAsyncFor)rRrrr)r)rRrrRrrr)r)rRrrRrr}r)r]rRrrRr)rrrN)r]rrrr)rrrRN)rrrRr	AsyncWith)rRrrRr)r)r)rRrrRr?rbr)r)rRrrRrrr)r]rRrrRr)rrrN)rrrRNr)rrrRN)rr	rNr)rrrr)rrRrr)rrrN)rrrNr)r)rRrRrRrr}r)r)rRrrRrrr)rrrr)rDrrDr?)r)rDrrDr?)rrrrrOdeco1r)rRrrRr)r)rRrrRrOdeco2r)rrrr)r)rrrrOdeco3r)rrrN)rDrrDr)r)rDrrDr)rRrrRr?)r)rRrrRr?)rrrr)rrrrrCdecor)rrCrr)rrrbr)rr	rbr)rr
rr)r'r)r')rrrrDrrrrr)r]r)	NamedExpr)rrrrr)rrrN)rrrr)rr	rNN)rrr2NN)rrrNN)r)rrrrr)rrr2NN)rrrrrrNN)r)rrrr)rrrr)r)rrrrr+NN)rrrrrN)rrrNN)r)rrrrrNN)rrrrRN)rrrDN)rrrNN)r)rrrrrDNr)rrrr)r)rrrr)rrrrP)r)rrrrr+NN)r)rrrrP)rrrr)r)rrrrr+NN)r)rrrr	TypeAlias)rrr`rTypeVarrTN)rrrrrrr)r )TypeVarTuplerrrr?r)	ParamSpecrrrrP)rrrr))r)rr5rrr"rr)r)rrrrr(r)rrrr))r!)rrrr?r"rr%rr)r$r'r)r&rr()rrrr))rrr"r)r)rrrrrr)rrrrrr(r)rrrrr!)rrrrr")rrrrrrrr)rrrrrrr)r$rr)r&)rrrrr()rrrr))rr*r"r)r)rrrrrr)r)rrPrrr(rr`r!rr"N)r-)r$rr)r&r,r()r)rrrr))r!rr"r+)r$r,r)r&rr()rrrr)r)rrrr)rrrr)rrrr)r$)rr5rrr)r&)rrrrr(r!rr"N)r.)r$rr)r&rr())r!)rrOrrr"r)r$rr)r&)rrrrr()rrOrr)rrrrr))rr'rr)r$rr)r&rr(r)r]r)rFrrrrrrRN)rkrrkr)rrrrbr)rrrr)rk)rFrr0rrrrr)rk)rfr)rx)rrr0rr)rrrr)rrNNrrrNrrrRNrrrrR)rrNN)rrrCrO)r)rRrOrRrrN)r)rDrrDrrRN)rr	rr)rr
r2rr)rrrbrr1)rrrbr)rrrr)rrrr)rrrrr)rrrr)r)rrrrrrrr)LtrrrN)rrr!r)r2r3)r2r)rrr2rr)r)rrOrrrr6)rrN)rrrr)rrRrr)rrrr)rrrN)rrrN)rrrr)rrrbr)rrrr)rk)rr4rN)rk)rrrQN)rkr'rr0rr)rk)r*rr0)r+)rrRrrC)rrrr)rrrrNr)rk)rrr0r))rrrN)rrrRN)rrrN)rr/)rrrN)r'r)r'rr7rrr2r)r*r)r')rrrr)rrrbrrr)r+r#)rr	rN)rrrRNNr)-r5rrrrBrrrr{rrrc	functoolsrrr%rtest.support.import_helperrtest.supportrrtest.support.ast_helperr	rrrrtrvTestCaser3rr~rrrrr9r<rrxrrrrsrurwrOr>r"<module>r=s3

		
:10&b
P
E
TT
7!!T
7lY=h''Y=xc	6))c	6LB'H%%B'Ja8x((a8F55p$+X->->$sA<)=x?P?PsAl	N!x((N!N!b$8$$$&
 [	JKRP[	Z[]_`[
]M3b"dBPRTXZ\0]`w_xz|CEIKM
NOQST[
]M3b"dBPRTXZ\0]aq`rtvx|~BDF
GHJLM	[

]M3bCiBjlprtvxz~AC1DG_F`bdfjlprt
uvxz{[
]M3bCiBjlprtvxz~BeAf1gjBiCEGIMOSUW
XY[]^
[
]M3b"Fprtvxz~AC1DG_F`bdfjlprt
uvxz{[
]M3b"G~@BDFHLNP1QTlSmoqswy}A
BCEGH[
]M3b"um]cfoqCNP^`LOVXfiSV`bprz|@UAhBDMNNPYBZ\effhlGmoqsuw{}1@C[B\^`bfhlnp
qrtvw[
]M3b"um]cfoqCNP^`LOVXfiSUfhgirNsu~BAJfKMQGRTVXZ\`bd1eh@gACEGKMQSU
VWY[\[
]M3b"dBPRUACE1FIaHbdfhlnrtv
wxz|}[
]M3bCRTBjAknTmUWDGlnVY_aoqsu~XB	H	J	X	Z	\	^	`	A	a	Fb	1c	f	q
e	r
t
v
x
|
~
BDF
GHJLM[
]M3b"dBPRTXZ\0]`x_y{}ALN\^JMTVdgxfy{DLEGP@QSWY[
\]_ab[
]M3b"dBPRTXZ\0]`x_y{}ALN\^JMTVdgQSdfegpLqs|@}CEG
HIKMN[
]M3b"dBPRTXZ\0]`x_y{}ALN\^JMTVdgQT]_mp{}KMy|CESV@CMO]_gimBnUoqz{{}FoGIRSSfTV_L`bk@lnrtv
wxz|}[ 
ZR6M5NPRTVWXZ\]!["
ZR7J6KMOQS
TUWYZ#[$
Z.Z-[]_bza{}BD
EFHJK%[&
]M3b"dBPRTXZ\0]aa`bdfhlnrtv
wxz|}'[(
X|&K%LMNPRS)[*
X|&M%NPsuyz{}A+[,
X|w?fiP?QS]'^&_aGIM
NOQST-[.
X|w?fiP?QS]'^&_aGIM
NOQST/[0
X|v|>ehO>PR\']&^`FHL
MNPRS1[2
[-)PS^`mpZ]dfsvFuGIR\SU^S_aegh
ijlno3[4
[-)PS^`mpZ]dfsv_arusu~\AJSKMQST
UVXZ[5[6
[-)PS^`mpZ]dfsv_bkm{~IKY[GJQSadNQ[]kmuw{P|c}HIIKT}UW`aaubdm\npySz|@BC
DEGIJ7[8
ACEF9[:
UM#JLswOvPRTVZ
[\^`a;[<
Wm%KNeMfhjklnpq=[>
T<!GJ`Iacefgikl?[@
T<!GJ`Iaeikwz`cybz|~ed@
ABDFGA[B
T<!GJ`Iaeikwz`cybz}S|TeUdV
WXZ\]C[D
V]&E%FIaHbdh
ijlnoE[F
V]&EGh%ilDkEGK
LMOQRG[H
Wmfm=lp\o]_a&bdh
ijlnoI[J
UL#9":o|^MOSVlUm>n=oqsuw
xy{}~K[L
UL#9":BE[D\]^`bcM[N
Y'=&>/S_bQSWZpYqBrAsuwy{
|}ABO[P
RSUWXQ[R
X}'L&MNOQSTS[T
\=%2V1WYZ[\^`aU[V
X|cU+,b1W[X
GH"MY[Z
"#R([[\
UM#JLswPvQSUW[
\]_ab][^
UM#JLswSvTVXZ^
_`bde_[`
UMG\<cfM<NPZ$[]EH`Gacegk
lmoqra[b
UMG\<cfM<NPZ$[]EH`Gacegk
lmoqrc[d
UMFL;beL;MOY$Z\DG_F`bdfj
klnpqe[f
V]^]Wl^EGn]oqzE{NQXZgjRT~iAKPLNy{}@~A}B%C
DEGIJg[h
V]Z@fiOSbdMOwy{}~RBQS|~fiQhRTUAVQW%X
YZ\^_i[j
V]Z@fiOSbeln|hjS~TV`dacKMOQRRSQT%U
VWY[\k[l
V]Y
?eix{bdLOwNxz{i|h}%~
@BDEm[n
V]Y
?eix|CERU|~fTgis{tv^`bdeifhg%h
ijlnoo[p

k2r4QSUWY]_a5bfru{}JMTVcfln{}lnprteuLvtwexz|~BDHJL
MNPRSq[r

s["b$PRTVX\^`4aeoq}@ikSVUUVYTXUW[e\d]_acgimoq
rsuwxs[t

k2r4QSUWY]_a5bfqtADeCfihhikofpeqsuw{}ACE
FGIKLu[v
V]V]TCh<imsvBEhDilOkPmQSxly%z
{|~@Aw[x
V]UMYW\^jnQSvmwWxzC=DFk<l%m
noqsty[z

k2r4QSUWY]_a5bfln{IKXZ@DSU~@hjlnoCpBq~rfsetvxz~@DFH
IJLNO{[|
]M3b"dBPRTXZ\0]`w_x|fioq}ikmoqhru{}IKux[w\^`ta{bdhjnpr
stvxy}[~

k2r4QSUWY]_a5be}d~BlouwCEoqsuwnx{ACOQ{~a}bdfzgAhjnptvx
yz|~[@
ZR6M5NQ{EGSUACEG~HKQS_aKNqMrtvJwQxz|
}~@BCA[B
]M3b"dBPRTXZ\0]`w_x}CERT}AOQ^`FJY[DFnprtuIvHw@xy{}|~{AEGKMO
PQSUVC[D
]M3b"dBPRTXZ\0]`w_x||{}CEIKM
NOQSTE[F

NOQSTG[H
]M3?e>fhjlprtvxz~AC1DG_F`bdfjlprt
uvxz{I[J
]M3?e>figimoqsuw{}1@C[B\^`bfhlnp
qrtvwK[L
]M3?e>fjRiSUY\DFn[orvx|q}CEG1HKcJdfhjnptvx
yz|~M[N
]M3?e>fjRiSUY\DFn[orvx|q}lnp1qtLsMOQSWY]_a
bceghO[P
]M3?e>fhjlprtvxz~BeAf1gjBiCEGIMOSUW
XY[]^Q[R
]M3?e>fjRT|i}CEGIKMQSF1GJbIcegimosuw
xy{}~S[T
]M3?e>fjRiSUY\D[EHmGnptwZ\AvB1CF^E_aceikoqs
tuwyzU[V
]M3?e>fjRiSUY\D[EHLGMOSVy{`Ua1be}d~@BDHJNPR
STVXYW[X
]M3?e>fjRiSUY\D[EHmGnp]`CEj_k1loGnHJLNRTXZ\
]^`bcY[Z
]M3?e>fjRiSUY\D[EHLGMO|bdI~J1KNfMgikmqswy{
|}AB[[\
[-)PRTV
ABDFG][^
[-)PSwRx{e
fgikl_[`
[-)PSEHOQ_a`bkGl
mnprsa[b
[-)PSlovxFHGIRnS
TUWYZc[d
[-)PT]_lnqt{~LOy{eNfhqtrTsu[]S@CJLZ\[]fBg
hikmne[f
ZR6N5OQSVzU{|}@BCg[h
ZR6N5OQSVH
IJLNOi[j
ZR6N5OQSVo
pqsuvk[l
ZR6N5OQSW`boqtw~AOR|~hQiktwuWvx^`BVC
DEGIJm[n
]M3b"dBPRTXZ\0]`x_y{}@DFJMqLr
stvxyo[p
]M3b"dBPRTXZ\0]`x_y{}@DFJL}
~ACDq[r
]M3b"dBPRTXZ\0]`x_y{}@DFJLd
efhjks[t
]M3b"dBPRTXZ\0]`x_y{}@DFJNWYfhknuwDGqs]F^`imjMkmSUwLx
yz|~u[zUVW$6$
,3Y\B3CDE$B$\	$
-+r2tRTSU)VXAB$'J&KNqMrst
$b"-.$|&L%MNO$'J&KNsMtuv$
M+QUdgNPx{czdfgUhTijk$
/UYhkRT|g~hjkYlXmno$
MG\DjmSDTV_,`dsv}MPy{dOegqurt\^`bccdbefg$
MG\DjmSDTV_,`dsv}MPy{dOegqurt\^`bccdbefg$
MG\DjmSDTV_,`dsv|~LOxzcNdfpuqs[]_abccbdef$	=7LCilRCSU^+_cru|~LOxzcNdfptqs[]_abbcadef$ 	=7LCilRCSU^+_cru|~LOxzcNdfptqs[]_abbcadef!$"	=7LCilRCSU^+_cru{}KNwybMceotprZ\^`abbacde#$$
HnqWHXZc0dhwzACQT}hSikuyvx`bdfgghfijk%$&
HnqWHXZc0dhwzACQT}hSikuyvx`bdfgghfijk'$(
HnqWHXZc0dhwz@BPS|~gRhjtyuw_acefggfhij)$*	<)LwX_N`dGIlcmno+$,
'MPlortn@AB-$.
'MQZ\hkqsCfhKBLNWkXZcQdPegijk/$0
'MQ_anqW[jlSU}ACDZEYFQGPHJLMN1$253$4;5$6d7$8N9$:7;$<'VXabc=$>b)45?$@(WYbcdA$B(WYbcdC$Dr956E$F
(UXDWEGIJKG$Jr>