Current File : //usr/local/apps/python3/lib/python3.11/test/__pycache__/test_unparse.cpython-311.pyc
�

�Ke�a�� �dZddlZddlZddlZddlZddlZddlZd�ZdZ	dZ
dZdZdZ
d	Zd
ZdZdZd
ZdZdZdZdZGd�dej��ZGd�de��ZGd�de��ZGd�de��Zedkrej��dSdS)z>Tests for the unparse.py script in the Tools/parser directory.�Nc��tj|��5}|���cddd��S#1swxYwYdS)znRead and return the contents of a Python source file (as a
    string), taking into account the file encoding.N)�tokenize�open�read)�filename�streams  �;/usr/local/apps/python3/lib/python3.11/test/test_unparse.py�read_pyfiler
s���
��x�	 �	 ��F��{�{�}�}���������������������s�6�:�:zQdef f():
    for x in range(10):
        break
    else:
        y = 2
    z = 3
zIdef g():
    while True:
        break
    else:
        y = 2
    z = 3
zQfrom . import fred
from .. import barney
from .australia import shrimp as prawns
zzdef f():
    x = 1
    def g():
        nonlocal x
        x = 2
        y = 7
        def h():
            nonlocal x, y
zOtry:
    1 / 0
except ZeroDivisionError as e:
    raise ArithmeticError from e
z@f1(arg)
@f2
class Foo: pass
z=if cond1:
    suite1
elif cond2:
    suite2
else:
    suite3
z,if cond1:
    suite1
elif cond2:
    suite2
zctry:
    suite1
except ex1:
    suite2
except ex2:
    suite3
else:
    suite4
finally:
    suite5
zetry:
    suite1
except* ex1:
    suite2
except* ex2:
    suite3
else:
    suite4
finally:
    suite5
zwith f():
    suite1
zwith f() as x:
    suite1
z$with f() as x, g() as y:
    suite1
)�zclass foo:
    zdef foo():
    zasync def foo():
    c�<�eZdZd�Zd�Zefd�Zdd�Zdd�Zdd�Z	dS)	�ASTTestCasec�������|tj����|tj��t��f��fd�	��||��dS)Nc����t|��t|��ur4�
