HEX
Server: Apache
System: Linux zacp120.webway.host 4.18.0-553.50.1.lve.el8.x86_64 #1 SMP Thu Apr 17 19:10:24 UTC 2025 x86_64
User: govancoz (1003)
PHP: 8.3.26
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: //proc/thread-self/root/usr/local/lib/python3.7/test/__pycache__/test_ast.cpython-37.pyc
B

��g0��E@s�
ddlZddlZddlZddlZddlZddlZddlmZddlm	Z	dd�Z
dddd	d
ddd
ddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:g5Zd;gZdd<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRgZ
GdSdT�dTej�ZGdUdV�dVej�ZGdWdX�dXej�ZGdYdZ�dZej�ZGd[d\�d\ej�Zd]d^�Zd_d`gfd_dagfd_dbdcdddegdggdgfdfggdfgfd_dbdcdddegdggdgfdgggdfgfd_dbdcdddedhgdggdgfdiggdfgfd_dbdcdddedhgdggddjgfdkggdfgfd_dbdcdddegdlggdgfdmggdfgfd_dbdcdddegdggdngfdoggdfgfd_dbdcdddedhdpdqdrdsgdtdugdvgdwdxdydzd{gd|fd}d~ggfgfdggdfgfd_d�dcd�ggd�ggfgfd_d�dcd�ggd�ggfgfd_d�dcd�d�ggdoggfgfd_dbdcdddegdggdgfd�ggdfgfd_d�dcd�gfgfd_d�dcd�gd�fgfd_d�gfd_d�dcd�d�d�ggfgfd_d�dcd�d�ggfgfd_d�dcd�d�ggfgfd_d�dcd�d�gd�d�d�d�ggfgfgfd_d�dcd�d�gd�d�d�d�gd�gfgfgfd_d�dcd�gd�gfgfd_d�dcd�d�gd�gfgfd_d�dcd�d�d�d�ggfdfgfd_d�dcd�gd�d�d�dd�gfgggfgfd_d�dcd�gggd�gfgfd_d�gfd_d�dcd�gfgfd_d�dcd�d�gdfgfd_d�dcdLgfgfd_d�gfd_d�gfd_d�dcd�d�d�ggfgfd_d�dcd�d�d�ggfgfd_d�dcd�d�d�d�gd�fd�dmggfgfd_d�dcd�d�d�d�d�d�gd|fd�d�d�d�d�gd�fd�gdfgffgfd_d�dcd�d�d�d�d�d�gd|fd�d�d�d�d�gd�fd�gdfgffgfd_d�dcd�d�d�d�d�d�gd|fd�d�d�d�d�gd�fd�gdfgffgfd_d�dcd�d�d�d�d�d�gd|fd�d�d�d�d�gd�fd�gdfgffgfd_d�dcd�dcd�d�d�d�d�gdfd�d�d�d�gdfgffgfd_d�dcd�dcd�d�d�d�d�d�d�gd�fd�gdfgffgfd_d�dcd�dcd�d�d�d�d�gdfgffgfd_d�dcd�dcd�d�d�d�d�d�gd�fd�gdfgffgfd_d�dcdddegdggdgfd�d�d�d�d�d�d�d�ggfffggdfgfd_d�dcdddegdggdgfd�d�d�d�d�gd�gfggdfgfd_d�dcdddegdggdgfd�d�d�gd�gfggdfgfd_d�dcd}dcdd�gd}d�d�gd�gfd�gffgfd_d�dcd�dcd�d�d�d�d�d�gfd|fd�gffgfd_d�dcdddegdggdgfd�d�d�d�d�d�d�d�gd�fgffggdfgfd_dbdcdddegdggdgf�dg�dd�d�dggfd�d�d�dggfgdfgfd_d�dcdddegdggdgf�dg�dd�d�dggfd�d�d�dggfgdfgfd_d�dcd�gg�dg�dd�d�dggfd�d�d�dggfgfgfd_dbdcdddegdggdgf�dgd�d��dd�d��dd�dƐd	gdfgfggfgdfgfg5Z�d
�dgfgZ�d�d
�ddc�d�d�dgff�d�d�d
�ddcdegdggdgf�dff�d
d}dc�dg�dgff�d
d}dcggff�d
d�dc�dgff�d
d}dc�dg�dgff�d
d�d�d�d��d�d�dgdfgff�d
d�d�d�d��d�d�dgdfgff�d
�ddc�d�d �d g�d�d!gff�d
d�dc�d"�d�d�d#g�d$�d%gff�d&�d'�d(�d)�d*�d
dzdc�d+�d,�d-gd|ff�d
dzdcgd|ff�d
d�dc�d�d.�d/gd|ff�d
d�d��d+�d,�d-gd|ff�d
d�dcgd|ff�d
d�dc�d0�d1ggffgZe�dS(2�N)�dedent)�supportcCs�|dkst|tttf�r|St|t�r4dd�|D�S|jjg}t|d�rdt|d�rd|�|j	|j
f�|jdkrvt|�Sx"|jD]}|�t
t||���q~Wt|�S)NcSsg|]}t|��qS�)�to_tuple)�.0�err�)/usr/local/lib/python3.7/test/test_ast.py�
<listcomp>szto_tuple.<locals>.<listcomp>�lineno�
col_offset)�
isinstance�str�int�complex�list�	__class__�__name__�hasattr�appendr
r�_fields�tupler�getattr)�t�result�frrrrs


r�Nonez'module docstring'z
def f(): passzdef f(): 'function docstring'zdef f(a): passzdef f(a=0): passzdef f(*args): passzdef f(**kwargs): passzGdef f(a, b=1, c=None, d=[], e={}, *args, f=42, **kwargs): 'doc for f()'zclass C:passz class C: 'docstring for class C'zclass C(object): passzdef f():return 1zdel vzv = 1zv += 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:
  passzassert vz
import syszfrom sys import vzglobal v�1�passzfor v in v:breakzfor v in v:continuezfor a,b in c: passz[(a,b) for a,b in c]z((a,b) for a,b in c)z((a,b) for (a,b) in c)zL(
    (
    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(): passz1+2za and bza + bznot vzlambda:Nonez{ 1:2 }z{}z{None,}z&{
      1
        :
          2
     }z[a for b in c if d]z(a for b in c if d)z	1 < 2 < 3zf(1,2,c=3,*d,**e)Z10z'string'za.bza[b:c]�vz[1,2,3]z[]z1,2,3z(1,2,3)z()za.b.c.d(a.b[1:2])c@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zejd'd(��Zd)S)*�	AST_TestscCs�t|tj�r|jdkrdSt|tjtjtjf�rV|j|jf}|�	||k�|j|jf}xR|jD]H}t
||�}t|t�r�x.|D]}|�||�q|Wq^|dk	r^|�||�q^WdS)N)
r�ast�ASTr�expr�stmtZ
excepthandlerr
r�
assertTruerr�_assertTrueorder)�selfZast_nodeZ
parent_posZnode_pos�name�valueZchildrrrr%�s


zAST_Tests._assertTrueorderc	Cs|t��}|�|jd�d|_|�|jd�|�|jdd�|�t��|jWdQRX|�t	��t�d�WdQRXdS)Nr�*�foobar�)
r r!�assertEqualrr*�__dict__�assertRaises�AttributeError�vararg�	TypeError)r&�xrrr�test_AST_objects�szAST_Tests.test_AST_objectscCsLGdd�d�}t��}|�|_||j_t�|j�}~t��|�|��dS)Nc@seZdZdS)z0AST_Tests.test_AST_garbage_collection.<locals>.XN)r�
__module__�__qualname__rrrr�X�sr6)	r r!r2�a�weakref�refrZ
gc_collect�assertIsNone)r&r6r7r9rrr�test_AST_garbage_collection�sz%AST_Tests.test_AST_garbage_collectioncCs�x�ttdfttdfttdffD]�\}}}x�t||�D]v\}}|jd|d��2t|d|t	j
�}|�t|�|�|�
|d�WdQRX|jd||d	��t|d|�WdQRXq4WqWdS)
N�exec�single�evalZparsing)�action�input�?)rrZ	compiling)r?r@�kind)�
exec_tests�exec_results�single_tests�single_results�
eval_tests�eval_results�zip�subTest�compiler �
PyCF_ONLY_ASTr,rr%)r&r@�outputrB�i�oZast_treerrr�
test_snippets�s
zAST_Tests.test_snippetscCs<t�d�jdjj}|�|j�|�|j�|�|j�dS)Nzx[::]r)	r �parse�bodyr(�slicer:�upper�lower�step)r&Zslcrrr�
test_slice
szAST_Tests.test_slicecCs t�d�jd}|�|j�dS)Nzfrom . import yr)r rQrRr:�module)r&Zimrrr�test_from_importszAST_Tests.test_from_importcCs>t�d�}|�|jdtj�d��|jd_t|dd�dS)Nzfrom __future__ import divisionrz __future__ z<test>r<)r rQZassertIsInstancerR�
ImportFrom�striprXrK)r&�modrrr�!test_non_interned_future_from_asts
z+AST_Tests.test_non_interned_future_from_astcCs||�ttjtj��|�ttjtj��|�ttjtj��|�ttjtj��|�ttjtj��|�ttj	tj��dS)N)
r$�
issubclassr �Forr#�Namer"r!�
comprehensionZGt)r&rrr�test_base_classesszAST_Tests.test_base_classescCs^xXtj��D]J\}}t|t�r|dkr|d��r|�}t|tj�r|�t|j�t	�qWdS)Nr!r)
r r-�itemsr�type�isupperr!r,rr)r&r'�itemr2rrr�test_field_attr_existence"s
z#AST_Tests.test_field_attr_existencec	CsTt��}|�|jd�|�t��|jWdQRXtjtdd��}|�|jd�dS)N)�argsr0�
kwonlyargs�kw_defaults�kwarg�defaults��r+)r �	argumentsr,rr.r/r0�range)r&r2rrr�test_arguments)szAST_Tests.test_argumentscCs t��}d|_|�|jd�dS)Ni�)r �Numrr,)r&r2rrr�test_field_attr_writable4sz"AST_Tests.test_field_attr_writablec	Cst��}|�|jd�|�t��|jWdQRXt�d�}|�|jd�|�t��|jWdQRX|�t��|jWdQRXtjdd�}|�|jd�tjddd�}|�|jd�|�|jd�|�|jd�|�t	tjdd�|jt	tjdddd�dS)N)�nr)r+)r
rrm)
r rrr,rr.r/rtr
r*r1)r&r2rrr�test_classattrs:s$
zAST_Tests.test_classattrscCs(t�d�g}t�|�}|�|j|�dS)Nr))r rr�Moduler,rR)r&rRr2rrr�test_moduleUs
zAST_Tests.test_modulec	Cs�t��}|�|jd�d|_|�|jd�t�d�}t�d�}t��}t�|||�}|�|j|�|�|j|�|�|j	|�t�ddd�}|�|jd�|�|jd�|�|j	d�tjddddd�}|�|jd�|�|jd�|�|j	d�|�|j
d�|�ttjdddd�|jttjdddddd�tjddddd	�}|�|jd�|�|jd�|�|j	d�|�|j
d�tjdddd
d�}|�|jd
�dS)N)�left�op�right�rm�r+r)r
�)rxryrzr
r))�	foobarbaz)
r �BinOpr,rr~rr�Addrxryrzr
r.r1)r&r2Zn1Zn3Zaddoprrr�test_nodeclassesZs:

zAST_Tests.test_nodeclassescCst��}|�|jd�dS)Nr)r ZSubr,r)r&r2rrr�test_no_fields�szAST_Tests.test_no_fieldsc		Cs�ddl}|g}yddl}|�|�Wntk
r8YnXdddg}xX|D]P}xJ|D]B}x<dd�tD�D]*}|�|�||��}|�t|�t|��qhWqTWqJWdS)Nrrmr+css|]}t|ddd�VqdS)rAr<iN)rK)rrNrrr�	<genexpr>�sz*AST_Tests.test_pickling.<locals>.<genexpr>)	�pickle�cPickler�ImportErrorrC�loads�dumpsr,r)	r&r�Zmodsr�Z	protocolsr\Zprotocolr Zast2rrr�
test_pickling�s


zAST_Tests.test_picklingc	Csbtddd�}t�tjtjf|�f|�g�}|�t��}t|dd�WdQRX|�dt	|j
��dS)Nr+r|)r
rz<test>r<zbut got <_ast.expr)�dictr rv�Exprr"r.r1rK�assertInr
�	exception)r&�pos�m�cmrrr�test_invalid_sum�s
zAST_Tests.test_invalid_sumc	Cs`t�t�t�dt����g�}t�|�|�t��}t|dd�WdQRX|�	dt
|j��dS)Nr)z<test>r<zidentifier must be of type str)r rvr�r`�Load�fix_missing_locationsr.r1rKr�r
r�)r&r�r�rrr�test_invalid_identitifer�s

z"AST_Tests.test_invalid_identitiferc	CsVt�d�}d|jdjdj_|�t��}t|dd�WdQRX|�dt|j	��dS)Nzdef f():
 yield from g()rz<test>r<zfield value is required)
r rQrRr(r.�
ValueErrorrKr�r
r�)r&Zempty_yield_fromr�rrr�test_empty_yield_from�s

zAST_Tests.test_empty_yield_fromc	Cs>ddl}dd�}t�|d|��|�ttjd�WdQRXdS)NrcWsdS)Nr)rhrrr�
bad_normalize�sz0AST_Tests.test_issue31592.<locals>.bad_normalize�	normalizeuϕ)�unicodedatarZ	swap_attrr.r1r rQ)r&r�r�rrr�test_issue31592�szAST_Tests.test_issue31592N)rr4r5r%r3r;rPrWrYr]rbrgrqrsrurwr�r�r�r�r�r�r�cpython_onlyr�rrrrr�s(,rc@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#S)$�ASTHelpers_TestcCs6t�d�}tdddtj�}|�t�|�t�|��dS)Nz
foo(1 + 1)z	<unknown>r<)r rQrKrLr,�dump)r&r7�brrr�
test_parse�s
zASTHelpers_Test.test_parsecCsTyddWnBtk
rN|�t��}t�d�WdQRX|�|jj�YnXdS)Nrmrz'\U')�	Exceptionr.�SyntaxErrorr �literal_evalZassertIsNotNoner��__context__)r&rrrr�test_parse_in_error�sz#ASTHelpers_Test.test_parse_in_errorcCsLt�d�}|�t�|�d�|�tj|dd�d�|�tj|dd�d�dS)	Nzspam(eggs, "and cheese")z�Module(body=[Expr(value=Call(func=Name(id='spam', ctx=Load()), args=[Name(id='eggs', ctx=Load()), Str(s='and cheese')], keywords=[]))])F)�annotate_fieldszYModule([Expr(Call(Name('spam', Load()), [Name('eggs', Load()), Str('and cheese')], []))])T)�include_attributesaModule(body=[Expr(value=Call(func=Name(id='spam', ctx=Load(), lineno=1, col_offset=0), args=[Name(id='eggs', ctx=Load(), lineno=1, col_offset=5), Str(s='and cheese', lineno=1, col_offset=11)], keywords=[], lineno=1, col_offset=0), lineno=1, col_offset=0)]))r rQr,r�)r&�noderrr�	test_dump�s
zASTHelpers_Test.test_dumpcCs�tjddd�}|�t�|�d�|�tj|dd�d�tjtjdt��d	�ddd
�}|�t�|�d�|�tj|dd
�d�|�tj|dd�d�|�tj|ddd�d�tjtjdt��d	�d�}|�t�|�d�|�tj|dd
�d�dS)Nr|r})r
rzRaise()T)r�zRaise(lineno=3, col_offset=4)r)�idZctx)�excr
rz#Raise(exc=Name(id='e', ctx=Load()))F)r�zRaise(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()))zRaise(cause=Name('e', Load())))r �Raiser,r�r`r�)r&r�rrr�test_dump_incomplete�s&z$ASTHelpers_Test.test_dump_incompletecCsBtjddd�}t�t�d�|jj�|j_|�tj|dd�d�dS)Nz1 + 1r>)�moder+T)r�z�Expression(body=BinOp(left=Num(n=1, lineno=1, col_offset=0), op=Add(), right=Num(n=2, lineno=1, col_offset=4), lineno=1, col_offset=0)))r rQ�
copy_locationrrrRrzr,r�)r&�srcrrr�test_copy_location�sz"ASTHelpers_Test.test_copy_locationcCsft�d�}|j�t�t�t�dt���t�d�gg���|�	|t�
|��|�	tj|dd�d�dS)Nz
write("spam")�spamZeggsT)r�a|Module(body=[Expr(value=Call(func=Name(id='write', ctx=Load(), lineno=1, col_offset=0), args=[Str(s='spam', lineno=1, col_offset=6)], keywords=[], lineno=1, col_offset=0), lineno=1, col_offset=0), Expr(value=Call(func=Name(id='spam', ctx=Load(), lineno=1, col_offset=0), args=[Str(s='eggs', lineno=1, col_offset=0)], keywords=[], lineno=1, col_offset=0), lineno=1, col_offset=0)]))r rQrRrr��Callr`r��Strr,r�r�)r&r�rrr�test_fix_missing_locationss
z*ASTHelpers_Test.test_fix_missing_locationscCs|tjddd�}|�tj|dd�|�|�tj|dd�d�tjddd�}|�tj|jdd�|j�|�tj|dd�d�dS)	Nz1 + 1r>)r�r|)rtT)r�z�Expression(body=BinOp(left=Num(n=1, lineno=4, col_offset=0), op=Add(), right=Num(n=1, lineno=4, col_offset=4), lineno=4, col_offset=0)))r rQr,Zincrement_linenor�rR)r&r�rrr�test_increment_linenosz%ASTHelpers_Test.test_increment_linenocCsHtjddd�}tt�|j��}|�|�d�jd�|�|ggd��dS)Nzfoo()r>)r��func�foo)�keywordsrh)r rQr�Ziter_fieldsrRr,�popr�)r&r��drrr�test_iter_fields$sz ASTHelpers_Test.test_iter_fieldscCs�tjddd�}|�ttt�|j���d�t�|j�}|�t|�jd�|�t|�j	d�|�t|�j	d�|�t�
t|��d�dS)	Nzspam(23, 42, eggs='leek')r>)r�r}r��r)z(keyword(arg='eggs', value=Str(s='leek')))r rQr,�lenrZiter_child_nodesrR�nextr�rtr�)r&r��iteratorrrr�test_iter_child_nodes*sz%ASTHelpers_Test.test_iter_child_nodescCs�t�d�}|�t�|�d�t�d�}|�t�|jd�d�t�d�}|�t�|jd�d�t�d�}|�t�|jd�d�dS)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)r rQr,�
get_docstringrR)r&r�rrr�test_get_docstring5s



z"ASTHelpers_Test.test_get_docstringcCs.|�t�t�d���t�d�}|�t�|��t�d�}|�t�|��t�d�}|�t�|jd��t�d�}|�t�|jd��t�d�}|�t�|jd��t�d�}|�t�|jd��t�d�}|�t�|jd��t�d	�}|�t�|jd��t�d
�}|�t�|jd��dS)N�zx = "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")r:r r�rQrR)r&r�rrr�test_get_docstring_noneEs&








z'ASTHelpers_Test.test_get_docstring_nonecCs:t�d�}|jdjd}|�|jd�|�|jd�dS)Nz if a:
    pass
elif b:
    pass
rr|)r rQrR�orelser,r
r)r&r��	elif_stmtrrr�test_elif_stmt_start_position]s
z-ASTHelpers_Test.test_elif_stmt_start_positioncCs:t�d�}|jdjd}|�|jd�|�|jd�dS)Nz/if a:
    pass
elif b:
    pass
else:
    pass
rr|)r rQrRr�r,r
r)r&r�r�rrr�'test_elif_stmt_start_position_with_elsecs
z7ASTHelpers_Test.test_elif_stmt_start_position_with_elsecCs0|�t�d�dddg�|�t�d�ddi�|�t�d�d	�|�t�d
�dddh�|�t�d�d�|�ttjd
�|�t�d�d�|�t�d�d�|�t�d�d�|�t�d�d�|�t�d�d�|�t�d�d�|�tt�d��d�|�ttjd�|�ttjd�|�ttjd�dS)Nz	[1, 2, 3]rmr+r|z{"foo": 42}r�r)z(True, False, None))TFNz	{1, 2, 3}zb"hi"shizfoo()�6�z+6z-6i����z3.25g
@z+3.25z-3.25g
�z-0.0z++6z+Truez2+3)r,r r�r.r��repr)r&rrr�test_literal_evalis z!ASTHelpers_Test.test_literal_evalcCs>|�t�d�d�|�t�d�d�|�t�d�d�|�t�d�d�|�t�d	�d
�|�t�d�d�|�t�d
�d�|�t�d�d�|�t�d�d�|�t�d�d�|�t�d�d�|�t�d�d�|�t�d�d
�|�ttjd�|�ttjd�|�ttjd�|�ttjd�|�ttjd�dS)NZ6jy@z-6jy��z6.75jy@z-6.75jy��z3+6jy@@z-3+6jy�@z3-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+3jz3+-6jz3+(0+6j)z-(3+6j))r,r r�r.r�)r&rrr�test_literal_eval_complex{s$z)ASTHelpers_Test.test_literal_eval_complexc	Csbtjdtjdd�gdddd�g}t�|�}|�t��}t|dd�WdQRX|�dt|j	��dS)N�time�sleep)r')rX�names�levelr
r�testr<zinvalid integer value: None)
r rZ�aliasrvr.r�rKr�r
r�)r&rRr\r�rrr�test_bad_integer�s
z ASTHelpers_Test.test_bad_integercCsTtjdtjdd�gdddd�g}t�|�}t|dd�}i}t||�|�d|�dS)Nr�r�)r'r)rXr�r�r
rr�r<)r rZr�rvrKr<r�)r&rRr\�code�nsrrr�test_level_as_none�s

z"ASTHelpers_Test.test_level_as_noneN)rr4r5r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr��s"	r�c@s�eZdZd`ed�dd�Zdaed�dd�Zdbdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zd,d-�Zd.d/�Zd0d1�Zd2d3�Zd4d5�Zd6d7�Zd8d9�Zd:d;�Zd<d=�Z d>d?�Z!d@dA�Z"dBdC�Z#dDdE�Z$dFdG�Z%dHdI�Z&dJdK�Z'dLdM�Z(dNdO�Z)dPdQ�Z*dRdS�Z+dTdU�Z,dVdW�Z-dXdY�Z.dZd[�Z/d\d]�Z0d^d_�Z1dS)c�ASTValidatorTestsNr<)r�c	CsVd|_|_t�|�|�|��}t|d|�WdQRX|dk	rR|�|t|j��dS)Nrz<test>)	r
rr r�r.rKr�r
r�)r&r\�msgr�r�r�rrrr\�s
zASTValidatorTests.modcCs&t�t�|�g�}|j|||d�dS)N)r�)r rvr�r\)r&r�r�r�r\rrrr"�szASTValidatorTests.exprcCst�|g�}|�||�dS)N)r rvr\)r&r#r�r\rrrr#�szASTValidatorTests.stmtc	CsTt�t�t�dt����g�}|�|dd�t�t�dt����}|�|dd�dS)Nr2zmust have Load contextr=r>)r �Interactiver�r`�Storer\�
Expression)r&r�rrrrw�szASTValidatorTests.test_modulec	sd�fdd�	}t�dt�dt����g}|||d�d�|||d�d�||t�d�gd�d	�||t�d
�gd�d�t�dt�dt����g}|||t�dt���gd
�d�t�dt�dt����t�dt�dt����g}|||dt�dt���gd�d�dS)NcsL|dkrg}|dkrg}|dkr$g}|dkr0g}t�||||||�}�|�S)N)r ro)rhr0rirkrlrj)�facrrro�sz5ASTValidatorTests._check_arguments.<locals>.argumentsr2)rhzmust have Load context)rir|)rlz"more positional defaults than argsr})rjz3length of kwonlyargs is not the same as kw_defaults)rhrlr7r��y)rirj)NNNNNN)r �argr`r�rrr�)r&r�Zcheckrorhr)r�r�_check_arguments�s$z"ASTValidatorTests._check_argumentscCs�t�gdggdg�}t�d|ggd�}|�|d�t�d|t��gt�dt���gd�}|�|d�t�d|t��ggt�dt����}|�|d�dd�}|�||j�dS)Nr2zempty body on FunctionDefzmust have Load contextcSst�d|t��ggd�S)Nr2)r �FunctionDef�Pass)rhrrrr��sz+ASTValidatorTests.test_funcdef.<locals>.fac)r ror�r#r�r`r�r�)r&r7rr�rrr�test_funcdef�s zASTValidatorTests.test_funcdefcCs�ddd�}|�|t�dt���gd�d�|�|t�dt�dt����gd�d�|�|gd�d�|�|dgd�d	�|�|t�dt���gd
�d�dS)NcSsH|dkrg}|dkrg}|dkr*t��g}|dkr6g}t�d||||�S)NZmyclass)r r��ClassDef)�basesr�rR�decorator_listrrr�cls�s

