HEX
Server: Apache
System: Linux bd12.noc223.com 4.18.0-553.121.1.lve.el8.x86_64 #1 SMP Thu Apr 30 16:40:41 UTC 2026 x86_64
User: handcraf (1693)
PHP: 8.1.28
Disabled: NONE
Upload Files
File: //proc/self/root/opt/alt/python312/lib64/python3.12/test/__pycache__/test_ast.cpython-312.opt-1.pyc
�

�h�e�3����ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlm
Z
ddlmZddlmZddlmZddlmZmZddlmZd�Zgd	�Zd
gZgd�ZGd�d
e	j8�ZGd�de	j8�ZGd�de	j8�ZGd�de	j8�Z Gd�de	j8�Z!Gd�d�Z"Gd�de"e	j8�Z#Gd�dee"e	j8�Z$ejJGd�de	j8��Z&Gd�de	j8�Z'd �Z(gd!d"ggf�d!d#ggf�d!d$d%d&d'ggdggdgfd(ggddgf	ggf�d!d$d)d&d'ggdggdgfd*ggddgf	ggf�d!d$d+d&d'gd,gdggdgfd-ggddgf	ggf�d!d$d.d&d'gd,gdggdd/gfd0ggddgf	ggf�d!d$d1d&d'ggd2ggdgfd3ggddgf	ggf�d!d$d4d&d'ggd5ggdgfd6ggddgf	ggf�d!d$d7d&d'ggd8d9d:d;d<d=d>d?d@dAdBdCdDe)dfgdEfdEfdEfdfggdgfdFggddgf	ggf�d!d$d7d&d'ggd8d9d:d;d<d=d>d?d@dAdBdGgdEfdEfdEfdfggdgfdFggddgf	ggf�d!d$dHd&d'ggdggdIgfdJggddgf	ggf�d!d$dKd&d'ggdL�dMdNgdOgdPdQdRdSdTgdEfdUdVggfgfdWggddgf	ggf�d!d$dXd&d'ggdggdgfdYggd=dZd[d@d\d]gdEfdEfdgf	ggf�d!d$d^d&d'ggdggdgfd_ggd=d`d[d@dadbdcgdEfdEfdgf	ggf�d!d$ddd&d'ggdggdgfdeggd=dfd[d@dgdbd;dhd=didjd@dkdldCdme)dfgdEfdEfdEfgdEfdEfdgf	ggf�d!dndodpggdqgggfggf�d!dnd^dpggdrgggfggf�d!dndHdpdsggdJgggfggf�d!d$d.d&d'ggdggdgfdtggddgf	ggf�d!dudvdwgfggf�d!dxdvdygdzdfggf�d!dxd{d@d|d}d~gdfgd�dfggf�d!dxd�d@dvd�d�gdfgd�dfggf�d!dxd�dSdvd�d�gdfgd�dfggf�d!d�d%d�d=d�d�d@d�d�gdEfdEfdd�fggf�d!d�d1d�d=d�d�d@d�d�d�gdEfdEfdd�fggf�d!d�d�d�d=d�d�d@d�d�d;d�d=d�d�d@d�d�dCd�e)dfgdEfdEfdEfgdEfdEfdd�fggf�d!d�ggf�d!d�d�d�d�d�ggdfggf�d!d�dod�dqggfggf�d!d�d�d�d�ggfggf�d!d�d�d�d�gd�d�d�d�ggfgfggf�d!d�d�d�d�gd�d�d�d�gd�gfgfggf�d!d�d�d�gd�gdfggf�d!d�d�d�d�gd�gdfggf�d!d�d�d�d�d�d�ggfdfggf�d!d�d�d�gd�d�d�dd�gfgggfggf�d!d�d�d�gggd�gfggf�d!d�d�d�gd�d�d�dd�gfgggfggf�d!d�ggf�d!d�d�d�gfggf�d!d�d�d�d�gdfggf�d!d�d�d�gfggf�d!d�ggf�d!d�ggf�d!d�d.d�d�d�ggdfggf�d!d�d�d�d�d�ggdfggf�d!d�d1d@d�d�d�gdfd�d3ggdfggf�d!d�d�d@d�d�d�gdfd�d�ggdfggf�d!d�d�dSd�d�d�gdfd�d�ggdfggf�d!d�d�d�d�d@d�d�d�gdEfd�d@d�d�d�gdfd�gdfgffggf�d!d�d�d�d�d�d�d�d�d�gdfd�d�d�d�gdfgffggf�d!d�d�d�d�d�d�d�d@d�d�d�gdfd�gdfgffggf�d!d�d�d�d�d�d�d�d�d�gdfgffggf�d!d�d.d�d.d�d�d@d�d�d�gdfd�gdfgffggf�d!d�d�d&d'ggdggdgfd�d�d�d�d�d�d�d�ggfffggddgf	ggf�d!d�d�d&d'ggdggdgfd��d�d�d�dg�dgdfggddgf	ggf�d!d��dd&d'ggdggdgf�d�d�dg�d	gdfggddgf	ggf�d!d�d+dUd+d�d
gdU�ddzg�dgf�d
gffggf�d!d�do�ddod;�d�d�d�d�dgfdEf�dgffggf�d!d��dd&d'ggdggdgfdאd�d�d�ddݐd�dgd�fgffggddgf	ggf�d!d$�dd&d'ggdggdgf�dg�dd��d�dggfd��d�d�dggfgddgf	ggf�d!d��dd&d'ggdggdgf�d g�dd��d�dggfd��d�d�dggfgddgf	ggf�d!dn�ddpgg�dg�dd��d�dggfd��d�d�dggfggfggf�d!d$�d!d&d'ggdggdgf�d"gd��d#�d$dِd%�d&dݐd'�d(gdfgfggfgddgf	ggf�d!d$�d!d&d'ggdggdgf�d"g�d)gddgf	ggf�d!�d*ggf�d!d$d1d&d'd,ggdggdgfd3ggddgf	ggf�d!d$�d+d&d'd,gg�d,�dggdgf�d-ggddgf	ggf�d!d$d)d&d'd,g�d.gd�d/�d0gddgdgf�d1ggddgf	ggf�d!d$�d2d&d'd,g�d.gd�d/�d0gddg�d3gf�d4ggddgf	ggf�d!d$d�d&d'd,ggdggd�d5gfd�ggddgf	ggf�d!d$d)d&d'd,g�d6�d7gdggdg�d8�f�d1ggddgf	ggf�d!d$d^d&d'd,g�d6gd�d9g�d:gd�d5�d;gfd_ggddgf	ggf�d!d$�d<d&d'd,g�d6gd�d9gdgd�d5�d;gf�d=ggddgf	ggf�d!d$�d>d&d'd,g�d6gd�d9g�d:g�d?�d5�d;gf�d@ggddgf	ggf�d!d$�dAd&d'd,g�d6gd�d9gdg�dB�d5�d;gf�dCggddgf	ggf�d!�dDdo�dEgd�fggf�d!�dDd��dE�dFg�dGfggf�d!�dDd^�dEg�dH�d@�dIg�dJ�dEffggf�d!�dD�dK�dEg�dL�d@�dMg�dN�dEffggf�d!�dD�dO�dE�dP�dQ�dRd@�dS�dT�dUgdEff�dV�dWgd@�dXg�dY�dEffggf�d!dnd.�dZggd0gg�d[gfggf�d!dn�d+�dZgg�d-ggg�d\�fggf�d!dnd��dZgg�d]ggg�d^�fggf�d!dn�d_�dZgg�d`gg�dP�da�dRd@dZ�dG�dbgdEff�dc�ddgfggf�d!d$d.d&d'ggdggdgfd0ggdd�degf	ggf�d!d$�d+d&d'ggdggdgf�d-ggddg�df�f	ggf�d!d$d�d&d'ggdggdgf�d]ggddg�dg�f	ggf�d!d$�d_d&d'ggdggdgf�d`ggdd�dP�dh�dRd@�di�dj�dkgdEff�dl�dmgf	ggf�Z*�dn�dogfgZ+g�dp��dq�drd{�ds�dt�dugff��dv��dw��dq�dx�dyd'ggdggdgf�dzff��dqdUd{�d{g�d|gff��dqdU�d}ggff��dq�dd{�d~gff��dqdU�d�d�g�d�gff��dq�dd�d�d�dԐd��d�gdfgff��dqd�d�d�d�dԐd��d�gdfgff��dq�dd�d@�d��d��d�gdEfd�d@d�d��d�gdf�d�gdfgff��dq�d�d�d@�d��d��d�gdEfd�d@�d��d'�d�gdf�d�gdfgff��dq�d�d�d@�d��d��d�gdEfd�dS�d��d'�d�gdf�d�gdfgff��dqd�d�d@�d��d��d�gdEfd�d@d�d��d�gdf�d�gdfgff��dqd�d�d@�d��d��d�gdEfd�d@�d��d'�d�gdf�d�gdfgff��dqd�d�d@�d��d��d�gdEfd�dS�d��d'�d�gdf�d�gdfgff��dqd�d�d@�d��d��d�gdEfd�d@d�d��d�gdf�d�gdfgff��dqdِd�d@�d��d��d�gdEfd�d@�d��d'�d�gdf�d�gdfgff��dqdِd�d@�d��d��d�gdEfd�dS�d��d'�d�gdf�d�gdfgff��dq�d�d��d��d��d�g�d|�d�gff��dqd�d��d�g�d���d��d�gff��dqd�d��d�d;�d�dS�d��d��d�gdEfdEfggff��dqd�d��d�dِd��d�dݐd��d�gdfgfggff��d���d���d���d���d���dqdSd{g�d��dEff��dqdS�d}gdEff��dqd@dvg�d��dEff��dqd@d{g�d��dEff��dqd@�d}gdEff��dqd�d��d��d�ggff�Z,e(�y(��N)�partial)�dedent)�support)�import_fresh_module)�	os_helper�
script_helper)�ASTTestMixinc	�|�|�#t|tttf�s|tur|St|t
�r|D�cgc]
}t
|���c}S|jjg}t|d�rnt|d�rb|j|j|jf�t|d�r/t|d�r#|dxx|j|jfz
cc<|j�t!|�S|jD]&}|jt
t#||����(t!|�Scc}w)N�lineno�
col_offset�
end_lineno�end_col_offset���)�
isinstance�str�int�complex�Ellipsis�list�to_tuple�	__class__�__name__�hasattr�appendrrr
r�_fields�tuple�getattr)�t�e�result�fs    �4/opt/alt/python312/lib64/python3.12/test/test_ast.pyrrs����y�J�q�3��W�"5�6�!�x�-���	�A�t�	�%&�'�����'�'��k�k�"�"�
#�F��q�(����<� 8��
�
�q�x�x����.�/��1�l�#���3C�(D��2�J�1�<�<��)9�)9�:�:�J��y�y���V�}��
�Y�Y�/���
�
�h�w�q�!�}�-�.�/���=���(s�D9)Z�Nonez'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 v�v = 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 v�1�passzfor 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]: pass�def 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 b�a + 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])c���eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z!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%jLd0���Z6d1�Z7d2e8e9jtd3e;d4e;d5dfd6�Z<d8d7�Z=y)9�	AST_TestsNc�v�t|t�syd|jvry|dk7xr|dj�S)NF�ast�ASTr)r�type�
__module__�isupper)�self�name�nodes   r"�_is_ast_nodezAST_Tests._is_ast_node"s8���$��%������'���u�}�2��a����!2�2�c��t|tj�r|j�yt|tjtj
tjf�rB|j|jf}|j||�|j|jf}|jD]t}t||�}t|t�rA|}|r#|dk(r|dj|djf}|D]}|j||���`|��c|j||��v|j|j|j�y)N�decorator_listr)rr5r6r�expr�stmt�
excepthandlerrr�assertGreaterEqualrr�_assertTrueorder�assertEqual�__match_args__)r:�ast_node�
parent_pos�node_posr;�value�	first_pos�childs        r"rEzAST_Tests._assertTrueorder)s���(�C�G�G�,��0@�0@�0H���h����3�8�8�S�5F�5F� G�H� ����)<�)<�=�H��#�#�H�j�9�"�/�/�8�+>�+>�?�J��$�$�		9�D��H�d�+�E��%��&�&�	��T�%5�5�!&�q����%��(�2E�2E� F�I�"�<�E��)�)�%��;�<��"��%�%�e�Z�8�		9�	
����)�)�8�+B�+B�Cr>c���tj�}|j|jd�d|_|j|jd�|j|j
dd�|j
t�5|jddd�|j
t�5tjd�ddd�y#1swY�=xYw#1swYyxYw)N��*�foobar�)
r5r6rFrrQ�__dict__�assertRaises�AttributeError�vararg�	TypeError�r:�xs  r"�test_AST_objectszAST_Tests.test_AST_objects<s����G�G�I��������B�'����������2�&�������H�-�r�2�
�
�
�~�
.�	�
�H�H�	��
�
�y�
)�	��G�G�A�J�	�	�	�	��	�	�s�
C�2C�C�C&c��Gd�d�}tj�}|�|_||j_t	j
|j�}~t
j�|j|��y)Nc��eZdZy)�0AST_Tests.test_AST_garbage_collection.<locals>.XN�rr8�__qualname__rOr>r"�Xr]K���r>r`)	r5r6rY�a�weakref�refr�
gc_collect�assertIsNone)r:r`rbrds    r"�test_AST_garbage_collectionz%AST_Tests.test_AST_garbage_collectionJs\��	�	��G�G�I���c���������k�k�!�#�#���
��������#�%� r>c	���ttdfttdftt
dffD]�\}}}t
||�D]�\}}|jd|��5t|d|tj�}|jt|�|�|j|d�ddd�|jd||�	�5td|�ddd�����y#1swY�8xYw#1swY��xYw)
N�exec�single�eval�parsing)�action�input�?)rr�	compiling)rmrn�kind)�
exec_tests�exec_results�single_tests�single_results�
eval_tests�eval_results�zip�subTest�compiler5�
PyCF_ONLY_ASTrFrrE)r:rn�outputrq�i�o�ast_trees       r"�
test_snippetszAST_Tests.test_snippetsUs���%/��v�$F�%1�>�8�$L�%/��v�$F�$H�		1��E�6�4��E�6�*�
1���1��\�\��!�\�<�<�&�q�#�t�S�5F�5F�G�H��$�$�X�h�%7��;��)�)�(�F�;�<��\�\��A�D�\�I�1��H�c�4�0�1�1�
1�		1�<�<��1�1�s�A
C�9C �C� C)c�~�ttztz}|D]$}tj|�}t|dd��&y)N�<string>ri)rrrtrvr5�parserz)r:�snippets_to_validate�snippet�trees    r"�test_ast_validationzAST_Tests.test_ast_validationas;��)�L�8�:�E��+�	.�G��9�9�W�%�D��D�*�f�-�	.r>c���gd�}|D]�\}}|jd|�d|���5d}tj|�}||jd_||jd_|j
t�5t|dd�ddd�ddd���gd�}|D]�\}}|jd|�d|���5d}tj|�}||jd_	||jd_
|j
t�5t|dd�ddd�ddd���y#1swY��xYw#1swY��AxYw#1swY�-xYw#1swY��xYw)	N))�
�)i�������)r�r�)������)r�r�zCheck invalid linenos �:za = 1rr�rizCheck invalid col_offset )ryr5r��bodyrr
rT�
ValueErrorrzrr)	r:�invalid_linenosrr
r�r��invalid_col_offsetsrrs	         r"�!test_invalid_position_informationz+AST_Tests.test_invalid_position_informationhsj��
��#2�	6��F�J���� 6�v�h�a�
�|�L�M�
6�!���y�y��)��&,��	�	�!��#�*4��	�	�!��'��&�&�z�2�6��D�*�f�5�6�
6�
6�	6�
��+>�	6�&�J����� 9�*��Q�~�FV�W�X�
6�!���y�y��)��*4��	�	�!��'�.<��	�	�!��+��&�&�z�2�6��D�*�f�5�6�
6�
6�	6�
6�6��
6�
6��"6�6��
6�
6�sI�AD>�9D2�D>�<AE�E�E�2D;�7D>�>E	�E�E�E 	c
��tjtjtjddd��gdd��tjtjddd��gdd��gg��}t	|dd	�y)
N�builtinsr�r�r;rr)�namesrr�	traceback)r��type_ignoresr�ri)r5�Module�Import�aliasrz�r:r�s  r"�>test_compilation_of_ast_nodes_with_default_end_position_valueszHAST_Tests.test_compilation_of_ast_nodes_with_default_end_position_values�sl���z�z��J�J�c�i�i�Z��a�P�Q�Z[�hi�j��J�J�c�i�i�[��q�Q�R�[\�ij�k� 
����	��j�&�)r>c��tjd�jdjj}|j|j�|j|j�|j|j�y)Nzx[::]r)	r5r�r�rK�slicerf�upper�lower�step)r:�slcs  r"�
test_slicezAST_Tests.test_slice�s]���i�i�� �%�%�a�(�.�.�4�4�����#�)�)�$����#�)�)�$����#�(�(�#r>c�~�tjd�jd}|j|j�y)Nzfrom . import yr)r5r�r�rf�module)r:�ims  r"�test_from_importzAST_Tests.test_from_import�s.��
�Y�Y�(�
)�
.�
.�q�
1�����"�)�)�$r>c���tjd�}|j|jdtj�dj�|jd_t|dd�y)Nzfrom __future__ import divisionrz __future__ �<test>ri)r5r��assertIsInstancer��
ImportFrom�stripr�rz)r:�mods  r"�!test_non_interned_future_from_astz+AST_Tests.test_non_interned_future_from_ast�sR���i�i�9�:�����c�h�h�q�k�3�>�>�:�+�1�1�3���������X�v�&r>c��tjd�jd}|jt	|j
�d�|j
d}|j|jd�|j|j�|j|jd�|j|jd�|j|jd�|j|jd�tjd�jd}|j
d}|j|jd�|j|j�|j|jd�|j|jd�|j|jd�|j|jd�tjd	�jd}|j
d}|j|jd�|j|jd
�|j|jd�|j|jd�|j|jd�|j|jd�tjd�jd}|j
d}|j|jd
�|j|jd�|j|jd�|j|jd�|j|jd�|j|jd�y)Nzfrom bar import yrr��y��zfrom bar import *�*zfrom bar import y as z�z�zimport bar as foo�bar�foo�)
r5r�r�rF�lenr�r;rf�asnamerr
rr)r:r�r�s   r"�
test_aliaszAST_Tests.test_alias�s���
�Y�Y�*�
+�
0�
0��
3������R�X�X���*�������������S�)����%�,�,�'�������q�)�����)�)�1�-�����)�)�2�.�����-�-�r�2�
�Y�Y�*�
+�
0�
0��
3��������������S�)����%�,�,�'�������q�)�����)�)�1�-�����)�)�2�.�����-�-�r�2�
�Y�Y�/�
0�
5�
5�a�
8��������������S�)�������s�+�������q�)�����)�)�1�-�����)�)�2�.�����-�-�r�2�
�Y�Y�*�
+�
0�
0��
3��������������U�+�������u�-�������q�)�����)�)�1�-�����)�)�1�-�����-�-�r�2r>c��|jttjtj��|jttj
tj��|jttjtj��|jttjtj��|jttjtj��|jttjtj��y�N)
�
assertTrue�
issubclassr5�ForrB�NamerAr6�
comprehension�Gt�r:s r"�test_base_classeszAST_Tests.test_base_classes�s������
�3�7�7�C�H�H�5�6����
�3�8�8�S�X�X�6�7����
�3�8�8�S�W�W�5�6����
�3�8�8�S�W�W�5�6����
�3�#4�#4�c�g�g�>�?����
�3�6�6�3�7�7�3�4r>c��td�}d}dD]<}|jt|j|��5t	||�ddd��>y#1swY�IxYw)Nr5zSast\.{} is deprecated and will be removed in Python 3.14; use ast\.Constant instead��Num�Str�Bytes�NameConstantr)r�assertWarnsRegex�DeprecationWarning�formatr)r:r5�
depr_regexr;s    r"�test_import_deprecatedz AST_Tests.test_import_deprecated�sh��!�%�(��
)�	�F�	#�D��&�&�'9�:�;L�;L�T�;R�S�
#���T�"�
#�
#�	#�
#�
#�s�
A�A	c�2�tj�5tjddt�ddlm}m}m}m}m	}ddd�dD]�}tt|�}|j||�s�&|j|�5|jt�5|�}ddd�ddd�ttj�s��|j!t#|j$�t&���y#1swY��xYw#1swY�dxYw#1swY�hxYw)N�ignore�rr�)�warnings�catch_warnings�filterwarningsr�r5r�r�r�r�rrr=ry�assertWarnsrr6�assertIsr7rr)	r:r�r�r�r�rr;�itemrYs	         r"�$test_field_attr_existence_deprecatedz.AST_Tests.test_field_attr_existence_deprecated�s���
�
$�
$�
&�	D��#�#�H�b�2D�E�C�C�	D�H�	:�D��3��%�D�� � ��t�,��\�\�$�'�#��)�)�*<�=�#� �F��#�#��a����)��M�M�$�q�y�y�/�5�9�	:�		D�	D��#�#��#�#�s/�*C5�D
�D�D
�5C>�D
�D
�
D	c�"�tjj�D]n\}}|dvr�|dk(r�|j||�s�$|�}t	|tj
�s�F|j
t|j�t��py)N>r�r�r�rr��Index)
r5rS�itemsr=rr6r�r7rr)r:r;r�rYs    r"�test_field_attr_existencez#AST_Tests.test_field_attr_existence�ss���,�,�,�,�.�
	:�J�D�$��J�J���w���� � ��t�,��F���a����)��M�M�$�q�y�y�/�5�9�
	:r>c��tj�}|j|jd�|j	t
�5|jddd�|j|j�tjtdd��}|j|jd�|j|jd�y#1swY�yxYw)N)�posonlyargs�argsrV�
kwonlyargs�kw_defaults�kwarg�defaultsr��rR�)
r5�	argumentsrFrrTrUr�rfrV�rangerXs  r"�test_argumentszAST_Tests.test_arguments�s����M�M�O��������%I�	J��
�
�~�
.�	�
�F�F�	����!�(�(�#��M�M�5��A�;�'���������#�������1�%�
	�	�s�
C�Cc��tj�5tjddt�t	j
�}ddd�d_|j|jd�y#1swY�-xYw)Nr�r��)r�r�r�r�r5r�rrFrXs  r"�#test_field_attr_writable_deprecatedz-AST_Tests.test_field_attr_writable_deprecated�s^��
�
$�
$�
&�	��#�#�H�b�2D�E����	�A�	���	�������C�(�	�	�s�0A1�1A:c�r�tj�}d|_|j|jd�y)Nr�)r5�ConstantrrFrXs  r"�test_field_attr_writablez"AST_Tests.test_field_attr_writables(���L�L�N����	�������C�(r>c	�F
�tj�5tjddt�ddlm}m}m}m}m	}ddd�tjd��5}tjddt�t	j
�}|j|jd�|jt�5|jddd�|jt�5|jddd�t	j
d	�}|j|jd	�|j|jd	�|jt�5|j ddd�|jt�5|j"ddd�t	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$d�5t	j
dd
��ddd�|jt	j
d	�jd	�|jt	j
d�jd�|jt	j
d�jd�|jt	jd�j*d�|jt	jd�j*d�|j-t	jd�jd�|j-t	jd�jd�|j-t	jd�jd�ddd�|jD�cgc]}t/|j0���c}gd��y#1swY���xYw#1swY��xYw#1swY���xYw#1swY���xYw#1swY��dxYw#1swY��xYw#1swY��xYwcc}w)Nr�r�rr�T��record�always�rKrqrPrR�rr�r��r�z(Num got multiple values for argument 'n'��n�@�@�42�42F)�Rast.Num is deprecated and will be removed in Python 3.14; use ast.Constant instead�OAttribute n is deprecated and will be removed in Python 3.14; use value insteadrrrrrrrrrrrrrr�Rast.Str is deprecated and will be removed in Python 3.14; use ast.Constant instead�OAttribute s is deprecated and will be removed in Python 3.14; use value instead�Tast.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)r�r�r�r�r5r�r�r�r�rrFrrTrUrKr�rrQrWr��assertRaisesRegex�sr�r�message)	r:r�r�r�r�r�wlogrY�ws	         r"�test_classattrs_deprecatedz$AST_Tests.test_classattrs_deprecated	s���
�
$�
$�
&�	D��#�#�H�b�2D�E�C�C�	D��
$�
$�D�
1�.	>�T��#�#�H�b�2D�E����	�A����Q�Y�Y�(9�:��"�"�>�2�
����
��"�"�>�2�
����
������A����Q�W�W�b�)����Q�S�S�"�%��"�"�>�2�
����
��"�"�>�2�
����
����q�!�A����Q�X�X�q�)�����1�%�A����Q�X�X�q�)����Q�Y�Y�(9�:����Q�W�W�b�)����Q�S�S�"�%����i����!�T�1�=����i����!�T�1�Q��G�
���S�W�W�Q�E�2�6�6��>��'�'�	�3]�^�
 �����Q��
 �
���S�W�W�R�[�]�]�B�/����S�W�W�T�]�_�_�d�3����S�W�W�U�^�-�-�u�5����S�W�W�T�]�_�_�d�3����S�Y�Y�u�-�/�/��7��M�M�#�*�*�4�0�6�6��=��M�M�#�*�*�5�1�7�7��?��M�M�#�*�*�4�0�6�6��=�].	>�`	
���$�7�Q�#�a�i�i�.�7�:
�	�i	D�	D��
�
��
�
��
�
��
�
��$
 �
 ��I.	>�.	>��`8s��*S�A!T�>
S�T�(
S�5A*T�
S+�,T�	
S8�ET�.T�FT�T�S�S	�T�S(	�#T�+S5	�0T�8T	�=T�T	�
T�Tc� �tj�}|j|jd�|j	t
�5|jddd�tjd�}|j|jd�|j	t
�5|jddd�|j	t
�5|jddd�tjd��}|j|jd�tjdd��}|j|jd�|j|jd�|j|jd�|j	ttjddd�|j	ttjdddd��|jtjdd��jd�|jtd	�5tjdd�
�ddd�|jtjd�jd�|jtjd�jd�|jtjd�jd�|jtjd
�jd
�|jtjd�jd�|jtjd�jd�|jtjd�jd�|jtjd�jd�|jtjd�jd�y#1swY���xYw#1swY��=xYw#1swY�� xYw#1swY���xYw)Nr�rPrRr�rr�r�r�z1Constant got multiple values for argument 'value'�rKr�r�r�r�TF.)
r5r�rFrrTrUrKrrQrWr�rr�rXs  r"�test_classattrszAST_Tests.test_classattrsXs����L�L�N��������$5�6�
�
�
�~�
.�	�
�G�G�	�
�L�L����������"�%�
�
�
�~�
.�	�
�H�H�	��
�
�~�
.�	�
�H�H�	�
�L�L��"��������1�%��L�L��A�&��������1�%�������$5�6�������"�%����)�S�\�\�1�d�A�>����)�S�\�\�1�d�A�a��H�	
������a�U�3�7�7��?�
�
#�
#�I�/b�
c�	%��L�L��!�$�	%�	
������b�)�/�/��4�������d�+�1�1�4�8�������e�,�2�2�E�:�������d�+�1�1�4�8�������e�,�2�2�E�:��
�
�c�l�l�4�(�.�.��5��
�
�c�l�l�5�)�/�/��7��
�
�c�l�l�4�(�.�.��5��
�
�c�l�l�3�'�-�-�s�3�K	�	��	�	��	�	��"	%�	%�s0�
O�!
O)�
O6�P�O&�)O3�6P�P
c���tj�5tjddt�ddlm}m}m}m}m	}ddd�tjd��5}tjddt�|jtt	j
d��tj�|jtt	j
d	��tj�|jtt	j
d
��tj�|jtt	jd��tj�|jtt	jd��tj�|jtt	jd��tj�|jtt	jd
��tj�|jtt	jd��tj�|jtt	j��tj�ddd�|jD�cgc]}t|j���c}gd��y#1swY���xYw#1swY�LxYwcc}w)Nr�r�rr�Tr�r�rPr�r�r�r�F)	rrrrrrrrzWast.Ellipsis is deprecated and will be removed in Python 3.14; use ast.Constant instead)r�r�r�r�r5r�r�r�r�rr�r7r�rFrr)r:r�r�r�r�rr	r
s        r"�
test_realtypezAST_Tests.test_realtype�s���
�
$�
$�
&�	D��#�#�H�b�2D�E�C�C�	D��
$�
$�D�
1�
	>�T��#�#�H�b�2D�E��M�M�$�s�w�w�r�{�+�S�\�\�:��M�M�$�s�w�w�t�}�-�s�|�|�<��M�M�$�s�w�w�u�~�.����=��M�M�$�s�w�w�t�}�-�s�|�|�<��M�M�$�s�y�y��/�0�#�,�,�?��M�M�$�s�/�/��5�6����E��M�M�$�s�/�/��6�7����F��M�M�$�s�/�/��5�6����E��M�M�$�s�|�|�~�.����=�
	>�	
���$�7�Q�#�a�i�i�.�7�
:
�
	�!	D�	D��
	>�
	>��8s�*K�H7K�+K+�K�K(c�t�ddlm}tj�5tjddt
�ddlm}m}m}m	}m
}ddd�d}t|jt
|jd��}t|jt
|jd��}	t|jt
|jd	��}
t|jt
|jd
��}t|jt
|jd��}dD]W}
|j|
�
�5|�5|
�}ddd�|�5|j�ddd�ddd��Y|	�5d�}ddd�|	�5|j�ddd�|
�5d�}ddd�|
�5|j�ddd�dD]W}
|j|
�
�5|�5|
�}ddd�|�5|j�ddd�ddd��Y|�5�}ddd�|�5|j�ddd�dD]E}
|j|
�
�5|�5|j||
��ddd�ddd��G|	�5|j|d��ddd�|
�5|j|d��ddd�dD]E}
|j|
�
�5|�5|j||
��ddd�ddd��G|�5|j|d��ddd�|	�5d�}ddd�||j �|
|j |�|�5|d�}ddd�|	|j �||j |�||j |�|�5|d�}ddd�|�5|j!||�ddd�|�5|d�}ddd�|�5|j!||�ddd�dD]E}
|j|
�
�5|�5|j!||
�|�ddd�ddd��G|	|j |d�|�|
|j |d�|�||j |d�|�||j |d�|�||j |�|�|	|j |�|�|
|j |�|�||j |�|�||j |�|�Gd�dt"�}|	�5|j||d��|�ddd�|�5|j!||d��|�ddd�y#1swY���xYw#1swY���xYw#1swY���xYw#1swY��CxYw#1swY���xYw#1swY���xYw#1swY���xYw#1swY���xYw#1swY���xYw#1swY��qxYw#1swY���xYw#1swY��jxYw#1swY��UxYw#1swY��"xYw#1swY��mxYw#1swY��
xYw#1swY���xYw#1swY���xYw#1swY��xYw#1swY���xYw#1swY���xYw#1swY��fxYw#1swY��xYw#1swY��
xYw#1swY���xYw#1swY���xYw#1swY���xYw#1swY��xYw#1swY���xYw#1swYyxYw)Nr)r�r�r�r�zQast.{} is deprecated and will be removed in Python 3.14; use ast.Constant insteadr�r�r�r�r)rPg������@y������@)�argr�r��TFN.rPTF)r�TFc��eZdZy)�$AST_Tests.test_isinstance.<locals>.SNr^rOr>r"�Srs�r>r)r5r�r�r�r�r�r�r�r�r�rrr�r�ryr��assertNotIsInstancer)r:r�r�r�r�r�r�cls_depr_msg�assertNumDeprecated�assertStrDeprecated�assertBytesDeprecated�assertNameConstantDeprecated�assertEllipsisDeprecatedrr�r�brrs                   r"�test_isinstancezAST_Tests.test_isinstance�si�� �
�
$�
$�
&�	D��#�#�H�b�2D�E�C�C�	D�

'�	�
&��!�!�#5�|�7J�7J�5�7Q�
��&��!�!�#5�|�7J�7J�5�7Q�
��!(��!�!�#5�|�7J�7J�7�7S�!
��(/��!�!������/�(
�$�
$+��!�!�#5�|�7J�7J�:�7V�$
� �!�	2�C����#��&�
2�(�*�!��C��A�!�(�*�2��)�)�!�S�1�2�
2�
2�	2�!�
"�	��D�	�A�	�
 �
"�	*��!�!�!�S�)�	*�#�
$�	��e��A�	�
"�
$�	,��!�!�!�U�+�	,�%�	;�C����#��&�
;�1�3�*�$�S�)�A�*�1�3�;��)�)�!�\�:�;�
;�
;�	;�&�
'�	��
�A�	�
%�
'�	/��!�!�!�X�.�	/�!�	>�C����#��&�
>�(�*�>��)�)�(�3�-��=�>�
>�
>�	>�
!�
"�	7��!�!�(�4�.�#�6�	7�#�
$�	:��!�!�(�5�/�5�9�	:�%�	G�C����#��&�
G�1�3�G��)�)�(�3�-��F�G�
G�
G�	G�
&�
'�	;��!�!�(�3�-��:�	;�!�
"�	��D�	�A�	��D�4�4�a��=��d�6�6��5�A�
 �
"�	��B��A�	��D�4�4�a��=�$�T�%=�%=�q�,�O� ��!9�!9�1�h�G�
)�
+�	#��T�"�A�	#�
 �
"�	-��$�$�Q��,�	-�*�
+�	$��U�#�A�	$�
 �
"�	-��$�$�Q��,�	-�%�	A�C����#��&�
A�(�*�A��,�,�X�c�]�C�@�A�
A�
A�	A�
	�D�4�4�h�r�l�C�H��d�6�6�����N�$�T�%=�%=�x��|�\�Z� ��!9�!9�8�B�<��R��D�4�4�h�j�#�F��D�4�4�h�j�#�F��d�6�6��
�E�J�$�T�%=�%=�x�z�<�X� ��!9�!9�8�:�x�P����
 �
"�	:��!�!�(�1�T�7�"3�S�9�	:�
 �
"�	=��$�$�X�a��g�%6��<�	=�	=�e	D�	D��:!�!��2�2��
2�
2��	�	��	*�	*��	�	��	,�	,��
*�*��;�;��
;�
;��	�	��	/�	/��
>�>��
>�
>��	7�	7��	:�	:��
G�G��
G�
G��	;�	;��	�	��
	�	��	#�	#��	-�	-��	$�	$��	-�	-��
A�A��
A�
A��	:�	:��	=�	=�s��*X5�8Y�	Y�	Y�Y�+Y�	Y)�Y6�>	Z�Z�Z7�	Z�Z7�(Z*�;Z7�[�+[�[+�%[�>[+�[8�?\�7\�?\�\�1\,�	\9�	]�-	]�] �'	]-�?]:�1^�9^�^�^!�
^.�5X?�Y�Y�Y�Y�Y&	�)Y3�6Z�Z
�Z�Z'�"Z7�*Z4�/Z7�7[	�[�[�[(�#[+�+[5	�8\�\�\�\�\)	�,\6�9]�]�]� ]*�-]7�:^�^�^�^	�!^+�.^7c��tj�5tjddt�ddlm}ddd�tjd��5}tjddt�Gd�d	tj
�}Gd
�dtj
�}|d�}|j
|jd�|j
|jd
�|jt|�|�|j||�|j|tj
�|j||�|jt	j
d�|�|d��}|j
|jd�|jt|�|�ddd�|j
D�cgc]}t|j���c}gd��y#1swY���xYw#1swY�LxYwcc}w)Nr�r�r�r�Tr�r�c���eZdZ�fd�Z�xZS)�8AST_Tests.test_constant_subclasses_deprecated.<locals>.Nc�2��t�|�|i|��d|_y�N�spam��super�__init__r��r:r��kwargsrs   �r"r)zAAST_Tests.test_constant_subclasses_deprecated.<locals>.N.__init__ s����G�$�d�5�f�5�#�D�Fr>�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)r�r�r�r�r5r�rFr�r�r�r7r�rrr)r:r�r	r/r2r�r
s       r"�#test_constant_subclasses_deprecatedz-AST_Tests.test_constant_subclasses_deprecateds���
�
$�
$�
&�	 ��#�#�H�b�2D�E��	 ��
$�
$�D�
1�	&�T��#�#�H�b�2D�E�
$�C�G�G�
$�
�S�W�W�
��"��A����Q�S�S�"�%����Q�S�S�&�)��M�M�$�q�'�1�%��!�!�!�Q�'��!�!�!�S�W�W�-��$�$�Q��+��$�$�S�W�W�R�[�!�4��B��A����Q�S�S�"�%��M�M�$�q�'�1�%�'	&�*	
���$�7�Q�#�a�i�i�.�7�:
�	�3	 �	 ��	&�	&��*8s�"G%�EG2�>G>�%G/�2G;c��Gd�dtj�}Gd�dtj�}|d�}|j|jd�|j|jd�|jt|�|�|j
t||��|j
t|tj��|jt||��|jttjd�|��|d��}|j|jd�|jt|�|�y)Nc���eZdZ�fd�Z�xZS)�-AST_Tests.test_constant_subclasses.<locals>.Nc�2��t�|�|i|��d|_yr%r'r*s   �r"r)z6AST_Tests.test_constant_subclasses.<locals>.N.__init__=s����� �$�1�&�1���r>r,r.s@r"r/r7<s
���
 �
 r>r/c��eZdZy)�.AST_Tests.test_constant_subclasses.<locals>.N2Nr^rOr>r"r2r:@rar>r2rPr&r
)	r5r�rFrKr�r7r�r�assertFalse)r:r/r2r�s    r"�test_constant_subclassesz"AST_Tests.test_constant_subclasses;s���	 ����	 �	����	�
�b�E��������"�%�������f�%�����a��!�$����
�1�a�(�)����
�1�c�l�l�3�4�����A�r�*�+�����C�L�L��$4�a�8�9�
�B�K��������"�%�����a��!�$r>c��tjd�g}tj|g�}|j|j|�y)NrP)r5r�r�rFr�)r:r�rYs   r"�test_modulezAST_Tests.test_moduleOs7�����R� �!���J�J�t�R� ���������&r>c	��tj�}|j|jd�d|_|j|jd�tj
d�}tj
d�}tj�}tj|||�}|j|j|�|j|j|�|j|j|�tjddd�}|j|jd�|j|jd�|j|jd�tjdddd��}|j|jd�|j|jd�|j|jd�|j|jd�|jttjdddd�|jttjddddd��tjdddd�	�}|j|jd�|j|jd�|j|jd�|j|jd�tjdddd
��}|j|jd
�y)N)�left�op�right�r�r�rRrr��)r@rArBrrP)�	foobarbaz)
r5�BinOprFrrEr��Addr@rArBrrTrW)r:rY�n1�n3�addops     r"�test_nodeclasseszAST_Tests.test_nodeclassesTs3���I�I�K��������$;�<����������a�(�
�\�\�!�_��
�\�\�!�_�����	���I�I�b�%��$���������$�������u�%�������"�%��I�I�a��A����������#�������q�!�������!�$��I�I�a��A�a�(���������#�������q�!�������!�$�������1�%�	
���)�S�Y�Y��1�a��;����)�S�Y�Y��1�a��1��E�
�I�I�1��!�A�6���������#�������q�!�������!�$�������1�%�
�I�I�a��A��,��������b�)r>c�d�tj�}|j|jd�y)NrO)r5�SubrFrrXs  r"�test_no_fieldszAST_Tests.test_no_fields�s!���G�G�I��������B�'r>c���ddl}t|jdz�D]Y}d�tD�D]G}|j	|j||��}|j
t|�t|���I�[y)Nrr�c3�8K�|]}t|ddd����y�w)roriiN)rz)�.0r}s  r"�	<genexpr>z*AST_Tests.test_pickling.<locals>.<genexpr>�s����K�1���3���6�K�s�)�pickler��HIGHEST_PROTOCOLrr�loads�dumpsrFr)r:rS�protocolr5�ast2s     r"�
test_picklingzAST_Tests.test_pickling�sm����f�5�5��9�:�	@�H�K�
�K�
@���|�|�F�L�L��h�$?�@��� � ��$���#��?�
@�	@r>c	�R�tdd��}tjtjtjdi|��fi|��gg�}|jt�5}t|dd�ddd�|jdtj��y#1swY�/xYw)NrRr��rrr�rizbut got <ast.exprrO)�dictr5r��ExprrArTrWrz�assertInr�	exception)r:�pos�m�cms    r"�test_invalid_sumzAST_Tests.test_invalid_sum�s����!��*���J�J��������C��8�C�8�9�2�>��
�
�
�y�
)�	)�R��A�x��(�	)��
�
�)�3�r�|�|�+<�=�	)�	)�s�!B�B&c	��tjtjtjdtj���gg�}tj
|�|j
t�5}t|dd�ddd�|jdtj��y#1swY�/xYw)NrPr�rizidentifier must be of type str)r5r�r]r��Load�fix_missing_locationsrTrWrzr^rr_)r:rarbs   r"�test_invalid_identifierz!AST_Tests.test_invalid_identifier�s����J�J�������"�c�h�h�j�!9�:�;�R�@���!�!�!�$�
�
�
�y�
)�	)�R��A�x��(�	)��
�
�6��B�L�L�8I�J�	)�	)�s�;B7�7Cc�:�tddtftddtf�fD]l}tjtj|���}tj
|�|j
td�5t|dd�ddd��ny#1swY�yxYw)Nr�rR�r�zinvalid type in Constant: typer�rk)	r�	frozensetr5�
Expressionr�rfrrWrz)r:�invalid_constantrs   r"�test_invalid_constantzAST_Tests.test_invalid_constant�s��� #�a��C�[�)�Q��3�K�2H� H�	-�����C�L�L�1A�$B�C�A��%�%�a�(��'�'��;��
-���8�V�,�
-�
-�	-�
-�
-�s�8B�B	c�<�tjd�}d|jdjdj_|j	t
�5}t
|dd�ddd�|jdtj��y#1swY�/xYw)Nzdef f():
 yield from g()rr�rizfield 'value' is required)
r5r�r�rKrTr�rzr^rr_)r:�empty_yield_fromrbs   r"�test_empty_yield_fromzAST_Tests.test_empty_yield_from�s����9�9�%@�A��7;����a� �%�%�a�(�.�.�4�
�
�
�z�
*�	8�b��$�h��7�	8��
�
�1�3�r�|�|�3D�E�	8�	8�s�B�Bc��ddl}d�}tj|d|�5|jtt
jd�ddd�y#1swYyxYw)Nrc��yr�rO�r�s r"�
bad_normalizez0AST_Tests.test_issue31592.<locals>.bad_normalize�s��r>�	normalizeuϕ)�unicodedatar�	swap_attrrTrWr5r�)r:rvrts   r"�test_issue31592zAST_Tests.test_issue31592�sI��	�	�
�
�
�{�K��
G�	>����i����H�=�	>�	>�	>�s�&A�Ac��tjd�}|jdj}|j}|j}|j|jd�|j|jd�|j|jd�|j|jd�|j|jd�|j|jd�tjd�}|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|jd�y)
Nz4+5+6+7rr�rCr�z
4+5-\
 6-7r�rDrR)
r5r�r�rKr@rFrrrr
)r:r��parent_binop�child_binop�grandchild_binops     r"� test_issue18374_binop_col_offsetz*AST_Tests.test_issue18374_binop_col_offset�s���y�y��#���y�y��|�)�)��"�'�'��&�+�+������0�0�!�4�����4�4�a�8�����/�/��3�����3�3�Q�7����)�4�4�a�8����)�8�8�!�<��y�y��(���y�y��|�)�)��"�'�'��&�+�+������0�0�!�4�����,�,�a�0�����4�4�a�8�����0�0�!�4�����/�/��3�����+�+�Q�/�����3�3�Q�7�����/�/��3����)�4�4�a�8����)�0�0�!�4����)�8�8�!�<����)�4�4�a�8r>c��tjd�}|jdjdj}|j|jd�y)Nr'rrD)r5r�r�r@rKrFr)r:r��attr_bs   r"�*test_issue39579_dotted_name_end_col_offsetz4AST_Tests.test_issue39579_dotted_name_end_col_offset�sE���y�y�0�1�����1��,�,�Q�/�5�5������.�.��2r>c��|jtjjd�|jtjjd�|jtj
jd�|jtjjd�tjj�D�cgc]}d|j����}}dtjj�dj��|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�
)rFr5�withitem�__doc__r�r��cmpoprA�__subclasses__�assertCountEqual�split)r:r<�expressionss   r"�test_ast_asdl_signaturez!AST_Tests.test_ast_asdl_signature�s���������-�-�/a�b���������%�0�������)�)�+R�S�������*�*�,p�q�<?�H�H�<S�<S�<U�V�D������/�V��V�"�3�8�8�#:�#:�#<�Q�#?�#G�#G�"H�I��A�����c�h�h�.�.�4�4�T�:�K�H��Ws�	Ec���tjdd��tjdd��|jt�5tjdd��ddd�|jt�5tjdd��ddd�tjdd��tjdd��|jt�5tjdd��ddd�|jt�5tjdd��ddd�y#1swY��xYw#1swY��xYw#1swY�WxYw#1swYyxYw)Nzdef foo(x, /): ...�r�r���feature_versionzdef bar(x=1, /): ...�r�r�zlambda x, /: ...zlambda x=1, /: ...�r5r�rT�SyntaxErrorr�s r"�$test_positional_only_feature_versionz.AST_Tests.test_positional_only_feature_version�s���	�	�&��?��	�	�(�&�A�
�
�
�{�
+�	D��I�I�*�F�C�	D�
�
�
�{�
+�	F��I�I�,�f�E�	F�	�	�	�$�f�=��	�	�&��?�
�
�
�{�
+�	B��I�I�(�&�A�	B�
�
�
�{�
+�	D��I�I�*�F�C�	D�	D�	D�	D��	F�	F��
	B�	B��	D�	D�s0�D2�9D>�E
�E�2D;�>E�
E�Ec��tjdd��tjdd��|jt�5tjdd��ddd�tjdd��y#1swY�!xYw)Nz#with (CtxManager() as example): ...�r�r�r�)r��	r�z!with CtxManager() as example: ...r�r�s r"�'test_parenthesized_with_feature_versionz1AST_Tests.test_parenthesized_with_feature_version�se���	�	�7��Q��	�	�7��P�
�
�
�{�
+�	U��I�I�;�V�T�	U��	�	�5�v�N�	U�	U�s�A<�<Bc��tjdd��|jt�5tjdd��ddd�y#1swYyxYw)Nz(x := 0)r�r�r�r�r�s r"�*test_assignment_expression_feature_versionz4AST_Tests.test_assignment_expression_feature_version�sA���	�	�*�f�5�
�
�
�{�
+�	:��I�I�j�&�9�	:�	:�	:�s�A�Ac���td�}tj|�|jt�5tj|d��ddd�y#1swYyxYw)Nz9
        try: ...
        except* Exception: ...
        r�r�)rr5r�rTr�)r:�codes  r"�%test_exception_groups_feature_versionz/AST_Tests.test_exception_groups_feature_version�sO����
��	�	�	�$��
�
�
�{�
+�	5��I�I�d�G�4�	5�	5�	5�s�A�A c��gd�}|D]f}|j|�5tj|�|jt�5tj|d��ddd�ddd��hy#1swY�xYw#1swY�xYw)N)r(r)r*)r��r�)ryr5r�rTr�)r:�samples�samples   r"� test_type_params_feature_versionz*AST_Tests.test_type_params_feature_versions}��
��
�	?�F����f�%�
?��	�	�&�!��&�&�{�3�?��I�I�f�g�>�?�
?�
?�	?�?�?��
?�
?�s#�+A=�A1�A=�1A:�6A=�=B	c��|jt�5tjdd��ddd�|jt�5tjdd��ddd�y#1swY�?xYw#1swYyxYw)Nr&)rRr�r�)rDr)rTr�r5r�r�s r"�"test_invalid_major_feature_versionz,AST_Tests.test_invalid_major_feature_versionsi��
�
�
�z�
*�	6��I�I�f�f�5�	6�
�
�
�z�
*�	6��I�I�f�f�5�	6�	6�	6�	6��	6�	6�s�A,�A8�,A5�8Bc�*�dD]�}tjtj|tj���}tj|�|jtd|�d��5t|dd�ddd���y#1swY��xYw)N)�True�Falser#z"identifier field can't represent 'z
' constantr�rk)r5rkr�rerfrr�rz)r:�constantrAs   r"�test_constant_as_namezAST_Tests.test_constant_as_names���/�	0�H��>�>�#�(�(�8�S�X�X�Z�"@�A�D��%�%�d�+��'�'�
�6X�Ya�Xb�bl�4m�n�
0���h��/�
0�
0�	0�
0�
0�s�0B	�	B	c�~�Gd�dtj�}tj|tj�y)Nc�~�eZdZdZej
�Zej
�Zej
�Zej
�Z	ej
�Z
ej
�Zej
�Zej
�Z
ej
�ZeZej
�Zej
�Zej
�Zej
�Zej
�Zej
�Zej
�Zej
�Zej
�Zd�Zy)�3AST_Tests.test_precedence_enum.<locals>._Precedencez5Precedence table that originated from python grammar.c�N�	|j|dz�S#t$r|cYSwxYw)Nr�)rr�r�s r"�nextz8AST_Tests.test_precedence_enum.<locals>._Precedence.next8s.�� ��>�>�$��(�3�3��!� ��K� �s��$�$N)rr8r_r��enum�auto�
NAMED_EXPR�TUPLE�YIELD�TEST�OR�AND�NOT�CMP�EXPR�BOR�BXOR�BAND�SHIFT�ARITH�TERM�FACTOR�POWER�AWAIT�ATOMr�rOr>r"�_Precedencer�"s���G�"�����J��D�I�I�K�E��D�I�I�K�E��4�9�9�;�D������B��$�)�)�+�C��$�)�)�+�C��$�)�)�+�C��4�9�9�;�D��C��4�9�9�;�D��4�9�9�;�D��D�I�I�K�E��D�I�I�K�E��4�9�9�;�D��T�Y�Y�[�F��D�I�I�K�E��D�I�I�K�E��4�9�9�;�D�
 r>r�)r��IntEnum�_test_simple_enumr5r�)r:r�s  r"�test_precedence_enumzAST_Tests.test_precedence_enum!s(��	 �$�,�,�	 �6	
���{�C�O�O�<r>zexhausts limited stack on WASIc������tj�d�d�����fd�}|dd�|dd�|dd�|dd�y)	Ni��i�c�\��||�	zz}tj|���fD]o}|||zz}dj|||�}�jt|��5tj�5tj|�ddd�ddd��qy#1swY�xYw#1swY��xYw)NzCompiling ({!r} + {!r} * {})��msg)r5r�r�rT�RecursionErrorr�infinite_recursion)
�prefix�repeated�	expect_ok�depth�broken�details�crash_depth�
fail_depthr:�
success_depths
      ����r"�check_limitz7AST_Tests.test_ast_recursion_limit.<locals>.check_limitFs������M�!9�9�I��I�I�i� �$�k�2�
*���(�U�"2�2��8�?�?�"�H�e�5���&�&�~�7�&�C�*� �3�3�5�*��	�	�&�)�*�*�*�	
*�
*�*��*�*�s$�B"�-B�B"�B�B"�"B+	rbr1z.bz[0]z*a)r�EXCEEDS_RECURSION_LIMIT)r:r�r�r�r�s` @@@r"�test_ast_recursion_limitz"AST_Tests.test_ast_recursion_limit?sI����4�4�
����
�		*�	�C����C����C����C��r>c��|jtd��5tjd�ddd�y#1swYyxYw)Nz,source code string cannot contain null bytesr�zab)rTr�r5r�r�s r"�test_null_byteszAST_Tests.test_null_bytesVs<��
�
�
�{�>��@�	��I�I�f��	�	�	�s	�7�Ar<�attr�source�returnc���|j|j�d|���5tj|�}d}tj|�D]!}t||�s�t
||d�|dz
}�#|j|d�tjd|�d|j���}|jtd|�d��5t|dd	�ddd�ddd�y#1swY�xYw#1swYyxYw)
N�.rr�zfield 'z' is required for �^�$r�ri)
ryrr5r��walkr�setattrrF�re�escaperr�rz)r:r<r�r�r��foundrMrs        r"�assert_none_checkzAST_Tests.assert_none_check[s���
�\�\�T�]�]�O�1�T�F�3�
4�
	0��9�9�V�$�D��E����$��
���e�T�*��E�4��.��Q�J�E�
�
���U�A�&��	�	�G�D�6�);�D�M�M�?�K�L�A��'�'�
�a��s�!�H�=�
0���h��/�
0�
	0�
	0�
0�
0��
	0�
	0�s*�<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): spam�targetz[spam for SPAM in spam]�iterz[spam for spam in SPAM]rKzspam(**SPAM)�patternzmatch spam:
 case SPAM: spam�context_exprzwith SPAM: spam)r5r�rr��keyword�
match_caser�r�)r:�testsr<r�r�s     r"�test_none_checkszAST_Tests.test_none_checkshs���
�Y�Y�� 5�6�
�W�W�e�3�4�
�
�
��*C�D�
�
�
��(A�B�
�[�[�'�>�2�
�^�^�Y�(G�H�
�\�\�>�+<�=�
��#(�	7��D�$���"�"�4��v�6�	7r>)r�N)>rr8r_�maxDiffr=rErZrgr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr4r<r>rKrNrYrcrgrmrpr�cpython_onlyrxr}r�r�r�r�r�r�r�r�r�r��unittest�skipIf�is_wasir�r�r7r5r6rr�r�rOr>r"r3r3su���G�3�D�&�	!�
1�.�6�4*�$�%�'�$3�L5�#�:�:�&�)�)�M�^)4�V�:v=�p!�F%�('�
**�X(�
@�>�K�-�F�
���>��>�9�>3�
I�
D�O�:�
5�
?�6�0�=�<�X�_�_�W�_�_�&F�G������H��*�
0�d�3�7�7�m�0�3�0��0�PT�0�7r>r3c��eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zy)�ASTHelpers_TestNc���tjd�}tdddtj�}|j	tj
|�tj
|��y)Nz
foo(1 + 1)z	<unknown>ri)r5r�rzr{rF�dump)r:rbrs   r"�
test_parsezASTHelpers_Test.test_parsexsF���I�I�l�#���L�+�v�s�7H�7H�I��������!��c�h�h�q�k�2r>c��	ddzy#t$rh|jt�5}tjd�ddd�n#1swYnxYw|jjj�YywxYw)Nr�rz'\U')�	ExceptionrTr�r5�literal_eval�assertIsNotNoner_�__context__�r:rs  r"�test_parse_in_errorz#ASTHelpers_Test.test_parse_in_error}sh��	:�
�a�C���	:��"�"�;�/�
*�1�� � ��)�
*�
*�
*��� � ����!8�!8�9�	:�s%��A9�A�	A9�A	�
,A9�8A9c��tjd�}|jtj|�d�|jtj|d��d�|jtj|d��d�y)	N�spam(eggs, "and cheese")z�Module(body=[Expr(value=Call(func=Name(id='spam', ctx=Load()), args=[Name(id='eggs', ctx=Load()), Constant(value='and cheese')], keywords=[]))], type_ignores=[])F��annotate_fieldszbModule([Expr(Call(Name('spam', Load()), [Name('eggs', Load()), Constant('and cheese')], []))], [])T��include_attributesa�Module(body=[Expr(value=Call(func=Name(id='spam', ctx=Load(), lineno=1, col_offset=0, end_lineno=1, end_col_offset=4), args=[Name(id='eggs', ctx=Load(), lineno=1, col_offset=5, end_lineno=1, end_col_offset=9), Constant(value='and cheese', lineno=1, col_offset=11, end_lineno=1, end_col_offset=23)], keywords=[], lineno=1, col_offset=0, end_lineno=1, end_col_offset=24), lineno=1, col_offset=0, end_lineno=1, end_col_offset=24)], type_ignores=[])�r5r�rFr��r:r<s  r"�	test_dumpzASTHelpers_Test.test_dump�ss���y�y�3�4��������$��
/�	
�
	