�t|���dt|������t|tj��r>|jD]4}t
|||��}t
|||��}||ur�||���5dSt|t��r�	t||d���D]\}}�||���dS#t$rRt|��}t|��}	||	krd}
||	z
}nd}
|	|z
}|
�d|�d�}�
�|��d�wxYw||kr�
�|�d|����dSdS)	Nz is not T)�strict�First�Secondz list contains z additional elements.z != )�type�fail�
isinstance�ast�AST�_fields�getattr�list�zip�
ValueError�len�failureException)�a�b�missing�field�value1�value2�node1�node2�len1�len2�what�diff�msg�self�traverse_compares             ��r	r-z4ASTTestCase.assertASTEqual.<locals>.traverse_compare�s�����A�w�w�d�1�g�g�%�%��	�	�T�!�W�W�;�;��Q���;�;�<�<�<��!�S�W�%�%�
-��Y�9�9�E�$�Q��w�7�7�F�$�Q��w�7�7�F��V�+�+�(�(���8�8�8��
9�9��A�t�$�$�
-�?�(+�A�q��(>�(>�(>�7�7���u�(�(���6�6�6�6�7�7��!�?�?�?��q�6�6�D��q�6�6�D��d�{�{�&��#�d�{���'��#�d�{��!�M�M�$�M�M�M�C��/�/��4�4�$�>�?�����a����	�	�Q�+�+�a�+�+�,�,�,�,�,��s
�$C(�(AE)�assertIsInstancerr�object)r,�ast1�ast2r-s`  @r	�assertASTEqualzASTTestCase.assertASTEqual�s{�������d�C�G�,�,�,����d�C�G�,�,�,�
,2�8�8�	-�	-�	-�	-�	-�	-�	-�:	���t�$�$�$�$�$�c��|�||���5tj|fi|��}tj|��}tj|fi|��}|�||��ddd��dS#1swxYwYdS)N)�code1�ast_parse_kwargs)�subTestr�parse�unparser2)r,r5�kwargsr0�code2r1s      r	�check_ast_roundtripzASTTestCase.check_ast_roundtrip�s���
�\�\���\�
?�
?�	,�	,��9�U�-�-�f�-�-�D��K��%�%�E��9�U�-�-�f�-�-�D�����d�+�+�+�		,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,����	,�	,�	,�	,�	,�	,s�AA4�4A8�;A8c��|�|���5|�|tj|��ddd��dS#1swxYwYdS)N)�node)r7�assertRaisesrr9)r,r>�raisess   r	�
check_invalidzASTTestCase.check_invalid�s���
�\�\�t�\�
$�
$�	9�	9����f�c�k�4�8�8�8�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9����	9�	9�	9�	9�	9�	9s�"A�A
�
A
Nc�^�|p|}tjtj|����}||fS�N)rr9r8�r,r5r;s   r	�
get_sourcezASTTestCase.get_source�s.��������C�I�e�,�,�-�-���e�|�r3c���|�||��\}}|�||���5|�||��ddd��dS#1swxYwYdS�N)r5r;)rEr7�assertEqualrDs   r	�check_src_roundtripzASTTestCase.check_src_roundtrip�s������u�e�4�4���u�
�\�\��U�\�
3�
3�	+�	+����U�E�*�*�*�	+�	+�	+�	+�	+�	+�	+�	+�	+�	+�	+�	+����	+�	+�	+�	+�	+�	+��A�A�Ac���|�||��\}}|�||���5|�||��ddd��dS#1swxYwYdSrG)rEr7�assertNotEqualrDs   r	�check_src_dont_roundtripz$ASTTestCase.check_src_dont_roundtrip�s������u�e�4�4���u�
�\�\��U�\�
3�
3�	.�	.�����u�-�-�-�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.����	.�	.�	.�	.�	.�	.rJrC)
�__name__�
__module__�__qualname__r2r<rrArErIrM�r3r	r
r
�s�������%%�%%�%%�N,�,�,�*4�9�9�9�9�����
+�+�+�+�
.�.�.�.�.�.r3r
c�(�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�Zd�Zd�Z d�Z!d �Z"d!�Z#d"�Z$d#�Z%d$�Z&d%�Z'd&�Z(d'�Z)d(�Z*d)�Z+d*�Z,d+�Z-d,�Z.d-�Z/d.�Z0d/�Z1d0S)1�UnparseTestCasec��|�d��|�d��|�d��|�d��|�d��|�d��|�d��|�d��|�d	��|�d
��|�d��|�d��|�d
��|�d��|�d��|�d��dS)Nzf'a'zf'{{}}'zf'{{5}}'z	f'{{5}}5'z	f'X{{}}X'zf'{a}'zf'{ {1:2}}'zf'a{a}a'zf'a{a}{a}a'zf'a{a}a{a}a'zf'{a!r}x{a!s}12{{}}{a!a}'z	f'{a:10}'zf'{a:100_000{10}}'zf'{a!r:10}'z
f'{a:a{b}10}'zRf'a{b}{c!s}{d!r}{e!a}{f:a}{g:a{b}}{h!s:a}{j!s:{a}b}{k!s:a{b}c}{l!a:{b}c{d}}{x+y=}'�r<�r,s r	�
test_fstringszUnparseTestCase.test_fstrings�sW��� � ��(�(�(�� � ��+�+�+�� � ��,�,�,�� � ��-�-�-�� � ��-�-�-�� � ��*�*�*�� � ��/�/�/�� � ��,�,�,�� � ��/�/�/�� � ��0�0�0�� � �!<�=�=�=�� � ��-�-�-�� � �!5�6�6�6�� � ��/�/�/�� � ��1�1�1�� � �<�	
�	
�	
�	
�	
r3c��|�d��|�d��|�d��|�d��dS)Nz
f'{f"{0}"*3}'z
f'{f"{y}"*3}'zf''zf"""'end' "quote\""""rUrVs r	�test_fstrings_special_charsz+UnparseTestCase.test_fstrings_special_chars�s[��� � �!5�6�6�6�� � �!5�6�6�6�� � ��+�+�+�� � �!=�>�>�>�>�>r3c�,�|�d��|�d��|�d��|�d��|�d��|�d��|�d��dS)Nzf'''{"'"}'''�%f'''-{f"""*{f"+{f'.{x}.'}+"}*"""}-'''z4f'''-{f"""*{f"+{f'.{x}.'}+"}*"""}-'single quote\''''zf"""{'''
'''}"""zf"""{g('''
''')}"""z	f"a\r\nb"�f"\u2028{'x'}"rUrVs r	�test_fstrings_complicatedz)UnparseTestCase.test_fstrings_complicated�s���� � �!3�4�4�4�� � �!R�S�S�S�� � �!b�c�c�c�� � �!:�;�;�;�� � �!=�>�>�>�� � �!2�3�3�3�� � �!6�7�7�7�7�7r3c��|�d��|�d��|�d��dS)Nzu'foo'zr'foo'zb'foo'rUrVs r	�test_stringszUnparseTestCase.test_strings�sD��� � ��*�*�*�� � ��*�*�*�� � ��*�*�*�*�*r3c�0�|�d��dS)Nzdel x, y, zrUrVs r	�test_del_statementz"UnparseTestCase.test_del_statement�s��� � ��/�/�/�/�/r3c�Z�|�d��|�d��dS)Nz45 << 2z13 >> 7rUrVs r	�test_shiftszUnparseTestCase.test_shifts�s0��� � ��+�+�+�� � ��+�+�+�+�+r3c�:�|�t��dSrC)r<�for_elserVs r	�
test_for_elsezUnparseTestCase.test_for_else�s��� � ��*�*�*�*�*r3c�:�|�t��dSrC)r<�
while_elserVs r	�test_while_elsezUnparseTestCase.test_while_else����� � ��,�,�,�,�,r3c���|�d��|�d��|�d��|�d��|�d��dS)Nz(-1)**7z(-1.)**8z(-1j)**6znot True or FalsezTrue or not FalserUrVs r	�test_unary_parensz!UnparseTestCase.test_unary_parenssn��� � ��+�+�+�� � ��,�,�,�� � ��,�,�,�� � �!4�5�5�5�� � �!4�5�5�5�5�5r3c�0�|�d��dS)Nz3 .__abs__()rUrVs r	�test_integer_parensz#UnparseTestCase.test_integer_parenss��� � ��0�0�0�0�0r3c��|�d��|�d��|�d��|�d��dS)N�1e1000z-1e1000�1e1000jz-1e1000jrUrVs r	�test_huge_floatzUnparseTestCase.test_huge_float
sX��� � ��*�*�*�� � ��+�+�+�� � ��+�+�+�� � ��,�,�,�,�,r3c���|�tjtjtjtd���������tjd����dS)N�nan��valuez1e1000 - 1e1000)r2rr8r9�Constant�floatrVs r	�test_nanzUnparseTestCase.test_nans\������I�c�k�#�,�U�5�\�\�"B�"B�"B�C�C�D�D��I�'�(�(�	
�	
�	
�	
�	
r3c��|�td����|�td����dS)Ni�l����)r<�strrVs r	�test_min_intzUnparseTestCase.test_min_ints<��� � ��Z���1�1�1�� � ��Z���1�1�1�1�1r3c��|�d��|�d��|�d��|�d��dS)N�7jz-7j�0jz-0jrUrVs r	�test_imaginary_literalsz'UnparseTestCase.test_imaginary_literalssX��� � ��&�&�&�� � ��'�'�'�� � ��&�&�&�� � ��'�'�'�'�'r3c�0�|�d��dS)Nz(lambda: int)()rUrVs r	�test_lambda_parenthesesz'UnparseTestCase.test_lambda_parentheses ���� � �!2�3�3�3�3�3r3c�Z�|�d��|�d��dS)Nz
1 < 4 <= 5za is b is c is not drUrVs r	�test_chained_comparisonsz(UnparseTestCase.test_chained_comparisons#s1��� � ��.�.�.�� � �!7�8�8�8�8�8r3c��|�d��|�d��|�d��|�d��|�d��|�d��|�d��|�d��|�d	��|�d
��|�d��|�d��dS)
Nz
def f(): passzdef f(a): passzdef f(b = 2): passzdef f(a, b): passzdef f(a, b = 2): passzdef f(a = 5, b = 2): passzdef f(*, a = 1, b = 2): passzdef f(*, a = 1, b): passzdef f(*, a, b = 2): passz&def f(a, b = None, *, c, **kwds): passz'def f(a=2, *args, c=5, d, **kwds): passzdef f(*args, **kwargs): passrUrVs r	�test_function_argumentsz'UnparseTestCase.test_function_arguments's��� � ��1�1�1�� � �!1�2�2�2�� � �!5�6�6�6�� � �!4�5�5�5�� � �!8�9�9�9�� � �!<�=�=�=�� � �!?�@�@�@�� � �!;�<�<�<�� � �!;�<�<�<�� � �!I�J�J�J�� � �!J�K�K�K�� � �!?�@�@�@�@�@r3c�:�|�t��dSrC)r<�relative_importrVs r	�test_relative_importz$UnparseTestCase.test_relative_import5���� � ��1�1�1�1�1r3c�:�|�t��dSrC)r<�nonlocal_exrVs r	�
test_nonlocalzUnparseTestCase.test_nonlocal8���� � ��-�-�-�-�-r3c�:�|�t��dSrC)r<�
raise_fromrVs r	�test_raise_fromzUnparseTestCase.test_raise_from;rjr3c�0�|�d��dS)Nzb'123'rUrVs r	�
test_byteszUnparseTestCase.test_bytes>s��� � ��*�*�*�*�*r3c���|�d��|�d��|�d��|�d��|�d��dS)Nzdef f(a : int): passzdef f(a: int = 5): passzdef f(*args: [int]): passzdef f(**kwargs: dict): passzdef f() -> None: passrUrVs r	�test_annotationsz UnparseTestCase.test_annotationsAsq��� � �!7�8�8�8�� � �!:�;�;�;�� � �!<�=�=�=�� � �!>�?�?�?�� � �!8�9�9�9�9�9r3c�0�|�d��dS)Nz{'a', 'b', 'c'}rUrVs r	�test_set_literalz UnparseTestCase.test_set_literalHr�r3c	���|�tjtjtjg�������tjd����dS)N)�eltsz{*()})r2rr8r9�SetrVs r	�test_empty_setzUnparseTestCase.test_empty_setKsU������I�c�k�#�'�r�"2�"2�"2�3�3�4�4��I�g���	
�	
�	
�	
�	
r3c�0�|�d��dS)Nz{x for x in range(5)}rUrVs r	�test_set_comprehensionz&UnparseTestCase.test_set_comprehensionQs��� � �!8�9�9�9�9�9r3c�0�|�d��dS)Nz{x: x*x for x in range(10)}rUrVs r	�test_dict_comprehensionz'UnparseTestCase.test_dict_comprehensionTs��� � �!>�?�?�?�?�?r3c�:�|�t��dSrC)r<�class_decoratorrVs r	�test_class_decoratorsz%UnparseTestCase.test_class_decoratorsWr�r3c�0�|�d��dS)Nz(class A(metaclass=type, *[], **{}): passrUrVs r	�test_class_definitionz%UnparseTestCase.test_class_definitionZs��� � �!K�L�L�L�L�Lr3c�n�|�t��|�t��dSrC)r<�elif1�elif2rVs r	�
test_elifszUnparseTestCase.test_elifs]s0��� � ��'�'�'�� � ��'�'�'�'�'r3c�:�|�t��dSrC)r<�try_except_finallyrVs r	�test_try_except_finallyz'UnparseTestCase.test_try_except_finallyas��� � �!3�4�4�4�4�4r3c�:�|�t��dSrC)r<�try_except_star_finallyrVs r	�test_try_except_star_finallyz,UnparseTestCase.test_try_except_star_finallyds��� � �!8�9�9�9�9�9r3c��|�d��|�d��|�d��|�d��dS)Nza, *b, c = seqza, (*b, c) = seqza, *b[0], c = seqza, *(b, c) = seqrUrVs r	�test_starred_assignmentz'UnparseTestCase.test_starred_assignmentgs\��� � �!1�2�2�2�� � �!3�4�4�4�� � �!4�5�5�5�� � �!3�4�4�4�4�4r3c�:�|�t��dSrC)r<�with_simplerVs r	�test_with_simplez UnparseTestCase.test_with_simplemr�r3c�:�|�t��dSrC)r<�with_asrVs r	�test_with_aszUnparseTestCase.test_with_asps��� � ��)�)�)�)�)r3c�:�|�t��dSrC)r<�with_two_itemsrVs r	�test_with_two_itemsz#UnparseTestCase.test_with_two_itemsss��� � ��0�0�0�0�0r3c�Z�|�d��|�d��dS)Nz{**{'y': 2}, 'x': 1}z{**{'y': 2}, **{'x': 1}}rUrVs r	�test_dict_unpacking_in_dictz+UnparseTestCase.test_dict_unpacking_in_dictvs2��� � �!<�=�=�=�� � �!@�A�A�A�A�Ar3c��|�d��|�d��|�d��|�d��|�d��|�d��|�d��|�d��|�d	��|�d
��|�d��|�d��|�d
��|�d��|�d��|�d��|�d��|�d��|�d��|�d��|�d��|�d��|�d��|�d��dS)Nza[i]za[i,]za[i, j]za[(*a,)]za[*a]za[b, *a]za[*a, c]za[b, *a, c]�	a[*a, *a]za[b, *a, *a]za[*a, b, *a]za[*a, *a, b]za[b, *a, *a, c]z	a[(a:=b)]za[(a:=b,c)]�a[()]za[i:j]za[:j]za[i:]za[i:j:k]za[:j:k]za[i::k]za[i:j,]z	a[i:j, k]rUrVs r	�test_sliceszUnparseTestCase.test_slices{s���� � ��(�(�(�� � ��)�)�)�� � ��+�+�+�� � ��,�,�,�� � ��)�)�)�� � ��,�,�,�� � ��,�,�,�� � ��/�/�/�� � ��-�-�-�� � ��0�0�0�� � ��0�0�0�� � ��0�0�0�� � �!2�3�3�3�� � ��-�-�-�� � ��/�/�/�� � ��)�)�)�� � ��*�*�*�� � ��)�)�)�� � ��)�)�)�� � ��,�,�,�� � ��+�+�+�� � ��+�+�+�� � ��+�+�+�� � ��-�-�-�-�-r3c�~�|�tjdtjd��������dS)N�X��id)�exc�cause)rAr�Raise�NamerVs r	�test_invalid_raisez"UnparseTestCase.test_invalid_raise�s8�����3�9��S�X��5E�5E�5E�F�F�F�G�G�G�G�Gr3c��|�tjtjd���tjd���g�����dS)N�testr�ru)�values)rAr�	JoinedStrr�rwrVs r	�test_invalid_fstring_valuez*UnparseTestCase.test_invalid_fstring_value�s]������M��H��'�'�'��L�v�.�.�.��
�
�
�	
�	
�	
�	
�	
r3c�|�|�tjtjd��������dS)Nz\\ru)rAr�FormattedValuerwrVs r	�test_invalid_fstring_backslashz.UnparseTestCase.test_invalid_fstring_backslash�s7�����3�-�C�L�v�4N�4N�4N�O�O�O�P�P�P�P�Pr3c�V�|�tjd�����dS)Nru)rAr�	YieldFromrVs r	�test_invalid_yield_fromz'UnparseTestCase.test_invalid_yield_from�s)�����3�=�t�4�4�4�5�5�5�5�5r3c�P�tjdtjd���g���}|�tj|��d��tjdtjd���gd���}|�tj|��d��dS)N�mod�x)�name)�module�nameszfrom mod import x)r�r��level)r�
ImportFrom�aliasrHr9)r,�trees  r	�test_import_from_level_nonez+UnparseTestCase.test_import_from_level_none�s����~�U�3�9�#�3F�3F�3F�2G�H�H�H�������T�*�*�,?�@�@�@��~�U�3�9�#�3F�3F�3F�2G�t�T�T�T�������T�*�*�,?�@�@�@�@�@r3c�F�d}|D]}|�d|�d����dS)N)
zthis ends with double quote"z"this includes a """triple quote"""�
z\r�	z\t�
z\nz	
\r	\t
\nz$""">>> content = """blabla""" <<<"""z	foo\n\x00z' \'\'\'""" ""\'\' \'u🐍⛎𩸽üéş^\\X\\BB⟿z'''rU)r,�
docstrings�	docstrings   r	�test_docstringszUnparseTestCase.test_docstrings�sG��
�
�$�	;�	;�I��$�$�%9�9�%9�%9�%9�:�:�:�:�	;�	;r3c��|�tjdd���d��|�tjdd���d��dS)N)�)rv�kindz(1,))r���z	(1, 2, 3))rIrrwrVs r	�test_constant_tuplesz$UnparseTestCase.test_constant_tuples�s]��� � ���D�t�!D�!D�!D�f�M�M�M�� � ��L�y�t�4�4�4�k�	
�	
�	
�	
�	
r3c�>�dD]}|�|d����dS)N)z	() -> intz(int, int) -> intz=(Callable[complex], More[Complex(call.to_typevar())]) -> None�	func_type)�moderU)r,�
function_types  r	�test_function_typez"UnparseTestCase.test_function_type�s?��
�	F�	F�M�

�$�$�]��$�E�E�E�E�	F�	Fr3c�>�dD]}|�|d����dS)N)z
a = 5 # type:za = 5 # type: intza = 5 # type: int and morez!def x(): # type: () -> None
	passz.def x(y): # type: (int) -> None and more
	passz'async def x(): # type: () -> None
	passz4async def x(y): # type: (int) -> None and more
	passzfor x in y: # type: int
	passz#async for x in y: # type: int
	passzwith x(): # type: int
	passz!async with x(): # type: int
	passT��
type_commentsrU�r,�	statements  r	�test_type_commentsz"UnparseTestCase.test_type_comments�s?��
�
	D�
	D�I�
�$�$�Y�d�$�C�C�C�C�
	D�
	Dr3c�>�dD]}|�|d����dS)N)
za = 5 # type: ignoreza = 5 # type: ignore and morezdef x(): # type: ignore
	passz'def x(y): # type: ignore and more
	passz#async def x(): # type: ignore
	passz-async def x(y): # type: ignore and more
	passz for x in y: # type: ignore
	passz&async for x in y: # type: ignore
	passzwith x(): # type: ignore
	passz$async with x(): # type: ignore
	passTr�rUr�s  r	�test_type_ignorez UnparseTestCase.test_type_ignore�s?��
�	D�	D�I�
�$�$�Y�d�$�C�C�C�C�	D�	Dr3N)2rNrOrPrWrYr]r_rarcrfrirlrnrrryr|r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rQr3r	rSrS�s�������
�
�
�*?�?�?�8�8�8�+�+�+�
0�0�0�,�,�,�+�+�+�-�-�-�6�6�6�1�1�1�-�-�-�
�
�
�2�2�2�(�(�(�4�4�4�9�9�9�A�A�A�2�2�2�.�.�.�-�-�-�+�+�+�:�:�:�4�4�4�
�
�
�:�:�:�@�@�@�2�2�2�M�M�M�(�(�(�5�5�5�:�:�:�5�5�5�.�.�.�*�*�*�1�1�1�B�B�B�
.�.�.�6H�H�H�
�
�
�Q�Q�Q�6�6�6�A�A�A�;�;�;�(
�
�
�F�F�F�D�D�D� 
D�
D�
D�
D�
Dr3rSc�N�eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
dS)
�CosmeticTestCasezATest if there are cosmetic issues caused by unnecessary additionsc��|�d��|�d��|�d��|�d��|�d��|�d��|�d��|�d��|�d	��|�d
��|�d��|�d��|�d
��|�d��|�d��|�d��|�d��|�d��|�d��|�d��|�d��|�d��|�d��|�d��|�d��|�d��|�d��|�d��dS)Nz(a := b)zawait xz
x if x else yzlambda x: xz1 + 1z	1 + 2 / 3z(1 + 2) / 3z(1 + 2) * 3 + 4 * (5 + 2)z(1 + 2) * 3 + 4 * (5 + 2) ** 2z~xzx and yz
x and y and zzx and (y and x)z(x and y) and zz(x ** y) ** z ** qzx >> yzx << yzx >> y and x >> zzx + y - z * q ^ t ** kzP * V if P and V else n * R * Tz"lambda P, V, n: P * V == n * R * Tzflag & (other | foo)z
not x == yzx == (not y)zyield xzyield from xzcall((yield x))zreturn x + (yield x)�rIrVs r	�test_simple_expressions_parensz/CosmeticTestCase.test_simple_expressions_parens�sD��� � ��,�,�,�� � ��+�+�+�� � ��1�1�1�� � ��/�/�/�� � ��)�)�)�� � ��-�-�-�� � ��/�/�/�� � �!<�=�=�=�� � �!A�B�B�B�� � ��&�&�&�� � ��+�+�+�� � ��1�1�1�� � �!2�3�3�3�� � �!2�3�3�3�� � �!5�6�6�6�� � ��*�*�*�� � ��*�*�*�� � �!4�5�5�5�� � �!9�:�:�:�� � �!B�C�C�C�� � �!E�F�F�F�� � �!7�8�8�8�� � ��.�.�.�� � ��0�0�0�� � ��+�+�+�� � ��0�0�0�� � �!2�3�3�3�� � �!7�8�8�8�8�8r3c��|�d��|�d��|�d��|�d��|�d��|�d��|�d��|�d��|�d	��|�d
��dS)Nzclass X:
    passzclass X(A):
    passzclass X(A, B, C, D):
    passzclass X(x=y):
    passzclass X(metaclass=z):
    passzclass X(x=y, z=d):
    passzclass X(A, x=y):
    passzclass X(A, **kw):
    passzclass X(*args):
    passz"class X(*args, **kwargs):
    passr�rVs r	�test_class_bases_and_keywordsz.CosmeticTestCase.test_class_bases_and_keywordss���� � �!5�6�6�6�� � �!8�9�9�9�� � �!A�B�B�B�� � �!:�;�;�;�� � �!B�C�C�C�� � �!?�@�@�@�� � �!=�>�>�>�� � �!>�?�?�?�� � �!<�=�=�=�� � �!F�G�G�G�G�Gr3c���|�d��|�d��|�d��|�d��|�d��dS)Nr[r\zf'{x}\n'zf'''{"""
"""}\n'''zf'''{f"""{x}
"""}\n'''r�rVs r	rWzCosmeticTestCase.test_fstringssp��� � �!R�S�S�S�� � �!6�7�7�7�� � ��-�-�-�� � �!=�>�>�>�� � �!A�B�B�B�B�Br3c�Z�d}tD] }|D]}|�|�|������!dS)N)
z"""simple doc string"""z7"""A more complex one
            with some newlines"""z,"""Foo bar baz

            empty newline"""z"""With some 	"""z"""Foo "bar" baz """z"""\r"""z""""""z	"""'''"""z"""''''''"""u""""🐍⛎𩸽üéş^\\X\\BB⟿"""z"""end in single 'quote'"""z'''end in double "quote"'''z#"""almost end in double "quote".""")�docstring_prefixesrI)r,r��prefixr�s    r	r�z CosmeticTestCase.test_docstrings%sa��
�
�&)�	A�	A�F�'�
A�
A�	��(�(�F�)?�I�)?�)?�@�@�@�@�
A�	A�	Ar3c��d}tD]7}|D]2}|�|��}|�|��|�|���3�8dS)N)za = """false"""z("""false""" + """unless its optimized"""z1 + 1
"""false"""z"f"""no, top level but f-fstring""")rr<rM)r,�docstrings_negativer�negative�srcs     r	�test_docstrings_negative_casesz/CosmeticTestCase.test_docstrings_negative_cases=sv��
��)�	3�	3�F�/�
3�
3�� �+��+�+���(�(��-�-�-��-�-�c�2�2�2�2�
3�	3�	3r3c�z�dD]}|�|�d����dD]}|�|�d����dS)N)�+�-�~�1)�notz 1r�)r,rs  r	�test_unary_op_factorz%CosmeticTestCase.test_unary_op_factorOsd��%�	3�	3�F��$�$��\�\�\�2�2�2�2��	4�	4�F��$�$��]�]�]�3�3�3�3�	4�	4r3c�R�|�d��|�d��|�d��|�d��|�d��|�d��|�d��|�d��|�d	��|�d
��|�d��|�d��|�d
��|�d��dS)Nr�za[1]za[1, 2]za[*a,]za[1, *a]za[*a, 2]za[1, *a, 2]r�za[1, *a, *a]za[*a, 1, *a]za[*a, *a, 1]za[1, *a, *a, 2]z
a[1:2, *a]z
a[*a, 1:2]r�rVs r	r�zCosmeticTestCase.test_slicesUs#��� � ��)�)�)�� � ��(�(�(�� � ��+�+�+�	
� � ��*�*�*�� � ��,�,�,�� � ��,�,�,�� � ��/�/�/�� � ��-�-�-�� � ��0�0�0�� � ��0�0�0�� � ��0�0�0�� � �!2�3�3�3�� � ��.�.�.�� � ��.�.�.�.�.r3c�V�|�d��|�d��|�d��|�d��|�d��|�d��|�d��|�d��dS)	Nzlambda: somethingzfour = lambda: 2 + 2zlambda x: x * 2zsquare = lambda n: n ** 2zlambda x, y: x + yzadd = lambda x, y: x + yz lambda x, y, /, z, q, *, u: Nonezlambda x, *y, **z: Noner�rVs r	�test_lambda_parametersz'CosmeticTestCase.test_lambda_parametershs���� � �!4�5�5�5�� � �!7�8�8�8�� � �!2�3�3�3�� � �!<�=�=�=�� � �!5�6�6�6�� � �!;�<�<�<�� � �!C�D�D�D�� � �!:�;�;�;�;�;r3c���dD]b\}}dD]Z}|�||���5|�|�|�����ddd��n#1swxYwY�[�cdS)N))zsingle assignmentz{target} = foo)zmultiple assignmentz{target} = {target} = bar)zfor loopzfor {target} in foo:
    pass)zasync for loopz#async for {target} in foo:
    pass)rza,za, bza, *b, cza, (b, c), dza, (b, c, d), *eza, (b, *c, d), eza, (b, *c, (d, e), f), gz[a]z[a, b]z
[a, *b, c]z[a, [b, c], d]z[a, [b, c, d], *e]z[a, [b, *c, d], e]z[a, [b, *c, [d, e], f], g]za, [b, c], dz[a, b, (c, d), (e, f)]za, b, [*c], d, e)�source_type�target)r)r7rI�format)r,r�sourcers    r	�test_star_expr_assign_targetz-CosmeticTestCase.test_star_expr_assign_targetrs���$
�	K�	K��K���
K�
K��(�\�\�k�&�\�I�I�K�K��,�,�V�]�]�&�]�-I�-I�J�J�J�K�K�K�K�K�K�K�K�K�K�K����K�K�K�K��)
K�
	K�	Ks�*A�A� Ac�,�|�d��|�d��|�d��|�d��|�d��|�d��|�d��dS)Nz() = []z[] = ()z'() = [a] = c, = [d] = e, f = () = g = hz
a = b = c = dza, b = c, d = e, f = gz[a, b] = [c, d] = [e, f] = gza, b = [c, d] = e, f = gr�rVs r	�%test_star_expr_assign_target_multiplez6CosmeticTestCase.test_star_expr_assign_target_multiple�s���� � ��+�+�+�� � ��+�+�+�� � �!J�K�K�K�� � ��1�1�1�� � �!9�:�:�:�� � �!?�@�@�@�� � �!;�<�<�<�<�<r3N)rNrOrP�__doc__r�rrWr�r	rr�rrrrQr3r	r�r��s�������K�K�9�9�9�<
H�
H�
H�C�C�C�A�A�A�03�3�3�$4�4�4�/�/�/�&<�<�<�K�K�K�<=�=�=�=�=r3r�c�x�eZdZdZeje��jdzZeedzfZ	hd�Z
dZed���Z
d�ZdS)�DirectoryTestCasez:Test roundtrip behaviour on all files in Lib and Lib/test.z..r�>�test_ast.py�
test_patma.py�test_syntax.py�test_compile.py�test_fstring.py�test_grammar.py�test_asdl_parser.pyNc����j��jSd��jD��}tj�d��sB�fd�|D��}tt
j|d����}t||z��}|�_|S)Nc��g|]H}|�d��D]0}|j�d���|�����1�IS)z*.py�bad)�globr��
startswith�resolve)�.0�	directory�items   r	�
<listcomp>z3DirectoryTestCase.files_to_test.<locals>.<listcomp>�si��
�
�
��!���v�.�.�
�
���9�'�'��.�.�	
��L�L�N�N�
�
�
�
r3�cpuc�0��h|]}|j�jv�|��SrQ)r��run_always_files)r,r.�clss  �r	�	<setcomp>z2DirectoryTestCase.files_to_test.<locals>.<setcomp>�s5���#F�#F�#F�D�#'�9��0D�#D�#D�$(�#D�#D�#Dr3�
)	�_files_to_test�test_directoriesr��support�is_resource_enabled�set�random�sampler)r3�items�tests_to_run_alwayss`  r	�
files_to_testzDirectoryTestCase.files_to_test�s������)��%�%�
�
� �1�
�
�
���|�/�/��6�6�		6�#F�#F�#F�#F�E�#F�#F�#F����
�e�R�0�0�1�1�E���!4�4�5�5�E�#����r3c�B�|���D]�}tjjr$t	d|�������|�|���5t|��}|�|��ddd��n#1swxYwY��dS)NzTesting )r)	r?r�r8�verbose�print�absoluter7r
r<)r,r.rs   r	�
test_fileszDirectoryTestCase.test_files�s����&�&�(�(�	1�	1�D��|�#�
4��2������2�2�3�3�3����t��,�,�
1�
1�$�T�*�*���(�(��0�0�0�
1�
1�
1�
1�
1�
1�
1�
1�
1�
1�
1����
1�
1�
1�
1��		1�	1s�"%B�B	�B	)rNrOrPr�pathlib�Path�__file__�parent�lib_dirr7r2r6�classmethodr?rDrQr3r	rr�s�������D�D��g�l�8�$�$�+�d�2�G���6�!1�2��)�)�)���N�����[��<1�1�1�1�1r3r�__main__)r�unittest�test.supportr�rEr;rrr
rerhr�r�r�r�r�r�r�r�r�r�r�r�TestCaser
rSr�rrN�mainrQr3r	�<module>rPs���D�D�������������
�
�
�
�����
�
�
�
�������
���	���
���	��	��������
��
��
��@.�@.�@.�@.�@.�(�#�@.�@.�@.�DiD�iD�iD�iD�iD�k�iD�iD�iD�X	f=�f=�f=�f=�f=�{�f=�f=�f=�T11�11�11�11�11��11�11�11�h�z����H�M�O�O�O�O�O��r3