HEX
Server: Microsoft-IIS/10.0
System: Windows NT ITPWINWEBSVR22 10.0 build 20348 (Windows Server 2022) AMD64
User: www.conferencesearch.co.uk (0)
PHP: 8.3.30
Disabled: NONE
Upload Files
File: D:/Python311/Lib/test/__pycache__/test_ast.cpython-311.pyc
�

��Vc������ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
mZddlm
Z
d�Zgd�ZdgZgd�ZGd�d	ej��ZGd
�dej��ZGd�d
ej��ZGd�dej��ZGd�dej��ZGd�dej��Ze
jGd�dej����Zd�Zgddggf�ddggf�dddddggdggdgfdggddfggf�dddddggdggdgfd ggddfggf�ddd!ddgd"gdggdgfd#ggddfggf�ddd$ddgd"gdggdd%gfd&ggddfggf�ddd'ddggd(ggdgfd)ggddfggf�ddd*ddggd+ggdgfd,ggddfggf�ddd-ddggd.d/d0d1d2d3d4d5d6d7d8d9d:edfgd;fd;fd;fdfggdgfd<ggddfggf�ddd-ddggd.d/d0d1d2d3d4d5d6d7d8d=gd;fd;fd;fdfggdgfd<ggddfggf�ddd>ddggdggd?gfd@ggddfggf�dddAddggdB�dCdDgdEgdFdGdHdIdJgd;fdKdLggfgfdMggddfggf�dddNddggdggdgfdOggd3dPdQd6dRdSgd;fd;fdfggf�dddTddggdggdgfdUggd3dVdQd6dWdXdYgd;fd;fdfggf�dddZddggdggdgfd[ggd3d\dQd6d]dXd1d^d3d_d`d6dadbd9dcedfgd;fd;fd;fgd;fd;fdfggf�ddddedfggdgggfggf�ddddTdfggdhggfggf�dddd>dfdiggd@ggfggf�ddd$ddggdggdgfdjggddfggf�ddkdldmgfggf�ddndldogdpdfggf�ddndqd6drdsdtgdufgdvdfggf�ddndwd6dldxdygdufgdzdfggf�ddndwdIdldxdygdufgdzdfggf�dd{dd|d3d}d~d6dd�gd;fd;fdd�fggf�dd{d'd|d3d�d~d6d�d�d�gd;fd;fdd�fggf�dd{d�d|d3d�d~d6d�d�d1d�d3d�d�d6d�d�d9d�edfgd;fd;fd;fgd;fd;fdd�fggf�dd�ggf�dd�d�d�d�d�ggdfggf�dd�ded�dgggfggf�dd�dwd�d�ggfggf�dd�d�d�d�gd�d�d�d�ggfgfggf�dd�d�d�d�gd�d�d�d�gd�gfgfggf�dd�d�d�gd�gdfggf�dd�d�d�d�gd�gdfggf�dd�d�d�d�d�d�ggfdfggf�dd�d�d�gd�d�d�dd�gfgggfggf�dd�d�d�gggd�gfggf�dd�d�d�gd�d�d�dd�gfgggfggf�dd�ggf�dd�d�d�gfggf�dd�d�d�d�gdfggf�dd�d�d�gfggf�dd�ggf�dd�ggf�dd�d$d�d�d�ggdfggf�dd�d�d�d�d�ggdfggf�dd�d'd6d�d�d�gdufd�d)ggdfggf�dd�d�d6d�d�d�gdufd�d�ggdfggf�dd�d�dId�d�d�gdufd�d�ggdfggf�dd�d�d�d�d6d�d�d�gd;fd�d6d�d�d�gdufd�gdfgffggf�dd�d�d�d�d�d�d�d�d�gdfd�d�d�d�gdfgffggf�dd�d�d�d�d�d�d�d6d�d�d�gdufd�gdfgffggf�dd�d�d�d�d�d�d�d�d�gdfgffggf�dd�d$d�d$d�d�d6d�d�d�gdufd�gdfgffggf�dd�d�ddggdggdgfd�d�d�d�d�d�d�d�ggfffggddfggf�dd�d�ddggdggdgfd�d�d�d�d�gd�gdfggddfggf�dd�d�ddggdggdgfd�d�d�gd�gdfggddfggf�dd�d!dKd!d�dgdK�ddpg�dgf�dgffggf�dd�de�dded1�d�d�d�d�dgfd;f�dgffggf�dd�d�ddggdggdgfd�d��d	d��d
dӐd�dgd�fgffggddfggf�dd�d
ddggdggdgf�dg�dd��d�dggfd��d�d�dggfgddfggf�dd�dddggdggdgf�dg�dd��d�dggfd��d�d�dggfgddfggf�ddd�d
dfgg�dg�dd��d�dggfd��d�d�dggfgfggf�dd�dddggdggdgf�dgd��d�ddϐd�ddӐd�dgdfgfggfgddfggf�dd�dddggdggdgf�dg�dgddfggf�d�d ggf�ddd'ddd"ggdggdgfd)ggddfggf�dd�d!ddd"gg�d"�dggdgf�d#ggddfggf�dddddd"g�d$gd�d%�d&gddgdgf�d'ggddfggf�dd�d(ddd"g�d$gd�d%�d&gddg�d)gf�d*ggddfggf�ddd�ddd"ggdggd�d+gfd�ggddfggf�dddddd"g�d,�d-gdggdg�d.�f�d'ggddfggf�dddTddd"g�d,gd�d/g�d0gd�d+�d1gfdUggddfggf�dd�d2ddd"g�d,gd�d/gdgd�d+�d1gf�d3ggddfggf�dd�d4ddd"g�d,gd�d/g�d0g�d5�d+�d1gf�d6ggddfggf�dd�d7ddd"g�d,gd�d/gdg�d8�d+�d1gf�d9ggddfggf�Z�d:�d;gfgZg�d<��d=�d>dq�d?�d@�dAgff��dB��dC��d=�dD�dEdggdggdgf�dFff��d=dKdq�dGg�dHgff��d=dK�dIggff��d=�ddq�dJgff��d=dK�dK�dLg�dMgff��d=�d	d�d�d�dʐdN�dOgdfgff��d=d�d�d�d�dʐdN�dOgdfgff��d=�d	d�d6�dP�dQ�dRgd;fd�d6d�dS�dTgduf�dUgdfgff��d=�d	�dVd6�dP�dQ�dRgd;fd�d6�dW�d�dXgduf�dYgdfgff��d=�d	�dVd6�dP�dQ�dRgd;fd�dI�dW�d�dXgduf�dYgdfgff��d=d�d�d6�dP�dQ�dRgd;fd�d6d�dS�dTgduf�dUgdfgff��d=d�dVd6�dP�dQ�dRgd;fd�d6�dW�d�dXgduf�dYgdfgff��d=d�dVd6�dP�dQ�dRgd;fd�dI�dW�d�dXgduf�dYgdfgff��d=d�d�d6�dP�dQ�dRgd;fd�d6d�dS�dTgduf�dUgdfgff��d=dϐdVd6�dP�dQ�dRgd;fd�d6�dW�d�dXgduf�dYgdfgff��d=dϐdVd6�dP�dQ�dRgd;fd�dI�dW�d�dXgduf�dYgdfgff��d=�dZdw�d[�d\�d\g�dH�d]gff��d=d�d��d^g�d_��d`�dagff��d=d�d��d^d1�dbdI�dc�dd�degd;fd;fggff��d=d�d��d^dϐdf�dQdӐdg�dhgdfgfggff��di��dj��dk��dl��dm��d=dIdqg�dn�d;ff��d=dI�dIgd;ff��d=d6dlg�do�d;ff��d=d6dqg�dn�d;ff��d=d6�dIgd;ff��d=d�d��dp�dqggff�Ze��dS(r�N)�dedent)�supportc	�t�|�+t|tttf��s	|tur|St|t
��rd�|D��S|jjg}t|d��rmt|d��r]|�	|j
|jf��t|d��r,t|d��r|dxx|j|j
fz
cc<|j�t|��S|jD]2}|�	t!t#||�������3t|��S)Nc�,�g|]}t|����S�)�to_tuple)�.0�es  �!D:\Python311\Lib\test\test_ast.py�
<listcomp>zto_tuple.<locals>.<listcomp>s��'�'�'������'�'�'��lineno�
col_offset�
end_lineno�end_col_offset���)�
isinstance�str�int�complex�Ellipsis�list�	__class__�__name__�hasattr�appendrrrr�_fields�tupler�getattr)�t�result�fs   rrrs?���(�J�q�3��W�"5�6�6�(�!�x�-�(���	�A�t�	�	�(�'�'�Q�'�'�'�'��k�"�
#�F��q�(���;���<� 8� 8�;��
�
�q�x���.�/�/�/��1�l�#�#�	;���3C�(D�(D�	;��2�J�J�J�1�<��)9�:�:�J�J�J��y���V�}�}��
�Y�/�/���
�
�h�w�q�!�}�}�-�-�.�.�.�.���=�=�r
)M�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): 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�2�eZdZd�Zd�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�Zej d���Z!d�Z"d�Z#d �Z$d!�Z%d"�Z&d#�Z'd$�Z(d%�Z)d&�Z*d'�Z+ej d(���Z,d)S)*�	AST_Testsc��t|t��sdSd|jvrdS|dko|d���S)NF�ast�ASTr)r�type�
__module__�isupper)�self�name�nodes   r�_is_ast_nodezAST_Tests._is_ast_node
sJ���$��%�%�	��5����'�	��5��u�}�2��a����!2�!2�2r
c�`�t|tj��r|j�dSt|tjtjtjf��r2|j|jf}|�	||��|j|jf}|jD]}t||��}t|t��r@|}|r |dkr|dj|djf}|D]}|�||����g|�|�||����|�
|j|j��dS)N�decorator_listr)rr2r3r�expr�stmt�
excepthandlerrr�assertGreaterEqualrr�_assertTrueorder�assertEqual�__match_args__)r7�ast_node�
parent_pos�node_posr8�value�	first_pos�childs        rrAzAST_Tests._assertTrueordersN���(�C�G�,�,�	��0@�	��F��h���3�8�S�5F� G�H�H�	@� ���)<�=�H��#�#�H�j�9�9�9�"�/�8�+>�?�J��$�		9�		9�D��H�d�+�+�E��%��&�&�
9�&�	��G�T�%5�5�G�!&�q���%��(�2E� F�I�"�<�<�E��)�)�%��;�;�;�;�<��
9��%�%�e�Z�8�8�8������)�8�+B�C�C�C�C�Cr
c���tj��}|�|jd��d|_|�|jd��|�|jdd��|�t��5|jddd��n#1swxYwY|�t��5tjd��ddd��dS#1swxYwYdS)Nr�*�foobar�)
r2r3rBrrL�__dict__�assertRaises�AttributeError�vararg�	TypeError�r7�xs  r�test_AST_objectszAST_Tests.test_AST_objects'sX���G�I�I�������B�'�'�'���������2�&�&�&������H�-�r�2�2�2�
�
�
�~�
.�
.�	�	�
�H�H�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��
�
�y�
)�
)�	�	��G�A�J�J�J�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s$�B � B$�'B$�C'�'C+�.C+c��Gd�d��}tj��}|��|_||j_t	j|j��}~t
j��|�|����dS)Nc��eZdZdS)�0AST_Tests.test_AST_garbage_collection.<locals>.XN�rr5�__qualname__rr
r�XrX6��������Dr
r[)	r2r3rT�a�weakref�refr�
gc_collect�assertIsNone)r7r[r]r_s    r�test_AST_garbage_collectionz%AST_Tests.test_AST_garbage_collection5s���	�	�	�	�	�	�	�	��G�I�I���a�c�c��������k�!�#����
���������#�#�%�%� � � � � r
c	�"�ttdfttdftt
dffD]�\}}}t
||��D]�\}}|�d|���5t|d|tj
��}|�t|��|��|�
|d��ddd��n#1swxYwY|�d||�	��5t|d|��ddd��n#1swxYwY�ˌ�dS)
N�exec�single�eval�parsing)�action�input�?)rr�	compiling)rhri�kind)�
exec_tests�exec_results�single_tests�single_results�
eval_tests�eval_results�zip�subTest�compiler2�
PyCF_ONLY_ASTrBrrA)r7ri�outputrl�i�o�ast_trees       r�
test_snippetszAST_Tests.test_snippets@s���%/��v�$F�%1�>�8�$L�%/��v�$F�$H�		1�		1��E�6�4��E�6�*�*�
1�
1���1��\�\��!�\�<�<�<�<�&�q�#�t�S�5F�G�G�H��$�$�X�h�%7�%7��;�;�;��)�)�(�F�;�;�;�<�<�<�<�<�<�<�<�<�<�<����<�<�<�<��\�\��A�D�\�I�I�1�1��H�c�4�0�0�0�1�1�1�1�1�1�1�1�1�1�1����1�1�1�1��
1�		1�		1s%�AC�C�C�$D�D�	Dc��ttztz}|D]'}tj|��}t|dd���(dS)N�<string>rd)rmrorqr2�parseru)r7�snippets_to_validate�snippet�trees    r�test_ast_validationzAST_Tests.test_ast_validationLsO��)�L�8�:�E��+�	.�	.�G��9�W�%�%�D��D�*�f�-�-�-�-�	.�	.r
c��gd�}|D]�\}}|�d|�d|����5d}tj|��}||jd_||jd_|�t��5t|dd��ddd��n#1swxYwYddd��n#1swxYwY��gd�}|D]�\}}|�d|�d|����5d}tj|��}||jd_	||jd_
|�t��5t|dd��ddd��n#1swxYwYddd��n#1swxYwY��dS)	N))�
�)i�������)r�r�)������)r�r�zCheck invalid linenos �:za = 1rr}rdzCheck invalid col_offset )rtr2r~�bodyrrrO�
ValueErrorrurr)	r7�invalid_linenosrrr�r��invalid_col_offsetsrrs	         r�!test_invalid_position_informationz+AST_Tests.test_invalid_position_informationSs���
�
�
��#2�	6�	6��F�J����L�v�L�L�
�L�L�M�M�
6�
6�!���y��)�)��&,��	�!��#�*4��	�!��'��&�&�z�2�2�6�6��D�*�f�5�5�5�6�6�6�6�6�6�6�6�6�6�6����6�6�6�6�
6�
6�
6�
6�
6�
6�
6�
6�
6�
6�
6����
6�
6�
6�
6��
�
�
��+>�	6�	6�&�J�����W�*�W�W�~�W�W�X�X�
6�
6�!���y��)�)��*4��	�!��'�.<��	�!��+��&�&�z�2�2�6�6��D�*�f�5�5�5�6�6�6�6�6�6�6�6�6�6�6����6�6�6�6�
6�
6�
6�
6�
6�
6�
6�
6�
6�
6�
6����
6�
6�
6�
6��	6�	6sm�AB1�<B�B1�B�B1�!B�"B1�1B5	�8B5	�#AE-�8E�
E-�E�E-�E�E-�-E1	�4E1	c
��tjtjtjddd���gdd���tjtjddd���gdd���gg���}t	|dd	��dS)
N�builtinsr�r�r8rr)�namesrr�	traceback)r��type_ignoresr}rd)r2�Module�Import�aliasru�r7r�s  r�>test_compilation_of_ast_nodes_with_default_end_position_valueszHAST_Tests.test_compilation_of_ast_nodes_with_default_end_position_valuesms����z��J�c�i�Z��a�P�P�P�Q�Z[�hi�j�j�j��J�c�i�[��q�Q�Q�Q�R�[\�ij�k�k�k� 
������	��j�&�)�)�)�)�)r
c���tjd��jdjj}|�|j��|�|j��|�|j��dS)Nzx[::]r)	r2r~r�rG�slicera�upper�lower�step)r7�slcs  r�
test_slicezAST_Tests.test_slicevsg���i�� � �%�a�(�.�4�����#�)�$�$�$����#�)�$�$�$����#�(�#�#�#�#�#r
c�x�tjd��jd}|�|j��dS)Nzfrom . import yr)r2r~r�ra�module)r7�ims  r�test_from_importzAST_Tests.test_from_import|s6��
�Y�(�
)�
)�
.�q�
1�����"�)�$�$�$�$�$r
c���tjd��}|�|jdtj��d���|jd_t|dd��dS)Nzfrom __future__ import divisionrz __future__ �<test>rd)r2r~�assertIsInstancer��
ImportFrom�stripr�ru)r7�mods  r�!test_non_interned_future_from_astz+AST_Tests.test_non_interned_future_from_ast�sb���i�9�:�:�����c�h�q�k�3�>�:�:�:�+�1�1�3�3��������X�v�&�&�&�&�&r
c��tjd��jd}|�t	|j��d��|jd}|�|jd��|�|j��|�|j	d��|�|j
d��|�|jd��|�|jd��tjd��jd}|jd}|�|jd��|�|j��|�|j	d��|�|j
d��|�|jd��|�|jd��dS)	Nzfrom bar import yrr��y��zfrom bar import *�*)
r2r~r�rB�lenr�r8ra�asnamerrrr)r7r�r�s   r�
test_aliaszAST_Tests.test_alias�s���
�Y�*�
+�
+�
0��
3������R�X����*�*�*�����������S�)�)�)����%�,�'�'�'������q�)�)�)�����)�1�-�-�-�����)�2�.�.�.�����-�r�2�2�2�
�Y�*�
+�
+�
0��
3������������S�)�)�)����%�,�'�'�'������q�)�)�)�����)�1�-�-�-�����)�2�.�.�.�����-�r�2�2�2�2�2r
c��|�ttjtj����|�ttjtj����|�ttjtj����|�ttjtj����|�ttjtj����|�ttj	tj����dS�N)
�
assertTrue�
issubclassr2�Forr>�Namer=r3�
comprehension�Gt�r7s r�test_base_classeszAST_Tests.test_base_classes�s������
�3�7�C�H�5�5�6�6�6����
�3�8�S�X�6�6�7�7�7����
�3�8�S�W�5�5�6�6�6����
�3�8�S�W�5�5�6�6�6����
�3�#4�c�g�>�>�?�?�?����
�3�6�3�7�3�3�4�4�4�4�4r
c�*�tj���D]s\}}|�||��rX|dkr�"|��}t	|tj��r-|�t|j��t���tdS)N�Index)
r2rN�itemsr:rr3rBr4rr)r7r8�itemrTs    r�test_field_attr_existencez#AST_Tests.test_field_attr_existence�s����,�,�,�.�.�	=�	=�J�D�$�� � ��t�,�,�
=��7�?����D�F�F���a���)�)�=��$�$�T�!�)�_�_�e�<�<�<��	=�	=r
c��tj��}|�|jd��|�t
��5|jddd��n#1swxYwY|�|j��tjtdd���}|�|jd��|�|jd��dS)N)�posonlyargs�argsrQ�
kwonlyargs�kw_defaults�kwarg�defaultsr��rM�)
r2�	argumentsrBrrOrPr�rarQ�rangerSs  r�test_argumentszAST_Tests.test_arguments�s���M�O�O�������%I�	J�	J�	J��
�
�~�
.�
.�	�	�
�F�F�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	����!�(�#�#�#��M�5��A�;�;�'��������#�#�#������1�%�%�%�%�%s�	A�A!�$A!c�p�tj��}d|_|�|jd��dS)Ni�)r2�NumrrBrSs  r�test_field_attr_writablez"AST_Tests.test_field_attr_writable�s2���G�I�I����	������C�(�(�(�(�(r
c��tj��}|�|jd��|�t
��5|jddd��n#1swxYwY|�t
��5|jddd��n#1swxYwYtjd��}|�|jd��|�|jd��|�t
��5|jddd��n#1swxYwY|�t
��5|j	ddd��n#1swxYwYtjd���}|�|jd��tjdd���}|�|jd��|�|jd��|�|jd��|�|jd��|�ttjddd��|�ttjdddd���|�tjdd���jd��|�tjdd���jd��|�
td	��5tjdd�
��ddd��n#1swxYwY|�
td��5tjdd���ddd��n#1swxYwY|�tjd��jd��|�tjd
��jd
��|�tjd��jd��|�tjd��jd��|�tjd��jd��|�tjd��jd��|�tjd��jd��|�tjd��jd��|�tjd��jd��|�tjd
��jd
��|�tjd��jd��|�tjd��jd��|�tjd��jd��|�tjd��jd��|�tjd��jd��|�tjd��jd��|�tjd��jd��dS)N)rGrlrKrM�rrr��bar)�fooz(Num got multiple values for argument 'n'��nz1Constant got multiple values for argument 'value'�rG�@�@�42�42TF.)r2r�rBrrOrPrGr�rrLrR�Constantr��assertRaisesRegex�Str�s�Bytes�assertIs�NameConstantrSs  r�test_classattrszAST_Tests.test_classattrs�s����G�I�I�������$5�6�6�6�
�
�
�~�
.�
.�	�	�
�G�G�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��
�
�~�
.�
.�	�	�
�C�C�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�G�B�K�K�������"�%�%�%������b�!�!�!�
�
�
�~�
.�
.�	�	�
�H�H�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��
�
�~�
.�
.�	�	�
�H�H�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�G�1����������1�%�%�%��G�B�q�!�!�!�������1�%�%�%������$5�6�6�6������"�%�%�%������b�!�!�!����)�S�W�a��q�9�9�9����)�S�W�a��q���C�C�C�	
�����a�U�3�3�3�7��?�?�?��������.�.�.�2�E�:�:�:�
�
#�
#�I�/Y�
Z�
Z�	�	��G�A��O�O�O�O�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
#�
#�I�/b�
c�
c�	%�	%��L��!�$�$�$�$�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%����	%�	%�	%�	%�	
����������+�+�+����������$�/�/�/���������)�5�1�1�1����������$�/�/�/������5�)�)�+�U�3�3�3��
�
�c�&�t�,�,�2�D�9�9�9��
�
�c�&�u�-�-�3�U�;�;�;��
�
�c�&�t�,�,�2�D�9�9�9������b�)�)�/��4�4�4������d�+�+�1�4�8�8�8������e�,�,�2�E�:�:�:������d�+�+�1�4�8�8�8������e�,�,�2�E�:�:�:��
�
�c�l�4�(�(�.��5�5�5��
�
�c�l�5�)�)�/��7�7�7��
�
�c�l�4�(�(�.��5�5�5��
�
�c�l�3�'�'�-�s�3�3�3�3�3sl�	A�A!�$A!�B�B�B�D�D� D�>E�E�E�K=�=L�L�#M�M
�
M
c�r�|�ttjd����tj��|�ttjd����tj��|�ttjd����tj��|�ttjd����tj��|�ttjd����tj��|�ttjd����tj��|�ttjd����tj��|�ttjd����tj��|�ttj����tj��dS)NrKr�r�r�r�TF)	rBr4r2r�r�r�r�r�rr�s r�
test_realtypezAST_Tests.test_realtype�sy������c�g�b�k�k�*�*�C�L�9�9�9�����c�g�d�m�m�,�,�c�l�;�;�;�����c�g�e�n�n�-�-�s�|�<�<�<�����c�g�d�m�m�,�,�c�l�;�;�;�����c�i��.�.�/�/���>�>�>�����c�.�t�4�4�5�5�s�|�D�D�D�����c�.�u�5�5�6�6���E�E�E�����c�.�t�4�4�5�5�s�|�D�D�D�����c�l�n�n�-�-�s�|�<�<�<�<�<r
c	�v�|�ttjd��tj����|�ttjd��tj����|�ttjd��tj����|�ttjd��tj����|�ttjd��tj����|�ttjd��tj����|�ttjd��tj����|�ttjd��tj����|�ttj��tj����|�ttjd��tj����|�ttjd��tj����|�ttjd��tj����|�ttjd��tj����|�ttjd��tj����|�ttjd��tj����|�ttjd��tj����|�ttjd��tj����|�ttjd��tj����|�	ttjd��tj����|�	ttjd��tj����|�	ttjd��tj����|�	ttjd��tj����|�	ttjd��tj����|�	ttjd��tj����|�	ttjd��tj����|�	ttjd��tj����|�	ttjd��tj����|�	ttjd��tj����|�	ttjd��tj����|�	ttjd��tj����|�	ttjd��tj����|�	ttjd��tj����|�	ttj��tj����|�	ttj��tj����|�	ttj��tj����|�	ttj��tj����|�	ttj��tj����Gd	�d
t��}|�ttj|d����tj����|�	ttj|d����tj����dS)NrKg������@y������@r�r�TF.c��eZdZdS)�$AST_Tests.test_isinstance.<locals>.SNrYrr
r�Sr�2s�������r
r�)r�rr2r�r�r�r�rr��assertFalser)r7r�s  r�test_isinstancezAST_Tests.test_isinstancesV�����
�3�7�2�;�;���8�8�9�9�9����
�3�7�3�<�<���9�9�:�:�:����
�3�7�4�=�=�#�'�:�:�;�;�;����
�3�7�4�=�=�#�'�:�:�;�;�;����
�3�9�U�#3�#3�S�Y�?�?�@�@�@����
�3�#3�D�#9�#9�3�;K�L�L�M�M�M����
�3�#3�E�#:�#:�C�<L�M�M�N�N�N����
�3�#3�D�#9�#9�3�;K�L�L�M�M�M����
�3�<�>�>�3�<�@�@�A�A�A����
�3�<��#3�#3�S�W�=�=�>�>�>����
�3�<��#4�#4�c�g�>�>�?�?�?����
�3�<��#5�#5�s�w�?�?�@�@�@����
�3�<��#5�#5�s�w�?�?�@�@�@����
�3�<��#6�#6��	�B�B�C�C�C����
�3�<��#5�#5�s�7G�H�H�I�I�I����
�3�<��#6�#6��8H�I�I�J�J�J����
�3�<��#5�#5�s�7G�H�H�I�I�I����
�3�<��#4�#4�c�l�C�C�D�D�D�����C�G�D�M�M�3�7�;�;�<�<�<�����C�G�B�K�K���9�9�:�:�:�����C�G�D�M�M�3�9�=�=�>�>�>�����C�G�B�K�K��1A�B�B�C�C�C�����C�G�B�K�K���>�>�?�?�?�����C�$4�T�$:�$:�C�G�D�D�E�E�E�����C�$4�U�$;�$;�S�W�E�E�F�F�F�����C�L��$6�$6���@�@�A�A�A�����C�L��$4�$4�c�g�>�>�?�?�?�����C�L��$6�$6��	�B�B�C�C�C�����C�L��$4�$4�c�6F�G�G�H�H�H�����C�L��$4�$4�c�l�C�C�D�D�D�����C�L��$6�$6���@�@�A�A�A�����C�L��$7�$7���A�A�B�B�B�����C�L�N�N�C�G�<�<�=�=�=�����C�L�N�N�C�G�<�<�=�=�=�����C�L�N�N�C�I�>�>�?�?�?�����C�L�N�N�C�4D�E�E�F�F�F�����C�L�N�N�C�L�A�A�B�B�B�������������
�3�<���$���#8�#8�#�'�B�B�C�C�C�����C�L���4���$9�$9�3�7�C�C�D�D�D�D�Dr
c��Gd�dtj��}Gd�dtj��}|d��}|�|jd��|�|jd��|�t|��|��|�t||����|�t|tj����|�t||����|�ttjd��|����|d���}|�|jd��|�t|��|��dS)Nc���eZdZ�fd�Z�xZS)�$AST_Tests.test_subclasses.<locals>.Nc�H��t��j|i|��d|_dS)N�spam)�super�__init__�z)r7r��kwargsrs   �rr�z-AST_Tests.test_subclasses.<locals>.N.__init__8s*��� ���� �$�1�&�1�1�1�����r
)rr5rZr��
__classcell__)rs@r�Nr�7s8�������
 �
 �
 �
 �
 �
 �
 �
 �
 r
r�c��eZdZdS)�%AST_Tests.test_subclasses.<locals>.N2NrYrr
r�N2r�;r\r
r�rKr�r�)	r2r�rBr�r�r4r�rr�)r7r�r�r�s    r�test_subclasseszAST_Tests.test_subclasses6s|��	 �	 �	 �	 �	 ���	 �	 �	 �	�	�	�	�	���	�	�	�
�A�b�E�E�������b�!�!�!������f�%�%�%�����a���!�$�$�$����
�1�a�(�(�)�)�)����
�1�c�g�.�.�/�/�/�����A�r�*�*�+�+�+�����C�G�B�K�K��3�3�4�4�4�
�A��G�G�G�������b�!�!�!�����a���!�$�$�$�$�$r
c��tjd��g}tj|g��}|�|j|��dS)NrK)r2r�r�rBr�)r7r�rTs   r�test_modulezAST_Tests.test_moduleJs@�������}���J�t�R� � ��������&�&�&�&�&r
c	���tj��}|�|jd��d|_|�|jd��tjd��}tjd��}tj��}tj|||��}|�|j|��|�|j|��|�|j	|��tjddd��}|�|jd��|�|jd��|�|j	d��tjdddd���}|�|jd��|�|jd��|�|j	d��|�|j
d��|�ttjdddd��|�ttjddddd���tjdddd�	��}|�|jd��|�|jd��|�|j	d��|�|j
d��tjdddd
���}|�|jd
��dS)N)�left�op�right�r�r�rMrr��)r�rrrrK)�	foobarbaz)
r2�BinOprBrrr��Addr�rrrrOrR)r7rT�n1�n3�addops     r�test_nodeclasseszAST_Tests.test_nodeclassesOs����I�K�K�������$;�<�<�<���������a�(�(�(�
�W�Q�Z�Z��
�W�Q�Z�Z����	�	���I�b�%��$�$��������$�$�$������u�%�%�%������"�%�%�%��I�a��A����������#�#�#������q�!�!�!������!�$�$�$��I�a��A�a�(�(�(��������#�#�#������q�!�!�!������!�$�$�$������1�%�%�%�	
���)�S�Y��1�a��;�;�;����)�S�Y��1�a��1��E�E�E�
�I�1��!�A�6�6�6��������#�#�#������q�!�!�!������!�$�$�$������1�%�%�%�
�I�a��A��,�,�,�������b�)�)�)�)�)r
c�b�tj��}|�|jd��dS)Nr)r2�SubrBrrSs  r�test_no_fieldszAST_Tests.test_no_fields{s+���G�I�I�������B�'�'�'�'�'r
c	�`�ddl}|g}	ddl}|�|��n#t$rYnwxYwgd�}|D]t}|D]o}d�tD��D][}|�|�||����}|�t|��t|�����\�p�udS)Nr)rr�rMc3�:K�|]}t|ddd��V��dS)rjrdiN)ru)r	rxs  r�	<genexpr>z*AST_Tests.test_pickling.<locals>.<genexpr>�s0����O�O�q�G�A�s�F�E�:�:�O�O�O�O�O�Or
)	�pickle�cPickler�ImportErrorrm�loads�dumpsrBr)	r7r�modsr�	protocolsr��protocolr2�ast2s	         r�
test_picklingzAST_Tests.test_pickling�s����
�
�
��x��	��N�N�N��K�K�� � � � ���	�	�	��D�	�����I�I�	��	D�	D�C�%�
D�
D��O�O�J�O�O�O�D�D�C��9�9�S�Y�Y�s�H�%=�%=�>�>�D��$�$�X�d�^�^�X�c�]�]�C�C�C�C�D�
D�	D�	Ds�#�
0�0c	�h�tdd���}tjtjtjdi|��fi|��gg��}|�t��5}t|dd��ddd��n#1swxYwY|�dt|j
����dS)NrMr��rrr�rdzbut got <ast.exprr)�dictr2r��Exprr=rOrRru�assertInr�	exception)r7�pos�m�cms    r�test_invalid_sumzAST_Tests.test_invalid_sum�s����!��*�*�*���J�������C���8�8�C�8�8�9�2�>�>��
�
�
�y�
)�
)�	)�R��A�x��(�(�(�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)����	)�	)�	)�	)��
�
�)�3�r�|�+<�+<�=�=�=�=�=s�!A?�?B�Bc	��tjtjtjdtj������gg��}tj|��|�t��5}t|dd��ddd��n#1swxYwY|�	dt|j����dS)NrKr�rdzidentifier must be of type str)r2r�rr��Load�fix_missing_locationsrOrRrurrr )r7r"r#s   r�test_invalid_identifierz!AST_Tests.test_invalid_identifier�s����J�����"�c�h�j�j�!9�!9�:�:�;�R�@�@���!�!�$�$�$�
�
�
�y�
)�
)�	)�R��A�x��(�(�(�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)����	)�	)�	)�	)��
�
�6��B�L�8I�8I�J�J�J�J�Js�;B�B� Bc�X�tddtftddtf��fD]�}tjtj|�����}tj|��|�td��5t|dd��ddd��n#1swxYwY��dS)Nr�rM�r�zinvalid type in Constant: typer�rf)	r�	frozensetr2�
Expressionr�r'r�rRru)r7�invalid_constantr
s   r�test_invalid_constantzAST_Tests.test_invalid_constant�s��� #�a��C�[�)�Q��3�K�2H�2H� H�	-�	-����C�L�1A�$B�$B�C�C�C�A��%�a�(�(�(��'�'��;���
-�
-���8�V�,�,�,�
-�
-�
-�
-�
-�
-�
-�
-�
-�
-�
-����
-�
-�
-�
-��	-�	-s�B�B"	�%B"	c�H�tjd��}d|jdjdj_|�t
��5}t
|dd��ddd��n#1swxYwY|�dt|j	����dS)Nzdef f():
 yield from g()rr�rdzfield 'value' is required)