������$��>�
2�	
�	
������$�4�@�
Z�	
r>c��tjd�}|jtj|d��d�|jtj|dd��d�|jtj|d	d�
�d�y)Nrr���indentz�Module(
   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
z�Module(
	[
		Expr(
			Call(
				Name('spam', Load()),
				[
					Name('eggs', Load()),
					Constant('and cheese')],
				[]))],
	[])T)rr
a�Module(
   body=[
      Expr(
         value=Call(
            func=Name(
               id='spam',
               ctx=Load(),
               lineno=1,
               col_offset=0,
               end_lineno=1,
               end_col_offset=4),
            args=[
               Name(
                  id='eggs',
                  ctx=Load(),
                  lineno=1,
                  col_offset=5,
                  end_lineno=1,
                  end_col_offset=9),
               Constant(
                  value='and cheese',
                  lineno=1,
                  col_offset=11,
                  end_lineno=1,
                  end_col_offset=23)],
            keywords=[],
            lineno=1,
            col_offset=0,
            end_lineno=1,
            end_col_offset=24),
         lineno=1,
         col_offset=0,
         end_lineno=1,
         end_col_offset=24)],
   type_ignores=[])rr	s  r"�test_dump_indentz ASTHelpers_Test.test_dump_indent�s{���y�y�3�4��������$�q�1�
4�
	�	
������$��d�K�
N	�
	
�	
������$�4��J�#M�#	r>c��tjdd��}|jtj|�d�|jtj|d��d�tjtjdtj
��	�dd�
�}|jtj|�d�|jtj|d�
�d�|jtj|d��d�|jtj|dd��d�tjtjdtj
��	���}|jtj|�d�|jtj|d�
�d�y)Nr�rDr[zRaise()TrzRaise(lineno=3, col_offset=4)r)�id�ctx)�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())))r5�RaiserFr�r�rer	s  r"�test_dump_incompletez$ASTHelpers_Test.test_dump_incomplete�sM���y�y��a�0��������$���	
�	
������$�4�@�+�	
��y�y�S�X�X��#�(�(�*�=�a�TU�V��������$��1�	
�	
������$��>�&�	
�	
������$�4�@�I�	
�	
������$��RV�W�>�	
��y�y�s�x�x�3�C�H�H�J�?�@��������$��3�	
�	
������$��>�,�	
r>c�|�tjdd��}tjtjd�|jj
�|j_|j
tj|d��d�tjdddd�	�}tj|tjdd�
��}|j|j�|j|j�|j
|jd�|j
|jd�y)N�1 + 1rk��moderRTrz�Expression(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_locationr�r�rBrFr��Callrfr
rrr)r:�src�news   r"�test_copy_locationz"ASTHelpers_Test.test_copy_location�s����i�i��f�-���*�*�3�<�<��?�C�H�H�N�N�K�����������#�$�?�
=�	
��h�h�!�A�!�A�N������S�X�X��d�%K�L�����#�.�.�)����#�,�,�-�������Q�'��������+r>c���tjd�}|jjtjtj
tjdtj��tjd�gg���|j|tj|��d|_|jtj|d��d�y)Nz
write("spam")r&�eggsTra�Module(body=[Expr(value=Call(func=Name(id='write', ctx=Load(), lineno=1, col_offset=0, end_lineno=1, end_col_offset=5), args=[Constant(value='spam', lineno=1, col_offset=6, end_lineno=1, end_col_offset=12)], keywords=[], lineno=1, col_offset=0, end_lineno=1, end_col_offset=13), lineno=1, col_offset=0, end_lineno=1, end_col_offset=13), Expr(value=Call(func=Name(id='spam', ctx=Load(), lineno=1, col_offset=0, end_lineno=1, end_col_offset=0), args=[Constant(value='eggs', lineno=1, col_offset=0, end_lineno=1, end_col_offset=0)], keywords=[], lineno=1, col_offset=0, end_lineno=1, end_col_offset=0), lineno=1, col_offset=0, end_lineno=1, end_col_offset=0)], type_ignores=[]))
r5r�r�rr]rr�rer�rFrfr�r��r:rs  r"�test_fix_missing_locationsz*ASTHelpers_Test.test_fix_missing_locationss����i�i��(�������������#�(�(�6�3�8�8�:�*F�+.�<�<��+?�*@�"�"F�G�	H�����c�7�7��<�=����������#�$�?�

�	
r>c��tjdd��}|jtj|d��|�|jtj|d��d�tjdd��}|jtj|j
d��|j
�|jtj|d��d�tjtjd	tj��ggd
��}|jtj|�jd�|jtj|�j�y)
Nrrkrr�r�Trz�Expression(body=BinOp(left=Constant(value=1, lineno=4, col_offset=0, end_lineno=4, end_col_offset=1), op=Add(), right=Constant(value=1, lineno=4, col_offset=4, end_lineno=4, end_col_offset=5), lineno=4, col_offset=0, end_lineno=4, end_col_offset=5))�testr�)�funcr��keywordsrrR)r5r�rF�increment_linenor�r�rr�rerrfr
r"s  r"�test_increment_linenoz%ASTHelpers_Test.test_increment_linenos���i�i��f�-������-�-�c�Q�7��=�������#�$�?�
=�	
��i�i��f�-������-�-�c�h�h�!�<�c�h�h�G�������#�$�?�
=�	
��h�h����&�#�(�(�*�-�B��A�
��	
����-�-�c�2�9�9�1�=����#�.�.�s�3�>�>�?r>c�h�tjtd�d��}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_commentsrCr�rr�r�r�z@tag)r5r�rr(rFr�r�tagr"s  r"�test_increment_lineno_on_modulez/ASTHelpers_Test.test_increment_lineno_on_module0s����i�i�� �
�
!�"��	���S�A�&�����)�)�!�,�3�3�Q�7�����)�)�!�,�3�3�Q�7�����)�)�!�,�0�0�&�9r>c��tjdd��}ttj|j��}|j|j
d�jd�|j|ggd��y)N�foo()rkrr&r�)r'r�)r5r�r\�iter_fieldsr�rF�popr)r:r<�ds   r"�test_iter_fieldsz ASTHelpers_Test.test_iter_fields<s\���y�y��v�.���������+�,��������v��)�)�5�1������R�8�9r>c	�,�tjdd��}|jtt	tj
|j���d�tj
|j�}|jt|�jd�|jt|�jd�|jt|�jd�|jtjt|��d�y)	Nzspam(23, 42, eggs='leek')rkrrDr&�rPz1keyword(arg='eggs', value=Constant(value='leek')))r5r�rFr�r�iter_child_nodesr�r�rrKr�)r:r<�iterators   r"�test_iter_child_nodesz%ASTHelpers_Test.test_iter_child_nodesBs����y�y�4�6�B������T�#�"6�"6�t�y�y�"A�B�C�Q�G��'�'��	�	�2������h��*�*�F�3�����h��-�-�r�2�����h��-�-�r�2�������$�x�.�1�?�	
r>c�"�tjd�}|jtj|�d�tjd�}|jtj|jd�d�tjd�}|jtj|jd�d�tjd�}|jtj|jd�d�y)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)r5r�rF�
get_docstringr�r	s  r"�test_get_docstringz"ASTHelpers_Test.test_get_docstringMs����y�y�5�6������*�*�4�0�-�	/��y�y�C�D������*�*�4�9�9�Q�<�8�-�	/��y�y�C�D������*�*�4�9�9�Q�<�8�-�	/��y�y�@�A������*�*�4�9�9�Q�<�8�+�Fr>c�*�|jtjtjd���tjd�}|jtj|��tjd�}|jtj|��tjd�}|jtj|jd��tjd�}|jtj|jd��tjd�}|jtj|jd��tjd�}|jtj|jd��tjd�}|jtj|jd��tjd	�}|jtj|jd��tjd
�}|jtj|jd��y)Nr�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")rfr5r:r�r�r	s  r"�test_get_docstring_nonez'ASTHelpers_Test.test_get_docstring_none]s������#�+�+�C�I�I�b�M�:�;��y�y�.�/�����#�+�+�D�1�2��y�y�-�.�����#�+�+�D�1�2��y�y�-�.�����#�+�+�D�I�I�a�L�9�:��y�y�<�=�����#�+�+�D�I�I�a�L�9�:��y�y�<�=�����#�+�+�D�I�I�a�L�9�:��y�y�-�.�����#�+�+�D�I�I�a�L�9�:��y�y�<�=�����#�+�+�D�I�I�a�L�9�:��y�y�3�4�����#�+�+�D�I�I�a�L�9�:��y�y�B�C�����#�+�+�D�I�I�a�L�9�:r>c�2�tjd�}|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"""