z,ASTValidatorTests.test_classdef.<locals>.clsr2)r�zmust have Load context)r�)rRzempty body on ClassDefzNone disallowed)r�)NNNN)r#r r`r��keyword)r&r�rrr�
test_classdef�s
"zASTValidatorTests.test_classdefc	CsJ|�t�g�d�|�t�dg�d�|�t�t�dt���g�d�dS)Nzempty targets on DeletezNone disallowedr2zmust have Del context)r#r �Deleter`r�)r&rrr�test_deleteszASTValidatorTests.test_deletec
Cs�|�t�gt�d��d�|�t�dgt�d��d�|�t�t�dt���gt�d��d�|�t�t�dt���gt�dt����d�dS)Nr|zempty targets on AssignzNone disallowedr2zmust have Store contextr�zmust have Load context)r#r �Assignrrr`r�r�)r&rrr�test_assigns"zASTValidatorTests.test_assignc	Cspt�t�dt���t��t�dt����}|�|d�t�t�dt���t��t�dt����}|�|d�dS)Nr2r�zmust have Store contextzmust have Load context)r �	AugAssignr`r�r�r#r�)r&Zaugrrr�test_augassignsz ASTValidatorTests.test_augassignc
Cs�t�dt���}t�dt���}t��}|�t�||gg�d�|�t�t�dt���||gg�d�|�t�|t�dt���|gg�d�t�t�dt����}|�t�|||gg�d�|�t�|||g|g�d�dS)Nr2r�zempty body on Forzmust have Store contextzmust have Load context)r r`r�r�r�r#r_r�)r&r2r��prrrr�test_fors  zASTValidatorTests.test_forc
Cs~|�t�t�d�gg�d�|�t�t�dt���t��gg�d�|�t�t�d�t��gt�t�dt����g�d�dS)Nr|zempty body on Whiler2zmust have Load context)r#r �Whilerrr`r�r�r�)r&rrr�
test_while%s"zASTValidatorTests.test_whilecCs�|�t�t�d�gg�d�t�t�dt���t��gg�}|�|d�t�t�d�t�t�dt����gg�}|�|d�t�t�d�t��gt�t�dt����g�}|�|d�dS)Nr|zempty body on Ifr2zmust have Load context)r#r �Ifrrr`r�r�r�)r&rNrrr�test_if-s (zASTValidatorTests.test_ifcCs�t��}|�t�g|g�d�t�t�d�d�}|�t�|gg�d�t�t�dt���d�}|�t�|g|g�d�t�t�d�t�dt����}|�t�|g|g�d�dS)Nzempty items on Withr|zempty body on Withr2zmust have Load contextzmust have Store context)	r r�r#�With�withitemrrr`r�r�)r&r�rNrrr�	test_with7szASTValidatorTests.test_withcCspt�dt�d��}|�|d�t�t�dt���d�}|�|d�t�t�d�t�dt����}|�|d�dS)Nr|z!Raise with cause but no exceptionr2zmust have Load contextr})r r�rrr#r`r�)r&�rrrr�
test_raiseAszASTValidatorTests.test_raisecCsxt��}t�ggg|g�}|�|d�t�t�t�dt����ggg|g�}|�|d�t�|gggg�}|�|d�t�|gg|g|g�}|�|d�t�|gt�ddg�ggg�}|�|d�t�t�dt���d|g�g}|�t�|g|gg�d�t�dd|g�g}t�|g|t�t�dt����g|g�}|�|d�t�|g||gt�t�dt����g�}|�|d�dS)Nzempty body on Tryr2zmust have Load contextz-Try has neither except handlers nor finalbodyz%Try has orelse but no except handlerszempty body on ExceptHandlerr�)r r��Tryr#r�r`r��
ExceptHandler)r&r�rrrrr�test_tryIs$&((zASTValidatorTests.test_tryc	CsT|�t�t�dt���d�d�t�t�dt���t�dt����}|�|d�dS)Nr2zmust have Load contextr�)r#r �Assertr`r�r�)r&Zassrtrrr�test_assert]s
zASTValidatorTests.test_assertcCs|�t�g�d�dS)Nzempty names on Import)r#r �Import)r&rrr�test_importdszASTValidatorTests.test_importcCs>t�dt�dd�gd�}|�|d�|�t�dgd�d�dS)Nr2i���zNegative ImportFrom levelrzempty names on ImportFrom)r rZr�r#)r&Zimprrr�test_importfromgsz!ASTValidatorTests.test_importfromcCs|�t�g�d�dS)Nzempty names on Global)r#r �Global)r&rrr�test_globallszASTValidatorTests.test_globalcCs|�t�g�d�dS)Nzempty names on Nonlocal)r#r ZNonlocal)r&rrr�
test_nonlocaloszASTValidatorTests.test_nonlocalcCs&t�t�dt����}|�|d�dS)Nr2zmust have Load context)r r�r`r�r#)r&rrrr�	test_exprrszASTValidatorTests.test_exprc	Cs�t�t��g�}|�|d�t�t��t�d�g�}|�|d�t�t��t�d�dg�}|�|d�t�t��t�d�t�dt���g�}|�|d�dS)Nzless than 2 valuesr|r}zNone disallowedr2zmust have Load context)r �BoolOp�Andr"rrr`r�)r&r�rrr�test_boolopvs&zASTValidatorTests.test_boolopcCs,t�t��t�dt����}|�|d�dS)Nr2zmust have Load context)r �UnaryOp�Notr`r�r")r&�urrr�test_unaryop�szASTValidatorTests.test_unaryopc
CsNt�gdggdg�}|�t�|t�dt����d�dd�}|�||j�dS)Nr2zmust have Load contextcSst�|t�dt����S)Nr2)r �Lambdar`r�)rhrrrr��sz*ASTValidatorTests.test_lambda.<locals>.fac)r ror"rr`r�r�)r&r7r�rrr�test_lambda�s
zASTValidatorTests.test_lambdacCs\t�dt���}t�dt���}x6|||f|||f|||ffD]}|�tj|�d�q>WdS)Nr2r�zmust have Load context)r r`r�r�r"ZIfExp)r&�l�srhrrr�
test_ifexp�s"zASTValidatorTests.test_ifexpcCsRt�gt�dt���g�}|�|d�t�t�dt���gdg�}|�|d�dS)Nr2zsame number of keys as valueszNone disallowed)r �Dictr`r�r")r&r�rrr�	test_dict�szASTValidatorTests.test_dictcCs<|�t�dg�d�t�t�dt���g�}|�|d�dS)NzNone disallowedr2zmust have Load context)r"r �Setr`r�)r&rrrr�test_set�szASTValidatorTests.test_setc	Cs�|�|g�d�t�t�dt���t�dt���gd�}|�||g�d�t�t�dt���t�dt���gd�}|�||g�d�t�dt���}t�dt���}t�||dgd�}|�||g�d�t�||t�dt���gd�}|�||g�d�dS)Nz comprehension with no generatorsr2rzmust have Store contextzmust have Load contextr�zNone disallowed)r"r rar`r�r�)r&r��gr2r�rrr�_check_comprehension�sz&ASTValidatorTests._check_comprehensioncsbt�t�dt���t�dt���gd�}|��t�dt���|g�d��fdd�}|�|�dS)Nr2rzmust have Load contextcs�t�dt���|�S)Nr2)r r`r�)Zgens)r�rr�wrap�sz,ASTValidatorTests._simple_comp.<locals>.wrap)r rar`r�r�r"r)r&r�rrr)r�r�_simple_comp�szASTValidatorTests._simple_compcCs|�tj�dS)N)rr �ListComp)r&rrr�
test_listcomp�szASTValidatorTests.test_listcompcCs|�tj�dS)N)rr �SetComp)r&rrr�test_setcomp�szASTValidatorTests.test_setcompcCs|�tj�dS)N)rr �GeneratorExp)r&rrr�test_generatorexp�sz#ASTValidatorTests.test_generatorexpcCs�t�t�dt���t�dt���gd�}t�t�dt���t�dt���|g�}|�|d�t�t�dt���t�dt���|g�}|�|d�dd�}|�|�dS)Nr�r�rr2zmust have Load contextcSs.t�dt���}t�dt���}t�|||�S)Nr2r�)r r`r��DictComp)�comps�krrrr�factory�sz0ASTValidatorTests.test_dictcomp.<locals>.factory)r rar`r�r�r"r"r)r&r�cr%rrr�
test_dictcomp�szASTValidatorTests.test_dictcompc	Cs@|�t�t�dt����d�|�t�t�dt����d�dS)Nr2zmust have Load)r"r ZYieldr`r�Z	YieldFrom)r&rrr�
test_yield�szASTValidatorTests.test_yieldcCs�t�dt���}t�|t��gg�}|�|d�t�|t��gt�d�t�d�g�}|�|d�t�t�d�t��g|g�}|j|dtd�t�|t��gt�d�g�}|j|dtd�dS)	Nr2zno comparatorsr}r{z,different number of comparators and operandsZblahznon-numeric)r�)r r`r��CompareZInr"rrr1)r&rx�comprrr�test_compare�s$zASTValidatorTests.test_comparecCs�t�dt���}t�dt���g}t�dt�dt����g}t�t�dt���||�}|�|d�t�|dg|�}|�|d�t�dt�dt����g}t�|||�}|�|d�dS)Nr2r��w�zzmust have Load contextzNone disallowed)r r`r�r�r�r�r")r&r�rhr�ZcallZbad_keywordsrrr�	test_call�szASTValidatorTests.test_callcCshGdd�dt�}Gdd�dt�}Gdd�dt�}x2dd|�|�|�fD]}|jt�|�d	td
�qFWdS)Nc@seZdZdS)z*ASTValidatorTests.test_num.<locals>.subintN)rr4r5rrrr�subint�sr/c@seZdZdS)z,ASTValidatorTests.test_num.<locals>.subfloatN)rr4r5rrrr�subfloat�sr0c@seZdZdS)z.ASTValidatorTests.test_num.<locals>.subcomplexN)rr4r5rrrr�
subcomplex�sr1�0Zhelloznon-numeric)r�)r�floatrr"r rrr1)r&r/r0r1�objrrr�test_num�s
zASTValidatorTests.test_numcCs.t�t�dt���dt���}|�|d�dS)Nr2r�zmust have Load context)r �	Attributer`r�r�r")r&�attrrrr�test_attribute�sz ASTValidatorTests.test_attributec
Cs$t�t�dt���t�t�d��t���}|�|d�t�dt���}t�|t�t�dt����t���}|�|d�t�dt���}xH|ddfd|dfdd|ffD](}tj|�}|�t�||t���d�q�Wt�	g�}|�t�||t���d�t�	t�|�g�}|�t�||t���d�dS)Nr2r|zmust have Load contextr�zempty dims on ExtSlice)
r �	Subscriptr`r�ZIndexrrr�r"�SliceZExtSlice)r&�subr2rrh�slrrr�test_subscript�s  