r2r~r�rGrOr�rurrr )r7�empty_yield_fromr#s   r�test_empty_yield_fromzAST_Tests.test_empty_yield_from�s����9�%@�A�A��7;���a� �%�a�(�.�4�
�
�
�z�
*�
*�	8�b��$�h��7�7�7�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8����	8�	8�	8�	8��
�
�1�3�r�|�3D�3D�E�E�E�E�Es�A/�/A3�6A3c��ddl}d�}tj|d|��5|�tt
jd��ddd��dS#1swxYwYdS)Nrc��dSr�r�r�s r�
bad_normalizez0AST_Tests.test_issue31592.<locals>.bad_normalize�s���4r
�	normalizeuϕ)�unicodedatar�	swap_attrrOrRr2r~)r7r7r5s   r�test_issue31592zAST_Tests.test_issue31592�s���	����	�	�	�
�
�{�K��
G�
G�	>�	>����i���H�=�=�=�	>�	>�	>�	>�	>�	>�	>�	>�	>�	>�	>�	>����	>�	>�	>�	>�	>�	>s�'A�A�Ac��tjd��}|jdj}|j}|j}|�|jd��|�|jd��|�|jd��|�|jd��|�|jd��|�|jd��tjd��}|jdj}|j}|j}|�|jd��|�|jd��|�|jd��|�|j	d	��|�|jd��|�|jd��|�|jd	��|�|j	d	��|�|jd��|�|jd��|�|jd��|�|j	d��dS)
Nz4+5+6+7r�rr�z
4+5-\
 6-7r�rrM)