rr�rRrCrDr�r��
)r5r�rFr�rrr	s  r"�:test_multi_line_docstring_col_offset_and_lineno_issue16806zJASTHelpers_Test.test_multi_line_docstring_col_offset_and_lineno_issue16806us����y�y�
+�
��	
������1��0�0�!�4�������1��,�,�a�0�������1��*�*�1�-�8�8�!�<�������1��*�*�1�-�4�4�a�8�������1��*�*�1�-�2�2�1�5�@�@�!�D�������1��*�*�1�-�2�2�1�5�<�<�a�@�������1��*�*�1�-�8�8�!�<�������1��*�*�1�-�4�4�b�9�������1��0�0�!�4�������1��,�,�b�1r>c���tjd�}|jdjd}|j	|j
d�|j	|jd�y)Nz if a:
    pass
elif b:
    pass
rr��r5r�r��orelserFrr�r:r<�	elif_stmts   r"�test_elif_stmt_start_positionz-ASTHelpers_Test.test_elif_stmt_start_position�sU���y�y�?�@���I�I�a�L�'�'��*�	�����)�)�1�-�����-�-�q�1r>c���tjd�}|jdjd}|j	|j
d�|j	|jd�y)Nz/if a:
    pass
elif b:
    pass
else:
    pass
rr�rBrDs   r"�'test_elif_stmt_start_position_with_elsez7ASTHelpers_Test.test_elif_stmt_start_position_with_else�sU���y�y�P�Q���I�I�a�L�'�'��*�	�����)�)�1�-�����-�-�q�1r>c���tjd�}|jdjjd}|j|jd�|j|jd�y)Nr-rr�r�)r5r�r�rKr�rFr
r)r:r<�starred_exprs   r"�*test_starred_expr_end_position_within_callz:ASTHelpers_Test.test_starred_expr_end_position_within_call�sZ���y�y��&���y�y��|�)�)�.�.�q�1������0�0�!�4�����4�4�a�8r>c��|jtjd�gd��|jtjd�ddi�|jtjd�d�|jtjd�hd	��|jtjd
�d�|jtjd�t��|j	t
tjd
�|jtjd�d�|jtjd�d�|jtjd�d�|jtjd�d�|jtjd�d�|jtjd�d�|jt
tjd��d�|j	t
tjd�|j	t
tjd�|j	t
tjd�y)Nz	[1, 2, 3]�r�rRr�z{"foo": 42}r�rPz(True, False, None)rz	{1, 2, 3}>r�rRr�zb"hi"shizset()r/�6�z+6z-6i����z3.25g
@z+3.25z-3.25g
�z-0.0z++6z+Truez2+3)rFr5r��setrTr��reprr�s r"�test_literal_evalz!ASTHelpers_Test.test_literal_eval�s�������)�)�+�6�	�B�����)�)�-�8�5�"�+�F�����)�)�*?�@�BU�V�����)�)�+�6�	�B�����)�)�'�2�E�:�����)�)�'�2�C�E�:����*�c�&6�&6��@�����)�)�#�.��2�����)�)�$�/��3�����)�)�$�/��4�����)�)�&�1�4�8�����)�)�'�2�D�9�����)�)�'�2�E�:�����c�.�.�v�6�7��@����*�c�&6�&6��>����*�c�&6�&6��@����*�c�&6�&6��>r>c��tjd�5tjd�|j	t
�5}tjd�ddd�|j
dtj��|j
dt|j��ddd�y#1swY�\xYw#1swYyxYw)Ni���3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333��33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333zExceeds the limit z Consider hexadecimal )	r�adjust_int_max_str_digitsr5r�rTr�r^rr_)r:�err_ctxs  r"�test_literal_eval_str_int_limitz/ASTHelpers_Test.test_literal_eval_str_int_limit�s���
�
.�
.�t�
4�	L����X�&��"�"�;�/�
+�7�� � ��*�
+��M�M�.��G�4E�4E�0F�G��M�M�2�C��8I�8I�4J�K�	L�	L�
+�
+��	L�	L�s$�+B>�B2�AB>�2B;	�7B>�>Cc�8�|jtjd�d�|jtjd�d�|jtjd�d�|jtjd�d�|jtjd	�d
�|jtjd�d�|jtjd
�d�|jtjd�d�|jtjd�d�|jtjd�d�|jtjd�d�|jtjd�d�|jtjd�d
�|jttjd�|jttjd�|jttjd�|jttjd�|jttjd�y)N�6jy@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))rFr5r�rTr�r�s r"�test_literal_eval_complexz)ASTHelpers_Test.test_literal_eval_complex�s�������)�)�$�/��4�����)�)�%�0�#�6�����)�)�'�2�E�:�����)�)�(�3�V�<�����)�)�&�1�4�8�����)�)�'�2�E�:�����)�)�&�1�4�8�����)�)�'�2�E�:�����)�)�,�7��D�����)�)�-�8�+�F�����)�)�,�7��D�����)�)�-�8�+�F�����)�)�(�3�T�:����*�c�&6�&6��@����*�c�&6�&6��A����*�c�&6�&6��@����*�c�&6�&6�
�C����*�c�&6�&6�	�Br>c���tjtjd�tjd�gtjd�g��}|jttj
|�tjtjd�gtjd�tjd�g��}|jttj
|�y)Nr�rRr�)�keys�values)r5�Dictr�rTr�r�)r:�	malformeds  r"�&test_literal_eval_malformed_dict_nodesz6ASTHelpers_Test.test_literal_eval_malformed_dict_nodes�s����H�H�3�<�<��?�C�L�L��O�"D�c�l�l�[\�o�M^�_�	����*�c�&6�&6�	�B��H�H�3�<�<��?�"3�S�\�\�!�_�c�l�l�[\�o�<^�_�	����*�c�&6�&6�	�Br>c�,�|jtjd�d�|jtjd�d�|jtjd�d�|jttjd�y)Nz    -1rz		-1z 	 -1z
 -1)rFr5r�rT�IndentationErrorr�s r"�test_literal_eval_trailing_wsz-ASTHelpers_Test.test_literal_eval_trailing_ws�sl������)�)�(�3�R�8�����)�)�(�3�R�8�����)�)�(�3�R�8����*�C�,<�,<�g�Fr>c	��d}|jt|�5tjd�ddd�tjtj