"


z ASTValidatorTests.test_subscriptc	CsNt�t�t�dt���t���gt���}t�|gt�d��}|�|d�dS)Nr2r}zmust have Store context)	r �List�Starredr`r�r�r�rrr#)r&rx�assignrrr�test_starreds 
zASTValidatorTests.test_starredcCs@|�|dgt���d�|�|t�dt���gt���d�dS)NzNone disallowedr2zmust have Load context)r"r r�r`r�)r&r�rrr�	_sequenceszASTValidatorTests._sequencecCs|�tj�dS)N)rBr r>)r&rrr�	test_listszASTValidatorTests.test_listcCs|�tj�dS)N)rBr �Tuple)r&rrr�
test_tupleszASTValidatorTests.test_tuplecCs|�t�d�d�dS)Nr}z&singleton must be True, False, or None)r"r �NameConstant)r&rrr�test_nameconstantsz#ASTValidatorTests.test_nameconstantc
Cs�tj�tj�}dd�t�|�D�}|�ddg�xT|D]L}tj�||�}t|ddd��}|�	�}WdQRXt�
||�}t||d�q6WdS)	NcSsg|]}|�d�r|�qS)z.py)�endswith)r�fnrrrr	sz;ASTValidatorTests.test_stdlib_validates.<locals>.<listcomp>ztest/test_grammar.pyztest/test_unpack_ex.pyr�zutf-8)�encodingr<)�os�path�dirnamer �__file__�listdir�extend�join�open�readrQrK)r&ZstdlibZtestsrXrI�fp�sourcer\rrr�test_stdlib_validatess
z'ASTValidatorTests.test_stdlib_validates)Nr<)N)N)2rr4r5r�r\r"r#rwr�r�r�r�r�r�r�r�r�r�r�r�rrrrrrr
rrrrrrrrrr!r'r(r+r.r5r8r=rArBrCrErGrVrrrrr��s\
	



	
r�c@s^eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
ejdd��Z
dd�ZdS)�
ConstantTestsz$Tests on the ast.Constant node type.cCs\t�d�}|jdj}tj|d�}t�||�||jd_t|dd�}i}t||�|dS)Nzx = 123r)r(z<string>r<r2)r rQrRr(�Constantr�rKr<)r&r(�treer��new_noder�r�rrr�compile_constant+s

zConstantTests.compile_constantc	Cs<|�t��}|�dddg�WdQRX|�t|j�d�dS)Nrmr+r|z%got an invalid type in Constant: list)r.r1r[r,r
r�)r&r�rrr�test_validation9szConstantTests.test_validationc
CsNxHdddtdt�fD]2}|j|d��|�|�}|�||�WdQRXqWdS)NFT�)�const)�Ellipsis�	frozensetrJr[ZassertIs)r&r^r(rrr�test_singletons?s
zConstantTests.test_singletonsc
Cs�d}tdh�}x$td�D]}|df}t|dh�}qWddddd	td
�td�||f	}x:|D]2}|j|d��|�|�}|�||�WdQRXqXWdS)
N)rmrmr|r+�{g�^@y�^@�unicodesbytesrr`)r()r`rprrJr[r,)r&Znested_tupleZnested_frozensetr��valuesr(rrrr�test_valuesEs


zConstantTests.test_valuesc	Cszt�d�}|jdjd}tjdd�}t�||�||jdjd<|�t��}t|dd�WdQRX|�	t
|j�d�dS)Nzx = 1rrm)r(�stringr<z6expression which can't be assigned to in Store context)r rQrRZtargetsrXr�r.r�rKr,r
r�)r&rY�target�
new_targetr�rrr�test_assign_to_constantTs
z%ConstantTests.test_assign_to_constantcCs t�d�}|�t�|�d�dS)Nz'docstring'
x = 1Z	docstring)r rQr,r�)r&rYrrrr�bs
z ConstantTests.test_get_docstringcCs>t|dd�}g}x(t�|�D]}|jdkr|�|j�qW|S)Nz<string>r<Z
LOAD_CONST)rK�disZget_instructions�opnamerZargval)r&rY�co�constsZinstrrrr�get_load_constfs
zConstantTests.get_load_constc	Cs�dddddddddg	}d	�d
d�|D��}|d7}|�tdf�t�|�}|�|�|�|�xRt|j|�D]B\}}t	|tj
�s�tt�|���tj
|d
�}t�||j�||_qjW|�|�|�|�dS)NTF�|g@y@rcsbytes)rmr+r|�
cSsg|]}d�|��qS)zx={!r})�format)rr^rrrr	{sz1ConstantTests.test_load_const.<locals>.<listcomp>z
x = ...)r()rQrPr_r rQr,rnrIrRrr��AssertionErrorr�rXr�r()r&rmr�rYr@r^rZrrr�test_load_constps*