r2r~r�rGr�rBrrrr)r7r��parent_binop�child_binop�grandchild_binops     r� test_issue18374_binop_col_offsetz*AST_Tests.test_issue18374_binop_col_offset�s,���y��#�#���y��|�)��"�'��&�+������0�!�4�4�4�����4�a�8�8�8�����/��3�3�3�����3�Q�7�7�7����)�4�a�8�8�8����)�8�!�<�<�<��y��(�(���y��|�)��"�'��&�+������0�!�4�4�4�����,�a�0�0�0�����4�a�8�8�8�����0�!�4�4�4�����/��3�3�3�����+�Q�/�/�/�����3�Q�7�7�7�����/��3�3�3����)�4�a�8�8�8����)�0�!�4�4�4����)�8�!�<�<�<����)�4�a�8�8�8�8�8r
c��tjd��}|jdjdj}|�|jd��dS)Nr'rr)r2r~r�r<rGrBr)r7r��attr_bs   r�*test_issue39579_dotted_name_end_col_offsetz4AST_Tests.test_issue39579_dotted_name_end_col_offset�sG���y�0�1�1����1��,�Q�/�5������.��2�2�2�2�2r
c�L�|�tjjd��|�tjjd��|�tjjd��|�tjjd��d�tj���D��}dtj���dj��|d<|�	tjj�
d��|��dS)	Nz0withitem(expr context_expr, expr? optional_vars)�GtEz%Name(identifier id, expr_context ctx)zBcmpop = Eq | NotEq | Lt | LtE | Gt | GtE | Is | IsNot | In | NotInc�"�g|]}d|j����
S)z     | )�__doc__)r	r9s  rrz5AST_Tests.test_ast_asdl_signature.<locals>.<listcomp>�s#��V�V�V�D�/���/�/�V�V�Vr
zexpr = r�
)rBr2�withitemrFrDr��cmpopr=�__subclasses__�assertCountEqual�split)r7�expressionss  r�test_ast_asdl_signaturez!AST_Tests.test_ast_asdl_signature�s��������-�/a�b�b�b�������%�0�0�0������)�+R�S�S�S������*�,p�q�q�q�V�V�C�H�<S�<S�<U�<U�V�V�V��I�3�8�#:�#:�#<�#<�Q�#?�#G�I�I��A�����c�h�.�4�4�T�:�:�K�H�H�H�H�Hr
c��tjdd���tjdd���|�t��5tjdd���ddd��n#1swxYwY|�t��5tjdd���ddd��n#1swxYwYtjdd���tjdd���|�t��5tjdd���ddd��n#1swxYwY|�t��5tjdd���ddd��dS#1swxYwYdS)Nzdef foo(x, /): ...�r�r���feature_versionzdef bar(x=1, /): ...�r�r;zlambda x, /: ...zlambda x=1, /: ...�r2r~rO�SyntaxErrorr�s r�$test_positional_only_feature_versionz.AST_Tests.test_positional_only_feature_version�s����	�&��?�?�?�?��	�(�&�A�A�A�A�
�
�
�{�
+�
+�	D�	D��I�*�F�C�C�C�C�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D����	D�	D�	D�	D�
�
�
�{�
+�
+�	F�	F��I�,�f�E�E�E�E�	F�	F�	F�	F�	F�	F�	F�	F�	F�	F�	F����	F�	F�	F�	F�	�	�$�f�=�=�=�=��	�&��?�?�?�?�
�
�
�{�
+�
+�	B�	B��I�(�&�A�A�A�A�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B����	B�	B�	B�	B�
�
�
�{�
+�
+�	D�	D��I�*�F�C�C�C�C�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D����	D�	D�	D�	D�	D�	DsH�A*�*A.�1A.�B2�2B6�9B6�D&�&D*�-D*�E/�/E3�6E3c��tjdd���tjdd���|�t��5tjdd���ddd��n#1swxYwYtjdd���dS)Nz#with (CtxManager() as example): ...�r�r�rQ)r��	rPz!with CtxManager() as example: ...rTr�s r�'test_parenthesized_with_feature_versionz1AST_Tests.test_parenthesized_with_feature_version�s����	�7��Q�Q�Q�Q��	�7��P�P�P�P�
�
�
�{�
+�
+�	U�	U��I�;�V�T�T�T�T�	U�	U�	U�	U�	U�	U�	U�	U�	U�	U�	U����	U�	U�	U�	U��	�5�v�N�N�N�N�N�Ns�A*�*A.�1A.c���tjdd���|�t��5tjdd���ddd��dS#1swxYwYdS)Nzf"{x=}"rPrQrSrTr�s r�#test_debug_f_string_feature_versionz-AST_Tests.test_debug_f_string_feature_version�s����	�)�V�4�4�4�4�
�
�
�{�
+�
+�	9�	9��I�i��8�8�8�8�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9����	9�	9�	9�	9�	9�	9��A�A�Ac���tjdd���|�t��5tjdd���ddd��dS#1swxYwYdS)Nz(x := 0)rPrQrSrTr�s r�*test_assignment_expression_feature_versionz4AST_Tests.test_assignment_expression_feature_versions����	�*�f�5�5�5�5�
�
�
�{�
+�
+�	:�	:��I�j�&�9�9�9�9�	:�	:�	:�	:�	:�	:�	:�	:�	:�	:�	:�	:����	:�	:�	:�	:�	:�	:r]c���td��}tj|��|�t��5tj|d���ddd��dS#1swxYwYdS)Nz9
        try: ...
        except* Exception: ...
        rXrQ)rr2r~rOrU)r7�codes  r�%test_exception_groups_feature_versionz/AST_Tests.test_exception_groups_feature_versions�����
�
��	�	�$����
�
�
�{�
+�
+�	5�	5��I�d�G�4�4�4�4�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5����	5�	5�	5�	5�	5�	5s�A"�"A&�)A&c�8�dD]�}tjtj|tj������}tj|��|�td|�d���5t|dd��ddd��n#1swxYwY��dS)N)�True�Falser#z"identifier field can't represent 'z
' constantr�rf)r2r,r�r&r'r�r�ru)r7�constantr=s   r�test_constant_as_namezAST_Tests.test_constant_as_names���/�	0�	0�H��>�#�(�8�S�X�Z�Z�"@�"@�A�A�D��%�d�+�+�+��'�'�
�4m�Ya�4m�4m�4m�n�n�
0�
0���h��/�/�/�
0�
0�
0�
0�
0�
0�
0�
0�
0�
0�
0����
0�
0�
0�
0��	0�	0s�0B�B	�B	c�t�Gd�dtj��}tj|tj��dS)Nc�8�eZdZdZej��Zej��Zej��Zej��Z	ej��Z
ej��Zej��Zej��Z
ej��ZeZej��Zej��Zej��Zej��Zej��Zej��Zej��Zej��Zej��Zd�ZdS)�3AST_Tests.test_precedence_enum.<locals>._Precedencez5Precedence table that originated from python grammar.c�X�	|�|dz��S#t$r|cYSwxYw)Nr�)rr�r�s r�nextz8AST_Tests.test_precedence_enum.<locals>._Precedence.next-sA�� ��>�>�$��(�3�3�3��!� � � ��K�K�K� ���s��)�)N)rr5rZrF�enum�auto�
NAMED_EXPR�TUPLE�YIELD�TEST�OR�AND�NOT�CMP�EXPR�BOR�BXOR�BAND�SHIFT�ARITH�TERM�FACTOR�POWER�AWAIT�ATOMrlrr
r�_Precedencerjs������G�G�"�����J��D�I�K�K�E��D�I�K�K�E��4�9�;�;�D������B��$�)�+�+�C��$�)�+�+�C��$�)�+�+�C��4�9�;�;�D��C��4�9�;�;�D��4�9�;�;�D��D�I�K�K�E��D�I�K�K�E��4�9�;�;�D��T�Y�[�[�F��D�I�K�K�E��D�I�K�K�E��4�9�;�;�D�
 �
 �
 �
 �
 r
r�)rm�IntEnum�_test_simple_enumr2r�)r7r�s  r�test_precedence_enumzAST_Tests.test_precedence_enumsK��	 �	 �	 �	 �	 �$�,�	 �	 �	 �6	
��{�C�O�<�<�<�<�<r
c������tj��dz�tj��dz�t�dz�������fd�}|dd��|dd��|dd��|dd	��dS)
Nr�i,g�?c���||�	zz}tj|����fD]i}|||zz}d�|||��}��t|���5tj|��ddd��n#1swxYwY�jdS)NzCompiling ({!r} + {!r} * {}))�msg)r2r~�formatrO�RecursionError)
�prefix�repeated�	expect_ok�depth�broken�details�crash_depth�
fail_depthr7�
success_depths
      ����r�check_limitz7AST_Tests.test_ast_recursion_limit.<locals>.check_limit:s������M�!9�9�I��I�i� � � �$�k�2�
&�
&���(�U�"2�2��8�?�?�"�H�e�5�5���&�&�~�7�&�C�C�&�&��I�f�%�%�%�&�&�&�&�&�&�&�&�&�&�&����&�&�&�&��	
&�
&s�B�B	�B	r]r.z.bz[0]z*a)�sys�getrecursionlimitr)r7r�r�r�r�s` @@@r�test_ast_recursion_limitz"AST_Tests.test_ast_recursion_limit4s��������*�,�,�q�0�
��+�-�-��3���J��-�.�.�
�	&�	&�	&�	&�	&�	&�	&�	&�	��C�������C�������C�������C������r
N)-rr5rZr:rArUrbr{r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r
r
rr$r(r.r1r�cpython_onlyr9r?rBrNrVrZr\r_rbrgr�r�rr
rr0r0s�������3�3�3�D�D�D�&���	!�	!�	!�
1�
1�
1�.�.�.�6�6�6�4*�*�*�$�$�$�%�%�%�'�'�'�3�3�3�(5�5�5�	=�	=�	=�&�&�&�)�)�)�:4�:4�:4�x	=�	=�	=�-E�-E�-E�^%�%�%�('�'�'�
**�**�**�X(�(�(�

D�
D�
D�>�>�>�K�K�K�-�-�-�F�F�F�
��>�>���>�9�9�9�>3�3�3�
I�I�I�
D�
D�
D�O�O�O�9�9�9�
:�:�:�
5�5�5�0�0�0�=�=�=�<
��������r
r0c��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�ZdS)�ASTHelpers_TestNc���tjd��}tdddtj��}|�tj|��tj|����dS)Nz
foo(1 + 1)z	<unknown>rd)r2r~rurvrB�dump)r7r]�bs   r�
test_parsezASTHelpers_Test.test_parseMsS���I�l�#�#���L�+�v�s�7H�I�I�������!���c�h�q�k�k�2�2�2�2�2r
c��	ddzdS#t$ri|�t��5}tjd��ddd��n#1swxYwY|�|jj��YdSwxYw)Nr�rz'\U')�	ExceptionrOrUr2�literal_eval�assertIsNotNoner �__context__�r7r
s  r�test_parse_in_errorz#ASTHelpers_Test.test_parse_in_errorRs���	:�
�a�C�C�C�C���	:�	:�	:��"�"�;�/�/�
*�1�� ��)�)�)�
*�
*�
*�
*�
*�
*�
*�
*�
*�
*�
*����
*�
*�
*�
*�� � ���!8�9�9�9�9�9�9�	:���s2�	�$A<�A�A<�A	�A<�A	�"A<�;A<c�&�tjd��}|�tj|��d��|�tj|d���d��|�tj|d���d��dS)	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=[])�r2r~rBr��r7r9s  r�	test_dumpzASTHelpers_Test.test_dumpZs����y�3�4�4�������$���
/�	
�	
�	
�
	
�����$��>�>�>�
2�	
�	
�	
�	
�����$�4�@�@�@�
Z�	
�	
�	
�	
�	
r
c�.�tjd��}|�tj|d���d��|�tj|dd���d��|�tj|d	d�
��d��dS)Nr�r���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�	)r�r�z�Module(
	[
		Expr(
			Call(
				Name('spam', Load()),
				[
					Name('eggs', Load()),
					Constant('and cheese')],
				[]))],
	[])T)r�r�a�Module(
   body=[
      Expr(
         value=Call(
            func=Name(
               id='spam',
               ctx=Load(),
               lineno=1,
               col_offset=0,
               end_lineno=1,
               end_col_offset=4),
            args=[
               Name(
                  id='eggs',
                  ctx=Load(),
                  lineno=1,
                  col_offset=5,
                  end_lineno=1,
                  end_col_offset=9),
               Constant(
                  value='and cheese',
                  lineno=1,
                  col_offset=11,
                  end_lineno=1,
                  end_col_offset=23)],
            keywords=[],
            lineno=1,
            col_offset=0,
            end_lineno=1,
            end_col_offset=24),
         lineno=1,
         col_offset=0,
         end_lineno=1,
         end_col_offset=24)],
   type_ignores=[])r�r�s  r�test_dump_indentz ASTHelpers_Test.test_dump_indentos����y�3�4�4�������$�q�1�1�1�
4�
	�
	�
	�	
�����$��d�K�K�K�
N	�
	
�
	
�
	
�	
�����$�4��J�J�J�#M�#	�#	�#	�#	�#	r
c��tjdd���}|�tj|��d��|�tj|d���d��tjtjdtj���	��dd�
��}|�tj|��d��|�tj|d�
��d��|�tj|d���d��|�tj|dd���d��tjtjdtj���	�����}|�tj|��d��|�tj|d�
��d��dS)Nr�rrzRaise()Tr�zRaise(lineno=3, col_offset=4)r
)�id�ctx)�excrrz#Raise(exc=Name(id='e', ctx=Load()))Fr�zRaise(Name('e', Load()))z;Raise(exc=Name(id='e', ctx=Load()), lineno=3, col_offset=4))r�r�z0Raise(Name('e', Load()), lineno=3, col_offset=4))�causez%Raise(cause=Name(id='e', ctx=Load()))zRaise(cause=Name('e', Load())))r2�RaiserBr�r�r&r�s  r�test_dump_incompletez$ASTHelpers_Test.test_dump_incomplete�s����y��a�0�0�0�������$����	
�	
�	
�	
�����$�4�@�@�@�+�	
�	
�	
��y�S�X��#�(�*�*�=�=�=�a�TU�V�V�V�������$���1�	
�	
�	
�	
�����$��>�>�>�&�	
�	
�	
�	
�����$�4�@�@�@�I�	
�	
�	
�	
�����$��RV�W�W�W�>�	
�	
�	
��y�s�x�3�C�H�J�J�?�?�?�@�@�@�������$���3�	
�	
�	
�	
�����$��>�>�>�,�	
�	
�	
�	
�	
r
c�R�tjdd���}tjtjd��|jj��|j_|�tj|d���d��tjdddd�	��}tj|tjdd�
����}|�	|j
��|�	|j��|�|jd��|�|j
d��dS)N�1 + 1rf��moderMTr�z�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�)rrrr)rr)r2r~�
copy_locationr�r�rrBr��Callrarrrr)r7�src�news   r�test_copy_locationz"ASTHelpers_Test.test_copy_location�s���i��f�-�-�-���*�3�7�1�:�:�s�x�~�F�F���������#�$�?�?�?�
=�	
�	
�	
��h�!�A�!�A�N�N�N�����S�X��d�%K�%K�%K�L�L�����#�.�)�)�)����#�,�-�-�-������Q�'�'�'�������+�+�+�+�+r
c���tjd��}|j�tjtjtjdtj����tjd��gg������|�	|tj
|����d|_|�	tj|d���d��dS)Nz
write("spam")r��eggsTr�a�Module(body=[Expr(value=Call(func=Name(id='write', ctx=Load(), lineno=1, col_offset=0, end_lineno=1, end_col_offset=5), args=[Constant(value='spam', lineno=1, col_offset=6, end_lineno=1, end_col_offset=12)], keywords=[], lineno=1, col_offset=0, end_lineno=1, end_col_offset=13), lineno=1, col_offset=0, end_lineno=1, end_col_offset=13), Expr(value=Call(func=Name(id='spam', ctx=Load(), lineno=1, col_offset=0, end_lineno=1, end_col_offset=0), args=[Constant(value='eggs', lineno=1, col_offset=0, end_lineno=1, end_col_offset=0)], keywords=[], lineno=1, col_offset=0, end_lineno=1, end_col_offset=0), lineno=1, col_offset=0, end_lineno=1, end_col_offset=0)], type_ignores=[]))
r2r~r�rrr�r�r&r�rBr'�maxDiffr��r7r�s  r�test_fix_missing_locationsz*ASTHelpers_Test.test_fix_missing_locations�s����i��(�(����������#�(�6�3�8�:�:�*F�*F�+.�7�6�?�?�*;�R�"A�"A�B�B�	C�	C�	C�����c�7��<�<�=�=�=���������#�$�?�?�?�

�	
�	
�	
�	
�	
r
c���tjdd���}|�tj|d���|��|�tj|d���d��tjdd���}|�tj|jd���|j��|�tj|d���d��tjtjd	tj����ggd
���}|�tj|��j	d��|�
tj|��j��dS)
Nr�rfr�r�r�Tr�z�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��keywordsrrM)r2r~rB�increment_linenor�r�r�r�r&rrarr�s  r�test_increment_linenoz%ASTHelpers_Test.test_increment_lineno�sY���i��f�-�-�-������-�c�Q�7�7�7��=�=�=������#�$�?�?�?�
=�	
�	
�	
��i��f�-�-�-������-�c�h�!�<�<�<�c�h�G�G�G������#�$�?�?�?�
=�	
�	
�	
��h���&�#�(�*�*�-�-�B��A�
�
�
��	
����-�c�2�2�9�1�=�=�=����#�.�s�3�3�>�?�?�?�?�?r
c��tjdd���}ttj|j����}|�|�d��jd��|�|ggd���dS)N�foo()rfr�r�r�)r�r�)r2r~r�iter_fieldsr�rB�popr�)r7r9�ds   r�test_iter_fieldsz ASTHelpers_Test.test_iter_fieldssv���y��v�.�.�.�������+�+�,�,��������v���)�5�1�1�1������R�8�8�9�9�9�9�9r
c	�L�tjdd���}|�tt	tj|j������d��tj|j��}|�t|��jd��|�t|��j	d��|�t|��j	d��|�tj
t|����d��dS)	Nzspam(23, 42, eggs='leek')rfr�rr��rKz1keyword(arg='eggs', value=Constant(value='leek')))r2r~rBr�r�iter_child_nodesr�rlr�rGr�)r7r9�iterators   r�test_iter_child_nodesz%ASTHelpers_Test.test_iter_child_nodess����y�4�6�B�B�B������T�#�"6�t�y�"A�"A�B�B�C�C�Q�G�G�G��'��	�2�2������h���*�F�3�3�3�����h���-�r�2�2�2�����h���-�r�2�2�2������$�x�.�.�1�1�?�	
�	
�	
�	
�	
r
c�(�tjd��}|�tj|��d��tjd��}|�tj|jd��d��tjd��}|�tj|jd��d��tjd��}|�tj|jd��d��dS)Nz"""line one
  line two"""zline one
line twoz&class foo:
  """line one
  line two"""rz&def foo():
  """line one
  line two"""z#async def foo():
  """spam
  ham"""zspam
ham)r2r~rB�
get_docstringr�r�s  r�test_get_docstringz"ASTHelpers_Test.test_get_docstrings����y�5�6�6������*�4�0�0�-�	/�	/�	/��y�C�D�D������*�4�9�Q�<�8�8�-�	/�	/�	/��y�C�D�D������*�4�9�Q�<�8�8�-�	/�	/�	/��y�@�A�A������*�4�9�Q�<�8�8�+�F�F�F�F�Fr
c�8�|�tjtjd������tjd��}|�tj|����tjd��}|�tj|����tjd��}|�tj|jd����tjd��}|�tj|jd����tjd��}|�tj|jd����tjd��}|�tj|jd����tjd��}|�tj|jd����tjd	��}|�tj|jd����tjd
��}|�tj|jd����dS)N�zx = "not docstring"zdef foo():
  passzclass foo:
  passrz class foo:
  x = "not docstring"z class foo:
  def bar(self): passz def foo():
  x = "not docstring"zasync def foo():
  passz&async def foo():
  x = "not docstring")rar2r�r~r�r�s  r�test_get_docstring_nonez'ASTHelpers_Test.test_get_docstring_none&s�����#�+�C�I�b�M�M�:�:�;�;�;��y�.�/�/�����#�+�D�1�1�2�2�2��y�-�.�.�����#�+�D�1�1�2�2�2��y�-�.�.�����#�+�D�I�a�L�9�9�:�:�:��y�<�=�=�����#�+�D�I�a�L�9�9�:�:�:��y�<�=�=�����#�+�D�I�a�L�9�9�:�:�:��y�-�.�.�����#�+�D�I�a�L�9�9�:�:�:��y�<�=�=�����#�+�D�I�a�L�9�9�:�:�:��y�3�4�4�����#�+�D�I�a�L�9�9�:�:�:��y�B�C�C�����#�+�D�I�a�L�9�9�:�:�:�:�:r
c���tjd��}|�|jdjd��|�|jdjd��|�|jdjdjd��|�|jdjdjd��|�|jdjdjdjd��|�|jdjdjdjd��|�|jdjdjd��|�|jdjdjd��|�|jdjd��|�|jdjd	��dS)
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�rMrrrY��
)r2r~rBr�rrr�s  r�:test_multi_line_docstring_col_offset_and_lineno_issue16806zJASTHelpers_Test.test_multi_line_docstring_col_offset_and_lineno_issue16806>s����y�
+�
�
��	
�����1��0�!�4�4�4������1��,�a�0�0�0������1��*�1�-�8�!�<�<�<������1��*�1�-�4�a�8�8�8������1��*�1�-�2�1�5�@�!�D�D�D������1��*�1�-�2�1�5�<�a�@�@�@������1��*�1�-�8�!�<�<�<������1��*�1�-�4�b�9�9�9������1��0�!�4�4�4������1��,�b�1�1�1�1�1r
c���tjd��}|jdjd}|�|jd��|�|jd��dS)Nz if a:
    pass
elif b:
    pass
rr��r2r~r��orelserBrr�r7r9�	elif_stmts   r�test_elif_stmt_start_positionz-ASTHelpers_Test.test_elif_stmt_start_positionQs]���y�?�@�@���I�a�L�'��*�	�����)�1�-�-�-�����-�q�1�1�1�1�1r
c���tjd��}|jdjd}|�|jd��|�|jd��dS)Nz/if a:
    pass
elif b:
    pass
else:
    pass
rr�r�r�s   r�'test_elif_stmt_start_position_with_elsez7ASTHelpers_Test.test_elif_stmt_start_position_with_elseWs]���y�P�Q�Q���I�a�L�'��*�	�����)�1�-�-�-�����-�q�1�1�1�1�1r
c���tjd��}|jdjjd}|�|jd��|�|jd��dS)Nr*rr�rY)r2r~r�rGr�rBrr)r7r9�starred_exprs   r�*test_starred_expr_end_position_within_callz:ASTHelpers_Test.test_starred_expr_end_position_within_call]s_���y��&�&���y��|�)�.�q�1������0�!�4�4�4�����4�a�8�8�8�8�8r
c��|�tjd��gd���|�tjd��ddi��|�tjd��d��|�tjd��hd	���|�tjd
��d��|�tjd��t����|�t
tjd
��|�tjd��d��|�tjd��d��|�tjd��d��|�tjd��d��|�tjd��d��|�tjd��d��|�t
tjd����d��|�t
tjd��|�t
tjd��|�t
tjd��dS)Nz	[1, 2, 3]�r�rMr�z{"foo": 42}r�rKz(True, False, None))TFNz	{1, 2, 3}>r�rMr�zb"hi"shizset()r��6�z+6z-6i����z3.25g
@z+3.25z-3.25g
�z-0.0z++6z+Truez2+3)rBr2r��setrOr��reprr�s r�test_literal_evalz!ASTHelpers_Test.test_literal_evalcs;������)�+�6�6�	�	�	�B�B�B�����)�-�8�8�5�"�+�F�F�F�����)�*?�@�@�BU�V�V�V�����)�+�6�6�	�	�	�B�B�B�����)�'�2�2�E�:�:�:�����)�'�2�2�C�E�E�:�:�:����*�c�&6��@�@�@�����)�#�.�.��2�2�2�����)�$�/�/��3�3�3�����)�$�/�/��4�4�4�����)�&�1�1�4�8�8�8�����)�'�2�2�D�9�9�9�����)�'�2�2�E�:�:�:�����c�.�v�6�6�7�7��@�@�@����*�c�&6��>�>�>����*�c�&6��@�@�@����*�c�&6��>�>�>�>�>r
c��tjd��5tjd��|�t
��5}tjd��ddd��n#1swxYwY|�dt|j����|�dt|j����ddd��dS#1swxYwYdS)Ni���3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333��33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333zExceeds the limit z Consider hexadecimal )	r�adjust_int_max_str_digitsr2r�rOrUrrr )r7�err_ctxs  r�test_literal_eval_str_int_limitz/ASTHelpers_Test.test_literal_eval_str_int_limitvsS��
�
.�t�
4�
4�	L�	L���X�&�&�&��"�"�;�/�/�
+�7�� ��*�*�*�
+�
+�
+�
+�
+�
+�
+�
+�
+�
+�
+����
+�
+�
+�
+��M�M�.��G�4E�0F�0F�G�G�G��M�M�2�C��8I�4J�4J�K�K�K�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L����	L�	L�	L�	L�	L�	Ls6�/C
�A%�C
�%A)	�)C
�,A)	�-AC
�
C�Cc��|�tjd��d��|�tjd��d��|�tjd��d��|�tjd��d��|�tjd	��d
��|�tjd��d��|�tjd
��d��|�tjd��d��|�tjd��d��|�tjd��d��|�tjd��d��|�tjd��d��|�tjd��d
��|�ttjd��|�ttjd��|�ttjd��|�ttjd��|�ttjd��dS)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))rBr2r�rOr�r�s r�test_literal_eval_complexz)ASTHelpers_Test.test_literal_eval_complex~s<������)�$�/�/��4�4�4�����)�%�0�0�#�6�6�6�����)�'�2�2�E�:�:�:�����)�(�3�3�V�<�<�<�����)�&�1�1�4�8�8�8�����)�'�2�2�E�:�:�:�����)�&�1�1�4�8�8�8�����)�'�2�2�E�:�:�:�����)�,�7�7��D�D�D�����)�-�8�8�+�F�F�F�����)�,�7�7��D�D�D�����)�-�8�8�+�F�F�F�����)�(�3�3�T�:�:�:����*�c�&6��@�@�@����*�c�&6��A�A�A����*�c�&6��@�@�@����*�c�&6�
�C�C�C����*�c�&6�	�B�B�B�B�Br
c���tjtjd��tjd��gtjd��g���}|�ttj|��tjtjd��gtjd��tjd��g���}|�ttj|��dS)Nr�rMr�)�keys�values)r2�Dictr�rOr�r�)r7�	malformeds  r�&test_literal_eval_malformed_dict_nodesz6ASTHelpers_Test.test_literal_eval_malformed_dict_nodes�s����H�3�<��?�?�C�L��O�O�"D�c�l�[\�o�o�M^�_�_�_�	����*�c�&6�	�B�B�B��H�3�<��?�?�"3�S�\�!�_�_�c�l�[\�o�o�<^�_�_�_�	����*�c�&6�	�B�B�B�B�Br
c�B�|�tjd��d��|�tjd��d��|�tjd��d��|�ttjd��dS)Nz    -1rz		-1z 	 -1z
 -1)rBr2r�rO�IndentationErrorr�s r�test_literal_eval_trailing_wsz-ASTHelpers_Test.test_literal_eval_trailing_ws�s�������)�(�3�3�R�8�8�8�����)�(�3�3�R�8�8�8�����)�(�3�3�R�8�8�8����*�C�,<�g�F�F�F�F�Fr
c	�,�d}|�t|��5tjd��ddd��n#1swxYwYtjtj��tjtj��tjd������}|�t|dd����d}|�t|��5tj|��ddd��dS#1swxYwYdS)Nz#malformed node or string on line 3:z{'a': 1,
'b':2,
'c':++3,
'd':4}r�rzmalformed node or string:)	r�r�r2r��UnaryOp�UAddr�rar)r7r�r9s   r�"test_literal_eval_malformed_linenoz2ASTHelpers_Test.test_literal_eval_malformed_lineno�s��4��
�
#�
#�J��
4�
4�	C�	C���A�B�B�B�	C�	C�	C�	C�	C�	C�	C�	C�	C�	C�	C����	C�	C�	C�	C��{��H�J�J���C�H�J�J���Q���@�@�B�B�����'�$��$�7�7�8�8�8�*��
�
#�
#�J��
4�
4�	#�	#���T�"�"�"�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#����	#�	#�	#�	#�	#�	#s!�?�A�A�'D	�	D
�D
c��|�td��5tjd��ddd��dS#1swxYwYdS)Nzunexpected indentz4
                \
                (\
            \ )r�rUr2r�r�s r�test_literal_eval_syntax_errorsz/ASTHelpers_Test.test_literal_eval_syntax_errors�s���
�
#�
#�K�1D�
E�
E�	�	����
�
�
�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�>�A�Ac�b�tjdtjd���gddd���g}tj|g��}|�t
��5}t
|dd��ddd��n#1swxYwY|�dt|j	����dS)N�time�sleep�r8�r�r��levelrrr�rdzinvalid integer value: None)
r2r�r�r�rOr�rurrr )r7r�r�r#s    r�test_bad_integerz ASTHelpers_Test.test_bad_integer�s�����f�&)�i�W�&=�&=�&=�%>�%)�&*�t�=�=�=�>���j��r�"�"��
�
�
�z�
*�
*�	)�b��C���(�(�(�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)����	)�	)�	)�	)��
�
�3�S���5F�5F�G�G�G�G�Gs�A<�<B�Bc��tjdtjddd���gddd���g}tj|g��}t	|dd��}i}t||��|�d|��dS)Nrrrr�rr�rd)r2r�r�r�rurdr)r7r�r�ra�nss     r�test_level_as_nonez"ASTHelpers_Test.test_level_as_none�s�����f�&)�i�W�78�Q�'H�'H�'H�&I�%)�&'�A�	7�7�7�8��
�j��r�"�"���s�F�F�+�+��
���T�2�����
�
�g�r�"�"�"�"�"r
c�f�tjtj��dd���}||_|�t
��5t
j��5ttj	|��dd��ddd��n#1swxYwYddd��dS#1swxYwYdS�Nr)rrrr�rf�
r2r	�Not�operandrOr�r�infinite_recursionrur,r�s  r�test_recursion_directz%ASTHelpers_Test.test_recursion_direct�s���K�3�7�9�9�Q�1�=�=�=����	�
�
�
�~�
.�
.�	=�	=��+�-�-�
=�
=����q�)�)�8�V�<�<�<�
=�
=�
=�
=�
=�
=�
=�
=�
=�
=�
=����
=�
=�
=�
=�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=����	=�	=�	=�	=�	=�	=s6�
B&�$B�B&�B	�B&�B	�B&�&B*�-B*c���tjtj��dd���}tjtj��dd���}||_||_|�t
��5t
j��5ttj	|��dd��ddd��n#1swxYwYddd��dS#1swxYwYdSrr)r7r
r"s   r�test_recursion_indirectz'ASTHelpers_Test.test_recursion_indirect�s@���K�3�7�9�9�Q�1�=�=�=���K�3�7�9�9�Q�1�=�=�=����	���	�
�
�
�~�
.�
.�	=�	=��+�-�-�
=�
=����q�)�)�8�V�<�<�<�
=�
=�
=�
=�
=�
=�
=�
=�
=�
=�
=����
=�
=�
=�
=�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=����	=�	=�	=�	=�	=�	=s6�9C�
$B=�1C�=C	�C�C	�C�C�C)rr5rZr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrr
rrrr rr
rr�r�Js��������G�3�3�3�
:�:�:�
�
�
�*;�;�;�z
�
�
�:,�,�,� 
�
�
�(@�@�@�0:�:�:�	
�	
�	
�G�G�G� ;�;�;�02�2�2�&2�2�2�2�2�2�9�9�9�?�?�?�&L�L�L�C�C�C�*C�C�C�G�G�G�
#�
#�
#����	H�	H�	H�
#�
#�
#�=�=�=�=�=�=�=�=r
r�c�R	�eZdZdFed�d�ZdGed�d�ZdGd�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/d0�Z0d1�Z1d2�Z2e3j4d3��Z5e3j6e5��Z7e3j4d4��Z8e3j6e8��Z9e3j4d5��Z:e3j;d5��Z<e3j=d6e3j>����Z?e3j6e3j@e3j@e3j=d4e3jA����d7e3j>����d8e3j>������e3j6e3j@e3j@e3j=d4e3j>����d7e3jA����d8e3j>������e3j6e3j4d9����e3j6e3j4d5����e3j6e3j4d:����e3j;d;��e3jBe3j;d;��g��e3jBe3jBe3j;d;��g��g��e3jCe5e:ge9g��e3jCe:e5ge9e7gd<�=��e3jCe:e3jDe3j=d>e3j>����e3j>����ge9e7gd?�=��e3jEe3j@e3j@e8d7e3j>����d8e3j>����ggg�@��e3jEe?gd<ge7g�@��e3jEe?gge7g�@��e3jEe?e3j;d;��ggg�@��e3jEe?e3jF��ggg�@��e3jEe?gge3jF��g�@��e3jBe3jFd<��g��e3jGdA�B��e3jHg��e3jHe7g��e3jHe7e9e3j;dC��g��e3jGdD�B��e3jFd4�B��e3jBe3jFdD��g��e3jCggdD�=��gZIdE�ZJdS)H�ASTValidatorTestsNrd�r�c�@�dx|_|_tj|��|�t	|d|��dS|�|��5}t	|d|��ddd��n#1swxYwY|�|t|j����dS)Nrr�)	rrr2r'rurOrrr )r7r�r�r�r�r#s      rr�zASTValidatorTests.mod�s���&'�'��
�S�^��!�#�&�&�&��	2��C��4�(�(�(�(�(��"�"�3�'�'�
-�2���X�t�,�,�,�
-�
-�
-�
-�
-�
-�
-�
-�
-�
-�
-����
-�
-�
-�
-��M�M�#�s�2�<�0�0�1�1�1�1�1s�
A+�+A/�2A/c��tjtj|��gg��}|�|||���dS)Nr#)r2r�rr�)r7r9r�r�r�s     rr=zASTValidatorTests.expr�s<���j�#�(�4�.�.�)�2�.�.������c�s��#�#�#�#�#r
c�^�tj|gg��}|�||��dSr�)r2r�r�)r7r>r�r�s    rr>zASTValidatorTests.stmt�s/���j�$���$�$������c�����r
c	�h�tjtjtjdtj������g��}|�|dd��tjtjdtj������}|�|dd��dS)NrT�must have Load contextrerf)r2�Interactiverr��Storer�r,)r7r"s  rr�zASTValidatorTests.test_module�s����O�S�X�c�h�s�C�I�K�K�&@�&@�A�A�B�C�C������,�h�7�7�7��N�3�8�C�����5�5�6�6������,�f�5�5�5�5�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��dS)Nc	�v��|�g}|�g}|�g}|�g}|�g}tj|||||||��}�|��Sr�)r2r�)r�r�rQr�r�r�r��facs       �rr�z5ASTValidatorTests._check_arguments.<locals>.arguments�st����
����
!� ���
 ��
��
����
!� ���=��{�F�J�!,�e�X�?�?�D��3�t�9�9�r
rTr4r()r�)r�r�)r�z"more positional defaults than argsr)r�z3length of kwonlyargs is not the same as kw_defaults)r�r�r]r�r�)r�r�)NNNNNNN)r2�argr�r*r�r&)r7r-�checkr�r�s `   r�_check_argumentsz"ASTValidatorTests._check_arguments�s���:>�-1�15�	�	�	�	�	�	� ���S�X�c�3�9�;�;�7�7�8�8�9��
��i�i�T�"�"�"�$<�=�=�=�
��i�i�D�)�)�)�+C�D�D�D�
��i�i�4�(�(�(�*B�C�C�C�
��i�i�#�'�!�*�*��.�.�.�;�	=�	=�	=�
��i�i�S�W�Q�Z�Z�L�1�1�1�L�	N�	N�	N����S�X�c�3�8�:�:�6�6�7�7�8��
��i�i�T�S�X�c�3�9�;�;�-G�-G�,H�I�I�I�/�	1�	1�	1����S�X�c�3�8�:�:�6�6�7�7����S�X�c�3�8�:�:�6�6�7�7�9��
��i�i�4�'+�S�X�c�3�9�;�;�-G�-G�&H�J�J�J�2�	4�	4�	4�	4�	4r
c�d�tjggdggdg��}tjd|ggd��}|�|d��tjd|tj��gtjdtj����gd��}|�|d��tjd|tj��ggtjdtj������}|�|d��d�}|�||j��dS)NrTzempty body on FunctionDefr(c�V�tjd|tj��ggd��S�NrT)r2�FunctionDef�Passr4s rr-z+ASTValidatorTests.test_funcdef.<locals>.fac s"���?�3��s�x�z�z�l�B��E�E�Er
)r2r�r4r>r5r�r*r0)r7r]r"r-s    r�test_funcdefzASTValidatorTests.test_funcdefs���M�"�b�$��B��b�9�9���O�C��B��D�1�1���	�	�!�0�1�1�1��O�C��S�X�Z�Z�L�3�8�C�����3M�3M�2N� �
"�
"���	�	�!�-�.�.�.��O�C��S�X�Z�Z�L�"��H�S�#�)�+�+�6�6�
8�
8���	�	�!�-�.�.�.�	F�	F�	F����c�4�9�-�-�-�-�-r
c�T�d
d�}|�|tjdtj����g���d��|�|tjdtjdtj������g���d��|�|g���d��|�|dg���d��|�|tjdtj����g�	��d��dS)Nc�v�|�g}|�g}|�tj��g}|�g}tjd||||��S)N�myclass)r2r5�ClassDef)�basesr�r�r<s    r�clsz,ASTValidatorTests.test_classdef.<locals>.cls%s]���
����
����
$���
�
�|���
$�!#���<�	�5�(� $�n�6�6�
6r
rT)r;r()r�r*zempty body on ClassDef�None disallowed)r<)NNNN)r>r2r�r*�keyword)r7r<s  r�
test_classdefzASTValidatorTests.test_classdef$s(��
	6�
	6�
	6�
	6�	
�	�	�#�#�S�X�c�3�9�;�;�7�7�8�9�9�9�*�	,�	,�	,��	�	�#�#���C���#�s�y�{�{�1K�1K� L� L�M�N�N�N�*�	,�	,�	,��	�	�#�#�2�,�,�,� 8�9�9�9��	�	�#�#�D�6�"�"�"�$5�6�6�6��	�	�#�#�c�h�s�C�I�K�K�&@�&@�%A�B�B�B�*�	,�	,�	,�	,�	,r
c	�B�|�tjg��d��|�tjdg��d��|�tjtjdtj����g��d��dS)Nzempty targets on Deleter=rTzmust have Del context)r>r2�Deleter�r&r�s r�test_deletezASTValidatorTests.test_delete9s����	�	�#�*�R�.�.�";�<�<�<��	�	�#�*�d�V�$�$�&7�8�8�8��	�	�#�*�c�h�s�C�H�J�J�7�7�8�9�9�)�	+�	+�	+�	+�	+r
c
��|�tjgtjd����d��|�tjdgtjd����d��|�tjtjdtj����gtjd����d��|�tjtjdtj����gtjdtj������d��dS)Nr�zempty targets on Assignr=rT�must have Store contextr�r()r>r2�Assignr�r�r&r*r�s r�test_assignzASTValidatorTests.test_assign?s����	�	�#�*�R������,�,�.G�H�H�H��	�	�#�*�d�V�S�W�Q�Z�Z�0�0�2C�D�D�D��	�	�#�*�c�h�s�C�H�J�J�7�7�8�#�'�!�*�*�E�E�+�	-�	-�	-��	�	�#�*�c�h�s�C�I�K�K�8�8�9� #���c�i�k�k� :� :�<�<�*�	,�	,�	,�	,�	,r
c	��tjtjdtj����tj��tjdtj������}|�|d��tjtjdtj����tj��tjdtj������}|�|d��dS)NrTr�rDr()r2�	AugAssignr�r&rr>r*)r7�augs  r�test_augassignz ASTValidatorTests.test_augassignHs����m�C�H�S�#�(�*�*�5�5�s�w�y�y��H�S�#�(�*�*�5�5�7�7���	�	�#�0�1�1�1��m�C�H�S�#�)�+�+�6�6���	�	��H�S�#�)�+�+�6�6�8�8���	�	�#�/�0�0�0�0�0r
c
�|�tjdtj����}tjdtj����}tj��}|�tj||gg��d��|�tjtjdtj����||gg��d��|�tj|tjdtj����|gg��d��tjtjdtj������}|�tj|||gg��d��|�tj|||g|g��d��dS)NrTr�zempty body on ForrDr()r2r�r*r&r5r>r�r)r7rTr��pr
s     r�test_forzASTValidatorTests.test_forPsU���H�S�#�)�+�+�&�&���H�S�#�(�*�*�%�%���H�J�J���	�	�#�'�!�Q��B�'�'�)<�=�=�=��	�	�#�'�#�(�3���
�
�3�3�Q���R�@�@�+�	-�	-�	-��	�	�#�'�!�S�X�c�3�9�;�;�7�7�!��b�A�A�*�	,�	,�	,��H�S�X�c�3�9�;�;�/�/�0�0���	�	�#�'�!�Q���R�(�(�*B�C�C�C��	�	�#�'�!�Q���a�S�)�)�+C�D�D�D�D�Dr
c
�H�|�tjtjd��gg��d��|�tjtjdtj����tj��gg��d��|�tjtjd��tj��gtjtjdtj������g��d��dS)Nr�zempty body on WhilerTr()r>r2�Whiler�r�r*r5rr�s r�
test_whilezASTValidatorTests.test_while]s����	�	�#�)�C�G�A�J�J��B�/�/�1F�G�G�G��	�	�#�)�C�H�S�#�)�+�+�6�6������b�I�I�*�	,�	,�	,��	�	�#�)�C�G�A�J�J������!�h�s�x��S�Y�[�[�'A�'A�B�B�C�E�E�5�	7�	7�	7�	7�	7r
c�:�|�tjtjd��gg��d��tjtjdtj����tj��gg��}|�|d��tjtjd��tjtjdtj������gg��}|�|d��tjtjd��tj��gtjtjdtj������g��}|�|d��dS)Nr�zempty body on IfrTr()r>r2�Ifr�r�r*r5r)r7rxs  r�test_ifzASTValidatorTests.test_ifes ���	�	�#�&������R��,�,�.@�A�A�A��F�3�8�C�����-�-���
�
�|�R�@�@���	�	�!�-�.�.�.��F�3�7�1�:�:�����#�s�y�{�{�)C�)C� D� D�E�r�J�J���	�	�!�-�.�.�.��F�3�7�1�:�:���
�
�|��H�S�X�c�3�9�;�;�7�7�8�8�9�
;�
;���	�	�!�-�.�.�.�.�.r
c���tj��}|�tjg|g��d��tjtjd��d��}|�tj|gg��d��tjtjdtj����d��}|�tj|g|g��d��tjtjd��tjdtj������}|�tj|g|g��d��dS)Nzempty items on Withr�zempty body on WithrTr(rD)	r2r5r>�WithrHr�r�r*r&)r7rLrxs   r�	test_withzASTValidatorTests.test_withos
���H�J�J���	�	�#�(�2��s�#�#�%:�;�;�;��L������T�*�*���	�	�#�(�A�3��#�#�%9�:�:�:��L���#�s�y�{�{�3�3�T�:�:���	�	�#�(�A�3���$�$�&>�?�?�?��L������S�X�c�3�8�:�:�%>�%>�?�?���	�	�#�(�A�3���$�$�&?�@�@�@�@�@r
c���tjdtjd����}|�|d��tjtjdtj����d��}|�|d��tjtjd��tjdtj������}|�|d��dS)Nr�z!Raise with cause but no exceptionrTr(r)r2r�r�r>r�r*)r7�rs  r�
test_raisezASTValidatorTests.test_raiseys����I�d�C�G�A�J�J�'�'���	�	�!�8�9�9�9��I�c�h�s�C�I�K�K�0�0�$�7�7���	�	�!�-�.�.�.��I�c�g�a�j�j�#�(�3��	���"<�"<�=�=���	�	�!�-�.�.�.�.�.r
c�,�tj��}tjggg|g��}|�|d��tjtjtjdtj������ggg|g��}|�|d��tj|gggg��}|�|d��tj|gg|g|g��}|�|d��tj|gtjddg��ggg��}|�|d��tjtjdtj����d|g��g}|�tj|g|gg��d��tjdd|g��g}tj|g|tjtjdtj������g|g��}|�|d��tj|g||gtjtjdtj������g��}|�|d��dS)Nzempty body on TryrTr(z-Try has neither except handlers nor finalbodyz%Try has orelse but no except handlers�empty body on ExceptHandlerr�)r2r5�Tryr>rr�r*�
ExceptHandler�r7rLr r
s    r�test_tryzASTValidatorTests.test_try�s)���H�J�J���G�B��B���$�$���	�	�!�(�)�)�)��G�S�X�c�h�s�C�I�K�K�8�8�9�9�:�B��Q�C�H�H���	�	�!�-�.�.�.��G�Q�C��R��$�$���	�	�!�D�E�E�E��G�Q�C��a�S�1�#�&�&���	�	�!�<�=�=�=��G�Q�C�#�+�D�#�r�:�:�;�R��D�D���	�	�!�2�3�3�3�
�
�s�x��S�Y�[�[�9�9�3���
D�
D�E���	�	�#�'�1�#�q�"�b�)�)�+C�D�D�D�
�
�t�S�1�#�
.�
.�/���G�Q�C��S�X�c�h�s�C�I�K�K�&@�&@�A�A�B�Q�C�H�H���	�	�!�-�.�.�.��G�Q�C��Q�C�#�(�3�8�C�����+E�+E�"F�"F�!G�H�H���	�	�!�-�.�.�.�.�.r
c�,�tj��}tjggg|g��}|�|d��tjtjtjdtj������ggg|g��}|�|d��tj|gggg��}|�|d��tj|gg|g|g��}|�|d��tj|gtjddg��ggg��}|�|d��tjtjdtj����d|g��g}|�tj|g|gg��d��tjdd|g��g}tj|g|tjtjdtj������g|g��}|�|d��tj|g||gtjtjdtj������g��}|�|d��dS)Nzempty body on TryStarrTr(z1TryStar has neither except handlers nor finalbodyz)TryStar has orelse but no except handlersr[r�)r2r5�TryStarr>rr�r*r]r^s    r�
test_try_starzASTValidatorTests.test_try_star�s)���H�J�J���K��B��Q�C�(�(���	�	�!�,�-�-�-��K���#�(�3��	���"<�"<�=�=�>��B���L�L���	�	�!�-�.�.�.��K���R��R�(�(���	�	�!�H�I�I�I��K���R�!��q�c�*�*���	�	�!�@�A�A�A��K���c�/��c�2�>�>�?��R�H�H���	�	�!�2�3�3�3�
�
�s�x��S�Y�[�[�9�9�3���
D�
D�E���	�	�#�+�q�c�1�b�"�-�-�/G�H�H�H�
�
�t�S�1�#�
.�
.�/���K���Q���#�(�3��	���*D�*D�!E�!E� F���L�L���	�	�!�-�.�.�.��K���Q���c�h�s�x��S�Y�[�[�/I�/I�&J�&J�%K�L�L���	�	�!�-�.�.�.�.�.r
c	��|�tjtjdtj����d��d��tjtjdtj����tjdtj������}|�|d��dS)NrTr(r�)r>r2�Assertr�r*r&)r7�assrts  r�test_assertzASTValidatorTests.test_assert�s����	�	�#�*�S�X�c�3�9�;�;�7�7��>�>�*�	,�	,�	,��
�3�8�C�����4�4��8�C�����5�5�7�7���	�	�%�1�2�2�2�2�2r
c�V�|�tjg��d��dS)Nzempty names on Import)r>r2r�r�s r�test_importzASTValidatorTests.test_import��%���	�	�#�*�R�.�.�"9�:�:�:�:�:r
c���tjdtjdd��gd��}|�|d��|�tjdgd��d��dS)NrTi���zNegative ImportFrom levelrzempty names on ImportFrom)r2r�r�r>)r7�imps  r�test_importfromz!ASTValidatorTests.test_importfrom�sb���n�T�C�I�c�4�$8�$8�#9�3�?�?���	�	�#�2�3�3�3��	�	�#�.��r�1�-�-�/J�K�K�K�K�Kr
c�V�|�tjg��d��dS)Nzempty names on Global)r>r2�Globalr�s r�test_globalzASTValidatorTests.test_global�rir
c�V�|�tjg��d��dS)Nzempty names on Nonlocal)r>r2�Nonlocalr�s r�
test_nonlocalzASTValidatorTests.test_nonlocal�s'���	�	�#�,�r�"�"�$=�>�>�>�>�>r
c��tjtjdtj������}|�|d��dS�NrTr()r2rr�r*r>r�s  r�	test_exprzASTValidatorTests.test_expr�s>���H�S�X�c�3�9�;�;�/�/�0�0���	�	�!�-�.�.�.�.�.r
c	��tjtj��g��}|�|d��tjtj��tjd��g��}|�|d��tjtj��tjd��dg��}|�|d��tjtj��tjd��tjdtj����g��}|�|d��dS)Nzless than 2 valuesr�rr=rTr()r2�BoolOp�Andr=r�r�r*)r7r�s  r�test_boolopzASTValidatorTests.test_boolop�s����J�s�w�y�y�"�%�%���	�	�!�)�*�*�*��J�s�w�y�y�3�7�1�:�:�,�/�/���	�	�!�)�*�*�*��J�s�w�y�y�3�7�1�:�:�t�"4�5�5���	�	�!�&�'�'�'��J�s�w�y�y�3�7�1�:�:�s�x��S�Y�[�[�/I�/I�"J�K�K���	�	�!�-�.�.�.�.�.r
c���tjtj��tjdtj������}|�|d��dSrt)r2r	rr�r*r=)r7�us  r�test_unaryopzASTValidatorTests.test_unaryop�sF���K���	�	�3�8�C�����#=�#=�>�>���	�	�!�-�.�.�.�.�.r
c
��tjggdggdg��}|�tj|tjdtj������d��d�}|�||j��dS)NrTr(c�t�tj|tjdtj������Sr3)r2�Lambdar�r&r4s rr-z*ASTValidatorTests.test_lambda.<locals>.fac�s&���:�d�C�H�S�#�(�*�*�$=�$=�>�>�>r
)r2r�r=rr�r*r0)r7r]r-s   r�test_lambdazASTValidatorTests.test_lambda�s����M�"�b�$��B��b�9�9���	�	�#�*�Q����c�i�k�k� :� :�;�;�*�	,�	,�	,�	?�	?�	?����c�4�9�-�-�-�-�-r
c��tjdtj����}tjdtj����}|||f|||f|||ffD]$}|�tj|�d���%dS�NrTr�r()r2r�r&r*r=�IfExp)r7�lr�r�s    r�
test_ifexpzASTValidatorTests.test_ifexp�s����H�S�#�(�*�*�%�%���H�S�#�)�+�+�&�&����1�I��1�a�y�1�a��)�3�	B�	B�D��I�I�c�i��&�(@�A�A�A�A�	B�	Br
c�H�tjgtjdtj����g��}|�|d��tjtjdtj����gdg��}|�|d��dS)NrTzsame number of keys as valuesr=)r2rr�r&r=)r7r�s  r�	test_dictzASTValidatorTests.test_dict�s����H�R�#�(�3���
�
�3�3�4�5�5���	�	�!�4�5�5�5��H�c�h�s�C�H�J�J�/�/�0�4�&�9�9���	�	�!�&�'�'�'�'�'r
c��|�tjdg��d��tjtjdtj����g��}|�|d��dS�Nr=rTr()r=r2�Setr�r*�r7r�s  r�test_setzASTValidatorTests.test_set�s`���	�	�#�'�4�&�/�/�#4�5�5�5��G�S�X�c�3�9�;�;�/�/�0�1�1���	�	�!�-�.�.�.�.�.r
c	��|�|g��d��tjtjdtj����tjdtj����gd��}|�||g��d��tjtjdtj����tjdtj����gd��}|�||g��d��tjdtj����}tjdtj����}tj||dgd��}|�||g��d��tj||tjdtj����gd��}|�||g��d��dS)Nz comprehension with no generatorsrTrrDr(r�r=)r=r2r�r�r&r*)r7r-�grTr�s     r�_check_comprehensionz&ASTValidatorTests._check_comprehension�s����	�	�#�#�b�'�'�=�>�>�>���c�h�s�C�H�J�J�7�7�!�h�s�C�H�J�J�7�7��Q�
@�
@���	�	�#�#�q�c�(�(�5�6�6�6���c�h�s�C�I�K�K�8�8�!�h�s�C�I�K�K�8�8�"�a�
A�
A���	�	�#�#�q�c�(�(�4�5�5�5��H�S�#�)�+�+�&�&���H�S�#�(�*�*�%�%����a��T�F�A�.�.���	�	�#�#�q�c�(�(�-�.�.�.���a��S�X�c�3�9�;�;�%?�%?�$@�!�D�D���	�	�#�#�q�c�(�(�4�5�5�5�5�5r
c	���tjtjdtj����tjdtj����gd��}|��tjdtj����|g��d���fd�}|�|��dS)NrTrr(c�d���tjdtj����|��Sr3)r2r�r*)�gensr-s �r�wrapz,ASTValidatorTests._simple_comp.<locals>.wrap�s'����3�s�x��S�Y�[�[�1�1�4�8�8�8r
)r2r�r�r*r&r=r�)r7r-r�r�s `  r�_simple_compzASTValidatorTests._simple_comp�s������c�h�s�C�I�K�K�8�8�!�h�s�C�H�J�J�7�7��Q�
@�
@���	�	�#�#�c�h�s�C�I�K�K�0�0�1�#�6�6�*�	,�	,�	,�	9�	9�	9�	9�	9��!�!�$�'�'�'�'�'r
c�D�|�tj��dSr�)r�r2�ListCompr�s r�
test_listcompzASTValidatorTests.test_listcomps�����#�,�'�'�'�'�'r
c�D�|�tj��dSr�)r�r2�SetCompr�s r�test_setcompzASTValidatorTests.test_setcomps�����#�+�&�&�&�&�&r
c�D�|�tj��dSr�)r�r2�GeneratorExpr�s r�test_generatorexpz#ASTValidatorTests.test_generatorexps�����#�*�+�+�+�+�+r
c���tjtjdtj����tjdtj����gd��}tjtjdtj����tjdtj����|g��}|�|d��tjtjdtj����tjdtj����|g��}|�|d��d�}|�|��dS)Nr�rLrrTr(c���tjdtj����}tjdtj����}tj|||��S)NrTr�)r2r�r&�DictComp)�comps�kr-s   r�factoryz0ASTValidatorTests.test_dictcomp.<locals>.factorysD�����c�h�j�j�)�)�A����c�h�j�j�)�)�A��<��1�e�,�,�,r
)r2r�r�r*r&r�r=r�)r7r��cr�s    r�
test_dictcompzASTValidatorTests.test_dictcomp
s����c�h�s�C�I�K�K�8�8�!�h�s�C�H�J�J�7�7��Q�
@�
@���L���#�s�y�{�{�3�3���#�s�x�z�z�2�2�Q�C�
9�
9���	�	�!�-�.�.�.��L���#�s�x�z�z�2�2���#�s�y�{�{�3�3�a�S�
:�
:���	�	�!�-�.�.�.�	-�	-�	-�	
�!�!�'�*�*�*�*�*r
c	�6�|�tjtjdtj������d��|�tjtjdtj������d��dS)NrTzmust have Load)r=r2�Yieldr�r*�	YieldFromr�s r�
test_yieldzASTValidatorTests.test_yieldsj���	�	�#�)�C�H�S�#�)�+�+�6�6�7�7�9I�J�J�J��	�	�#�-����c�i�k�k� :� :�;�;�=M�N�N�N�N�Nr
c���tjdtj����}tj|tj��gg��}|�|d��tj|tj��gtjd��tjd��g��}|�|d��tjtjd��tj��g|g��}|�|��tj|tj��gtjd��g��}|�|��dS)NrTzno comparatorsrrz,different number of comparators and operands�blah)r2r�r&�Compare�Inr=r�)r7r��comps   r�test_comparezASTValidatorTests.test_compares����x��S�X�Z�Z�(�(���{�4�#�&�(�(��R�0�0���	�	�$�(�)�)�)��{�4�#�&�(�(��c�g�a�j�j�#�'�!�*�*�-E�F�F���	�	�$�F�G�G�G��{�3�7�6�?�?�S�V�X�X�J���?�?���	�	�$�����{�4�#�&�(�(��c�g�f�o�o�->�?�?���	�	�$�����r
c���tjdtj����}tjdtj����g}tjdtjdtj������g}tjtjdtj����||��}|�|d��tj|dg|��}|�|d��tjdtjdtj������g}tj|||��}|�|d��dS)NrTr��wr�r(r=)r2r�r&r>r�r*r=)r7r�r�r��call�bad_keywordss      r�	test_callzASTValidatorTests.test_call(s���x��S�X�Z�Z�(�(�����c�h�j�j�)�)�*���K��S�X�c�3�8�:�:�%>�%>�?�?�@���x����c�i�k�k�2�2�D�(�C�C���	�	�$�0�1�1�1��x��t�f�h�/�/���	�	�$�)�*�*�*���C���#�s�y�{�{�)C�)C�D�D�E���x��d�L�1�1���	�	�$�0�1�1�1�1�1r
c�n�Gd�dt��}Gd�dt��}Gd�dt��}dD])}|�t	j|�����*|��|��|��fD]1}|�t	j|��dt�	���2dS)
Nc��eZdZdS)�*ASTValidatorTests.test_num.<locals>.subintNrYrr
r�subintr�5r\r
r�c��eZdZdS)�,ASTValidatorTests.test_num.<locals>.subfloatNrYrr
r�subfloatr�7r\r
r�c��eZdZdS)�.ASTValidatorTests.test_num.<locals>.subcomplexNrYrr
r�
subcomplexr�9r\r
r�)�0�hellozinvalid typer#)r�floatrr=r2r�rR)r7r�r�r��objs     r�test_numzASTValidatorTests.test_num4s��	�	�	�	�	�S�	�	�	�	�	�	�	�	�u�	�	�	�	�	�	�	�	��	�	�	��	$�	$�C��I�I�c�g�c�l�l�#�#�#�#��6�8�8�X�X�Z�Z�����5�	C�	C�C��I�I�c�g�c�l�l�N�	�I�B�B�B�B�	C�	Cr
c���tjtjdtj����dtj����}|�|d��dSr�)r2�	Attributer�r*r&r=)r7�attrs  r�test_attributez ASTValidatorTests.test_attribute@sH���}�S�X�c�3�9�;�;�7�7��c�h�j�j�I�I���	�	�$�0�1�1�1�1�1r
c	�~�tjtjdtj����tjd��tj����}|�|d��tjdtj����}tj|tjdtj����tj����}|�|d��tjdtj����}|ddfd|dfdd|ffD]K}tj|�}|�tj||tj����d���Ltjgtj����}|�tj||tj������tj|gtj����}|�tj||tj����d��dS)NrTr�r(r�)	r2�	Subscriptr�r*r�r&r=�Slice�Tuple)r7�subrTr�r��sls      r�test_subscriptz ASTValidatorTests.test_subscriptDs����m�C�H�S�#�)�+�+�6�6����
�
��H�J�J�(�(���	�	�#�/�0�0�0��H�S�#�(�*�*�%�%���m�A�s�x��S�Y�[�[�9�9��H�J�J�(�(���	�	�#�/�0�0�0��H�S�#�)�+�+�&�&����d�O�d�A�t�_�t�T�1�o�E�	0�	0�D���D�!�B��I�I�c�m�A�r�3�8�:�:�6�6�.�
0�
0�
0�
0�
�Y�r�3�8�:�:�
&�
&���	�	�#�-��2�s�x�z�z�2�2�3�3�3�
�Y��s�C�H�J�J�
'�
'���	�	�#�-��2�s�x�z�z�2�2�4L�M�M�M�M�Mr
c	�`�tjtjtjdtj����tj����gtj����}tj|gtjd����}|�|d��dS)NrTrrD)	r2�List�Starredr�r&r*rEr�r>)r7r��assigns   r�test_starredzASTValidatorTests.test_starredVs{���x���S�X�c�3�8�:�:�%>�%>��	���L�L�M��	���%�%����T�F�C�G�A�J�J�/�/���	�	�&�3�4�4�4�4�4r
c	��|�|dgtj����d��|�|tjdtj����gtj����d��dSr�)r=r2r&r�r*)r7r-s  r�	_sequencezASTValidatorTests._sequence\sw���	�	�#�#�t�f�c�h�j�j�)�)�+<�=�=�=��	�	�#�#�s�x��S�Y�[�[�1�1�2�C�H�J�J�?�?�*�	,�	,�	,�	,�	,r
c�D�|�tj��dSr�)r�r2r�r�s r�	test_listzASTValidatorTests.test_listas�����s�x� � � � � r
c�D�|�tj��dSr�)r�r2r�r�s r�
test_tuplezASTValidatorTests.test_tupleds�����s�y�!�!�!�!�!r
c�T�|�tjd����dS)Nr)r=r2r�r�s r�test_nameconstantz#ASTValidatorTests.test_nameconstantgs%���	�	�#�"�1�%�%�&�&�&�&�&r
c�.�tj�tj��}d�tj|��D��}|�ddg��|D]�}|�|��5tj�||��}t|dd���5}|�
��}ddd��n#1swxYwYtj||��}t||d��ddd��n#1swxYwY��dS)Nc�<�g|]}|�d���|��S)z.py)�endswith)r	�fns  rrz;ASTValidatorTests.test_stdlib_validates.<locals>.<listcomp>ls)��G�G�G��B�K�K��4F�4F�G��G�G�Gr
ztest/test_grammar.pyztest/test_unpack_ex.pyrXzutf-8)�encodingrd)
�os�path�dirnamer2�__file__�listdir�extendrt�join�open�readr~ru)r7�stdlib�testsr�r��fp�sourcer�s        r�test_stdlib_validatesz'ASTValidatorTests.test_stdlib_validatesjsz��������.�.��G�G�b�j��0�0�G�G�G��
���,�.F�G�H�H�H��	)�	)�F����f�%�%�
)�
)��W�\�\�&�&�1�1���"�c�G�4�4�4�'���W�W�Y�Y�F�'�'�'�'�'�'�'�'�'�'�'����'�'�'�'��i���+�+����R��(�(�(�
)�
)�
)�
)�
)�
)�
)�
)�
)�
)�
)����
)�
)�
)�
)��	)�	)s6�83D	�+C�D	�C�D	�C�)D	�	D
	�D
	r�rTT�carterr�r�.r��stringrd)�rest�lol�legit)�patterns�	kwd_attrs�kwd_patternsrer�xxx�_c
�<�tjdtj����}|jD]�}|�tj|d�����5tj|tj|tj��g���g���}tj	|��}tj
|gg��}|�t��5t|dd��ddd��n#1swxYwYddd��n#1swxYwY��dS)NrTrr�)�patternr�)�subject�casesr�rd)r2r�r&�_MATCH_PATTERNSrtr��Match�
match_caser5r'r�rOr�ru)r7�name_xr�r9r�s     r�test_match_validation_patternz/ASTValidatorTests.test_match_validation_pattern�s�����#�s�x�z�z�*�*���+�	6�	6�G����c�h�w�q�9�9�9�:�:�

6�

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

6�

6�

6�

6�

6�

6�

6�

6�

6�

6�

6����

6�

6�

6�

6��	6�	6s7�BD�C9�-D�9C=�=D�C=�D�D	�D	)Nrdr�)Krr5rZr�r�r=r>r�r0r6r?rBrFrJrMrPrSrVrYr_rbrfrhrlrorrruryr|r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r2r��
constant_1�
MatchValue�	pattern_1�
constant_x�	pattern_x�
constant_true�MatchSingleton�pattern_truer�r&�name_carterr�r*�
MatchSequence�MatchMappingr��
MatchClass�	MatchStar�MatchAs�MatchOrr�rrr
rr"r"�s?������2�Z�2�2�2�2�2�$�*�$�$�$�$�$�����6�6�6� 4� 4� 4�D.�.�.�,�,�,�*+�+�+�,�,�,�1�1�1�E�E�E�7�7�7�/�/�/�A�A�A�/�/�/�/�/�/�(/�/�/�(3�3�3�;�;�;�L�L�L�
;�;�;�?�?�?�/�/�/�/�/�/�/�/�/�.�.�.�B�B�B�(�(�(�/�/�/�

6�
6�
6�(�(�(�(�(�(�'�'�'�,�,�,�
+�
+�
+�O�O�O�	�	�	�
2�
2�
2�
C�
C�
C�2�2�2�N�N�N�$5�5�5�,�,�,�
!�!�!�"�"�"�'�'�'�
)�
)�
)����a���J����z�*�*�I����c�"�"�J����z�*�*�I� �C�L��&�&�M�%�3�%�d�+�+�L��#�(�8�X�S�X�Z�Z�0�0�K�	����C�M���
��C�H�S�)�#�)�+�+�.�.����������X�S�X�Z�Z�
�
�	
�	
�	����C�M���
��C�H�S�(�#�(�*�*�-�-����������X�S�X�Z�Z�
�
�	
�	
�	����C�L����	
�	
�	����C�L����	
�	
�	����C�L��!�!�	
�	
�	���8�$�$����
�#�
�X�
&�
&�
�	�	�	���!��!�*��*�8�4�4����
�	
�	
�	���
��'�
�K�	
�	
�	���
�J�'�
�	�"��	
�	
�	
�
	���
�K�C�K��������
�
�(C�(C�X�S�X�Z�Z�P�P�Q�
�	�"��	
�	
�	
�
	����C�M���
��������%�%��X�S�X�Z�Z�	
!�
!�
�2�B�
	
�	
�	
�	������h�#��		
�	
�	
�	������#��		
�	
�	
�	����(�c�(��2�2�3���		
�	
�	
�	����#�c�m�o�o�&���		
�	
�	
�	������'�#�-�/�/�*�		
�	
�	
�	�����
�f�%�%�
�	
�	
�
	����	
�	
�	
�	����	
�	
�	���
�K�	
�	
�	���
�	�#5�3�#5�e�#<�#<�=�	
�	
�	���������
�3�������=�3�=��-�-�.�/�/�����R�c�*�*�*�cr�O�h6�6�6�6�6r
r"c�h�eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
ejd	���Z
d
�Zd�ZdS)
�
ConstantTestsz$Tests on the ast.Constant node type.c��tjd��}|jdj}tj|���}tj||��||jd_t
|dd��}i}t||��|dS)Nzx = 123rr�r}rdrT)r2r~r�rGr�r�rurd)r7rGr�r9�new_noderars       r�compile_constantzConstantTests.compile_constants~���y��#�#���y��|�!���<�e�,�,�,����(�D�)�)�)�%��	�!����t�Z��0�0��
���T�2�����#�w�r
c���|�t��5}|�gd���ddd��n#1swxYwY|�t	|j��d��dS)Nr�z%got an invalid type in Constant: list)rOrRrrBrr )r7r#s  r�test_validationzConstantTests.test_validations���
�
�
�y�
)�
)�	-�R��!�!�)�)�)�,�,�,�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-����	-�	-�	-�	-�����R�\�*�*�@�	B�	B�	B�	B�	Bs�?�A�Ac���dddtdt��fD][}|�|���5|�|��}|�||��ddd��n#1swxYwY�\dS)NFTr
)�const)rr+rtrr�)r7rrGs   r�test_singletonszConstantTests.test_singletonss����E�4��3�	���D�	,�	,�E����E��*�*�
,�
,��-�-�e�4�4���
�
�e�U�+�+�+�
,�
,�
,�
,�
,�
,�
,�
,�
,�
,�
,����
,�
,�
,�
,��	,�	,s�,A*�*A.	�1A.	c	�~�d}tdh��}td��D]}|df}t|dh��}�ddddd	td
��td��||f	}|D][}|�|���5|�|��}|�||��ddd��n#1swxYwY�\dS)
N)r�r�r�rM�{g�^@y�^@�unicode�bytesrr+r�)r+r�rrtrrB)r7�nested_tuple�nested_frozensetrrrGr!s       r�test_valueszConstantTests.test_values%s'����$�a�S�>�>���1�X�X�	@�	@�E�(�!�,�L�(�*:�A�)>�?�?����u�d��X���.�.�)�K�"8�"8�� 0�2���	0�	0�E����E��*�*�
0�
0��.�.�u�5�5��� � ���/�/�/�
0�
0�
0�
0�
0�
0�
0�
0�
0�
0�
0����
0�
0�
0�
0��	0�	0s�9,B1�1B5	�8B5	c��tjd��}|jdjd}tjd���}tj||��||jdjd<|�t��5}t|dd��ddd��n#1swxYwY|�	t|j��d��dS)N�x = 1rr�r�r�rdz6expression which can't be assigned to in Store context)r2r~r��targetsr�r�rOr�rurBrr )r7r��target�
new_targetr#s     r�test_assign_to_constantz%ConstantTests.test_assign_to_constant4s���y��!�!����1��%�a�(���\��*�*�*�
���*�f�-�-�-�",��	�!���Q��
�
�
�z�
*�
*�	,�b��D�(�F�+�+�+�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,����	,�	,�	,�	,�����R�\�*�*�/�	0�	0�	0�	0�	0s�B$�$B(�+B(c�~�tjd��}|�tj|��d��dS)Nz'docstring'
x = 1�	docstring)r2r~rBr�r�s  rr�z ConstantTests.test_get_docstringBs9���y�-�.�.������*�4�0�0�+�>�>�>�>�>r
c��t|dd��}g}tj|��D]'}|jdkr|�|j���(|S)Nr}rd�
LOAD_CONST)ru�dis�get_instructions�opnamer�argval)r7r��co�consts�instrs     r�get_load_constzConstantTests.get_load_constFs]���T�:�v�
.�
.�����)�"�-�-�	,�	,�E��|�|�+�
,��
�
�e�l�+�+�+���
r
c�h�gd�}d�d�|D����}|dz
}|�tdf��tj|��}|�|�|��|��t|j|��D]q\}}t|tj
��sJtj|�����tj|���}tj
||j��||_�r|�|�|��|��dS)N)	NTF�|g@y@rrr�rGc�8�g|]}d�|����S)zx={!r})r�)r	rs  rrz1ConstantTests.test_load_const.<locals>.<listcomp>[s$��E�E�E�U�(�/�/�%�0�0�E�E�Er
z
x = ...r�)r�r�rr2r~rBr3rsr�rrEr�r�r�rG)r7r1rar�r�rrs       r�test_load_constzConstantTests.test_load_constPs>�������y�y�E�E�f�E�E�E�F�F�������
�
�x��&�'�'�'��y���������,�,�T�2�2��	!�	!�	!�!���F�3�3�	$�	$�M�F�E��f�c�j�1�1�C�C�3�8�F�3C�3C�C�C�C��|�%�0�0�0�H���h���5�5�5�#�F�L�L�����,�,�T�2�2��	!�	!�	!�	!�	!r
c�z�tjd��}|jdj}tjd���}tj||j��||_tjd���}tj||j��||_|�tj	|��d��dS)Nz1 + 2rr�r�y4@y$@4@)
r2r~r�rGr�r�r�rrBr�)r7r��binop�new_left�	new_rights     rr�zConstantTests.test_literal_evalms����y��!�!���	�!��"���<�b�)�)�)����(�E�J�/�/�/���
��L�s�+�+�+�	���)�U�[�1�1�1��������)�%�0�0�&�9�9�9�9�9r
c��tjdd���j}|�|jd��|�|jd��tjdd���j}|�|jd��|�|jd��tjdd���j}|�|jd��|�|jd��tjdd���j}|�|jd	��|�|jd��dS)
Nz"x"rfr�rTzu"x"r{zr"x"zb"x"�x)r2r~r�rBrGrl)r7r�s  r�test_string_kindzConstantTests.test_string_kind{s$���I�e�&�)�)�)�.�������#�&�&�&�������&�&�&��I�f�6�*�*�*�/�������#�&�&�&�������%�%�%��I�f�6�*�*�*�/�������#�&�&�&�������&�&�&��I�f�6�*�*�*�/�������$�'�'�'�������&�&�&�&�&r
N)rr5rZrFrrrr!r'r�r3rr�r7r�r>rr
rrrs�������.�.����B�B�B�,�,�,�
0�
0�
0�0�0�0�?�?�?����
��!�!���!�8:�:�:�'�'�'�'�'r
rc���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 S)!�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�r�|�|j|��|�|j|��dSr�)rBrr)r7rDrrs    r�_check_end_poszEndPositionTests._check_end_pos�s:������,�j�9�9�9�����0�.�A�A�A�A�Ar
c�X�|�tj||��|��dSr�)rBr2�get_source_segment)r7r�rD�contents    r�_check_contentzEndPositionTests._check_content�s+������/���A�A�7�K�K�K�K�Kr
c�J�tj|��jdjS)Nr)r2r~r�rGr�s  r�_parse_valuezEndPositionTests._parse_value�s���y��|�|� ��#�)�)r
c��d}|�|��}|�||jd��|�||jjdd��|�||jjd��dS)Nzlambda x, *y: Noner#rrTr�)rHrFr�r�rQ)r7r��lams   rr�zEndPositionTests.test_lambda�sw�� ������"�"�����A�s�x��0�0�0����A�s�x�}�Q�/��5�5�5����A�s�x���4�4�4�4�4r
c�,�td�����}tj|��jd}|�|dd��|�||jdd��|�||jjdd��|�||jjdjd��|�||jj	d��|�||jj	jd	��dS)
Nz�
            def func(x: int,
                     *args: str,
                     z: float = 0,
                     **kwargs: Any) -> bool:
                return True
            rr�zreturn Truezx: intrzkwargs: Any�Any)
rr�r2r~r�rBrFr��
annotationr��r7r��fdefs   r�
test_func_defzEndPositionTests.test_func_def�s�����
�
�����
	
��y��|�|� ��#�����D�!�R�(�(�(����A�t�y��|�]�;�;�;����A�t�y�~�a�0�(�;�;�;����A�t�y�~�a�0�;�U�C�C�C����A�t�y��
�>�>�>����A�t�y��9�5�A�A�A�A�Ar
c��d}|�|��}|�||jd��|�||jdjd��|�||jdjd��dS)Nzfunc(x, y=2, **kw)r�r�2r��kw)rHrFr�r�rG�r7r�r�s   rr�zEndPositionTests.test_call�s~�� ��� � ��#�#�����A�t�y�&�1�1�1����A�t�}�Q�/�5�s�;�;�;����A�t�}�Q�/�5�t�<�<�<�<�<r
c��d}|�|��}|�||jd��|�|dd��dS)Nzx[0]()zx[0]r�r�)rHrFr�rBrUs   r�test_call_noargsz!EndPositionTests.test_call_noargs�sR����� � ��#�#�����A�t�y�&�1�1�1����D�!�Q�'�'�'�'�'r
c�<�td�����}tj|��jd}|�|dd��|�||jdd��|�||jdd��dS)Nz?
            class C(A, B):
                x: int = 0
        rrM�r��Bz
x: int = 0)rr�r2r~r�rBrFr;�r7r��cdefs   r�test_class_defzEndPositionTests.test_class_def�s�����

�

��U�W�W�	
��y��|�|� ��#�����D�!�R�(�(�(����A�t�z�!�}�c�2�2�2����A�t�y��|�\�:�:�:�:�:r
c��d}tj|��jd}|�||jdjd��dS)Nz$class S(metaclass=abc.ABCMeta): passrzabc.ABCMeta)r2r~r�rFr�rGr[s   r�
test_class_kwzEndPositionTests.test_class_kw�sD��2���y��|�|� ��#�����A�t�}�Q�/�5�}�E�E�E�E�Er
c���td�����}tj|��jd}|�|dd��|�|jdd��dS)Nzh
            x = """Some multi-line text.

            It goes on starting from same indent."""
        rr��(�rr�r2r~r�rBrG�r7r�r�s   r�test_multi_line_strz$EndPositionTests.test_multi_line_str�ss����

�

��U�W�W�		
�
��1���"�1�%�����F�A�r�*�*�*����F�L�!�R�0�0�0�0�0r
c���td�����}tj|��jd}|�|dd��|�|jdd��dS)NzB
            x = "first part" \
            "second part"
        rrMr�rbrcs   r�test_continued_strz#EndPositionTests.test_continued_str�ss����

�

��U�W�W�	
���1���"�1�%�����F�A�r�*�*�*����F�L�!�R�0�0�0�0�0r
c�l�td�����}tj|��}|jd}|jd}|jd}|jd}|jd}|�|dd��|�|dd	��|�|d	d
��|�|dd��|�|dd��|�||jd
��|�||jdd��|�||jdjd��|�||j	d��|�||jdd��|�||j
djd��dS)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�rMr�rr�rY�rLr��rdzx = Nonezother()�x, yzraise RuntimeErrorrR)rr�r2r~r�rBrFr�r�r%�handlersr4)r7r�r��
while_loop�if_stmt�for_loop�try_stmt�	pass_stmts        r�test_suiteszEndPositionTests.test_suites�s���
��

�

�(�U�W�W�)	
�*�i��l�l���X�a�[�
��(�1�+���8�A�;���8�A�;���H�Q�K�	����J��1�-�-�-����G�Q��+�+�+����H�b�"�-�-�-����H�b�!�,�,�,����I�r�1�-�-�-����A�z���7�7�7����A�w�|�A��
�;�;�;����A�w�~�a�0�5�y�A�A�A����A�x���7�7�7����A�x�}�Q�/�1E�F�F�F����A�x�0��3�8�+�F�F�F�F�Fr
c��d}|�|��}|jdj}|�||d��dS)Nzx = f"abc {x + y} abc"r�zx + y)rHrrGrF�r7r��fstrr9s    r�test_fstringzEndPositionTests.test_fstringsF��$��� � ��#�#����A��$�����A�u�g�.�.�.�.�.r
c�4�td�����}|�|��}|jdj}|�|dd��|�||jd��|�||jd��dS)Nz�
            f"""Some multi-line text.
            {
            arg_one
            +
            arg_two
            }
            It goes on..."""
        r�rr;�arg_one�arg_two)	rr�rHrrGrBrFr�rrss    r�test_fstring_multi_linez(EndPositionTests.test_fstring_multi_lines�����

�

��U�W�W�	
�� � ��#�#����A��$�����E�1�a�(�(�(����A�u�z�9�5�5�5����A�u�{�I�6�6�6�6�6r
c��td�����}tj|��jd}|�|dd��|�|jddd��dS)NzT
            from x.y.z import (
                a, b, c as c
            )
        rr�r�rMr�)rr�r2r~r�rBr�)r7r�rks   r�test_import_from_multi_linez,EndPositionTests.test_import_from_multi_line'sw����

�

��U�W�W�		
�
�i��l�l���"�����C��A�&�&�&����C�I�a�L�!�R�0�0�0�0�0r
c�d�d}d}td�����}t|j|||f��\}}}|�||jd��|�||jjd��|�||jjd��|�||jjd��|�||jj	djd	��|�||jj	d
jd��|�
|dd��dS)
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��maprHrFrGr�r�r��eltsrB)r7�s1�s2�sm�i1�i2r�s       r�test_sliceszEndPositionTests.test_slices1s"��
��
��
��
�
��U�W�W�		�
��*�R��R�L�9�9�
��B�����B���+�6�6�6����B�����7�7�7����B�����6�6�6����B�����6�6�6����B���
�a� 0� 6��?�?�?����B���
�a� 0� 6��?�?�?����B��1�%�%�%�%�%r
c�R�td�����}|�|��}|�|dd��|�||jd��|�||jd��|�||jjd��dS)NzF
            (1 * 2 + (3 ) +
                 4
            )
        rMr��4z1 * 2 + (3 )�3)rr�rHrBrFrr�)r7r�r9s   r�
test_binopzEndPositionTests.test_binopBs�����

�

��U�W�W�		
�
�!�!�!�$�$�����E�1�a�(�(�(����A�u�{�C�0�0�0����A�u�z�>�:�:�:����A�u�z�/��5�5�5�5�5r
c��td�����}tj|��jdj}|�|dd��|�||jdd��dS)Nz{
            if (one_condition and
                    (other_condition or yet_another_one)):
                pass
        rrM�,r�z"other_condition or yet_another_one)	rr�r2r~r�r�rBrFr)r7r��bops   rryzEndPositionTests.test_boolopNs�����

�

��U�W�W�		
�
�i��l�l���"�'�����C��B�'�'�'����A�s�z�!�}�@�	B�	B�	B�	B�	Br
c�H�d}d}d}td�����}t|j||||f��\}}}}|�||d��|�||d��|�||d��|�|dd	��dS)
Nzx = () ;z	x = 1 , ;zx = (1 , 2 ) ;z?
            x = (
                a, b,
            )
        r.z1 ,z(1 , 2 )r�r�)rr�rrHrFrB)	r7r�r��s3r��t1�t2�t3�tms	         r�test_tupleszEndPositionTests.test_tuplesYs���
��
��
��
��
�
��U�W�W�		�
�T�.��R��R�0@�A�A���B��B����B��D�)�)�)����B��E�*�*�*����B��J�/�/�/����B��1�%�%�%�%�%r
c��d}|�|��}|�|||��|�||jdd��dS)Nz
func(x. y .z)rzx. y .z)rHrFr�rUs   r�test_attribute_spacesz&EndPositionTests.test_attribute_spaceshsV����� � ��#�#�����A�t�Q�'�'�'����A�t�y��|�Y�7�7�7�7�7r
c��d}tj|��jdj}|�t|��jd��|�||d��d|z}tj|��jdjj}|�t|��jd��|�||d��dS)Nz( ( ( a + b ) ) )rrr(�await )r2r~r�rGrBr4rrF)r7r�r-r�s    r�test_redundant_parenthesisz+EndPositionTests.test_redundant_parenthesisns������I�a�L�L��a� �&������a���)�7�3�3�3����A�q�'�*�*�*�
��\���I�b�M�M��q�!�'�-������a���)�7�3�3�3����B��7�+�+�+�+�+r
c��d}|D�]\}}|�|��5tj|��jdj}|�t
|��j|��|�|||��d|z}tj|��jdjj}|�t
|��j|��|�|||��ddd��n#1swxYwY��dS)N))z( ( ( a ) ) ) ( )r�)z( ( ( a ) ) ) ( b )r�)z( ( ( a ) ) ) [ b ]r�)z( ( ( a ) ) ) . br�rr�)	rtr2r~r�rGrBr4rrF)r7r�r�r r-r�s      r�(test_trailers_with_redundant_parenthesisz9EndPositionTests.test_trailers_with_redundant_parenthesisxs8��
���	.�	.�D�A�q����a���
.�
.��I�a�L�L�%�a�(�.��� � ��a���!1�1�5�5�5��#�#�A�q�!�,�,�,���\���I�b�M�M�&�q�)�/�5��� � ��a���!1�1�5�5�5��#�#�B��1�-�-�-�
.�
.�
.�
.�
.�
.�
.�
.�
.�
.�
.����
.�
.�
.�
.��	.�	.s�CC=�=D	�D	c��d}d}|�|��}|�|��}|�||jdd��|�||jdd��|�||jdd��|�||jdd	��|�||jdd
��dS)Nz[{}, {1, }, {1, 2,} ]z{a: b, f (): g () ,}rr)r�z{1, }rMz{1, 2,}r}r~)rHrFr�rr)r7r�r��c1�c2s     r�
test_displayszEndPositionTests.test_displays�s���
$��
#��
�
�
�r�
"�
"��
�
�
�r�
"�
"�����B����
�D�1�1�1����B����
�G�4�4�4����B����
�I�6�6�6����B����
�F�3�3�3����B��	�!��f�5�5�5�5�5r
c��td�����}|�|��}|�|dd��|�||jdjd��|�||jjdjd��|�||jjdjdd��|�||jjdj	d��dS)	Nza
            x = [{x for x, y in stuff
                  if cond.x} for stuff in things]
        rM�%r�things�stuffzcond.xrj)
rr�rHrBrF�
generators�iter�elt�ifsr%)r7r��cmps   r�test_comprehensionsz$EndPositionTests.test_comprehensions�s�����

�

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

�

��U�W�W�		
�
�y��|�|� ��#�����A�t�y��|�1�9�=�=�=����A�t�y��|�1�9�=�=�=�=�=r
c��td�����}td�����}|�|��}|�t	j||j��|��dS)NzD
            x = (
                a, b,
            ) + ()
        z;
            (
                a, b,
            )
        )rr�rHrBr2rDr�)r7�s_orig�s_tupler9s    r�test_source_segment_multiz*EndPositionTests.test_source_segment_multi�s�����
�
��U�W�W�		�
��
�
��U�W�W�		�
�!�!�&�)�)������/���
�C�C�W�M�M�M�M�Mr
c��td�����}d}tj|��jd}|�tj||jdd���|��dS)Nuf
            class C:
                def fun(self) -> None:
                    "ЖЖЖЖЖ"
        u/    def fun(self) -> None:
        "ЖЖЖЖЖ"rT��padded�rr�r2r~r�rBrD)r7r��s_methodr\s    r�test_source_segment_paddedz+EndPositionTests.test_source_segment_padded�s�����
�
��U�W�W�		�
*���y�� � �%�a�(������/���	�!��T�R�R�R�!�	#�	#�	#�	#�	#r
c�.�d}tj|��j\}}}}}|�||d��|�||d��|�||d��|�||d��|�||d��dS)Nz!v = 1
w = 1
x = 1

y = 1
z = 1
r$zw = 1r#zy = 1zz = 1)r2r~r�rF)r7r�r-r�rTr�r�s       r�test_source_segment_endingsz,EndPositionTests.test_source_segment_endings�s���7���	�!���)�
��1�a��A����A�q�'�*�*�*����A�q�'�*�*�*����A�q�'�*�*�*����A�q�'�*�*�*����A�q�'�*�*�*�*�*r
c��td�����}d}tj|��jd}|�tj||jdd���|��dS)Nzb
            class C:
              	  def fun(self) -> None:
              	      pass
        z+  	  def fun(self) -> None:
  	      passrTr�r�)r7r�r�r\s    r�test_source_segment_tabsz)EndPositionTests.test_source_segment_tabs�sv����

�

��U�W�W�		
�
&���y��|�|� ��#������/��4�9�Q�<��M�M�M�x�X�X�X�X�Xr
c��d}tj|��j\}}}}|`|`|`|`|�tj||����|�tj||����|�tj||����|�tj||����dS)Nzv = 1
w = 1
x = 1

y = 1
)	r2r~r�rrrrrarD)r7r�r-r�rTr�s      r� test_source_segment_missing_infoz1EndPositionTests.test_source_segment_missing_info�s���0���Y�q�\�\�&�
��1�a��
�H�
�L�
�L�
�����#�0��A�6�6�7�7�7����#�0��A�6�6�7�7�7����#�0��A�6�6�7�7�7����#�0��A�6�6�7�7�7�7�7r
N)"rr5rZrFrBrFrHr�rQr�rWr]r_rdrfrqruryr{r�r�ryr�r�r�r�r�r�r�r�r�r�r�r�rr
rr@r@�s���������
B�B�B�L�L�L�*�*�*�
5�5�5�B�B�B� =�=�=�(�(�(�;�;�;�F�F�F�
1�1�1�1�1�1�*G�*G�*G�X/�/�/�7�7�7� 1�1�1�&�&�&�"
6�
6�
6�	B�	B�	B�
&�
&�
&�8�8�8�,�,�,�.�.�.�"	6�	6�	6�
E�
E�
E�>�>�>�N�N�N�
#�
#�
#�+�+�+�
Y�
Y�
Y�
8�
8�
8�
8�
8r
r@c��eZdZd�ZdS)�NodeVisitorTestsc����G�fd�dtj��}tjtd����}|��}g�t	jd���5}t	jddt��|�|��ddd��n#1swxYwY|�	�gd���|�	d	�|D��gd
���dS)Nc�B��eZdZ�fd�Z�fd�Z�fd�Z�fd�Z�fd�ZdS)�9NodeVisitorTests.test_old_constant_nodes.<locals>.Visitorc�L����|jd|jf��dS)Nr�)rrr��r7r9�logs  �r�	visit_NumzCNodeVisitorTests.test_old_constant_nodes.<locals>.Visitor.visit_Num��&����
�
�D�K����7�8�8�8�8�8r
c�L����|jd|jf��dS)Nr��rrr�r�s  �r�	visit_StrzCNodeVisitorTests.test_old_constant_nodes.<locals>.Visitor.visit_Str�r�r
c�L����|jd|jf��dS)Nr�r�r�s  �r�visit_ByteszENodeVisitorTests.test_old_constant_nodes.<locals>.Visitor.visit_Bytes�s&����
�
�D�K��$�&�9�:�:�:�:�:r
c�L����|jd|jf��dS)Nr�)rrrGr�s  �r�visit_NameConstantzLNodeVisitorTests.test_old_constant_nodes.<locals>.Visitor.visit_NameConstant�s&����
�
�D�K����D�E�E�E�E�Er
c�B����|jddf��dS)Nr.)rrr�s  �r�visit_EllipsiszHNodeVisitorTests.test_old_constant_nodes.<locals>.Visitor.visit_Ellipsis�s$����
�
�D�K��S�9�:�:�:�:�:r
N)rr5rZr�r�r�r�r�)r�s�r�Visitorr��s��������
9�
9�
9�
9�
9�
9�
9�
9�
9�
9�
;�
;�
;�
;�
;�
F�
F�
F�
F�
F�
;�
;�
;�
;�
;�
;�
;r
r�z�            i = 42
            f = 4.25
            c = 4.25j
            s = 'string'
            b = b'bytes'
            t = True
            n = None
            e = ...
            T)�record�alwaysr�))r�r�rK)rMr�r�)r�r�r�)rr�r�)rr�r)r�r�T)r;r�N)r�r.c�6�g|]}t|j����Sr)r�message)r	r�s  rrz<NodeVisitorTests.test_old_constant_nodes.<locals>.<listcomp>	s ��7�7�7�Q�#�a�i�.�.�7�7�7r
)�+visit_Num is deprecated; add visit_Constantr�r�z+visit_Str is deprecated; add visit_Constantz-visit_Bytes is deprecated; add visit_Constant�4visit_NameConstant is deprecated; add visit_Constantr�z0visit_Ellipsis is deprecated; add visit_Constant)
r2�NodeVisitorr~r�warnings�catch_warnings�filterwarnings�DeprecationWarning�visitrB)r7r�r��visitor�wlogr�s     @r�test_old_constant_nodesz(NodeVisitorTests.test_old_constant_nodes�sl���
	;�
	;�
	;�
	;�
	;�
	;�
	;�c�o�
	;�
	;�
	;��i��	 �	�	�	�	���'�)�)����
�
$�D�
1�
1�
1�	�T��#�H�b�2D�E�E�E��M�M�#����	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	
����	
�	
�	
�		�		�		�	
���7�7�$�7�7�7�	:
�	:
�	:
�		�		�		�		�		s�1B�B�"BN)rr5rZr�rr
rr�r��s#������.�.�.�.�.r
r�c�&�eZdZd�Zd�Zd�Zd�ZdS)�ModuleStateTestsc��d}d}d}t|||tj���}t|||��}|�|tj��dS)Nzx + 1r}rf)�flags)rur2rvr��types�CodeType)r7ra�filenamer�rzs     r�check_ast_modulez!ModuleStateTests.check_ast_module	s]���������4��4�s�7H�I�I�I���x��4�0�0�����d�E�N�3�3�3�3�3r
c�4�tjtjdd��5tjd=ddl}tjd=ddl}|���ddd��n#1swxYwY~~tj��|���dS)N�_astr)r�	swap_itemr��modulesr�r�r`)r7�ast1rs   r�test_reload_modulez#ModuleStateTests.test_reload_module(	s���
�
�s�{�F�D�
9�
9�	$�	$���F�#�������F�#������!�!�#�#�#�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$����	$�	$�	$�	$�
��������������s�7A$�$A(�+A(c���t����fd�}tjtjdd��5tjd=tjtd|��5|���|�dtj��ddl	}|�
|���ddd��n#1swxYwYddd��dS#1swxYwYdS)Nc�&���tj|<�Sr�)r�r�)r8r�rT�lazy_mods   �r�	my_importz4ModuleStateTests.test_sys_modules.<locals>.my_import?	s��� (�C�K����Or
r��
__import__r)�objectrr�r�r�r8r�r��assertNotInr�r�)r7r�r�r�s   @r�test_sys_modulesz!ModuleStateTests.test_sys_modules:	sa����8�8��	�	�	�	�	��
�s�{�F�D�
9�
9�
	.�
	.���F�#��"�8�\�9�E�E�
.�
.��%�%�'�'�'�� � ����5�5�5������
�
�d�H�-�-�-�
.�
.�
.�
.�
.�
.�
.�
.�
.�
.�
.����
.�
.�
.�
.�
	.�
	.�
	.�
	.�
	.�
	.�
	.�
	.�
	.�
	.�
	.�
	.����
	.�
	.�
	.�
	.�
	.�
	.s6�)C�AB9�-C�9B=	�=C�B=	�C�C�Cc�x�td��}tj|��}|�|d��dS)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_subinterprB)r7ra�ress   r�test_subinterpreterz$ModuleStateTests.test_subinterpreterO	sF����
�
��&�&�t�,�,������a� � � � � r
N)rr5rZr�r�r�r�rr
rr�r�	sP������4�4�4� � � �$.�.�.�*!�!�!�!�!r
r�c��tdkrdStjdd�dgkr�tdftdft
dffD]`\}}t
|dz��|D]7}tj|d|��}t
t|���d	����8t
d
���at
d��t�tj��dS)N�__main__r�z-grdrerfz_results = [rj�,�]zmain())
rr��argvrmrorq�printr2r~r�
SystemExit�unittest�main)�
statementsrl�	statementr�s    rrri	s����:�����
�x����|��v��	�",�f�!5��h�7O�",�f�!5�!7�	�	��J���$�~�%�&�&�&�'�
1�
1�	��y��C��6�6���x��~�~�~�~�/�0�0�0�0��#�J�J�J�J�
�h�������M�O�O�O�O�Or
r�)r�r�rr�r�r�rNN)r�r�rr��)r�rzmodule docstringNr4)r�rr�r�r"r�)r5)r�rYr�r�)r�rr��)r�r�rYr�r)r�r	zfunction docstringN)r�rr�rY�r.�r�r�r�r;r]NN)r5)r�r�r�rY)r�rr�r�)r��r�r�r�rYrN)r5)r�rhr�r�r)r.�r�r;r�r�r�NN)r5)r�rYr�r)r�rr�r�)r.)r�r;r�r�r�)r��r�r�r�r�)r�)r�rYr�r��Ts�r&rN)r5)r�rir�r�)r�rr��$r.)r�r;r�rr�r�)r�r�r�rr�)r�rYr�r)r�)r�rYr�rirrr�)r��r��)r�)r�rr�r�rrr��r��r�rr)r5)r�� r�r)r�r)r�)r��r�rrrr)r�rr��)r.�r�r�r�rYr�NN)r5)r�r�r�r)r�rr��G)r
)r.�r�rYr�r�r�NN)r.�r�rYr�rLr�NN)r.�r��r�r�r�NN)r.)r�rr�rr
NN)r.�r��#r��'r�NN)r.)r��)r�rKr"NN)r�)r��+r��-rKN)r.)r��1r��7r�NN)r��r�r�r�rhr�N)r��r�r�r�rNNr�)r��r�rr)r��r�r)r�r��:r�r)r�r+zdoc for f()N)r�rr��)r5)r�r�r�r-)r�r�r�r)r��r�r�r�r�rr�r�r�r�r)r�r/)r�)r�rr�rrrr)r�rr�r)r5)r�rr�r)r�r�r�r)r�r�r�r)r�r/rr)r�)r�rr�r)r�)r�r�r�rrrr)r�rr�r$)r5)r�r"r�r$)r�r�r�r!)r�r�r��&)r�rr�r0)r�r�r�r0)r�)r�r�r�rrr)r�rr�r�)r�)r�rr�rrr)r��"r�r�r:)r�rr�rh�C)r5)r�r�r�rh)r�r�rYr�r)r�r3zdocstring for class CN)r�rr�r)�Return�r�r�r�r�)r��r�rLr�r�r�NrA�r�rr�r)r��r�rr�rr-)�DelrE�r��r�rr�r�r-�r*)r�r8r�N�r�rr�r;�r�rr�r�)r�r;r]r<)r��r�rMr�r�r�r<r<)r�rr�r)r�rr�rY�r��r�r�r�rMr]r<)r��r�r�r�rr�r<)r�rr�r�	AnnAssign)r�r;rTr<)r�r�r�r�)r��r�r�r�r�rr�r�rYr�rh)r�rE)r��r�r�r�rhrrrr�)r�r�r�r)r�rYr�r�)r�rErr)r�)r�rYr�r�)r�)r�rLr�r�rrr)r�rr��)r�r�r�rG)r�rYr�r*)r�rYr�r*)r�rLr�r*)r�)r�rLr�rrr)r�rr�r)r�)r�rr�r)rr)r�rr�r)rH�r�rr�r�r:�r)r��r�rr�r�r�Nr�)r�rr�rL)r�r8r-r<)r�rr-r)r5)r�r�r�rLrO)r�rr-rrR)r�rBr-r)r5)r�rr�rY)r�rrr�)r�rBr]r)r5)rMrMrMr�)r�rrr�)r�)r�rr�r�r�r)r5)rrMrr�)r�rr�r�)r�rr�r�)r5)r�rMr�r�rU)r�rr�r�)rH)r�rJrTr)r��r�r�r�r�r�r<)r5)r�r�r�r�)r�rr�r)rH)r��r�r�r�rYr�r)r��r�rr�ri�qr<)r5)r�rr�rr�r�)r�r�r�r)r�)r�r�r�rLr�r)r�)r�r�r�r)r�Nr\r])r��r�r;r�r�r�rra)r�)r�r�r�r�r�r)rd�r�rr�r�)r��r�r;r�r�r-rNr�)r�rr�r�)r��r�r;r�r�r�Nr�r�)r��r�r�r�r�r-NrnrPr-)rr;�r�r;r�N)r5r)�Breakr.)r�rr�ri)�Continue)r�r�r�ri)r�rr�r;)r�r8r]r<)r�rr�r<)r�r'r�r)r�rr�r)r�rr�rY)r�rJr]r<)r�rQr�r<)r�rLr�r)r5r(r)r�rr�rr�)rMrr�r)r�)r�rr�r��Aar)r�)rr;rrY�Bbrr�)r�rr�r�)r�)r�rr�r�rWr<)r�)r�rr�r�rXr<)r�)r�r�r�rh�Ccr)r�rr�r1r��r�rAr]r)r�rJr�r)r�r'r�r<)r�rSrTr)r�rr"r<)r�)r�r-r�rrLr)r�)r�rr��!r�r)r�r�r�rY)r�r'r-r<)r�rLr�r<)r�rMrTrr�)r�rArXr)r�rQr�r<)r��r�rhr�r�rTr)r��r�r�r�rr�rrR)r�rr"r<)r�rrTr�AsyncFunctionDef)r�rr�r)r�rMr�rMr�)r�r_zasync functionN)r�r�r�r�Await)r�r;r�r)r�rO�	somethingr)r�rr�r��AsyncFor)rMr�r�r�)r�)rMr�rMrhr
r<)r�)rMr�rMr�rxr)r�rMrirMr)r�rcr�N)r�r�r;r�r�)r�rdrMN)r�rrMr�	AsyncWith)rMr�rMr)rH)r�)rMrhrMr�r]r)r�)rMr�rMrr�r<)r�rMrrMr)r�rfr�N)r�rKrMNrD)r�rrMN)r�r\r�Nr�)r�r�r�r�)r�rMr�r�)r�rBr�N)r�rKr�Nr�)r�)rMrMrMr�rxr)r�)rMrYrMrLr�r<)r�rcr�r)rrrr�)r5)rrYrr�)r��r�r�r�r��deco1r)rMr�rMr�)r�)rMr�rMr��deco2r)r�r�r�rY)r�)r�r�r�r��deco3r)r�rdr�N)rrrri)r5)rrLrri)rMrrMr�)r5)rMrYrMr�)r�r�r�ri)r��r�r�r�r�decor)r�rr�ri)r�rr]r)r�r\r]r<)r�r]r�r)r�rg)r�)r�r�r�rrZr�rr�r)rrP)�	NamedExpr)r�r�r�r;r@)r�rr�N)r�rr�r)�r.r\r�NN)r.r6r�NN)r.rMr
NN)r5)r�rr�rrn)r.rMr�NN)r.�r�rr�rr
NN)r5)r�rr�r)r�rr�r!)r.)r�rr�rr�NN)r5r�r�rr�N)r.rr�NN)r.)r�rir�rr�NN)rp�r�rSrMN)r�rorN)r.rr�NN)r�)r�r)r�rrNrq)r�rr�r*)r5)r�rr�r*)r�rr�rK)r.)r�rr�r r�NN)r5)r�r0r�rK)r�rr�ra)r.)r�r-r�r[r�NN)r5)r�rr�rar))rr>)rr>rTrI�r�r?rMN)r,rr,rw)rx�r�r;r]r)r�rr�r)r,)rr7rsrI�r�r8r�r)r,)r	r7)r)r�r8r-rr)r�rr�r�)r�r
NN�r�r?r�N�r�r8rMN�r�rr�rM)r�rkNN)r�rrr�)r�)rMr�rMr;r�N)r�)rr�rr�rMN)r�r\r�r)r�r]r�rrg)r�r?r]rrt)r�r'r]r<)r�rLr�r<)r�rMr�r)r�rr�rr.)r�rr�r<)r�)r�rr�rr�rr�rT)�Lt�r�rr�N)r�r;r"r)rurv)r�rF)r�r'r�rr)r>)r�r�r�rYr�ry)r>rN)r�r6r
r)r�rMr�rY)r�r�r�rY)r�r8rN)r�rQr�N)r�r�r�rL)r�rr]r<)r�rLr�r)r,)r�rwr�N)r,)r�rPr�N)r,�r�r>rsr�r)r,)r�rHrs)r�)r�rMr�r)r�r?r�r)r�r8r�rNr)r,)r�r;r-r))r�rAr�N)r�rBrMN)r�rJr�N)rTrr)r�r8r�N)r�r=)r�r7rzr�rr�r)r�r5)r�)r�r�r�r�)r�rr]rr�r)r�)r�rhr�rL)r�r\r�N)r�rrMNNr) r2r�r,rmr�r�r�rr�r^�textwraprr�rrrmrorq�TestCaser0r�r"rr@r�r�r�rrrnrprrrr
r�<module>r}s /��
�
�
�
�����
�
�
�
�����	�	�	�	�
�
�
�
��������������������������������&S�S�S�
�r
���F�F�F�
�V|�|�|�|�|��!�|�|�|�~M=�M=�M=�M=�M=�h�'�M=�M=�M=�`k6�k6�k6�k6�k6��)�k6�k6�k6�\B'�B'�B'�B'�B'�H�%�B'�B'�B'�JV8�V8�V8�V8�V8�x�(�V8�V8�V8�p
/�/�/�/�/�x�(�/�/�/�d	��N!�N!�N!�N!�N!�x�(�N!�N!���N!�b
�
�
� N�	�J�K�R�P�N�	�Z�[�]_�`�N�
�]�M�3��b�"�d�B�PR�TX�Z\�0]�`w�_x�z|�C�EI�
J�K�MO�P�N�
�]�M�3��b�"�d�B�PR�TX�Z\�0]�aq�`r�tv�x|�~B�
C�D�FH�I�	N�

�]�M�3��b�Ci�Bj�lp�rt�vx�z~�AC�1D�G_�F`�bd�fj�lp�
q�r�tv�w�N�
�]�M�3��b�Ci�Bj�lp�rt�vx�z~�Be�Af�1g�jB�iC�EG�IM�OS�
T�U�WY�Z�
N�
�]�M�3��b�"�Fp�rt�vx�z~�AC�1D�G_�F`�bd�fj�lp�
q�r�tv�w�N�
�]�M�3��b�"�G~�@B�DF�HL�NP�1Q�Tl�Sm�oq�sw�y}�
~��AC�D�N�
�]�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�
m�n�pr�s�N�
�]�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�
R�S�UW�X�N�
�]�M�3��b�"�d�B�PR�UA�CE�1F�Ia�Hb�df�hl�nr�
s�t�vx�y�N�
�]�M�3��b�CR�CR�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�
C�D�FH�I�N�
�]�M�3��b�"�d�B�PR�TX�Z\�0]�`x�_y�{}�AL�N\�^J�MT�Vd�gx�fy�{D�LE�GP�@Q�SW�
X�Y�[]�^�N�
�]�M�3��b�"�d�B�PR�TX�Z\�0]�`x�_y�{}�AL�N\�^J�MT�Vd�gQ�Sd�fe�gp�Lq�s|�@}�C�
D�E�GI�J�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�
s�t�vx�y�N� 
�Z���R��6M�5N�PR�S�T�VX�Y�!N�"
�Z���R��7J�6K�MO�
P�Q�SU�V�#N�$
�Z���.Z�-[�]_�bz�a{�}�
A�B�DF�G�%N�&
�]�M�3��b�"�d�B�PR�TX�Z\�0]�aa�`b�df�hl�nr�
s�t�vx�y�'N�(
�X�|�&K�%L�M�N�PR�S�)N�*
�X�|�&M�%N�Ps�uy�z�{�}�A�+N�,
�X�|�w��?f�iP�?Q�S]�'^�&_�aG�IM�
N�O�QS�T�-N�.
�X�|�w��?f�iP�?Q�S]�'^�&_�aG�IM�
N�O�QS�T�/N�0
�X�|�v�|�>e�hO�>P�R\�']�&^�`F�HL�
M�N�PR�S�1N�2
�[�-�)P�S^�`m�pZ�]d�fs�vF�uG�IR�\S�U^�S_�ae�gh�
i�j�ln�o�3N�4
�[�-�)P�S^�`m�pZ�]d�fs�v_�ar�us�u~�\�AJ�SK�MQ�ST�
U�V�XZ�[�5N�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�7N�8
��A�CE�F�9N�:
�U�M�#J�Ls�wO�vP�RT�VZ�
[�\�^`�a�;N�<
�W�m�%K�Ne�Mf�hj�k�l�np�q�=N�>
�T�<�!G�J`�Ia�ce�f�g�ik�l�?N�@
�T�<�!G�J`�Ia�ei�kw�z`�cy�bz�|~�e�d@�
A�B�DF�G�AN�B
�T�<�!G�J`�Ia�ei�kw�z`�cy�bz�}S�|T�eU�dV�
W�X�Z\�]�CN�D
�V�]�&E�%F�Ia�Hb�dh�
i�j�ln�o�EN�F
�V�]�&E�Gh�%i�lD�kE�GK�
L�M�OQ�R�GN�H
�W�m�f�m�=l�p\�o]�_a�&b�dh�
i�j�ln�o�IN�J
�U�L�#9�":�o�|�^M�OS�Vl�Um�>n�=o�qs�uw�
x�y�{}�~�KN�L
�U�L�#9�":�B��E[�D\�]�^�`b�c�MN�N
�Y��'=�&>�/�S_�bQ�SW�Zp�Yq�Br�As�uw�y{�
|�}�A�B�ON�P
�R�S�UW�X�QN�R
�X�}�'L�&M�N�O�QS�T�SN�T
�\�=�%�2V�1W�YZ�[�\�^`�a�UN�V
�X�|�c�U�+�,�b�1�WN�X
�G�H�"�M�YN�Z
�"�#�R�(�[N�\
�U�M�#J�Ls�wP�vQ�SU�W[�
\�]�_a�b�]N�^
�U�M�#J�Ls�wS�vT�VX�Z^�
_�`�bd�e�_N�`
�U�M�G�\�<c�fM�<N�PZ�$[�]E�H`�Ga�ce�gk�
l�m�oq�r�aN�b
�U�M�G�\�<c�fM�<N�PZ�$[�]E�H`�Ga�ce�gk�
l�m�oq�r�cN�d
�U�M�F�L�;b�eL�;M�OY�$Z�\D�G_�F`�bd�fj�
k�l�np�q�eN�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�gN�h
�V�]�Z��@f�iO�Sb�dM�Ow�y{�}~�R�BQ�S|�~f�iQ�hR�TU�AV�QW�%X�
Y�Z�\^�_�iN�j
�V�]�Z��@f�iO�Sb�el�n|�h�jS�~T�V`�da�cK�MO�QR�RS�QT�%U�
V�W�Y[�\�kN�l
�V�]�Y�
�?e�ix�{b�dL�Ow�Nx�z{�i|�h}�%~�
�@�BD�E�mN�n
�V�]�Y�
�?e�ix�|C�ER�U|�~f�Tg�is�{t�v^�`b�de�if�hg�%h�
i�j�ln�o�oN�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�
I�J�LN�O�qN�r
�
��s�[�"�b�$�PR�TV�X\�^`�4a�eo�q}�@i�kS�VU�UV�YT�XU�W[�e\�d]�_a�cg�im�
n�o�qs�t�sN�t
�
���k�2�r�4�QS�UW�Y]�_a�5b�fq�tA�De�Cf�ih�hi�ko�fp�eq�su�w{�}A�
B�C�EG�H�uN�v
�V�]�V�]�T�Ch�<i�ms�vB�Eh�Di�lO�kP�mQ�Sx�ly�%z�
{�|�~@�A�wN�x
�V�]�U�M�Y��W\�^j�nQ�Sv�mw�Wx�zC�=D�Fk�<l�%m�
n�o�qs�t�yN�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�
E�F�HJ�K�{N�|
�]�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�
o�p�rt�u�}N�~
�
���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�
u�v�xz�{�N�@
�Z���R��6M�5N�Q{�E�GS�U�AC�EG�~H�KQ�S_�aK�Nq�Mr�tv�Jw�Qx�
y�z�|~��AN�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�
L�M�OQ�R�CN�D
�]�M�3��b�"�d�B�PR�TX�Z\�0]�`w�_x�||�{}�C�EI�
J�K�MO�P�EN�F
�
N�O�QS�T�GN�H
�]�M�3��?e�>f�hj�lp�rt�vx�z~�AC�1D�G_�F`�bd�fj�lp�
q�r�tv�w�IN�J
�]�M�3��?e�>f�ig�ig�ig�im�oq�su�w{�}�1@�C[�B\�^`�bf�hl�
m�n�pr�s�KN�L
�]�M�3��?e�>f�jR�iS�UY�\D�Fn�[o�rv�x|�q}�C�EG�1H�Kc�Jd�fh�jn�pt�
u�v�xz�{�MN�N
�]�M�3��?e�>f�jR�iS�UY�\D�Fn�[o�rv�x|�q}�l�np�1q�tL�sM�OQ�SW�Y]�
^�_�ac�d�ON�P
�]�M�3��?e�>f�hj�lp�rt�vx�z~�Be�Af�1g�jB�iC�EG�IM�OS�
T�U�WY�Z�QN�R
�]�M�3��?e�>f�jR�T|�i}�C�EG�IK�MQ�SF�SF�SF�1G�Jb�Ic�eg�im�os�
t�u�wy�z�SN�T
�]�M�3��?e�>f�jR�iS�UY�\D�[E�Hm�Gn�pt�wZ�\A�vB�1C�F^�E_�ac�ei�ko�
p�q�su�v�UN�V
�]�M�3��?e�>f�jR�iS�UY�\D�[E�HL�GM�OS�Vy�{`�Ua�1b�e}�d~�@B�DH�JN�
O�P�RT�U�WN�X
�]�M�3��?e�>f�jR�iS�UY�\D�[E�Hm�Gn�p]�`C�Ej�_k�1l�oG�nH�JL�NR�TX�
Y�Z�\^�_�YN�Z
�]�M�3��?e�>f�jR�iS�UY�\D�[E�HL�GM�O|�b�dI�~J�1K�Nf�Mg�ik�mq�sw�
x�y�{}�~�[N��`�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�Pl�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�'V�'V�Xa�b�c�=$�>���b�)�4�5�?$�@���(W�(W�(W�Yb�c�d�A$�B���(W�(W�(W�Yb�c�d�C$�D���r�9�5�6�E$�F��
�(U�XD�WE�GI�J�K�G$��J������r