�tjtj
�tjd���}|jt|dd��d}|jt|�5tj|�ddd�y#1swY��xYw#1swYyxYw)Nz#malformed node or string on line 3:z{'a': 1,
'b':2,
'c':++3,
'd':4}rOrzmalformed node or string:)	rr�r5r��UnaryOp�UAddr�rfr)r:r�r<s   r"�"test_literal_eval_malformed_linenoz2ASTHelpers_Test.test_literal_eval_malformed_lineno�s���4��
�
#�
#�J��
4�	C����A�B�	C��{�{��H�H�J����C�H�H�J����Q��@�B�����'�$��$�7�8�*��
�
#�
#�J��
4�	#����T�"�	#�	#�	C�	C��	#�	#�s�C+�C7�+C4�7Dc��|jtd�5tjd�ddd�y#1swYyxYw)Nzunexpected indentz4
                \
                (\
            \ )rr�r5r�r�s r"�test_literal_eval_syntax_errorsz/ASTHelpers_Test.test_literal_eval_syntax_errors�s;��
�
#�
#�K�1D�
E�	�����
�	�	�	�s�6�?c�H�tjdtjd��gddd��g}tj|g�}|j	t
�5}t
|dd�ddd�|jdtj��y#1swY�/xYw)N�time�sleep�r;�r�r��levelrrr%rizinvalid integer value: None)
r5r�r�r�rTr�rzr^rr_)r:r�r�rbs    r"�test_bad_integerz ASTHelpers_Test.test_bad_integer�s������f�&)�i�i�W�&=�%>�%)�&*�t�=�>���j�j��r�"��
�
�
�z�
*�	)�b��C���(�	)��
�
�3�S����5F�G�	)�	)�s�B�B!c���tjdtjddd��gddd��g}tj|g�}t	|dd�}i}t||�|j
d|�y)Nrlrmrr�ror%ri)r5r�r�r�rzrir^)r:r�r�r��nss     r"�test_level_as_nonez"ASTHelpers_Test.test_level_as_none�su�����f�&)�i�i�W�78�Q�'H�&I�%)�&'�A�	7�8��
�j�j��r�"���s�F�F�+��
���T�2���
�
�g�r�"r>c�L�tjtj�dd��}||_|j	t
�5t
j�5ttj|�dd�ddd�ddd�y#1swY�xYw#1swYyxYw�Nr)rArrr�rk�
r5rf�Not�operandrTr�rr�rzrkrs  r"�test_recursion_directz%ASTHelpers_Test.test_recursion_directs���K�K�3�7�7�9�Q�1�=����	�
�
�
�~�
.�	=��+�+�-�
=�����q�)�8�V�<�
=�	=�	=�
=�
=��	=�	=�s$�B�!B�=B�B	�B�B#c��tjtj�dd��}tjtj�dd��}||_||_|j	t
�5t
j�5ttj|�dd�ddd�ddd�y#1swY�xYw#1swYyxYwrvrw)r:rr!s   r"�test_recursion_indirectz'ASTHelpers_Test.test_recursion_indirects����K�K�3�7�7�9�Q�1�=���K�K�3�7�7�9�Q�1�=����	���	�
�
�
�~�
.�	=��+�+�-�
=�����q�)�8�V�<�
=�	=�	=�
=�
=��	=�	=�s$�8C�
!B?�.C�?C	�C�C) rr8r_r�r�rr
rrrr#r)r-r3r8r;r=r@rFrHrKrRrXr[rardrhrjrqrtrzr|rOr>r"r�r�us����G�3�
:�
�*;�z
�:,� 
�(@�0
:�:�	
�G� ;�02�&2�2�9�?�&L�C�*C�G�
#��	H�
#�=�=r>r�c�
�eZdZdGed�d�ZdHed�d�ZdHd�Zd�Zd�Zd�Z	d	�Z
d
�Zd�Zd�Z
d
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z d �Z!d!�Z"d"�Z#d#�Z$d$�Z%d%�Z&d&�Z'd'�Z(d(�Z)d)�Z*d*�Z+d+�Z,d,�Z-d-�Z.d.�Z/d/�Z0d0�Z1d1�Z2e3jhd2�d3��Z5e6jnd4�Z8e6jre8�Z:e6jnd5�Z;e6jre;�Z<e6jnd6�Z=e6j|d6�Z?e6j�d7e6j���ZBe6jre6j�e6j�e6j�d5e6j���d8e6j���d9e6j����e6jre6j�e6j�e6j�d5e6j���d8e6j���d9e6j����e6jre6jnd:��e6jre6jnd6��e6jre6jnd;��e6j|d<�e6j�e6j|d<�g�e6j�e6j�e6j|d<�g�g�e6j�e8e=ge<g�e6j�e=e8ge<e:gd=�>�e6j�e=e6j�e6j�d?e6j���e6j���ge<e:gd@�>�e6j�e6j�e6j�e;d8e6j���d9e6j���ggg�A�e6j�eBgd=ge:g�A�e6j�eBgge:g�A�e6j�eBe6j|d<�ggg�A�e6j�eBe6j��ggg�A�e6j�eBgge6j��g�A�e6j�e=gd=ge:g�A�e6j�e6j�d=�g�e6j�dB�C�e6j�g�e6j�e:g�e6j�e:e<e6j|dD�g�e6j�dE�C�e6j�d5�C�e6j�e6j�dE�g�e6j�ggdE�>�gZLdF�ZMy)I�ASTValidatorTestsN�rc��dx|_|_tj|�|�t	|d|�y|j|�5}t	|d|�ddd�|j
|tj��y#1swY�/xYw)Nrr�)	rrr5rfrzrTr^rr_)r:r�r�rrrbs      r"r�zASTValidatorTests.modsw��&'�'��
�S�^��!�!�#�&��;��C��4�(��"�"�3�'�
-�2���X�t�,�
-��M�M�#�s�2�<�<�0�1�
-�
-�s�B�B
c��tjtj|�gg�}|j|||��y)Nr)r5r�r]r�)r:r<r�rr�s     r"rAzASTValidatorTests.exprs/���j�j�#�(�(�4�.�)�2�.������c�s��#r>c�V�tj|gg�}|j||�yr�)r5r�r�)r:rBr�r�s    r"rBzASTValidatorTests.stmt!s"���j�j�$���$������c�r>c	�d�tjtjtjdtj���g�}|j|dd�tjtjdtj���}|j|dd�y)NrY�must have Load contextrjrk)r5�Interactiver]r��Storer�rk)r:ras  r"r>zASTValidatorTests.test_module%sn���O�O�S�X�X�c�h�h�s�C�I�I�K�&@�A�B�C������,�h�7��N�N�3�8�8�C�����5�6������,�f�5r>c����			d�fd�	}tjdtjdtj���g}|||��d�|||��d�|||��d�||tjd�g��d	�||tjd
�g��d�tjdtjdtj
���g}|||tjdtj��g�
�d�tjdtjdtj
���tjdtjdtj
���g}|||dtjdtj��g��d�y)Nc	�r��|�g}|�g}|�g}|�g}|�g}tj|||||||�}�|�Sr�)r5r�)r�r�rVr�r�r�r��facs       �r"r�z5ASTValidatorTests._check_arguments.<locals>.arguments,sb����|����"� ���!��
������"� ���=�=��{�F�J�!,�e�X�?�D��t�9�r>rYrsr�)r�)r�r�)r�z"more positional defaults than argsrD)r�z3length of kwonlyargs is not the same as kw_defaults)r�r�rbrr�)r�r�)NNNNNNN)r5rr�r�r�re)r:r��checkr�r�s `   r"�_check_argumentsz"ASTValidatorTests._check_arguments+sa���:>�-1�15�	� ����S�X�X�c�3�9�9�;�7�8�9��
�i�T�"�$<�=�
�i�D�)�+C�D�
�i�4�(�*B�C�
�i�#�,�,�q�/�!2�3�;�	=�
�i�S�\�\�!�_�$5�6�L�	N�����S�X�X�c�3�8�8�:�6�7�8��
�i�T�S�X�X�c�3�9�9�;�-G�,H�I�/�	1�����S�X�X�c�3�8�8�:�6�7�����S�X�X�c�3�8�8�:�6�7�9��
�i�4�'+�S�X�X�c�3�9�9�;�-G�&H�J�2�	4r>c��tjggdggdg�}tjd|ggddg�}|j|d�tjd|tj�gtj
dtj��gddg�}|j|d�tjd|tj�ggtj
dtj��dg�}|j|d�tjdtj�tj�g�}|j|�d�}|j||j�y)NrYzempty body on FunctionDefr�c	�^�tjd|tj�ggddg�S�NrY)r5�FunctionDef�Passrss r"r�z+ASTValidatorTests.test_funcdef.<locals>.facXs%���?�?�3��s�x�x�z�l�B��d�B�O�Or>)r5r�r�rBr�r�r�r�)r:rbr!r�s    r"�test_funcdefzASTValidatorTests.test_funcdefMs���M�M�"�b�$��B��b�9���O�O�C��B��D�$��;���	�	�!�0�1��O�O�C��S�X�X�Z�L�3�8�8�C�����3M�2N�PT�VZ�\^�_���	�	�!�-�.��O�O�C��S�X�X�Z�L�"��H�H�S�#�)�)�+�6��b�
B���	�	�!�-�.��O�O�C�����3�8�8�:�,�?���	�	�!��	P����c�4�9�9�-r>c���d�}d}tjtj|��}|jd}|j|tj�|j||��y)Nc��|tjd�x��\dk(r�tjd�x��\ r�dk(r�\tjd�x��\dk(r� r�dk(r~\tjd�x�i\ rfdk(ra\tj
d�x�L\dk(rFtjd�x�3\tj
d�x�\dk(rtjd�x�\y	y	)
NrOr�rsr�r��capybara�pacaranaTF)r5r�r�rr�r�re)r<s r"�matcherz@ASTValidatorTests.test_funcdef_pattern_matching.<locals>.matcher^sx����_�_�G�U�C�M�M�,P�?O�?O������%1�\�c�h�h�j�%G�%G�c�h�h�&F�z�3�8�8�:�%(�X�X�%E�j�#�(�(�*��	G�
� r>zZ
            @capybara
            def foo(bar) -> pacarana:
                pass
        r)r5r��textwraprr�r�r�r�)r:r�r�r��funcdefs     r"�test_funcdef_pattern_matchingz/ASTValidatorTests.test_funcdef_pattern_matching\sY��	!���
���8�?�?�4�0�1���+�+�a�.�����g�s���7������(�)r>c��d
d�}|j|tjdtj��g��d�|j|tjdtjdtj���g��d�|j|g��d�|j|dg��d�|j|tjdtj��g�	�d�y)Nc��|�g}|�g}|�tj�g}|�g}|�g}tjd|||||�S)N�myclass)r5r��ClassDef)�basesr'r�r@�type_paramss     r"�clsz,ASTValidatorTests.test_classdef.<locals>.clsss_���}��������|����
�|���%�!#���"� ���<�<�	�5�(� $�n�k�C�
Cr>rY)r�r�)r'rizempty body on ClassDef�None disallowed)r@)NNNNN)rBr5r�r�r�)r:r�s  r"�
test_classdefzASTValidatorTests.test_classdefrs���	C�	
�	�	�#�S�X�X�c�3�9�9�;�7�8�9�*�	,��	�	�#����C����#�s�y�y�{�1K� L�M�N�*�	,��	�	�#�2�,� 8�9��	�	�#�D�6�"�$5�6��	�	�#�c�h�h�s�C�I�I�K�&@�%A�B�*�	,r>c	�2�|jtjg�d�|jtjdg�d�|jtjtjdtj��g�d�y)Nzempty targets on Deleter�rYzmust have Del context)rBr5�Deleter�rer�s r"�test_deletezASTValidatorTests.test_delete�sa���	�	�#�*�*�R�.�";�<��	�	�#�*�*�d�V�$�&7�8��	�	�#�*�*�c�h�h�s�C�H�H�J�7�8�9�)�	+r>c
��|jtjgtjd��d�|jtjdgtjd��d�|jtjtjdtj
��gtjd��d�|jtjtjdtj��gtjdtj���d�y)Nr�zempty targets on Assignr�rY�must have Store contextr�r�)rBr5�Assignr�r�rer�r�s r"�test_assignzASTValidatorTests.test_assign�s����	�	�#�*�*�R����a��1�3L�M��	�	�#�*�*�d�V�S�\�\�!�_�5�7H�I��	�	�#�*�*�c�h�h�s�C�H�H�J�7�8�#�,�,�q�/�J�+�	-��	�	�#�*�*�c�h�h�s�C�I�I�K�8�9� #����c�i�i�k� :�<�*�	,r>c	� �tjtjdtj��tj�tjdtj���}|j|d�tjtjdtj��tj�tjdtj���}|j|d�y)NrYr�r�r�)r5�	AugAssignr�rerGrBr�)r:�augs  r"�test_augassignz ASTValidatorTests.test_augassign�s����m�m�C�H�H�S�#�(�(�*�5�s�w�w�y��H�H�S�#�(�(�*�5�7���	�	�#�0�1��m�m�C�H�H�S�#�)�)�+�6����	��H�H�S�#�)�)�+�6�8���	�	�#�/�0r>c
�t�tjdtj��}tjdtj��}tj�}|jtj||gg�d�|jtjtjdtj��||gg�d�|jtj|tjdtj��|gg�d�tjtjdtj���}|jtj|||gg�d�|jtj|||g|g�d�y)NrYr�zempty body on Forr�r�)r5r�r�rer�rBr�r])r:rYr��prs     r"�test_forzASTValidatorTests.test_for�s���H�H�S�#�)�)�+�&���H�H�S�#�(�(�*�%���H�H�J���	�	�#�'�'�!�Q��B�'�)<�=��	�	�#�'�'�#�(�(�3����
�3�Q���R�@�+�	-��	�	�#�'�'�!�S�X�X�c�3�9�9�;�7�!��b�A�*�	,��H�H�S�X�X�c�3�9�9�;�/�0���	�	�#�'�'�!�Q���R�(�*B�C��	�	�#�'�'�!�Q���a�S�)�+C�Dr>c
�F�|jtjtjd�gg�d�|jtjtjdtj
��tj�gg�d�|jtjtjd�tj�gtjtjdtj
���g�d�y)Nr�zempty body on WhilerYr�)rBr5�Whiler�r�r�r�r]r�s r"�
test_whilezASTValidatorTests.test_while�s����	�	�#�)�)�C�L�L��O�R��4�6K�L��	�	�#�)�)�C�H�H�S�#�)�)�+�6������b�I�*�	,��	�	�#�)�)�C�L�L��O�c�h�h�j�\�!�h�h�s�x�x��S�Y�Y�[�'A�B�C�E�5�	7r>c�:�|jtjtjd�gg�d�tjtjdtj
��tj�gg�}|j|d�tjtjd�tjtjdtj
���gg�}|j|d�tjtjd�tj�gtjtjdtj
���g�}|j|d�y)Nr�zempty body on IfrYr�)rBr5�Ifr�r�r�r�r])r:r}s  r"�test_ifzASTValidatorTests.test_if�s����	�	�#�&�&����a��"�b�1�3E�F��F�F�3�8�8�C�����-����
�|�R�@���	�	�!�-�.��F�F�3�<�<��?�S�X�X�c�h�h�s�C�I�I�K�.H�%I�$J�B�O���	�	�!�-�.��F�F�3�<�<��?�S�X�X�Z�L��H�H�S�X�X�c�3�9�9�;�7�8�9�
;���	�	�!�-�.r>c���tj�}|jtjg|g�d�tjtj
d�d�}|jtj|gg�d�tjtjdtj��d�}|jtj|g|g�d�tjtj
d�tjdtj���}|jtj|g|g�d�y)Nzempty items on Withr�zempty body on WithrYr�r�)	r5r�rB�Withr�r�r�r�re)r:r�r}s   r"�	test_withzASTValidatorTests.test_with�s����H�H�J���	�	�#�(�(�2��s�#�%:�;��L�L����a��$�/���	�	�#�(�(�A�3��#�%9�:��L�L����#�s�y�y�{�3�T�:���	�	�#�(�(�A�3���$�&>�?��L�L����a��#�(�(�3����
�*C�D���	�	�#�(�(�A�3���$�&?�@r>c���tjdtjd��}|j|d�tjtjdtj
��d�}|j|d�tjtjd�tjdtj
���}|j|d�y)Nr�z!Raise with cause but no exceptionrYr�rD)r5rr�rBr�r�)r:�rs  r"�
test_raisezASTValidatorTests.test_raise�s����I�I�d�C�L�L��O�,���	�	�!�8�9��I�I�c�h�h�s�C�I�I�K�0�$�7���	�	�!�-�.��I�I�c�l�l�1�o�s�x�x��S�Y�Y�[�'A�B���	�	�!�-�.r>c��tj�}tjggg|g�}|j|d�tjtjtj
dtj���ggg|g�}|j|d�tj|gggg�}|j|d�tj|gg|g|g�}|j|d�tj|gtjddg�ggg�}|j|d�tjtj
dtj��d|g�g}|jtj|g|gg�d�tjdd|g�g}tj|g|tjtj
dtj���g|g�}|j|d�tj|g||gtjtj
dtj���g�}|j|d�y)Nzempty body on TryrYr�z-Try has neither except handlers nor finalbodyz%Try has orelse but no except handlers�empty body on ExceptHandlerr�)r5r��TryrBr]r�r��
ExceptHandler�r:r�rrs    r"�test_tryzASTValidatorTests.test_try�s����H�H�J���G�G�B��B���$���	�	�!�(�)��G�G�S�X�X�c�h�h�s�C�I�I�K�8�9�:�B��Q�C�H���	�	�!�-�.��G�G�Q�C��R��$���	�	�!�D�E��G�G�Q�C��a�S�1�#�&���	�	�!�<�=��G�G�Q�C�#�+�+�D�#�r�:�;�R��D���	�	�!�2�3�
�
�
�s�x�x��S�Y�Y�[�9�3���
D�E���	�	�#�'�'�1�#�q�"�b�)�+C�D�
�
�
�t�S�1�#�
.�/���G�G�Q�C��S�X�X�c�h�h�s�C�I�I�K�&@�A�B�Q�C�H���	�	�!�-�.��G�G�Q�C��Q�C�#�(�(�3�8�8�C�����+E�"F�!G�H���	�	�!�-�.r>c��tj�}tjggg|g�}|j|d�tjtjtj
dtj���ggg|g�}|j|d�tj|gggg�}|j|d�tj|gg|g|g�}|j|d�tj|gtjddg�ggg�}|j|d�tjtj
dtj��d|g�g}|jtj|g|gg�d�tjdd|g�g}tj|g|tjtj
dtj���g|g�}|j|d�tj|g||gtjtj
dtj���g�}|j|d�y)Nzempty body on TryStarrYr�z1TryStar has neither except handlers nor finalbodyz)TryStar has orelse but no except handlersr�r�)r5r��TryStarrBr]r�r�r�r�s    r"�
test_try_starzASTValidatorTests.test_try_star�s����H�H�J���K�K��B��Q�C�(���	�	�!�,�-��K�K����#�(�(�3��	�	��"<�=�>��B���L���	�	�!�-�.��K�K���R��R�(���	�	�!�H�I��K�K���R�!��q�c�*���	�	�!�@�A��K�K���c�/�/��c�2�>�?��R�H���	�	�!�2�3�
�
�
�s�x�x��S�Y�Y�[�9�3���
D�E���	�	�#�+�+�q�c�1�b�"�-�/G�H�
�
�
�t�S�1�#�
.�/���K�K���Q����#�(�(�3��	�	��*D�!E� F���L���	�	�!�-�.��K�K���Q���c�h�h�s�x�x��S�Y�Y�[�/I�&J�%K�L���	�	�!�-�.r>c	��|jtjtjdtj��d�d�tjtjdtj
��tjdtj���}|j|d�y)NrYr�r�)rBr5�Assertr�r�re)r:�assrts  r"�test_assertzASTValidatorTests.test_assert�ss���	�	�#�*�*�S�X�X�c�3�9�9�;�7��>�*�	,��
�
�3�8�8�C�����4��8�8�C�����5�7���	�	�%�1�2r>c�N�|jtjg�d�y)Nzempty names on Import)rBr5r�r�s r"�test_importzASTValidatorTests.test_import����	�	�#�*�*�R�.�"9�:r>c���tjdtjdd�gd�}|j|d�|jtjdgd�d�y)NrYi���zNegative ImportFrom levelrzempty names on ImportFrom)r5r�r�rB)r:�imps  r"�test_importfromz!ASTValidatorTests.test_importfromsM���n�n�T�C�I�I�c�4�$8�#9�3�?���	�	�#�2�3��	�	�#�.�.��r�1�-�/J�Kr>c�N�|jtjg�d�y)Nzempty names on Global)rBr5�Globalr�s r"�test_globalzASTValidatorTests.test_globalr�r>c�N�|jtjg�d�y)Nzempty names on Nonlocal)rBr5�Nonlocalr�s r"�
test_nonlocalzASTValidatorTests.test_nonlocals���	�	�#�,�,�r�"�$=�>r>c��tjtjdtj���}|j	|d�y�NrYr�)r5r]r�r�rBrs  r"�	test_exprzASTValidatorTests.test_exprs0���H�H�S�X�X�c�3�9�9�;�/�0���	�	�!�-�.r>c	��tjtj�g�}|j|d�tjtj�tjd�g�}|j|d�tjtj�tjd�dg�}|j|d�tjtj�tjd�tj
dtj��g�}|j|d�y)Nzless than 2 valuesr�rDr�rYr�)r5�BoolOp�AndrAr�r�r�)r:rs  r"�test_boolopzASTValidatorTests.test_boolops����J�J�s�w�w�y�"�%���	�	�!�)�*��J�J�s�w�w�y�3�<�<��?�"3�4���	�	�!�)�*��J�J�s�w�w�y�3�<�<��?�D�"9�:���	�	�!�&�'��J�J�s�w�w�y�3�<�<��?�C�H�H�S�#�)�)�+�4N�"O�P���	�	�!�-�.r>c���tjtj�tjdtj���}|j|d�yr�)r5rfrxr�r�rA)r:�us  r"�test_unaryopzASTValidatorTests.test_unaryops8���K�K����	�3�8�8�C�����#=�>���	�	�!�-�.r>c
��tjggdggdg�}|jtj|tjdtj
���d�d�}|j
||j�y)NrYr�c�z�tj|tjdtj���Sr�)r5�Lambdar�rerss r"r�z*ASTValidatorTests.test_lambda.<locals>.fac$s$���:�:�d�C�H�H�S�#�(�(�*�$=�>�>r>)r5r�rAr�r�r�r�)r:rbr�s   r"�test_lambdazASTValidatorTests.test_lambda sb���M�M�"�b�$��B��b�9���	�	�#�*�*�Q�����c�i�i�k� :�;�*�	,�	?����c�4�9�9�-r>c��tjdtj��}tjdtj��}|||f|||f|||ffD]$}|j	tj
|�d��&y�NrYr�r�)r5r�rer�rA�IfExp)r:�lrr�s    r"�
test_ifexpzASTValidatorTests.test_ifexp(sp���H�H�S�#�(�(�*�%���H�H�S�#�)�)�+�&����1�I��1�a�y�1�a��)�3�	B�D��I�I�c�i�i��&�(@�A�	Br>c�B�tjgtjdtj��g�}|j	|d�tjtjdtj��gdg�}|j	|d�y)NrYzsame number of keys as valuesr�)r5r_r�rerA)r:r2s  r"�	test_dictzASTValidatorTests.test_dict.sj���H�H�R�#�(�(�3����
�3�4�5���	�	�!�4�5��H�H�c�h�h�s�C�H�H�J�/�0�4�&�9���	�	�!�&�'r>c���|jtjdg�d�tjtjdtj��g�}|j|d�y�Nr�rYr�)rAr5�Setr�r��r:rs  r"�test_setzASTValidatorTests.test_set4sL���	�	�#�'�'�4�&�/�#4�5��G�G�S�X�X�c�3�9�9�;�/�0�1���	�	�!�-�.r>c	���|j|g�d�tjtjdtj��tjdtj��gd�}|j||g�d�tjtjdtj
��tjdtj
��gd�}|j||g�d�tjdtj
��}tjdtj��}tj||dgd�}|j||g�d�tj||tjdtj
��gd�}|j||g�d�y)Nz comprehension with no generatorsrYrr�r�r�r�)rAr5r�r�rer�)r:r��grYr�s     r"�_check_comprehensionz&ASTValidatorTests._check_comprehension9sO���	�	�#�b�'�=�>����c�h�h�s�C�H�H�J�7�!�h�h�s�C�H�H�J�7��Q�
@���	�	�#�q�c�(�5�6����c�h�h�s�C�I�I�K�8�!�h�h�s�C�I�I�K�8�"�a�
A���	�	�#�q�c�(�4�5��H�H�S�#�)�)�+�&���H�H�S�#�(�(�*�%�����a��T�F�A�.���	�	�#�q�c�(�-�.����a��S�X�X�c�3�9�9�;�%?�$@�!�D���	�	�#�q�c�(�4�5r>c	�z��tjtjdtj��tjdtj��gd�}|j�tjdtj��|g�d��fd�}|j
|�y)NrYrr�c�b���tjdtj��|�Sr�)r5r�r�)�gensr�s �r"�wrapz,ASTValidatorTests._simple_comp.<locals>.wrapMs!����s�x�x��S�Y�Y�[�1�4�8�8r>)r5r�r�r�rerAr�)r:r�r�r�s `  r"�_simple_compzASTValidatorTests._simple_compHs}������c�h�h�s�C�I�I�K�8�!�h�h�s�C�H�H�J�7��Q�
@���	�	�#�c�h�h�s�C�I�I�K�0�1�#�6�*�	,�	9��!�!�$�'r>c�B�|jtj�yr�)r�r5�ListCompr�s r"�
test_listcompzASTValidatorTests.test_listcompQs�����#�,�,�'r>c�B�|jtj�yr�)r�r5�SetCompr�s r"�test_setcompzASTValidatorTests.test_setcompTs�����#�+�+�&r>c�B�|jtj�yr�)r�r5�GeneratorExpr�s r"�test_generatorexpz#ASTValidatorTests.test_generatorexpWs�����#�*�*�+r>c���tjtjdtj��tjdtj��gd�}tj
tjdtj��tjdtj��|g�}|j
|d�tj
tjdtj��tjdtj��|g�}|j
|d�d�}|j|�y)Nr�r�rrYr�c���tjdtj��}tjdtj��}tj|||�S)NrYr�)r5r�re�DictComp)�comps�kr0s   r"�factoryz0ASTValidatorTests.test_dictcomp.<locals>.factorycsA������c�h�h�j�)�A�����c�h�h�j�)�A��<�<��1�e�,�,r>)r5r�r�r�rerrAr�)r:r��crs    r"�
test_dictcompzASTValidatorTests.test_dictcompZs������c�h�h�s�C�I�I�K�8�!�h�h�s�C�H�H�J�7��Q�
@���L�L����#�s�y�y�{�3����#�s�x�x�z�2�Q�C�
9���	�	�!�-�.��L�L����#�s�x�x�z�2����#�s�y�y�{�3�a�S�
:���	�	�!�-�.�	-�	
�!�!�'�*r>c	�0�|jtjtjdtj���d�|jtj
tjdtj���d�y)NrYzmust have Load)rAr5�Yieldr�r��	YieldFromr�s r"�
test_yieldzASTValidatorTests.test_yieldisT���	�	�#�)�)�C�H�H�S�#�)�)�+�6�7�9I�J��	�	�#�-�-�����c�i�i�k� :�;�=M�Nr>c���tjdtj��}tj|tj�gg�}|j|d�tj|tj�gtjd�tjd�g�}|j|d�tjtjd�tj�g|g�}|j|�tj|tj�gtjd�g�}|j|�y)NrYzno comparatorsrDrCz,different number of comparators and operands�blah)r5r�re�Compare�InrAr�)r:r@�comps   r"�test_comparezASTValidatorTests.test_comparems����x�x��S�X�X�Z�(���{�{�4�#�&�&�(��R�0���	�	�$�(�)��{�{�4�#�&�&�(��c�l�l�1�o�s�|�|�A��-O�P���	�	�$�F�G��{�{�3�<�<��/�#�&�&�(��d�V�D���	�	�$���{�{�4�#�&�&�(��c�l�l�6�.B�-C�D���	�	�$�r>c���tjdtj��}tjdtj��g}tjdtjdtj���g}tjtjdtj
��||�}|j
|d�tj|dg|�}|j
|d�tjdtjdtj
���g}tj|||�}|j
|d�y)NrYr�r
r�r�r�)r5r�rer�rr�rA)r:r&r�r'�call�bad_keywordss      r"�	test_callzASTValidatorTests.test_callxs����x�x��S�X�X�Z�(������c�h�h�j�)�*���K�K��S�X�X�c�3�8�8�:�%>�?�@���x�x�����c�i�i�k�2�D�(�C���	�	�$�0�1��x�x��t�f�h�/���	�	�$�)�*����C����#�s�y�y�{�)C�D�E���x�x��d�L�1���	�	�$�0�1r>c���tjd��5}tjddt�ddlm}ddd�tjd��5}tjddt�Gd�d	t�}Gd
�dt�}Gd�d
t�}dD]&}|jt	j
|���(|�|�|�fD]-}|jt	j
|�dt���/	ddd�|jD�cgc]}t|j���c}gd��y#1swY��xYw#1swY�LxYwcc}w)NTr�r�r�rr!r�c��eZdZy)�*ASTValidatorTests.test_num.<locals>.subintNr^rOr>r"�subintr�r3r>rc��eZdZy)�,ASTValidatorTests.test_num.<locals>.subfloatNr^rOr>r"�subfloatr�r3r>rc��eZdZy)�.ASTValidatorTests.test_num.<locals>.subcomplexNr^rOr>r"�
subcomplexr�r3r>r )�0�hellozinvalid typer)rrrrr)r�r�r�r�r5r�r�floatrrArWrFrr)r:r	r�rrr �objr
s        r"�test_numzASTValidatorTests.test_num�s(��
�
$�
$�D�
1�	 �T��#�#�H�b�2D�E��	 ��
$�
$�D�
1�	G�T��#�#�H�b�2D�E�
��
�
�5�
�
�W�
�#�
(���	�	�#�'�'�#�,�'�
(��x���Z�\�9�
G���	�	�#�'�'�#�,��I�	�F�
G�	G�	
���$�7�Q�#�a�i�i�.�7�:
�	�#	 �	 ��	G�	G��8s�"E�B8E�'E'�E�E$c���tjtjdtj��dtj��}|j|d�yr�)r5�	Attributer�r�rerA)r:r�s  r"�test_attributez ASTValidatorTests.test_attribute�s:���}�}�S�X�X�c�3�9�9�;�7��c�h�h�j�I���	�	�$�0�1r>c	��tjtjdtj��tjd�tj
��}|j
|d�tjdtj
��}tj|tjdtj��tj
��}|j
|d�tjdtj��}|ddfd|dfdd|ffD]M}tj|�}|j
tj||tj
��d��Otjgtj
��}|j
tj||tj
���tj|gtj
��}|j
tj||tj
��d�y)NrYr�r�r�)	r5�	Subscriptr�r�r�rerA�Slice�Tuple)r:�subrYrr��sls      r"�test_subscriptz ASTValidatorTests.test_subscript�sw���m�m�C�H�H�S�#�)�)�+�6����Q���H�H�J�(���	�	�#�/�0��H�H�S�#�(�(�*�%���m�m�A�s�x�x��S�Y�Y�[�9��H�H�J�(���	�	�#�/�0��H�H�S�#�)�)�+�&����d�O�d�A�t�_�t�T�1�o�E�	0�D����D�!�B��I�I�c�m�m�A�r�3�8�8�:�6�.�
0�	0��Y�Y�r�3�8�8�:�
&���	�	�#�-�-��2�s�x�x�z�2�3�
�Y�Y��s�C�H�H�J�
'���	�	�#�-�-��2�s�x�x�z�2�4L�Mr>c	�f�tjtjtjdtj��tj
��gtj
��}tj|gtjd��}|j|d�y)NrYrDr�)	r5�List�Starredr�rer�r�r�rB)r:r@�assigns   r"�test_starredzASTValidatorTests.test_starred�si���x�x����S�X�X�c�3�8�8�:�%>��	�	��L�M��	�	��%�����T�F�C�L�L��O�4���	�	�&�3�4r>c	��|j|dgtj��d�|j|tjdtj��gtj��d�yr�)rAr5rer�r�)r:r�s  r"�	_sequencezASTValidatorTests._sequence�sR���	�	�#�t�f�c�h�h�j�)�+<�=��	�	�#�s�x�x��S�Y�Y�[�1�2�C�H�H�J�?�*�	,r>c�B�|jtj�yr�)r6r5r1r�s r"�	test_listzASTValidatorTests.test_list�s�����s�x�x� r>c�B�|jtj�yr�)r6r5r,r�s r"�
test_tuplezASTValidatorTests.test_tuple�s�����s�y�y�!r>c���tjd��5}tjddt�ddlm}ddd�tjd��5}tjddt�|j
t	j
d��ddd�|jD�cgc]}t|j���c}d	g�y#1swY��xYw#1swY�JxYwcc}w)
NTr�r�r�r)r�r�rDr)
r�r�r�r�r5r�rArFrr)r:r	r�r
s    r"�test_nameconstantz#ASTValidatorTests.test_nameconstant�s���
�
$�
$�D�
1�	)�T��#�#�H�b�2D�E�(�	)��
$�
$�D�
1�	+�T��#�#�H�b�2D�E��I�I�c�&�&�q�)�*�	+�	
���$�7�Q�#�a�i�i�.�7�i�:
�	�	)�	)��	+�	+��8s�"C�AC �.C,�C� C)�cpuc�<�tjjtj�}tj
|�D�cgc]}|j
d�s�|��}}|jddg�|D]�}|j|�5tjj||�}t|dd��5}|j�}ddd�tj|�}t||d�ddd���ycc}w#1swY�<xYw#1swY��xYw)Nz.pyztest/test_grammar.pyztest/test_unpack_ex.pyr��utf-8��encodingri)�os�path�dirnamer5�__file__�listdir�endswith�extendry�join�open�readr�rz)r:�stdlib�fnr�r��fpr�r�s        r"�test_stdlib_validatesz'ASTValidatorTests.test_stdlib_validates�s�����������.�� �j�j��0�G��B�K�K��4F��G��G�
���,�.F�G�H��	)�F����f�%�
)��W�W�\�\�&�&�1���"�c�G�4�'���W�W�Y�F�'��i�i���+����R��(�
)�
)�	)��H�
'�'��
)�
)�s0�D�D�/D�:D�+D�D�D�D	r�rYT�carterr�r�.rM�stringr�)�rest�lol�legit)�patterns�	kwd_attrs�kwd_patternsr�rn�xxx�_c
�2�tjdtj��}|jD]�}|j	tj
|d���5tj|tj|tj�g��g��}tj|�}tj|gg�}|jt�5t|dd�ddd�ddd���y#1swY�xYw#1swY��xYw)NrYrDr)r�r�)�subject�casesr�ri)r5r�re�_MATCH_PATTERNSryr��Matchr�r�rfr�rTr�rz)r:�name_xr�r<r�s     r"�test_match_validation_patternz/ASTValidatorTests.test_match_validation_patternds������#�s�x�x�z�*���+�+�	6�G����c�h�h�w�q�9�:�

6��y�y�"����$+�$'�H�H�J�<������0�0��6�����T�F�B�/���&�&�z�2�6��F�H�f�5�6�

6�

6�	6�6�6��

6�

6�s%�BD
� D�.D
�D
�D
�
D	)Nrir�)Nrr8r_r�r�rArBr>r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrr%r(r/r4r6r8r:r<r�requires_resourcerOr5r��
constant_1�
MatchValue�	pattern_1�
constant_x�	pattern_x�
constant_true�MatchSingleton�pattern_truer�re�name_carterr'r��
MatchSequence�MatchMappingr2�
MatchClass�	MatchStar�MatchAs�MatchOrr]r`rOr>r"r~r~s���2�Z�2�$�*�$��6� 4�D
.�*�,,�.+�,�1�E�7�/�A�/�/�(/�(3�;�L�
;�?�/�/�/�.�B�(�/�

6�(�(�'�,�
+�O�	�
2��42�N�$5�,�
!�"���W���u�%�
)�&�
)�����a��J�����z�*�I�����c�"�J�����z�*�I� �C�L�L��&�M�%�3�%�%�d�+�L��#�(�(�8�X�S�X�X�Z�0�K�	�����C�M�M���
�
��C�H�H�S�)�#�)�)�+�.���������X�S�X�X�Z�
�	
�	�����C�M�M���
�
��C�H�H�S�(�#�(�(�*�-���������X�S�X�X�Z�
�	
�	�����C�L�L���	
�	�����C�L�L���	
�	�����C�L�L��!�	
�	����8�$�����
�#�
�
�X�
&�
�	�	����!��!�!�*��*�*�8�4���
�	
�	����
��'�
�K�	
�	����
�J�'�
�	�"��	
�
	����
�K�C�K�K����������
�(C�X�S�X�X�Z�P�Q�
�	�"��	
�
	�����C�M�M���
�
��������%��X�S�X�X�Z�	
!�
�2�B�
	
�	�������h�#��		
�	�������#��		
�	�����(�c�(�(��2�3���		
�	�����#�c�m�m�o�&���		
�	�������'�#�-�-�/�*�		
�	�������h�#��		
�	������
�
�f�%�
�	
�
	�����	
�	�����	
�	����
�K�	
�	����
�	�#5�3�#5�#5�e�#<�=�	
�	��������
�
�3������=�3�=�=��-�.�/������R�c�*�ox�O�t6r>r~c�j�eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
ejd	��Z
d
�Zd�Zy)
�
ConstantTestsz$Tests on the ast.Constant node type.c��tjd�}|jdj}tj|��}tj
||�||jd_t
|dd�}i}t||�|dS)Nzx = 123rr
r�rirY)r5r�r�rKr�rrzri)r:rKr�r<�new_noder�rss       r"�compile_constantzConstantTests.compile_constantzsv���y�y��#���y�y��|�!�!���<�<�e�,�����(�D�)�%��	�	�!����t�Z��0��
���T�2���#�w�r>c���|jt�5}|jgd��ddd�|jt	j
�d�y#1swY�/xYw)NrMz%got an invalid type in Constant: list)rTrWrurFrr_)r:rbs  r"�test_validationzConstantTests.test_validation�sR��
�
�
�y�
)�	-�R��!�!�)�,�	-�����R�\�\�*�@�	B�	-�	-�s�A�A!c���dddtdt�fD]@}|j|��5|j|�}|j	||�ddd��By#1swY�MxYw)NFTr>)�const)rrjryrur�)r:ryrKs   r"�test_singletonszConstantTests.test_singletons�sf���E�4��3�	��D�	,�E����E��*�
,��-�-�e�4���
�
�e�U�+�
,�
,�	,�
,�
,�s�$A�A"	c	�>�d}tdh�}td�D]}|df}t|dh�}�ddddd	td
�td�||f	}|D]@}|j|��5|j	|�}|j||�ddd��By#1swY�MxYw)
N)r�r�r�rR�{g�^@y�^@�unicode�bytesrrjr
)rjr�rryrurF)r:�nested_tuple�nested_frozensetrpr^rKr s       r"�test_valueszConstantTests.test_values�s�����$�a�S�>���1�X�	@�E�(�!�,�L�(�*:�A�)>�?��	@��u�d��X���.�)�K�"8�� 0�2���	0�E����E��*�
0��.�.�u�5��� � ���/�
0�
0�	0�
0�
0�s�$$B�B	c��tjd�}|jdjd}tjd��}tj
||�||jdjd<|j
t�5}t|dd�ddd�|jtj�d�y#1swY�/xYw)N�x = 1rr�r
rQriz6expression which can't be assigned to in Store context)r5r�r��targetsr�rrTr�rzrFrr_)r:r�r��
new_targetrbs     r"�test_assign_to_constantz%ConstantTests.test_assign_to_constant�s����y�y��!�����1��%�%�a�(���\�\��*�
����*�f�-�",��	�	�!����Q��
�
�
�z�
*�	,�b��D�(�F�+�	,�����R�\�\�*�/�	0�	,�	,�s�C�Cc�x�tjd�}|jtj|�d�y)Nz'docstring'
x = 1�	docstring)r5r�rFr:r�s  r"r;z ConstantTests.test_get_docstring�s,���y�y�-�.������*�*�4�0�+�>r>c���t|dd�}g}tj|�D]<}|jdk(s|jdk(s�"|j	|j
��>|S)Nr�ri�
LOAD_CONST�RETURN_CONST)rz�dis�get_instructions�opnamer�argval)r:r��co�consts�instrs     r"�get_load_constzConstantTests.get_load_const�s_���T�:�v�
.�����)�)�"�-�	,�E��|�|�|�+�u�|�|�~�/M��
�
�e�l�l�+�	,��
r>c��gd�}dj|D�cgc]}dj|���c}�}|dz
}|jtdf�t	j
|�}|j
|j|�|�t|j|�D]B\}}t	j|��}t	j||j�||_�D|j
|j|�|�ycc}w)N)	NTF�|g@y@r}r~rMr�zx={!r}z
x = ...r
)
rIr�rHrr5r�rFr�rxr�r�rrK)r:r�ryr�r�r3rts       r"�test_load_constzConstantTests.test_load_const�s������y�y�f�E�U�(�/�/�%�0�E�F�������
�
�x��&�'��y�y��������,�,�T�2��	!�!����F�3�	$�M�F�E��|�|�%�0�H����h����5�#�F�L�		$�	
����,�,�T�2��	!��Fs�Dc��tjd�}|jdj}tjd��}tj
||j�||_tjd��}tj
||j�||_|jtj|�d�y)Nz1 + 2rr�r
y4@y$@4@)
r5r�r�rKr�rr@rBrFr�)r:r��binop�new_left�	new_rights     r"rRzConstantTests.test_literal_eval�s����y�y��!���	�	�!��"�"���<�<�b�)�����(�E�J�J�/���
��L�L�s�+�	����)�U�[�[�1��������)�)�%�0�&�9r>c���tjdd��j}|j|jd�|j|j
d�tjdd��j}|j|jd�|j|j
d�tjdd��j}|j|jd�|j|j
d�tjdd��j}|j|jd	�|j|j
d�y)
Nz"x"rkrrYzu"x"r�zr"x"zb"x"�x)r5r�r�rFrKrq)r:rs  r"�test_string_kindzConstantTests.test_string_kind�s����I�I�e�&�)�.�.��������#�&��������&��I�I�f�6�*�/�/��������#�&��������%��I�I�f�6�*�/�/��������#�&��������&��I�I�f�6�*�/�/��������$�'��������&r>N)rr8r_r�rurwrzr�r�r;r�rr�r�rRr�rOr>r"rrrrwsM��.��B�,�
0�0�?��
���!��!�8:�'r>rrc���eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z!d �Z"y!)"�EndPositionTestsz�Tests for end position of AST nodes.

    Testing end positions of nodes requires a bit of extra care
    because of how LL parsers work.
    c�t�|j|j|�|j|j|�yr�)rFr
r)r:rHr
rs    r"�_check_end_poszEndPositionTests._check_end_pos	s.������,�,�j�9�����0�0�.�Ar>c�P�|jtj||�|�yr�)rFr5�get_source_segment)r:r�rH�contents    r"�_check_contentzEndPositionTests._check_content	s������/�/���A�7�Kr>c�Z�tj|�jdjS)Nr)r5r�r�rKr�s  r"�_parse_valuezEndPositionTests._parse_value		s#���y�y��|� � ��#�)�)�)r>c��d}|j|�}|j||jd�|j||jjdd�|j||jjd�y)Nzlambda x, *y: Noner#rrYr�)r�r�r�r�rV)r:r�lams   r"r�zEndPositionTests.test_lambda	sf�� ������"�����A�s�x�x��0����A�s�x�x�}�}�Q�/��5����A�s�x�x����4r>c�L�td�j�}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
            rrC�zreturn Truezx: intrzkwargs: Any�Any)
rr�r5r�r�r�r�r��
annotationr��r:r�fdefs   r"�
test_func_defzEndPositionTests.test_func_def	s�����
����
	
��y�y��|� � ��#�����D�!�R�(����A�t�y�y��|�]�;����A�t�y�y�~�~�a�0�(�;����A�t�y�y�~�~�a�0�;�;�U�C����A�t�y�y���
�>����A�t�y�y���9�9�5�Ar>c��d}|j|�}|j||jd�|j||jdjd�|j||jdjd�y)Nzfunc(x, y=2, **kw)r&r�2r��kw)r�r�r&r'rK�r:rrs   r"rzEndPositionTests.test_call%	so�� ��� � ��#�����A�t�y�y�&�1����A�t�}�}�Q�/�5�5�s�;����A�t�}�}�Q�/�5�5�t�<r>c��d}|j|�}|j||jd�|j|dd�y)Nzx[0]()zx[0]r�rO)r�r�r&r�r�s   r"�test_call_noargsz!EndPositionTests.test_call_noargs,	s?����� � ��#�����A�t�y�y�&�1����D�!�Q�'r>c� �td�j�}tj|�jd}|j|dd�|j
||jdd�|j
||jdd�y)Nz?
            class C(A, B):
                x: int = 0
        rrR�r��Bz
x: int = 0)rr�r5r�r�r�r�r��r:r�cdefs   r"�test_class_defzEndPositionTests.test_class_def2	s}����

��U�W�	
��y�y��|� � ��#�����D�!�R�(����A�t�z�z�!�}�c�2����A�t�y�y��|�\�:r>c��d}tj|�jd}|j||jdj
d�y)Nz$class S(metaclass=abc.ABCMeta): passrzabc.ABCMeta)r5r�r�r�r'rKr�s   r"�
test_class_kwzEndPositionTests.test_class_kw<	s@��2���y�y��|� � ��#�����A�t�}�}�Q�/�5�5�}�Er>c���td�j�}tj|�jd}|j|dd�|j|jdd�y)Nzh
            x = """Some multi-line text.

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

��U�W�		
�
���1��"�"�1�%�����F�A�r�*����F�L�L�!�R�0r>c���td�j�}tj|�jd}|j|dd�|j|jdd�y)NzB
            x = "first part" \
            "second part"
        rrRr?r�r�s   r"�test_continued_strz#EndPositionTests.test_continued_strK	s_����

��U�W�	
����1��"�"�1�%�����F�A�r�*����F�L�L�!�R�0r>c�P�td�j�}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
||jdjd�y)Na
            while True:
                pass

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

            for x, y in stuff:
                assert True

            try:
                raise RuntimeError
            except TypeError as e:
                pass

            pass
        rr�rRr�rDr�r��r�r��r�zx = Nonezother()�x, yzraise RuntimeErrorrW)rr�r5r�r�r�r�r%rCr��handlersr7)r:rr��
while_loop�if_stmt�for_loop�try_stmt�	pass_stmts        r"�test_suiteszEndPositionTests.test_suitesT	so��
��

�(�U�W�)	
�*�i�i��l���X�X�a�[�
��(�(�1�+���8�8�A�;���8�8�A�;���H�H�Q�K�	����J��1�-����G�Q��+����H�b�"�-����H�b�!�,����I�r�1�-����A�z����7����A�w�|�|�A��
�;����A�w�~�~�a�0�5�5�y�A����A�x����7����A�x�}�}�Q�/�1E�F����A�x�0�0��3�8�8�+�Fr>c��d}|j|�}|jdj}|j||d�y)Nzx = f"abc {x + y} abc"r�zx + y)r�r^rKr��r:r�fstrr�s    r"�test_fstringzEndPositionTests.test_fstring�	s<��$��� � ��#�����A��$�$�����A�u�g�.r>c�$�td�j�}|j|�}|jdj}|j|dd�|j
||jd�|j
||jd�y)Nz�
            f"""Some multi-line text.
            {
            arg_one
            +
            arg_two
            }
            It goes on..."""
        r�rCr��arg_one�arg_two)	rr�r�r^rKr�r�r@rBr�s    r"�test_fstring_multi_linez(EndPositionTests.test_fstring_multi_line�	s�����

��U�W�	
�� � ��#�����A��$�$�����E�1�a�(����A�u�z�z�9�5����A�u�{�{�I�6r>c���td�j�}tj|�jd}|j|dd�|j|jddd�y)NzT
            from x.y.z import (
                a, b, c as c
            )
        rr�r�rRr�)rr�r5r�r�r�r�)r:rr�s   r"�test_import_from_multi_linez,EndPositionTests.test_import_from_multi_line�	sc����

��U�W�		
�
�i�i��l����"�����C��A�&����C�I�I�a�L�!�R�0r>c��d}d}td�j�}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.dr�f ()r��g ()r�)rr��mapr�r�rKr�r�r��eltsr�)r:�s1�s2�sm�i1�i2r�s       r"�test_sliceszEndPositionTests.test_slices�	s��
��
��
��
��U�W�		�
��*�*�R��R�L�9�
��B�����B����+�6����B�������7����B�������6����B�������6����B����
�
�a� 0� 6� 6��?����B����
�
�a� 0� 6� 6��?����B��1�%r>c�@�td�j�}|j|�}|j|dd�|j	||j
d�|j	||jd�|j	||jj
d�y)NzF
            (1 * 2 + (3 ) +
                 4
            )
        rRrO�4z1 * 2 + (3 )�3)rr�r�r�r�rBr@)r:rr�s   r"�
test_binopzEndPositionTests.test_binop�	s�����

��U�W�		
�
�!�!�!�$�����E�1�a�(����A�u�{�{�C�0����A�u�z�z�>�:����A�u�z�z�/�/��5r>c���td�j�}tj|�jdj
}|j
|dd�|j||jdd�y)Nz{
            if (one_condition and
                    (other_condition or yet_another_one)):
                pass
        rrR�,r�z"other_condition or yet_another_one)	rr�r5r�r�r%r�r�r^)r:r�bops   r"r�zEndPositionTests.test_boolop�	sm����

��U�W�		
�
�i�i��l����"�'�'�����C��B�'����A�s�z�z�!�}�@�	Br>c��d}d}d}td�j�}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 )r�r�)rr�r�r�r�r�)	r:r�r��s3r��t1�t2�t3�tms	         r"�test_tupleszEndPositionTests.test_tuples�	s���
��
��
��
��
��U�W�		�
�T�.�.��R��R�0@�A���B��B����B��D�)����B��E�*����B��J�/����B��1�%r>c��d}|j|�}|j|||�|j||jdd�y)Nz
func(x. y .z)rzx. y .z)r�r�r�r�s   r"�test_attribute_spacesz&EndPositionTests.test_attribute_spaces�	sC����� � ��#�����A�t�Q�'����A�t�y�y��|�Y�7r>c��d}tj|�jdj}|j	t|�jd�|j||d�d|z}tj|�jdjj}|j	t|�jd�|j||d�y)Nz( ( ( a + b ) ) )rrFr+�await )r5r�r�rKrFr7rr�)r:rr0r�s    r"�test_redundant_parenthesisz+EndPositionTests.test_redundant_parenthesis�	s������I�I�a�L���a� �&�&������a��)�)�7�3����A�q�'�*�
��\���I�I�b�M���q�!�'�'�-�-������a��)�)�7�3����B��7�+r>c��d}|D]�\}}|j|�5tj|�jdj}|jt
|�j|�|j|||�d|z}tj|�jdjj}|jt
|�j|�|j|||�ddd���y#1swY��xYw)N))z( ( ( a ) ) ) ( )r)z( ( ( a ) ) ) ( b )r)z( ( ( a ) ) ) [ b ]r*)z( ( ( a ) ) ) . br'rr�)	ryr5r�r�rKrFr7rr�)r:r�rrr0r�s      r"�(test_trailers_with_redundant_parenthesisz9EndPositionTests.test_trailers_with_redundant_parenthesis�	s���
���	.�D�A�q����a��
.��I�I�a�L�%�%�a�(�.�.��� � ��a��!1�!1�1�5��#�#�A�q�!�,���\���I�I�b�M�&�&�q�)�/�/�5�5��� � ��a��!1�!1�1�5��#�#�B��1�-�
.�
.�	.�
.�
.�s�CC?�?D		c��d}d}|j|�}|j|�}|j||jdd�|j||jdd�|j||jdd�|j||jdd	�|j||jdd
�y)Nz[{}, {1, }, {1, 2,} ]z{a: b, f (): g () ,}rr,r�z{1, }rRz{1, 2,}r�r�)r�r�r�r]r^)r:r�r��c1�c2s     r"�
test_displayszEndPositionTests.test_displays�	s���
$��
#��
�
�
�r�
"��
�
�
�r�
"�����B�����
�D�1����B�����
�G�4����B�����
�I�6����B�����
�F�3����B��	�	�!��f�5r>c��td�j�}|j|�}|j|dd�|j	||j
djd�|j	||jj
djd�|j	||jj
djdd�|j	||jj
djd�y)	Nza
            x = [{x for x, y in stuff
                  if cond.x} for stuff in things]
        rR�%r�things�stuffzcond.xr�)
rr�r�r�r��
generatorsr��elt�ifsr�)r:r�cmps   r"�test_comprehensionsz$EndPositionTests.test_comprehensions
s�����

��U�W�	
�����"�����C��B�'����A�s�~�~�a�0�5�5�x�@����A�s�w�w�1�1�!�4�9�9�7�C����A�s�w�w�1�1�!�4�8�8��;�X�F����A�s�w�w�1�1�!�4�;�;�V�Dr>c�"�td�j�}tj|�jd}|j||jdjd�|j||jdjd�y)NzT
            async def f():
                yield x
                await y
        rzyield xr�zawait y)rr�r5r�r�r�rKr�s   r"�test_yield_awaitz!EndPositionTests.test_yield_await
sw����

��U�W�		
�
�y�y��|� � ��#�����A�t�y�y��|�1�1�9�=����A�t�y�y��|�1�1�9�=r>c���td�j�}td�j�}|j|�}|jt	j
||j�|�y)NzD
            x = (
                a, b,
            ) + ()
        z;
            (
                a, b,
            )
        )rr�r�rFr5r�r@)r:�s_orig�s_tupler�s    r"�test_source_segment_multiz*EndPositionTests.test_source_segment_multi
sm����
��U�W�		�
��
��U�W�		�
�!�!�&�)������/�/���
�
�C�W�Mr>c���td�j�}d}tj|�jd}|jtj||jdd��|�y)Nuf
            class C:
                def fun(self) -> None:
                    "ЖЖЖЖЖ"
        u/    def fun(self) -> None:
        "ЖЖЖЖЖ"rT��padded�rr�r5r�r�rFr�)r:r�s_methodr�s    r"�test_source_segment_paddedz+EndPositionTests.test_source_segment_padded'
sg����
��U�W�		�
*���y�y�� �%�%�a�(������/�/���	�	�!��T�R�!�	#r>c��d}tj|�j\}}}}}|j||d�|j||d�|j||d�|j||d�|j||d�y)Nz!v = 1
w = 1
x = 1

y = 1
z = 1
r$zw = 1r�zy = 1zz = 1)r5r�r�r�)r:rr0r
rYr�r�s       r"�test_source_segment_endingsz,EndPositionTests.test_source_segment_endings3
s~��7���	�	�!��)�)�
��1�a��A����A�q�'�*����A�q�'�*����A�q�'�*����A�q�'�*����A�q�'�*r>c���td�j�}d}tj|�jd}|jtj||jdd��|�y)Nzb
            class C:
              	  def fun(self) -> None:
              	      pass
        z+  	  def fun(self) -> None:
  	      passrTrr)r:rrr�s    r"�test_source_segment_tabsz)EndPositionTests.test_source_segment_tabs<
se����

��U�W�		
�
&���y�y��|� � ��#������/�/��4�9�9�Q�<��M�x�Xr>c�J�d}tj|�j\}}}|j||d�|j||d�|j||d�d}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)r5r�r�r��rstrip)r:rr!r��hs     r"�test_source_segment_newlinesz-EndPositionTests.test_source_segment_newlinesH
s���J���)�)�A�,�#�#���1�a����A�q�"4�5����A�q�"4�5����A�q�"6�7�5���I�I�a�L���a� �����A�q�!�(�(�*�-r>c��d}tj|�j\}}}}|`|`|`|`|jtj||��|jtj||��|jtj||��|jtj||��y)Nzv = 1
w = 1
x = 1

y = 1
)	r5r�r�rr
rrrfr�)r:rr0r
rYr�s      r"� test_source_segment_missing_infoz1EndPositionTests.test_source_segment_missing_infoS
s���0���Y�Y�q�\�&�&�
��1�a��
�H�
�L�
�L�
�����#�0�0��A�6�7����#�0�0��A�6�7����#�0�0��A�6�7����#�0�0��A�6�7r>N)#rr8r_r�r�r�r�r�r�rr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rr	r
rrrrrrOr>r"r�r��s����
B�L�*�
5�B� =�(�;�F�
1�1�*G�X/�7� 1�&�"
6�	B�
&�8�,�.�"	6�
E�>�N�
#�+�
Y�	.�
8r>r�c��eZdZd�Zy)�BaseNodeVisitorCasesc����G�fd�d|j�}tjtd��}|�}g�t	j
d��5}t	jddt�|j|�ddd�|j�gd��|jD�cgc]}t|j���c}gd	��y#1swY�SxYwcc}w)
Nc�@��eZdZ�fd�Z�fd�Z�fd�Z�fd�Z�fd�Zy)�=BaseNodeVisitorCases.test_old_constant_nodes.<locals>.Visitorc�V���j|jd|jf�y)Nr�)rrr��r:r<�logs  �r"�	visit_NumzGBaseNodeVisitorCases.test_old_constant_nodes.<locals>.Visitor.visit_Numc
�����
�
�D�K�K�����7�8r>c�V���j|jd|jf�y)Nr��rrrr$s  �r"�	visit_StrzGBaseNodeVisitorCases.test_old_constant_nodes.<locals>.Visitor.visit_Stre
r'r>c�V���j|jd|jf�y)Nr�r)r$s  �r"�visit_ByteszIBaseNodeVisitorCases.test_old_constant_nodes.<locals>.Visitor.visit_Bytesg
s����
�
�D�K�K��$�&�&�9�:r>c�V���j|jd|jf�y)Nr�)rrrKr$s  �r"�visit_NameConstantzPBaseNodeVisitorCases.test_old_constant_nodes.<locals>.Visitor.visit_NameConstanti
s����
�
�D�K�K�����D�Er>c�B���j|jddf�y)Nr.)rrr$s  �r"�visit_EllipsiszLBaseNodeVisitorCases.test_old_constant_nodes.<locals>.Visitor.visit_Ellipsisk
s����
�
�D�K�K��S�9�:r>N)rr8r_r&r*r,r.r0)r%s�r"�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 = ...
            Tr�r�r�))r�r�rP)rRr�r�)r�r�r�)rDr�rQ)rCr�r~)rOr�T)r�r�N)r�r.)
�+visit_Num is deprecated; add visit_Constantrr2rr2rz+visit_Str is deprecated; add visit_Constantrz-visit_Bytes is deprecated; add visit_Constantr�4visit_NameConstant is deprecated; add visit_Constantr3z0visit_Ellipsis is deprecated; add visit_Constant)�
visitor_classr5r�rr�r�r�r��visitrFrr)r:r1r��visitorr	r
r%s      @r"�test_old_constant_nodesz,BaseNodeVisitorCases.test_old_constant_nodesa
s����
	;�d�(�(�
	;��i�i��	 �	�	���)����
�
$�
$�D�
1�	�T��#�#�H�b�2D�E��M�M�#��	�	
����	
�		�	
���$�7�Q�#�a�i�i�.�7�:
�	�	�	��8s�-C�.C!�CN)rr8r_r7rOr>r"rr_
s��3r>rc�$�eZdZejZy)�NodeVisitorTestsN)rr8r_r5�NodeVisitorr4rOr>r"r9r9�
s���O�O�Mr>r9c�H�eZdZejZd�Zd�Zd�Zd�Z	d�Z
d�Zy)�NodeTransformerTestsc��tjt|��}tjt|��}|�}tj|j	|��}|j||�yr�)r5r�rrfr5�assertASTEqual)r:�tranformer_class�initial_code�
expected_code�initial_ast�expected_ast�
tranformer�
result_asts        r"�assertASTTransformationz,NodeTransformerTests.assertASTTransformation�
s[���i�i��|� 4�5���y�y��
�!6�7��%�'�
��.�.�z�/?�/?��/L�M�
����J��5r>c�d�d}d}Gd�dtj�}|j|||�y)Nzdef func(arg) -> SomeType: ...zdef func(arg): ...c�,�eZdZdejfd�Zy)�ENodeTransformerTests.test_node_remove_single.<locals>.SomeTypeRemoverr<c�H�|j|�|jdk(ry|S)N�SomeType)�
generic_visitrr	s  r"�
visit_NamezPNodeTransformerTests.test_node_remove_single.<locals>.SomeTypeRemover.visit_Name�
s$���"�"�4�(��7�7�j�(���r>N)rr8r_r5r�rMrOr>r"�SomeTypeRemoverrI�
���
�s�x�x�
r>rN�r5�NodeTransformerrF)r:r��expectedrNs    r"�test_node_remove_singlez,NodeTransformerTests.test_node_remove_single�
s2��/��'��	�c�1�1�	�	
�$�$�_�d�H�Er>c�d�d}d}Gd�dtj�}|j|||�y)NzM
        def func(arg):
            print(arg)
            yield arg
        �7
        def func(arg):
            print(arg)
        c�,�eZdZdejfd�Zy)�ENodeTransformerTests.test_node_remove_from_list.<locals>.YieldRemoverr<c�r�|j|�t|jtj�ry|Sr�)rLrrKr5r
r	s  r"�
visit_ExprzPNodeTransformerTests.test_node_remove_from_list.<locals>.YieldRemover.visit_Expr�
s*���"�"�4�(��d�j�j�#�)�)�4���r>N)rr8r_r5r]rYrOr>r"�YieldRemoverrW�
rOr>rZrP)r:r�rRrZs    r"�test_node_remove_from_listz/NodeTransformerTests.test_node_remove_from_list�
s6����
��	�3�.�.�	�	
�$�$�\�4��Br>c�d�d}d}Gd�dtj�}|j|||�y)Nz0
        class DSL(Base, kw1=True): ...
        zE
        class DSL(Base, kw1=True, kw2=True, kw3=False): ...
        c�,�eZdZdejfd�Zy)�BNodeTransformerTests.test_node_return_list.<locals>.ExtendKeywordsr<c���|j|�|jdk(rS|tjdtjd��tjdtjd��gS|S)N�kw1�kw2T�kw3F)rLrr5r�r�r	s  r"�
visit_keywordzPNodeTransformerTests.test_node_return_list.<locals>.ExtendKeywords.visit_keyword�
s^���"�"�4�(��8�8�u�$�����E�3�<�<��+=�>����E�3�<�<��+>�?���
�r>N)rr8r_r5r�rcrOr>r"�ExtendKeywordsr^�
s��
�#�+�+�
r>rdrP)r:r�rRrds    r"�test_node_return_listz*NodeTransformerTests.test_node_return_list�
s6������		�S�0�0�		�	
�$�$�^�T�8�Dr>c�d�d}d}Gd�dtj�}|j|||�y)NrUz5
        def func(arg):
            log(arg)
        c�,�eZdZdejfd�Zy)�9NodeTransformerTests.test_node_mutate.<locals>.PrintToLogr<c���|j|�t|jtj�r*|jj
dk(rd|j_|S)N�printr%)rLrr&r5r�rr	s  r"�
visit_CallzDNodeTransformerTests.test_node_mutate.<locals>.PrintToLog.visit_Call�
sA���"�"�4�(��d�i�i����2�t�y�y�|�|�w�7N�#(�D�I�I�L��r>N�rr8r_r5rrkrOr>r"�
PrintToLogrh�
rOr>rmrP�r:r�rRrms    r"�test_node_mutatez%NodeTransformerTests.test_node_mutate�
s6������
	��,�,�	�	
�$�$�Z��x�@r>c�d�d}d}Gd�dtj�}|j|||�y)NrUzH
        def func(arg):
            logger.log(arg, debug=True)
        c�,�eZdZdejfd�Zy)�:NodeTransformerTests.test_node_replace.<locals>.PrintToLogr<c
���|j|�t|jtj�r�|jj
dk(r�tjtjtjdtj���dtj���|jtjdtjd��g��S|S)	Nrj�logger)rr%)r�r�debugT)r&r�r')rLrr&r5r�rrr'rer�r�r�r	s  r"rkzENodeTransformerTests.test_node_replace.<locals>.PrintToLog.visit_Calls����"�"�4�(��d�i�i����2�t�y�y�|�|�w�7N��8�8� �]�]��H�H�X�3�8�8�:�>�!&� #���
��
"�Y�Y�"%�+�+�g�s�|�|�D�7I�"J�!K����r>NrlrOr>r"rmrr�
s��
�s�x�x�
r>rmrPrns    r"�test_node_replacez&NodeTransformerTests.test_node_replace�
s6������

	��,�,�
	�	
�$�$�Z��x�@r>N)rr8r_r5rQr4rFrSr[rerorvrOr>r"r<r<�
s0���'�'�M�6�
F�C�,E�*A�&Ar>r<c�$�eZdZd�Zd�Zd�Zd�Zy)�ModuleStateTestsc��d}d}d}t|||tj��}t|||�}|j|tj
�y)Nzx + 1r�rk)�flags)rzr5r{r��types�CodeType)r:r��filenamerrs     r"�check_ast_modulez!ModuleStateTests.check_ast_modulesM���������4��4�s�7H�7H�I���x��4�0�����d�E�N�N�3r>c�8�tjtjdd�5tjd=ddl}tjd=ddl}|j�ddd�~~tj�|j�y#1swY�0xYw)N�_astr)r�	swap_item�sys�modulesr�r~re)r:�ast1rXs   r"�test_reload_modulez#ModuleStateTests.test_reload_module"sw��
�
�
�s�{�{�F�D�
9�	$����F�#�����F�#���!�!�#�	$�
����������	$�	$�s�;B�Bc���t���fd�}tjtjdd�5tjd=tj
td|�5|j�|jdtj�ddl	}|j|��ddd�ddd�y#1swY�xYw#1swYyxYw)Nc�.���tj|<�Sr�)r�r�)r;r�r��lazy_mods   �r"�	my_importz4ModuleStateTests.test_sys_modules.<locals>.my_import9s��� (�C�K�K����Or>r��
__import__r)�objectrr�r�r�rwr�r~�assertNotInr�r�)r:r�r�r�s   @r"�test_sys_modulesz!ModuleStateTests.test_sys_modules4s�����8��	��
�
�s�{�{�F�D�
9�
	.����F�#��"�"�8�\�9�E�
.��%�%�'�� � �����5���
�
�d�H�-�
.�
	.�
	.�
.�
.��
	.�
	.�s$�-C�#AB;�*C�;C	�C�Cc�h�td�}tj|�}|j|d�y)Nap
            import _ast
            import ast
            import gc
            import sys
            import types

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

            # Unloading the _ast module must not crash.
            del ast, _ast
            del sys.modules['ast'], sys.modules['_ast']
            gc.collect()
        r)rr�run_in_subinterprF)r:r��ress   r"�test_subinterpreterz$ModuleStateTests.test_subinterpreterIs5����
��&�&�&�t�,������a� r>N)rr8r_r~r�r�r�rOr>r"rxrxs��4� �$.�*!r>rxc��eZdZd�Zy)�ASTMainTestsc��d}tjtj|�d��}tj�5}t
jj|d�}t|dd��5}|j|�ddd�tjdd	|�\}}ddd�|jjd
�|j|j�|jj!d�j��|j|j"d�y#1swY��xYw#1swY��xYw)
Nzprint(1, 2, 3)r�rztest_module.pyr
r?r@z-mr5r>�utf8r)r5r�r�r�temp_dirrBrCrIrJ�writer�run_python_until_endrF�err�
splitlines�out�decode�rc)r:r�rR�tmp_dirr}r!r�rYs        r"�test_cli_file_inputz ASTMainTests.test_cli_file_inputfs������8�8�C�I�I�d�O�A�6��
�
�
�
!�	O�W��w�w�|�|�G�-=�>�H��h��g�6�
�!�����
�
�"�7�7��e�X�N�F�C��		O�	
������#�&�����,�,�.�������/�:�:�<�	>��������#�
�
��	O�	O�s$�/D8�0D,�"D8�,D5	�1D8�8EN)rr8r_r�rOr>r"r�r�cs��
$r>r�c�j�tdk7rytjdddgk(r~tdftdft
dffD]S\}}t
|dz�|D]0}tj|d|�}t
t|��d	���2t
d
��Ut
d�t�tj�y)N�__main__r�z-grirjrkz_results = [ro�,�]zmain())
rr��argvrrrtrvrjr5r�r�
SystemExitr��main)�
statementsrq�	statementr�s    r"r�r�vs����:���
�x�x���|��v��",�f�!5��h�7O�",�f�!5�!7�	��J���$�~�%�&�'�
1�	��y�y��C��6���x��~�/�0�
1�
�#�J�
	�	�h�����M�M�Or>r�)r]�r�rr�rD�r�r�NN)r]�r�rr��)r�r�zmodule docstringNr�)r�rr�r?r!r�)r�)r�r�r�r?)r�rr��)r]�r�r�r�r�)r�r�zfunction docstringN)r�rr�r��r�r�rOr�r�rbNN)r�)r�r�r�r�)r�rr�r�)r��r�r�r�r�rN)r�)r�r�r�r�r�)r�r�r�r�r�r�NN)r�)r�r�r�r�)r�rr�r5)r)r�r�r�r�r�)r2�r�r?r�r�)r�)r�r�r�r��Ts�rer�N)r�)r�r�r�r5)r�rr��$r)r�r�r�r�r�r2)r�r?r�r�r*)r�r�r�r�)r�)r�r�r�r�rr�r,)r��r��)r��r�r�r�r5rr�r��r��r�r�r�)r�)r�� r�r�)r2r��r�)r��r�r�r�r�r�)r�rr��)r�r�r�r�r�r+NN)r�)r�r�r�r�)r�rr��G)r�)r�r�r�r�r�rNN)r�r�r�r�r�rNN)r�r�r�r�r5r2NN)r�r�r�r�r�rNN)r�r��#r��'r�NN)r)r��)r�rPr!NN)r�)r��+r��-rPN)r)r��1r��7r+NN)r��r�r�r�r�r�N)r��r�r�r�r�NNr1)r��r�r�r_)r��r�r�)r]�r��:r�r�)r�r�zdoc for f()N)r�rr��)r�)r�r5r�r�)r�r�r�r�)r��r�r�r�r�rr��r�r�r�r�)r2r�)r�)r�r�r�r�r�r�r�)r�rr�r�)r�)r�r�r�r�)r�r�r�r�)r�r�r�r�)r�r�rr�)r2�r�r�r�r�)r�)r�r5r�r�r�r�r�)r�rr�r�)r�)r�r�r�r�)r�r�r�r�)r�r�r��&)r�r�r�r�)r�r5r�r�)r�)r�r5r�r�rr�)r�r�r�r)r�)r�r�r�r�rr�)r��"r�rr�)r�rr�r��C)r�)r�r�r�r�)r]�r�r�r�r�)r�r�zdocstring for class CN)r�r�r�r�)�Return�r�r�r�r�)r��r�r�r�r�r�Nr��r�rr�rC)r��r�rDr�rCr0)�Delr��r��r�rr�r�r0�r�)r�r�r�N�r�rr�r��r�rr�r�)r�r�rbr�)r��r�rRr�r�rr�r�)r�r�rr�)r�rr�r��r��r�r�r�rRrbr�)r��r�r�r�rDrr�)r�r�rr��	AnnAssign)r�r�rYr�)r�r�r�r?)r��r�r�r�r�rr��r�r�r�r�)r2r�)r��r�r�r�r�r�r�r�r�)r�r�r�r�)r�r�r�r��r�r�rr�)r2�r�r�r�r�)r�)r�r�r�r�r�r�r�)r�rr��)r�r�r�r�)r�r�r�r�)r�r�r�r�)r�r�r�r�)r�)r�r�r�r�rr�)r�r�r�r�)r��r�r�r�r�rr��r�r�r�r�)r��r�rr�rOr��rG)r��r�rCr�rOr�Nr�)r�rr�r�)r�r�r0r�)r�r�r0r�)r�)r�r�r�r�r�)r�r�r0r�r�)r�r�r0r�)r�)r�rCr�r�)r�rrDrO)r�r�rbr�)r�)rRrRrRrO)r�rrDrO)r�)r�rCr�rOrr�)r�)rDrRrDrO)r�rrOrO)r�rrOrO)r�)rOrRrOrOr�)r�rr�r�)r�)r�r�rYr�)r��r�r�r�r�r�r�)r�)r�r?r�r�)r�rr�r�)r�)r��r�r?r�r�r�r�)r��r�r�r�r��qr�)r�)r�r�r�r�rr)r�rOr�r�)r�)r�rOr�r�r�r�)r�)r�r�r�r�rQNr�r�)r��r�r�r�r�r�r�r�)r�)r�r�r�r�r�r�)r��r�rr�r�)r��r�r�r�r�r0r�Nr�)r�rr�r�)r��r�r�r�r�r�Nr�r�)r��r�r�r�r�r0Nr�r�r0)r]r��r�r�r�N)r�r�)�Breakr�)r�rr�r�)�Continue)r�r�r�r�)r�rDr�r�)r�r�rbr�)r�r�rr�)r�r�rr�)r�rr�r�)r�rDr�r�)r�r�rbr�)r�r�rr�)r�r�rr�)r�r�r])r�rr�rCr�)rRrDrOrC)r�)r�rDr�rO�Aar�)r�)rCr�rCr��Bbr�r�)r�rDr�rO)r�)r�rDr�rOrr�)r�)r�rDr�rOrr�)r�)r�r�r�r��Ccr�)r�rr�r�r�r�r�rbr�)r�r�rr�)r�r�r
r�)r�r�rYr�)r�r�rar�)r�)r�r�r�r�r�r�)r�)r�r�r��!r�r��r�r�r�r�)r�r�r0r�)r�r�r
r�)r�r�rYr�r�)r�r�r�r�)r�r�r�r�)r��r�r�r�r?rYr�)r��r�r�r�r�r�r�r�)r�r�rar�)r�r�rYr��AsyncFunctionDef)r�rr�r�)r]�rRr�rRr�)r�rzasync functionN)r�r�r�r��Await)r�r�r�r�)r�r��	somethingr�)r�rr�r��AsyncFor)rRr�r�r�)r�)rRr�rRr�rr�)r�)rRr�rRr�r}r�)r]�rRr�rRr�)r�rr�N)r]�r�r�r�r�)r�rrRN)r�rrRr��	AsyncWith)rRr�rRr�)r�)r�)rRr�rRr?rbr�)r�)rRr�rRr�rr�)r]�rRr�rRr�)r�rr�N)r�r�rRNr�)r�r�rRN)r�r	r�Nr�)r�r�r�r�)r�rRr�r�)r�r�r�N)r�r�r�Nr�)r�)rRrRrRr�r}r�)r�)rRr�rRr�rr�)r�rrr�)rDrrDr?)r�)rDr�rDr?)r��r�r�r�rO�deco1r�)rRr�rRr�)r�)rRr�rRrO�deco2r�)r�r�r�r�)r�)r�r�r�rO�deco3r�)r�rr�N)rDrrDr�)r�)rDr�rDr�)rRrrRr?)r�)rRr�rRr?)r�r�r�r�)r��r�r�r�rC�decor�)r�rCr�r�)r�r�rbr�)r�r	rbr�)r�r
rr�)r'r)r')r�r�r�rDrrr�rr�)r]r�)�	NamedExpr)r�r�r�r�r�)r�r�r�N)r�rr�r�)�rr	rNN)rr�r2NN)rr�rNN)r�)r�r�r�r�r)rr�r2NN)r�r�r�r�r�rNN)r�)r�r�r�r�)r�rr�r�)r)r�r�r�r�r+NN)r�r��r�r�r�N)rr�rNN)r)r�r�r�r�rNN)r�r�r�rRN)r�rrDN)rr�rNN)r�)r�r�r�r�rDNr)r�rr�r�)r�)r�r�r�r�)r�rr�rP)r)r�r�r�r�r+NN)r�)r�r�r�rP)r�rr�r�)r)r�r�r�rr+NN)r�)r�r�r�r��	TypeAlias)r�r�r`r���TypeVarr��TN)r��r�r�r�r�rr�)r )�TypeVarTuple�r�r�r�r?r�)�	ParamSpec�r�r�r�r��P)r�r�r�r�))r�)r�r5r�r�r"r�r�)r�)r�r�r�r�r(r�)r�rr�r))r!)r�r�r�r?r"�r�r%rr�)r$r'r�)r&r�r()r�r�r�r))r�r�r"r�)r�)r�r�r�rr�r�)r��r�r�r�r�r(r�)r�rr�r�r!)r�r�r�r�r")r�r�r�r��r�rrr�)r��r�r�r�r�rr�)r$r�r�)r&)r�r�r�r�r()r�r�r�r�))r�r*r"r�)r�)r�r�r�r�r�r�)r�)r�rPr�r�r(r�r`�r!r�r"N)r-)r$rr�)r&r,r()r�)r�r�r�r�))r!r�r"r+)r$r,r�)r&r�r()r�rr�r�)r�)r�r�r�r�)r�r�r�r�)r�r�rr�)r$)r�r5r�r�r�)r&)r�r�r�r�r(�r!r�r"N)r.)r$r�r�)r&r�r())r!)r�rOr�r�r"r�)r$r�r�)r&)r�r�r�r�r()r�rOr�r�)r�r�r�r�r))r�r'rr�)r$r�r�)r&r�r(r�)r]r�)rFr�rr��r�r�rRN)rkr�rkr�)r��r�r�rbr�)r�r�rr�)rk)rFr�r0r��r�r�rr�)rk)rfr�)rx)r�r�r0r�r�)r�rr�r�)r�r�NN�r�r�r�N�r�r�rRN�r�rr�rR)r�rNN)r�rrCrO)r�)rRrOrRr�r�N)r�)rDr�rDr�rRN)r�r	rr�)r�r
r2r�r)r�r�rbr�r1)r�r�rbr�)r�r�rr�)r�r�rr�)r�rr�r�r�)r�r�rr�)r�)r�r�r�r�rr�rr)�Lt�r�r�r�N)r�r�r!r�)r2r3)r2r�)r�r�r2r�r�)r�)r�rOr�r�rr6)r�r�N)r�r�rr�)r�rRr�r�)r�r�r�r�)r�r�rN)r�r�r�N)r�r�r�r�)r�r�rbr�)r�r�rr�)rk)r�r4r�N)rk)r�r�rQN)rk�r'r�r0rr�)rk)r*r�r0)r+)r�rRr�rC)r�r�rr�)r�r�rr�Nr�)rk)r�r�r0r�))r�r�r�N)r�r�rRN)r�r�r�N)rr/)r�r�r�N)r'r�)r'r�r7rr�r2r�)r*r�)r')r�r�r�r�)r�r�rbr�rr�)r+r#)r�r	r�N)r�r�rRNNr�)-r5r�r�r�rBr�r�r�r{r�r�rc�	functoolsrrr%r�test.support.import_helperr�test.supportrr�test.support.ast_helperr	rrrrtrv�TestCaser3r�r~rrr�rr9r<r�rxr�r�rrsrurwrOr>r"�<module>r=s�3��
��
��	�	�
���������:�1�0��&b�
�P
���E�
�TT
7��!�!�T
7�lY=�h�'�'�Y=�xc	6��)�)�c	6�LB'�H�%�%�B'�Ja8�x�(�(�a8�F5�5�p$�+�X�->�->�$�sA�<�)=�x�?P�?P�sA�l	���N!�x�(�(�N!��N!�b$�8�$�$�$�&
� [�	�J�K�R�P�[�	�Z�[�]_�`�[�
�]�M�3��b�"�d�B�PR�TX�Z\�0]�`w�_x�z|�C�EI�KM�
N�O�QS�T�[�
�]�M�3��b�"�d�B�PR�TX�Z\�0]�aq�`r�tv�x|�~B�DF�
G�H�JL�M�	[�

�]�M�3��b�Ci�Bj�lp�rt�vx�z~�AC�1D�G_�F`�bd�fj�lp�rt�
u�v�xz�{�[�
�]�M�3��b�Ci�Bj�lp�rt�vx�z~�Be�Af�1g�jB�iC�EG�IM�OS�UW�
X�Y�[]�^�
[�
�]�M�3��b�"�Fp�rt�vx�z~�AC�1D�G_�F`�bd�fj�lp�rt�
u�v�xz�{�[�
�]�M�3��b�"�G~�@B�DF�HL�NP�1Q�Tl�Sm�oq�sw�y}�A�
B�C�EG�H�[�
�]�M�3��b�"�u�m�]c�fo�q�CN�P^�`L�OV�Xf�iS�V`�bp�rz�|@�UA�hB�DM�NN�PY�BZ�\e�ff�hl�Gm�oq�su�w{�}�1@�C[�B\�^`�bf�hl�np�
q�r�tv�w�[�
�]�M�3��b�"�u�m�]c�fo�q�CN�P^�`L�OV�Xf�iS�Uf�hg�ir�Ns�u~�B�AJ�fK�MQ�GR�TV�XZ�\`�bd�1e�h@�gA�CE�GK�MQ�SU�
V�W�Y[�\�[�
�]�M�3��b�"�d�B�PR�UA�CE�1F�Ia�Hb�df�hl�nr�tv�
w�x�z|�}�[�
�]�M�3��b�CR�T�Bj�Ak�nT�mU�WD�Gl�nV�Y_�ao�qs�u~�X�B	H	�J	X	�Z	\	�^	`	�A	a	�Fb	�1c	�f	q
�e	r
�t
v
�x
|
�~
B�DF�
G�H�JL�M�[�
�]�M�3��b�"�d�B�PR�TX�Z\�0]�`x�_y�{}�AL�N\�^J�MT�Vd�gx�fy�{D�LE�GP�@Q�SW�Y[�
\�]�_a�b�[�
�]�M�3��b�"�d�B�PR�TX�Z\�0]�`x�_y�{}�AL�N\�^J�MT�Vd�gQ�Sd�fe�gp�Lq�s|�@}�C�EG�
H�I�KM�N�[�
�]�M�3��b�"�d�B�PR�TX�Z\�0]�`x�_y�{}�AL�N\�^J�MT�Vd�gQ�T]�_m�p{�}K�My�|C�ES�V@�CM�O]�_g�im�Bn�Uo�qz�{{�}F�oG�IR�SS�fT�V_�L`�bk�@l�nr�tv�
w�x�z|�}�[� 
�Z���R��6M�5N�PR�TV�W�X�Z\�]�![�"
�Z���R��7J�6K�MO�QS�
T�U�WY�Z�#[�$
�Z���.Z�-[�]_�bz�a{�}�BD�
E�F�HJ�K�%[�&
�]�M�3��b�"�d�B�PR�TX�Z\�0]�aa�`b�df�hl�nr�tv�
w�x�z|�}�'[�(
�X�|�&K�%L�M�N�PR�S�)[�*
�X�|�&M�%N�Ps�uy�z�{�}�A�+[�,
�X�|�w��?f�iP�?Q�S]�'^�&_�aG�IM�
N�O�QS�T�-[�.
�X�|�w��?f�iP�?Q�S]�'^�&_�aG�IM�
N�O�QS�T�/[�0
�X�|�v�|�>e�hO�>P�R\�']�&^�`F�HL�
M�N�PR�S�1[�2
�[�-�)P�S^�`m�pZ�]d�fs�vF�uG�IR�\S�U^�S_�ae�gh�
i�j�ln�o�3[�4
�[�-�)P�S^�`m�pZ�]d�fs�v_�ar�us�u~�\�AJ�SK�MQ�ST�
U�V�XZ�[�5[�6
�[�-�)P�S^�`m�pZ�]d�fs�v_�bk�m{�~I�KY�[G�JQ�Sa�dN�Q[�]k�mu�w{�P|�c}�H�II�KT�}U�W`�aa�ub�dm�\n�py�Sz�|@�BC�
D�E�GI�J�7[�8
��A�CE�F�9[�:
�U�M�#J�Ls�wO�vP�RT�VZ�
[�\�^`�a�;[�<
�W�m�%K�Ne�Mf�hj�k�l�np�q�=[�>
�T�<�!G�J`�Ia�ce�f�g�ik�l�?[�@
�T�<�!G�J`�Ia�ei�kw�z`�cy�bz�|~�e�d@�
A�B�DF�G�A[�B
�T�<�!G�J`�Ia�ei�kw�z`�cy�bz�}S�|T�eU�dV�
W�X�Z\�]�C[�D
�V�]�&E�%F�Ia�Hb�dh�
i�j�ln�o�E[�F
�V�]�&E�Gh�%i�lD�kE�GK�
L�M�OQ�R�G[�H
�W�m�f�m�=l�p\�o]�_a�&b�dh�
i�j�ln�o�I[�J
�U�L�#9�":�o�|�^M�OS�Vl�Um�>n�=o�qs�uw�
x�y�{}�~�K[�L
�U�L�#9�":�B��E[�D\�]�^�`b�c�M[�N
�Y��'=�&>�/�S_�bQ�SW�Zp�Yq�Br�As�uw�y{�
|�}�A�B�O[�P
�R�S�UW�X�Q[�R
�X�}�'L�&M�N�O�QS�T�S[�T
�\�=�%�2V�1W�YZ�[�\�^`�a�U[�V
�X�|�c�U�+�,�b�1�W[�X
�G�H�"�M�Y[�Z
�"�#�R�(�[[�\
�U�M�#J�Ls�wP�vQ�SU�W[�
\�]�_a�b�][�^
�U�M�#J�Ls�wS�vT�VX�Z^�
_�`�bd�e�_[�`
�U�M�G�\�<c�fM�<N�PZ�$[�]E�H`�Ga�ce�gk�
l�m�oq�r�a[�b
�U�M�G�\�<c�fM�<N�PZ�$[�]E�H`�Ga�ce�gk�
l�m�oq�r�c[�d
�U�M�F�L�;b�eL�;M�OY�$Z�\D�G_�F`�bd�fj�
k�l�np�q�e[�f
�V�]�^�]�W�l�^E�Gn�]o�qz�E{�N�QX�Zg�jR�T~�i�AK�PL�Ny�{}�@�~A�}B�%C�
D�E�GI�J�g[�h
�V�]�Z��@f�iO�Sb�dM�Ow�y{�}~�R�BQ�S|�~f�iQ�hR�TU�AV�QW�%X�
Y�Z�\^�_�i[�j
�V�]�Z��@f�iO�Sb�el�n|�h�jS�~T�V`�da�cK�MO�QR�RS�QT�%U�
V�W�Y[�\�k[�l
�V�]�Y�
�?e�ix�{b�dL�Ow�Nx�z{�i|�h}�%~�
�@�BD�E�m[�n
�V�]�Y�
�?e�ix�|C�ER�U|�~f�Tg�is�{t�v^�`b�de�if�hg�%h�
i�j�ln�o�o[�p
�
���k�2�r�4�QS�UW�Y]�_a�5b�fr�u{�}J�MT�Vc�fl�n{�}l�np�rt�eu�Lv�tw�ex�z|�~B�DH�JL�
M�N�PR�S�q[�r
�
��s�[�"�b�$�PR�TV�X\�^`�4a�eo�q}�@i�kS�VU�UV�YT�XU�W[�e\�d]�_a�cg�im�oq�
r�s�uw�x�s[�t
�
���k�2�r�4�QS�UW�Y]�_a�5b�fq�tA�De�Cf�ih�hi�ko�fp�eq�su�w{�}A�CE�
F�G�IK�L�u[�v
�V�]�V�]�T�Ch�<i�ms�vB�Eh�Di�lO�kP�mQ�Sx�ly�%z�
{�|�~@�A�w[�x
�V�]�U�M�Y��W\�^j�nQ�Sv�mw�Wx�zC�=D�Fk�<l�%m�
n�o�qs�t�y[�z
�
���k�2�r�4�QS�UW�Y]�_a�5b�fl�n{�I�KX�Z@�DS�U~�@h�jl�no�Cp�Bq�~r�fs�et�vx�z~�@D�FH�
I�J�LN�O�{[�|
�]�M�3��b�"�d�B�PR�TX�Z\�0]�`w�_x�|f�io�q}�i�km�oq�hr�u{�}I�Ku�x[�w\�^`�ta�{b�dh�jn�pr�
s�t�vx�y�}[�~
�
���k�2�r�4�QS�UW�Y]�_a�5b�e}�d~�Bl�ou�wC�Eo�qs�uw�nx�{A�CO�Q{�~a�}b�df�zg�Ah�jn�pt�vx�
y�z�|~��[�@
�Z���R��6M�5N�Q{�E�GS�U�AC�EG�~H�KQ�S_�aK�Nq�Mr�tv�Jw�Qx�z|�
}�~�@B�C�A[�B
�]�M�3��b�"�d�B�PR�TX�Z\�0]�`w�_x�}C�ER�T}�AO�Q^�`F�JY�[D�Fn�pr�tu�Iv�Hw�@x�y�{}�|~�{�AE�GK�MO�
P�Q�SU�V�C[�D
�]�M�3��b�"�d�B�PR�TX�Z\�0]�`w�_x�||�{}�C�EI�KM�
N�O�QS�T�E[�F
�
N�O�QS�T�G[�H
�]�M�3��?e�>f�hj�lp�rt�vx�z~�AC�1D�G_�F`�bd�fj�lp�rt�
u�v�xz�{�I[�J
�]�M�3��?e�>f�ig�im�oq�su�w{�}�1@�C[�B\�^`�bf�hl�np�
q�r�tv�w�K[�L
�]�M�3��?e�>f�jR�iS�UY�\D�Fn�[o�rv�x|�q}�C�EG�1H�Kc�Jd�fh�jn�pt�vx�
y�z�|~��M[�N
�]�M�3��?e�>f�jR�iS�UY�\D�Fn�[o�rv�x|�q}�l�np�1q�tL�sM�OQ�SW�Y]�_a�
b�c�eg�h�O[�P
�]�M�3��?e�>f�hj�lp�rt�vx�z~�Be�Af�1g�jB�iC�EG�IM�OS�UW�
X�Y�[]�^�Q[�R
�]�M�3��?e�>f�jR�T|�i}�C�EG�IK�MQ�SF�1G�Jb�Ic�eg�im�os�uw�
x�y�{}�~�S[�T
�]�M�3��?e�>f�jR�iS�UY�\D�[E�Hm�Gn�pt�wZ�\A�vB�1C�F^�E_�ac�ei�ko�qs�
t�u�wy�z�U[�V
�]�M�3��?e�>f�jR�iS�UY�\D�[E�HL�GM�OS�Vy�{`�Ua�1b�e}�d~�@B�DH�JN�PR�
S�T�VX�Y�W[�X
�]�M�3��?e�>f�jR�iS�UY�\D�[E�Hm�Gn�p]�`C�Ej�_k�1l�oG�nH�JL�NR�TX�Z\�
]�^�`b�c�Y[�Z
�]�M�3��?e�>f�jR�iS�UY�\D�[E�HL�GM�O|�b�dI�~J�1K�Nf�Mg�ik�mq�sw�y{�
|�}�A�B�[[�\
�[�-�)P�RT�V�
A�B�DF�G�][�^
�[�-�)P�Sw�Rx�{e�
f�g�ik�l�_[�`
�[�-�)P�SE�HO�Q_�a`�bk�Gl�
m�n�pr�s�a[�b
�[�-�)P�Sl�ov�xF�HG�IR�nS�
T�U�WY�Z�c[�d
�[�-�)P�T]�_l�nq�t{�~L�Oy�{e�Nf�hq�tr�Ts�u[�]�S@�CJ�LZ�\[�]f�Bg�
h�i�km�n�e[�f
�Z���R��6N�5O�QS�Vz�U{�|�}�@B�C�g[�h
�Z���R��6N�5O�QS�VH�
I�J�LN�O�i[�j
�Z���R��6N�5O�QS�Vo�
p�q�su�v�k[�l
�Z���R��6N�5O�QS�W`�bo�qt�w~�AO�R|�~h�Qi�kt�wu�Wv�x^�`B�VC�
D�E�GI�J�m[�n
�]�M�3��b�"�d�B�PR�TX�Z\�0]�`x�_y�{}�@D�FJ�Mq�Lr�
s�t�vx�y�o[�p
�]�M�3��b�"�d�B�PR�TX�Z\�0]�`x�_y�{}�@D�FJ�L}�
~��AC�D�q[�r
�]�M�3��b�"�d�B�PR�TX�Z\�0]�`x�_y�{}�@D�FJ�Ld�
e�f�hj�k�s[�t
�]�M�3��b�"�d�B�PR�TX�Z\�0]�`x�_y�{}�@D�FJ�NW�Yf�hk�nu�wD�Gq�s]�F^�`i�mj�Mk�mS�Uw�Lx�
y�z�|~��u[��z�U�V�W���$�6�$�
��,��3Y�\B�3C�D�E�$�B�$�\�	$�
��-�+�r�2�t�R��T�SU�)V�X�A�B�$����'J�&K�Nq�Mr�s�t�
$����b�"�-�.�$���|�&L�%M�N�O�$����'J�&K�Ns�Mt�u�v�$��
�M�+Q�Ud�gN�Px�{c�zd�fg�Uh�Ti�j�k�$���
�/U�Yh�kR�T|�g�~h�jk�Yl�Xm�n�o�$��
�M�G�\�Dj�mS�DT�V_�,`�ds�v}�M�Py�{d�Oe�gq�ur�t\�^`�bc�cd�be�f�g�$��
�M�G�\�Dj�mS�DT�V_�,`�ds�v}�M�Py�{d�Oe�gq�ur�t\�^`�bc�cd�be�f�g�$��
�M�G�\�Dj�mS�DT�V_�,`�ds�v|�~L�Ox�zc�Nd�fp�uq�s[�]_�ab�cc�bd�e�f�$��	�=�7�L�Ci�lR�CS�U^�+_�cr�u|�~L�Ox�zc�Nd�fp�tq�s[�]_�ab�bc�ad�e�f�$� �	�=�7�L�Ci�lR�CS�U^�+_�cr�u|�~L�Ox�zc�Nd�fp�tq�s[�]_�ab�bc�ad�e�f�!$�"�	�=�7�L�Ci�lR�CS�U^�+_�cr�u{�}K�Nw�yb�Mc�eo�tp�rZ�\^�`a�bb�ac�d�e�#$�$��
���Hn�qW�HX�Zc�0d�hw�zA�CQ�T}�h�Si�ku�yv�x`�bd�fg�gh�fi�j�k�%$�&��
���Hn�qW�HX�Zc�0d�hw�zA�CQ�T}�h�Si�ku�yv�x`�bd�fg�gh�fi�j�k�'$�(��
���Hn�qW�HX�Zc�0d�hw�z@�BP�S|�~g�Rh�jt�yu�w_�ac�ef�gg�fh�i�j�)$�*�	�<�)L�w�X_�N`�dG�Il�cm�n�o�+$�,��
�'M�Pl�or�t�n@�A�B�-$�.��
�'M�QZ�\h�kq�s�Cf�hK�BL�NW�kX�Zc�Qd�Pe�gi�j�k�/$�0��
�'M�Q_�an�qW�[j�lS�U}�A�CD�ZE�YF�QG�PH�JL�M�N�1$�25�3$�4;�5$�6d�7$�8N�9$�:7�;$�<���'V�Xa�b�c�=$�>���b�)�4�5�?$�@���(W�Yb�c�d�A$�B���(W�Yb�c�d�C$�D���r�9�5�6�E$�F��
�(U�XD�WE�GI�J�K�G$��J�r>