zConstantTests.test_load_constcCslt�d�}|jdj}tjdd�}t�||j�||_tjdd�}t�||j�||_|�t�	|�d�dS)Nz1 + 2r�
)r(y4@y$@4@)
r rQrRr(rXr�rxrzr,r�)r&rYZbinopZnew_leftZ	new_rightrrrr��s
zConstantTests.test_literal_evalN)rr4r5�__doc__r[r\rarerir�rnrr�rsr�rrrrrW(s
rWc@seZdZdd�ZdS)�NodeVisitorTestscsXG�fdd�dtj�}t�td��}|�}g�|�|�|��dddddd	d
dg�dS)NcsHeZdZ�fdd�Z�fdd�Z�fdd�Z�fdd�Z�fd	d
�ZdS)z9NodeVisitorTests.test_old_constant_nodes.<locals>.Visitorcs��|jd|jf�dS)Nrr)rr
rt)r&r�)�logrr�	visit_Num�szCNodeVisitorTests.test_old_constant_nodes.<locals>.Visitor.visit_Numcs��|jd|jf�dS)Nr�)rr
r)r&r�)rwrr�	visit_Str�szCNodeVisitorTests.test_old_constant_nodes.<locals>.Visitor.visit_Strcs��|jd|jf�dS)N�Bytes)rr
r)r&r�)rwrr�visit_Bytes�szENodeVisitorTests.test_old_constant_nodes.<locals>.Visitor.visit_Bytescs��|jd|jf�dS)NrF)rr
r()r&r�)rwrr�visit_NameConstant�szLNodeVisitorTests.test_old_constant_nodes.<locals>.Visitor.visit_NameConstantcs��|jddf�dS)Nr_.)rr
)r&r�)rwrr�visit_Ellipsis�szHNodeVisitorTests.test_old_constant_nodes.<locals>.Visitor.visit_EllipsisN)rr4r5rxryr{r|r}r)rwrr�Visitor�s
r~z�            i = 42
            f = 4.25
            c = 4.25j
            s = 'string'
            b = b'bytes'
            t = True
            n = None
            e = ...
            )rmrrr))r+rrg@)r|rry@)r}r�rf)r{rzsbytes)r�rFT)rnrFN)�r_.)r ZNodeVisitorrQrZvisitr,)r&r~r\Zvisitorr)rwr�test_old_constant_nodes�s	
z(NodeVisitorTests.test_old_constant_nodesN)rr4r5r�rrrrrv�srvcCs�tdkrdStjdd�dgkr�xdtdftdftdffD]J\}}t|d�x,|D]$}t�|d|�}td	t	|�f�qRWtd
�q8Wtd�t
�t��dS)N�__main__rmz-gr<r=r>z_results = [rAz%r,�]zmain())
r�sys�argvrCrErG�printr rQr�
SystemExit�unittest�main)Z
statementsrBZ	statementrYrrrr��s
r�rv)r�)rmr)rF)rmrN)r�)rmr)r�)rmrzmodule docstringr�)rmrrro)r�)rm�	)r�)rmr�)r�)rmr�zfunction docstring)r�)rmr�r7N)r�)rmrt)rr)rmrr)r�)rm�)r�)rmrnrhN)r�)rm�)r�)rmr�kwargsN)r�)rm�)r�)rmr�r�N)r�)rmr�r&N)r�)rm�r�N)r�)rm�rN)r�)rm�#rhN)r�)rm�)rN)rr)rm�+r))r�)rm�1r�N)rr)rm�rm)rF)rm�Nr>)rm�)r�r)rm�)r�)rm�:)r�)rmr�zdoc for f()r��C)r�)rmr)r�)rmr�)r�)rmr�zdocstring for class C)r`)rmr�object)r�)ZReturn)rmr)rr)rm�rmr�)r`)rmr}r)ZDelr�)r`)rmrr)r�)rr)rmr}rm)r�)rmr)r`)rmrr)r�)r�)rr)rmr{rmr_)r`)rmr}r)r�)r`)rmr�r)r�)r�)rmr�r�)r`)rmr�r)r�r�)r`)rmr|r)r�)r�)rmr{)r`)rmr|r7)r�)r�)r+r+)r|r)r`)r|r{r�)r�)r�)r}r+)r�)r�r+r�)r�)r`)rmr{r2)r�)r`)rmrtr�)r�)r�)rm�
)r�)r`)rmr�r-)r�)r`)rm��q)r�)r�)rm�r�r�)rmr�)r`)rmr�r�)r�)r�)rmr�rfr�r�)r`)r|rnr�)r�)r�)rmr)r`)rmrnr)r�Nr)r�r�NrZr�)r�rNr)r�)rmr)rr)rmrrm)r�)rmr)ZBreak)rmr�)ZContinue)rmr�rD)rmr})r`)rmr}r7)r�)r`)rmr�r�)r�)r�)r`)rmr�r&)r�r�r)rmrm)rmr+)r`)rmr+r7)r�)r`)rmr}r�)r�ra)rmr�)r`)rmr�r7)r�)r`)rmr�r�)r�)r`)rmr�r&)r�r )rmr�)r`)rmr�r7)r�)r`)rmr�r�)r�)r`)rm�r&)r�)r+r})r|r})r`)r|r}�Aa)r�)r`)r{rn�Bb)r�)rr})r`)rr}r�)r�)r`)rtr}r�)r�)r`)rtrtZCc)r�r")r`)rmrmr7)r�)r`)rmr{r�)r�)r`)rmr�r,)r�)r`)rmr�r2)r�)r`)rmr�r�)r�)r`)rm�r�)r�)r`)rm� r)r�)r`)rmr�r)r�)r`)rmr�r,)r�)r`)rmr�r2)r�r)r`)rmrmr�)r�)r`)rmrnr)r�)r`)rmr�r2)r�)r`)rmr�r)r�)rmrn)r`)rmr�r�)r�)r`)rmr�r2)r�ZAsyncFunctionDef)r�)r+rm)r�)r+rmzasync function)r|rmZAwait)r|rn)r`)r|rnZ	something)r�ZAsyncFor)r+rm)r`)r+r�r)r�)r`)r+r�rN)r�)r�)r+�)rr)r+r�rm)r�)r|rn)rr)r|rnr+Z	AsyncWith)r�)r`)r+r�r7)r�)r`)r+r�r�)r�)r�)r+r�)rr)r+r�rm)rr)rmrtr+)rmr|)rr)rmr�r+)rr)rmr�r|rr?)rr)rmr|rm)rr)rmrtr|)r+r+)r`)r+r+rN)r�)r`)r+r�r�)r�)r`)r+r�r&)r�rm)r�)r}r�)r`)rmrmZdeco1)r�)r`)r+rmZdeco2)r�)r`)r|rmZdeco3)r�)rr)r|rnrm)r�)r}r�)r�)r+r�)r`)rmrmZdeco)r�)r`)rmr�r7)r�)r`)rmr�r�)r�r�)r�)rmr)r)rmr)rr)rmrrm)r�)rr)rmr+r+)r�)rF)rmrNr�r)r	)r`)rmrr7)r�)r`)rmr�r�)r�)r�)r)rmr)r`)rmrr7)r�)r�)r`)rmr}r�)r�)r�)r)rmr)r)r`)rmr}r)r�r)rF)rmrnN)rr)rmr+rm)rr)rmr}r+)rF)rmrmN)rr)r+r�rm)rr)r}rtr+)r`)rmrnr�)r�)r`)rmr�r&)r�)r`)rmr�r�)r�r))rr)rmrrm)ZLt)rr)rmrr|)r`)rmrr)r�)r?)rmrt)r`)rmr�r�)r�)r�)r�r&)rr)rmrr|)r�N)r`)rmr�r)r�)r�)rr)rmrrt)r�)r�)rmrrf)r�)r6)rmr)r`)rmrr7)r�r�)r�)r�)r9)rmr)r`)rmrr7)r�)r:)r`)rmr+r�)r�)r`)rmr}r&)r�N)r�)r�)r`)rmrr)r�)rr)rmrmrm)rr)rmr|r+)rr)rmr{r|)rr)rmr+r+)rr)rmr}r|)r6)rmr)r6)rmr)r6)rmr)r`)rmrr7)r�r�)r�r&)r�r�)r�)r9)rmr)r6)rmr)r`)rmrr7)r�r�)r�)r:)rr)rmr�rm)rr)rmr�r+N)r�)r rjrKr�r�r8�textwraprr�rrrCrErGZTestCaserr�r�rWrvr�rDrFrHrrrr�<module>s`hmt&&&(*&&L&"$$"::::20$.>62**@LL>T"$$&(