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

�KeE���d�ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
mZddlm
Z
mZddlmZGd�dej��Ze��Gd�dej����ZGd	�d
ej��ZGd�dej��Zed
krej��dSdS)�N)�support)�
script_helper�requires_debug_ranges)�FakePathc�N�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zejdkrd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z!d�Z"d �Z#d!�Z$e%j&d"���Z'd#�Z(d$�Z)d%�Z*d&�Z+e%j&d'���Z,d(�Z-d)�Z.e%j&d*���Z/e%j&d+���Z0e%j&d,���Z1e%j&d-���Z2d.�Z3d/�Z4d0�Z5e%j&d1���Z6d2�Z7d3�Z8d4�Z9d5�Z:d6�Z;d7�Z<d8�Z=d9�Z>d:�Z?d;�Z@d<�ZAd=�ZBd>�ZCd?�ZDd@S)A�
TestSpecificsc�(�t|dd��dS)Nz<single>�single��compile��self�sources  �;/usr/local/apps/python3/lib/python3.11/test/test_compile.py�compile_singlezTestSpecifics.compile_singles����
�H�-�-�-�-�-�c�H�|�t|j|��dS�N)�assertRaises�SyntaxErrorrr
s  r�assertInvalidSinglez!TestSpecifics.assertInvalidSingles#�����+�t�':�F�C�C�C�C�Crc�J�tddd��tddd��dS)N�hi�<test>�execzhi
r�rs r�test_no_ending_newlinez$TestSpecifics.test_no_ending_newlines,����h��'�'�'����&�)�)�)�)�)rc�(�tddd��dS)N�rrrrs r�
test_emptyzTestSpecifics.test_emptys����H�f�%�%�%�%�%rc��tddd��tddd��tddd��tddd��dS)Nz
rr�
zhi
stuff
def f():
    pass
z(this_is
really_old_mac
def f():
    passrrs r�test_other_newlinesz!TestSpecifics.test_other_newlinessR�����&�)�)�)���h��'�'�'��5�x��H�H�H��=�x��P�P�P�P�Prc���|�ttddd��ddl}|j}t|dd��|�d|��t|d|��dS)Nz
__debug__ = 1�?r
r�	__debug__�sureT)rrr�builtinsr&�setattr�assertEqual)rr(�prevs   r�test_debug_assignmentz#TestSpecifics.test_debug_assignment%so�����+�w���h�O�O�O������!����+�v�.�.�.�����D�)�)�)���+�t�,�,�,�,�,rc��|�ttd��|�ttd��|�ttd��|�ttd��|�ttd��|�ttd��dS)Nzlambda a,a:0zlambda a,a=1:0zlambda a=1,a=1:0zdef f(a, a): passzdef f(a = 0, a = 1): pass�def f(a): global a; a = 1)rr�evalrrs r�test_argument_handlingz$TestSpecifics.test_argument_handling.s������+�t�^�<�<�<����+�t�-=�>�>�>����+�t�-?�@�@�@����+�t�-@�A�A�A����+�t�-H�I�I�I����+�t�-H�I�I�I�I�Irc�L�|�ttddd��dS)Nz1+*3�filenamer�rrrrs r�test_syntax_errorzTestSpecifics.test_syntax_error7s$�����+�w��
�F�K�K�K�K�Krc�L�|�ttddd��dS)Nz	f(None=1)�<string>rr3rs r�test_none_keyword_argz#TestSpecifics.test_none_keyword_arg:s$�����+�w��Z��P�P�P�P�Prc�H�|�ttd��dS)Nr.�rrrrs r�test_duplicate_global_localz)TestSpecifics.test_duplicate_global_local=s!�����+�t�-H�I�I�I�I�Irc��Gd�d��}|��}t��}td||��|�|jd��	td||��|�d��n#t
$rYnwxYwtd||��|�|jdt
d	��f��td
||��|�|jd|f��td||��|�|jd|f��|�ttd|��Gd�d
��}|��}|�ttd||��Gd�dt��}|��}td||��|�|dd��dS)Nc�$�eZdZdZd�Zd�Zd�ZdS)�BTestSpecifics.test_exec_with_general_mapping_for_locals.<locals>.Mz9Test mapping interface versus possible calls from eval().c� �|dkrdSt��N�a�)�KeyError�r�keys  r�__getitem__zNTestSpecifics.test_exec_with_general_mapping_for_locals.<locals>.M.__getitem__Ds���#�:�:��2��rc��||f|_dSr)�results�rrD�values   r�__setitem__zNTestSpecifics.test_exec_with_general_mapping_for_locals.<locals>.M.__setitem__Hs�� #�U�|����rc� �td��S)N�xyz)�listrs r�keyszGTestSpecifics.test_exec_with_general_mapping_for_locals.<locals>.M.keysJs���E�{�{�"rN)�__name__�
__module__�__qualname__�__doc__rErJrN�rr�Mr=BsG������G�G�
�
�
�
,�
,�
,�
#�
#�
#�
#�
#rrTzz = a)�zrAzz = bzDid not detect a KeyErrorz	z = dir()rUrLz
z = globals()zz = locals()c��eZdZdZdS)�BTestSpecifics.test_exec_with_general_mapping_for_locals.<locals>.AzNon-mappingN)rOrPrQrRrSrr�ArW_s�������M��DrrXc��eZdZd�ZdS)�BTestSpecifics.test_exec_with_general_mapping_for_locals.<locals>.Dc�H�|dkrdSt�||��Sr?)�dictrErCs  rrEzNTestSpecifics.test_exec_with_general_mapping_for_locals.<locals>.D.__getitem__gs&���#�:�:��2��'�'��c�2�2�2rN)rOrPrQrErSrr�DrZfs#������
3�
3�
3�
3�
3rr]rA)
�globalsrr*rG�fail�	NameErrorrMr�	TypeErrorr\)rrT�m�grXr]�ds       r�)test_exec_with_general_mapping_for_localsz7TestSpecifics.test_exec_with_general_mapping_for_locals@s"��		#�		#�		#�		#�		#�		#�		#�		#�
�A�C�C���I�I���W�a����������I�.�.�.�	3���!�Q����
�I�I�1�2�2�2�2���	�	�	��D�	����	
�[�!�Q���������S�$�u�+�+�$6�7�7�7��_�a��#�#�#������S�!�H�-�-�-��^�Q��"�"�"������S�!�H�-�-�-����)�T�7�A�6�6�6�	�	�	�	�	�	�	�	�
�A�C�C�����)�T�7�A�q�9�9�9�	3�	3�	3�	3�	3��	3�	3�	3�

�A�C�C���W�a���������3���$�$�$�$�$s�A:�:
B�Bc���ttj��dz��}dd|zz}i}d|fdzz}t||��|�|dd��d��dS)	Ng@z	x = x or z-xz�
def f(x):
    %s
    %s
    %s
    %s
    %s
    %s
    %s
    %s
    %s
    %s
    # the expressions above have no effect, x == argument
    while x:
        x -= 1
        # EXTENDED_ARG/JUMP_ABSOLUTE here
    return x
�
�f�r)�int�sys�getrecursionlimitrr*)r�repeat�longexprrc�codes     r�test_extended_argzTestSpecifics.test_extended_argos~���S�*�,�,�s�2�3�3������.�����"	�{�2�~�#��$	
�T�1�
�
�
������3�����A�&�&�&�&�&rc�H�|�ttd��dS)Nzdef f(a=1, b): passr9rs r�test_argument_orderz!TestSpecifics.test_argument_order�s!�����+�t�-B�C�C�C�C�Crc��|�ttd��|�ttd��|�ttd��|�ttd��dS)N�2ez2.0e+z1e-z3-4e/21)rrr/rs r�test_float_literalsz!TestSpecifics.test_float_literals�sh�����+�t�T�2�2�2����+�t�W�5�5�5����+�t�U�3�3�3����+�t�Y�7�7�7�7�7rc�,�d}t|dd��dS)Nz
if 1:
    if 2:
        passr6rr�r�ss  r�test_indentationzTestSpecifics.test_indentation�s#��
��	��:�v�&�&�&�&�&rc�b�d�dgdzdgz��}t|dd��}|�|jd��t	|�����}|�|dd	d��|�|dd	d
��dS)Nr�
��spam�fnr�r�i)�joinrr*�co_firstlinenorM�co_lines)r�s256�co�liness    r�test_leading_newlinesz#TestSpecifics.test_leading_newlines�s����w�w��v��|�v�h�.�/�/��
�T�4��
(�
(������*�A�.�.�.��R�[�[�]�]�#�#������q��!��a�(�(�(�����q��!��c�*�*�*�*�*rc���dD]#}|�tt|���$|�td��d��|�td��d��|�td��d��|�td��d��|�td��d	��|�td
��d��|�td��d��|�td
��d��|�td��d��|�td��d��|�td��d��|�td��d��|�td��d��|�td��d��|�td��d��|�td��d��|�td��d��|�td��d��|�td��d��|�td��d ��|�td!��d"��|�td#��d$��|�td%��d&��|�td'��d(��dS))N)�077787�0xjz0x.�0e�090000000000000�080000000000000�000000000000009�000000000000008�0b42�0BADCAFE�0o123456789z0b1.1z0o4.2�0b101j�0o153j�0b100e1�0o777e1�0777�000777�000000000000007�0xff�z0777.i	z0777.0�8000000000000000000000000000000000000000000000000000777e0�0777e1iZ�0e0rz	0000e-012z09.5g#@�0777jyH�@�000�00j�z00.0�0e3z090000000000000.g聰v�Bz&090000000000000.0000000000000000000000�090000000000000e0z090000000000000e-0�090000000000000jy聰v�Bz000000000000008.g @z000000000000009.g"@�0b101010�*z-0b000000000010����0o777i�z
-0o0000010i����)rrr/r*)r�args  r�!test_literals_with_leading_zeroesz/TestSpecifics.test_literals_with_leading_zeroes�s���1�	6�	6�C�

���k�4��5�5�5�5�����f���s�+�+�+�����g����,�,�,�����h����-�-�-�����X�Y�Y�[^�_�_�_�����h����.�.�.�����e���a�(�(�(�����k�*�*�A�.�.�.�����f���s�+�+�+�����g����-�-�-�����e���a�(�(�(�����e���b�)�)�)�����f���q�)�)�)�����e���a�(�(�(�����0�1�1�?�C�C�C�����F�G�G��Y�Y�Y�����1�2�2�O�D�D�D�����2�3�3�_�E�E�E�����0�1�1�?�C�C�C�����0�1�1�2�6�6�6�����0�1�1�2�6�6�6�����j�)�)�2�.�.�.�����/�0�0�"�5�5�5�����g����,�,�,�����l�+�+�R�0�0�0�0�0rc�L�d}dd|z�d�}tj|��5t|dd��ddd��n#1swxYwYtj|dz
��5|�t��5}t|dd��ddd��n#1swxYwY|j}|�|jd	��|�d
t|����|�dt|����ddd��dS#1swxYwYdS)Ni�za = 1
b = 2
c = �3z
d = 4z<long_int_pass>rrz<long_int_fail>�zExceeds the limit z Consider hexadecimal )
r�adjust_int_max_str_digitsrrr�	exceptionr*�lineno�assertIn�str)r�nr�err_ctx�excs     r�test_int_literals_too_longz(TestSpecifics.test_int_literals_too_long�s�����4�c�!�e�4�4�4��
�
.�q�
1�
1�	7�	7��F�-�v�6�6�6�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7����	7�	7�	7�	7�
�
.�q��s�
3�
3�	>�	>��"�"�;�/�/�
;�7��� 1�6�:�:�:�
;�
;�
;�
;�
;�
;�
;�
;�
;�
;�
;����
;�
;�
;�
;��#�C����S�Z��+�+�+��M�M�.��C���9�9�9��M�M�2�C��H�H�=�=�=�
	>�	>�	>�	>�	>�	>�	>�	>�	>�	>�	>�	>����	>�	>�	>�	>�	>�	>sF�>�A�A� D�;B�
D�B	�D� B	�!A+D�D� Dc��tjdkrLd}|�t|��d��|�td|z��d��nqtjdkrLd}|�t|��d��|�td|z��d	��n|�d
��|�tdtjdz
z��t��|�tdtjd
z
z��t��dS)Ni����
0xffffffffl���-l������������0xffffffffffffffffl����l��������z)How many bits *does* this machine have???z%srr�)rk�maxsizer*r/r_�assertIsInstancerj)r�all_one_bitss  r�test_unary_minuszTestSpecifics.test_unary_minus�s$���;�*�$�$�'�L����T�,�/�/��<�<�<����T�#��"4�5�5�{�C�C�C�C�
�[�/�
/�
/�/�L����T�,�/�/�1E�F�F�F����T�#��"4�5�5�7L�M�M�M�M��I�I�A�B�B�B�	
���d�4�C�K�<�!�+;�#<�=�=�s�C�C�C����d�4�C�K�<�!�+;�#<�=�=�s�C�C�C�C�Crr�c��d}d}d}d}d}d}d}d}|jjjD]}	|	�|�|	t��� dS)	Nll����ll����ll����r�l��������)�test_32_63_bit_values�__code__�	co_constsr�rj)
rr@�b�crd�erhrc�h�variables
          rr�z#TestSpecifics.test_32_63_bit_values�si���A��A� �A� �A�$�A�$�A�$�A�$�A� �6�?�I�
9�
9���'��)�)�(�C�8�8�8��
9�
9rc�h�d\}}|�|d��|�|d��dS)N)r���)r�rrr��r*)r�i�js   r�test_sequence_unpacking_errorz+TestSpecifics.test_sequence_unpacking_error�s=�����!�����A��������B�����rc��gd�}|D]M}|dz
}|�tt|dd��|�tt|dd���NdS)N)zNone = 0z	None += 0z__builtins__.None = 0zdef None(): passzclass None: passz(a, None) = 0, 0zfor None in range(10): passzdef f(None): passzimport Nonezimport x as Nonezfrom x import Nonezfrom x import y as Noner{�tmpr
rr3)r�stmts�stmts   r�test_none_assignmentz"TestSpecifics.test_none_assignment�sv��

�

�

���	I�	I�D��D�L�D����k�7�D�%��J�J�J����k�7�D�%��H�H�H�H�	I�	Irc��gd�}gd�}|D]}t|dd���|D]%}|�tt|dd���&dS)N)z
import syszimport os, syszimport os as barzimport os.path as barz0from __future__ import nested_scopes, generatorsz2from __future__ import (nested_scopes,
generators)z3from __future__ import (nested_scopes,
generators,)z%from sys import stdin, stderr, stdoutz'from sys import (stdin, stderr,
stdout)z(from sys import (stdin, stderr,
stdout,)z(from sys import (stdin
, stderr, stdout)z)from sys import (stdin
, stderr, stdout,)z7from sys import stdin as si, stdout as so, stderr as sez9from sys import (stdin as si, stdout as so, stderr as se)z:from sys import (stdin as si, stdout as so, stderr as se,))zimport (os, sys)zimport (os), (sys)zimport ((os), (sys))zimport (syszimport sys)zimport (os,)zimport os As barzimport os.path a barzfrom sys import stdin As stdoutzfrom sys import stdin a stdoutzfrom (sys) import stdinz%from __future__ import (nested_scopesz%from __future__ import nested_scopes)z0from __future__ import nested_scopes,
generatorszfrom sys import (stdinzfrom sys import stdin)z%from sys import stdin, stdout,
stderrzfrom sys import stdin sizfrom sys import stdin,zfrom sys import (*)z(from sys import (stdin,, stdout, stderr)z from sys import (stdin, stdout),r�r)rrr)r�succeedr_r�s    r�test_importzTestSpecifics.test_imports�������"����0�	)�	)�D��D�%��(�(�(�(��	I�	I�D����k�7�D�%��H�H�H�H�	I�	Irc��d�}|��\}}|�t|j��t|j����dS)Nc��dd�}dd�}||fS)Nrc��|SrrS��xs r�<lambda>zITestSpecifics.test_for_distinct_code_objects.<locals>.f.<locals>.<lambda>C���Q�rr�c��|SrrSr�s rr�zITestSpecifics.test_for_distinct_code_objects.<locals>.f.<locals>.<lambda>Dr�r�r)r�rS)�f1�f2s  rrhz7TestSpecifics.test_for_distinct_code_objects.<locals>.fBs�����B����B��r�6�Mr)�assertNotEqual�idr�)rrhr�r�s    r�test_for_distinct_code_objectsz,TestSpecifics.test_for_distinct_code_objects@sN��	�	�	�������B����B�r�{�O�O�R���_�_�=�=�=�=�=rc�@�d�}|�|j��dS)Nc��dS)N�foorSrSrrr�z/TestSpecifics.test_lambda_doc.<locals>.<lambda>Js��E�r)�assertIsNonerR)r�ls  r�test_lambda_doczTestSpecifics.test_lambda_docIs%���M�����!�)�$�$�$�$�$rc���d}|�tt|dd��d}t|dd��|�t	|��d��d}|�t	|��d��d}|�t	|��d��d	}|�t	|��d��d
}|�t	|��d��d}|�t	|��d��d
}|�t	|��d��d}|�t	|��d��dS)Ns## -*- coding: badencoding -*-
pass
r�ru%# -*- coding: badencoding -*-
"¤"
u¤u"¤"
s"¤"
�¤s# -*- coding: latin1 -*-
"¤"
s# -*- coding: utf-8 -*-
"¤"
s"# -*- coding: iso8859-15 -*-
"¤"
u€u*"""\
# -*- coding: iso8859-15 -*-
¤"""
u!# -*- coding: iso8859-15 -*-
¤s("""\
# -*- coding: iso8859-15 -*-
¤"""
u# -*- coding: iso8859-15 -*-
¤)rrrr*r/�rros  r�
test_encodingzTestSpecifics.test_encodingMsE��7�����+�w��e�V�D�D�D�<����e�V�$�$�$�����d���Z�0�0�0�������d���Z�0�0�0�������d���V�,�,�,�8������d���Z�0�0�0�7������d���V�,�,�,�<������d���\�2�2�2�C������d���%M�N�N�N�D������d���%I�J�J�J�J�Jrc�6�Gd�dt��}|��}d|d<|�|dd��|dxxdz
cc<|�|dd��|d=|�d|��d|d<|�|dd��|dxxdz
cc<|�|dd��|d=|�d|��d|dd�<|�|dd�d��|dd�xxdz
cc<|�|dd�d��|dd�=|�tdd��|��d|dd�dd�f<|�|dd�dd�fd��|dd�dd�fxxdz
cc<|�|dd�dd�fd��|dd�dd�f=|�tdd��tdd��f|��d|ddd�<|�|ddd�d��|ddd�xxdz
cc<|�|ddd�d��|ddd�=|�tddd��|��d|ddd�ddd�f<|�|ddd�ddd�fd��|ddd�ddd�fxxdz
cc<|�|ddd�ddd�fd��|ddd�ddd�f=|�tddd��tddd��f|��d|d<|�|dd��|dxxdz
cc<|�|dd��|d=|�t|��d|d<|�|dd��|dxxdz
cc<|�|dd��|d=|�ttf|��dS)	Nc�,�eZdZd�Zd�Zd�Zd�Zd�ZdS)�.TestSpecifics.test_subscripts.<locals>.str_mapc��i|_dSr)�datars r�__init__z7TestSpecifics.test_subscripts.<locals>.str_map.__init__fs
����	�	�	rc�6�|jt|��Sr�r�r�rCs  rrEz:TestSpecifics.test_subscripts.<locals>.str_map.__getitem__hs���y��S���*�*rc�4�||jt|��<dSrr�rHs   rrJz:TestSpecifics.test_subscripts.<locals>.str_map.__setitem__js��&+��	�#�c�(�(�#�#�#rc�0�|jt|��=dSrr�rCs  r�__delitem__z:TestSpecifics.test_subscripts.<locals>.str_map.__delitem__ls���I�c�#�h�h�'�'�'rc�.�t|��|jvSr)r�r�rCs  r�__contains__z;TestSpecifics.test_subscripts.<locals>.str_map.__contains__ns���3�x�x�4�9�,�,rN)rOrPrQr�rErJr�r�rSrr�str_mapr�es_������
�
�
�
+�
+�
+�
,�
,�
,�
(�
(�
(�
-�
-�
-�
-�
-rr�rr�)rrr�.)..)�objectr*�assertNotIn�slice�Ellipsis)rr�rds   r�test_subscriptszTestSpecifics.test_subscriptsbs���
	-�
	-�
	-�
	-�
	-�f�
	-�
	-�
	-�
�G�I�I����!������1��q�!�!�!�	�!�����	��������1��q�!�!�!�
�a�D�����A������$������4��!�$�$�$�	�$����1���������4��!�$�$�$�
�d�G������#�#�#���!�A�#������1�Q�3���#�#�#�	�!�A�#����!���������1�Q�3���#�#�#�
�a��c�F�����q�!���a�(�(�(���!�A�#�q��s�(������1�Q�3��!��8��a�(�(�(�	�!�A�#�q��s�(����q���������1�Q�3��!��8��a�(�(�(�
�a��c�1�Q�3�h�K����%��1�+�+�u�Q��{�{�3�Q�7�7�7���!�A�a�%������1�Q�q�5��1�%�%�%�	�!�A�a�%����A�
��������1�Q�q�5��1�%�%�%�
�a��!�e�H�����q�!�Q����+�+�+���!�A�a�%��1�Q��,������1�Q�q�5�!�A�a�%�<��!�,�,�,�	�!�A�a�%��1�Q��,����1���������1�Q�q�5�!�A�a�%�<��!�,�,�,�
�a��!�e�Q�q��U�l�O����%��1�a�.�.�%��1�a�.�.�9�1�=�=�=���#������3���#�#�#�	�#����!���������3���#�#�#�
�c�F�����1�%�%�%���(������8��a�(�(�(�	�(����q���������8��a�(�(�(�
�h�K����(�H�-�q�1�1�1�1�1rc��d}|d�d�td��D����z}t|dd��dS)Nzdef f(%s): pass�, c3�$K�|]}d||fzV��dS)za%d:%dNrS��.0r�s  r�	<genexpr>z6TestSpecifics.test_annotation_limit.<locals>.<genexpr>�s+����<�<�A�x�1�Q�%�'�<�<�<�<�<�<r�,r%r�r��rangerrws  r�test_annotation_limitz#TestSpecifics.test_annotation_limit�sJ����	�T�Y�Y�<�<��s���<�<�<�
<�
<�<����3������rc�H�Gd�d��}|�d|jjj��|�d|jjj��|�d|jjj��|�d|jjj��dS)Nc��eZdZd�ZdS)�&TestSpecifics.test_mangling.<locals>.Ac��d}d}ddl}ddl}dS)Nrr�r)�_A__mangled_mod�__package__.module)�_A__mangled�__not_mangled__r�__package__s    rrhz(TestSpecifics.test_mangling.<locals>.A.f�s*���	�"#��$�$�$�$�)�)�)�)�)�)rN)rOrPrQrhrSrrrXr�s#������
*�
*�
*�
*�
*rrXrrrr)r�rhr��co_varnames)rrXs  r�
test_manglingzTestSpecifics.test_mangling�s���	*�	*�	*�	*�	*�	*�	*�	*�	
�
�
�m�Q�S�\�%=�>�>�>��
�
�'����)A�B�B�B��
�
�'����)A�B�B�B��
�
�m�Q�S�\�%=�>�>�>�>�>rc��t}|����d��r
|dd�}t|d���5}|���}ddd��n#1swxYwYddgddgd	d
gddg||gg}|D]�\}}t|d
|zd��}t|d|zdtj��}|�t|��tj
k��t|d|zd��}|�||��|�|jd|z����tdddtj��}|�
tt
|dd��|�
tt
t
j��dd��t
j
��}t
j��g|_|�
tt
|dd��dS)N�pycr�zutf-8)�encodingz<assign>zx = 5z	<ifblock>zif True:
    pass
z
<forblock>z!for n in [1, 2, 3]:
    print(n)
z	<deffunc>zdef foo():
    pass
foo()
z%s1rz%s2z%s3zprint(1)r6z<ast>r/)�__file__�lower�endswith�open�readr�_ast�
PyCF_ONLY_AST�
assertTrue�type�Moduler*�co_filenamerra�If�BoolOp�body)	r�fnamerh�	fcontents�sample_codero�co1�ast�co2s	         r�test_compile_astzTestSpecifics.test_compile_ast�s�����;�;�=�=�!�!�%�(�(�	��#�2�#�J�E�
�%�'�
*�
*�
*�	!�a������I�	!�	!�	!�	!�	!�	!�	!�	!�	!�	!�	!����	!�	!�	!�	!���!�
�4�5�
�D�E�
�=�>�
�I��
��'�	=�	=�K�E�4��$���
�v�6�6�C��$���
�v�t�7I�J�J�C��O�O�D��I�I���4�5�5�5��#�u�u�}�f�5�5�C����S�#�&�&�&����S�_�e�e�m�<�<�<�<��j�*�f�d�6H�I�I�����)�W�c�7�F�C�C�C�	
���)�W�d�g�i�i��&�I�I�I��k�m�m���K�M�M�?������)�W�c�7�F�C�C�C�C�Cs�
A+�+A/�2A/c���d��fd�}|��|��|��|��i}|�|ddd���dS)Nrc����dz
��S�NrrS)r�s�rrhz3TestSpecifics.test_dict_evaluation_order.<locals>.f�s���
��F�A��Hrr��)rr�r�)rrhrdr�s   @r�test_dict_evaluation_orderz(TestSpecifics.test_dict_evaluation_order�sk���
��	�	�	�	�	�
�Q�S�S�!�!�#�#�q�q�s�s�A�A�C�C� �������a�L�L�)�)�)�)�)rc���dD].}td|d��}|�|jd���/td��t	d��fD]`}|�t��5td|d��}ddd��n#1swxYwY|�|jd���a|�ttdtd��d��dS)N)�file.py�file.py�passrr6r7)
rr*r%�	bytearray�
memoryview�assertWarns�DeprecationWarningrrarM)rr2ros   r�test_compile_filenamez#TestSpecifics.test_compile_filename�s#��-�	:�	:�H��6�8�V�4�4�D����T�-�y�9�9�9�9�!�*�-�-�z�*�/E�/E�E�	:�	:�H��!�!�"4�5�5�
9�
9��v�x��8�8��
9�
9�
9�
9�
9�
9�
9�
9�
9�
9�
9����
9�
9�
9�
9����T�-�y�9�9�9�9����)�W�f�d�:�6F�6F��O�O�O�O�Os�,B
�
B	�B	c��d}t|dd��}|jD]<}t|tj��r |�|j|j���=dS)Nzdef f(): pass
def g(): pass�myfiler)rr��
isinstance�types�CodeType�assertIsr%)rrxr��objs    r�test_same_filename_usedz%TestSpecifics.test_same_filename_used�s`��.���A�x��(�(���;�	>�	>�C��#�u�~�.�.�
>��
�
�c�o�q�}�=�=�=��	>�	>rc�|�|�d��|�d��|�d��|�d��|�d��|�d��|�d��|�d��|�d	��|�d
��|�d��|�d��|�d
��|�d��|�d��dS)Nz1 + 2z
1 + 2z1 + 2
z1 + 2

z1 + 2		
z1 + 2		
        z1 + 2 # one plus twoz1; 2zimport sys; syszdef f():
   passzwhile False:
   passz
if x:
   f(x)zif x:
   f(x)
else:
   g(x)zclass T:
   passzc = '''
a=1
b=2
c=3
''')rrs r�test_single_statementz#TestSpecifics.test_single_statement�s=�����G�$�$�$����I�&�&�&����I�&�&�&����K�(�(�(����M�*�*�*����1�2�2�2����2�3�3�3����F�#�#�#����-�.�.�.����/�0�0�0����3�4�4�4����,�-�-�-����<�=�=�=����/�0�0�0����9�:�:�:�:�:rc��|�d��|�d��|�d��|�d��|�d��|�d��|�d��|�d��|�d	��dS)
Nz1
2z
def f(): passza = 13
b = 187zdel x
del yzf()
g()zf()
# blah
blah()zf()
xy # blah
blah()zx = 5 # comment
x = 6
zc = '''
d=1
'''
a = 1

b = 2
)rrs r�test_bad_single_statementz'TestSpecifics.test_bad_single_statements���� � ��(�(�(�� � ��1�1�1�� � �!2�3�3�3�� � ��0�0�0�� � ��,�,�,�� � �!6�7�7�7�� � �!9�:�:�:�� � �!;�<�<�<�� � �!F�G�G�G�G�Grc��d}tj��5}tj�|d��}t|d��5}|�|��ddd��n#1swxYwYtj|��d}ddd��n#1swxYwY|�	d|j
��dS)Ns0000
00000000000

�
�bad.py�wbr�	Non-UTF-8��tempfile�TemporaryDirectory�os�pathr�r�writer�run_python_until_endr��err�r�src�tmpdr~�fp�ress      r�"test_particularly_evil_undecodablez0TestSpecifics.test_particularly_evil_undecodables��4��
�
(�
*�
*�	<�d�����d�H�-�-�B��b�$���
�2�����
�
�
�
�
�
�
�
�
�
�
�
�
�
����
�
�
�
��4�R�8�8��;�C�		<�	<�	<�	<�	<�	<�	<�	<�	<�	<�	<����	<�	<�	<�	<�
	
�
�
�l�C�G�,�,�,�,�,�5�1B�A)�B�)A-	�-B�0A-	�1B�B�!Bc��d}tj��5}tj�|d��}t|d��5}|�|��ddd��n#1swxYwYtj|��d}ddd��n#1swxYwY|�	d|j
��dS)Ns#
#�
rKrLrrMrNrVs      r�$test_yet_more_evil_still_undecodablez2TestSpecifics.test_yet_more_evil_still_undecodable#s����
�
(�
*�
*�	<�d�����d�H�-�-�B��b�$���
�2�����
�
�
�
�
�
�
�
�
�
�
�
�
�
����
�
�
�
��4�R�8�8��;�C�		<�	<�	<�	<�	<�	<�	<�	<�	<�	<�	<����	<�	<�	<�	<�
	
�
�
�l�C�G�,�,�,�,�,r\c������tj��dz�tj��dz�t�dz���d����fd�	}|dd��|dd��|dd	��|dd
��dS)Nr�r	g�?r
c���||�
zz}t|d|����fD]f}|||zz}d�|||��}�	�t|���5t|d|��ddd��n#1swxYwY�gdS)NrzCompiling ({!r} + {!r} * {}))�msg)r�formatr�RecursionError)�prefix�repeated�mode�	expect_ok�depth�broken�details�crash_depth�
fail_depthr�
success_depths       ����r�check_limitz@TestSpecifics.test_compiler_recursion_limit.<locals>.check_limit:s������M�!9�9�I��I�x��.�.�.�$�k�2�
4�
4���(�U�"2�2��8�?�?�"�H�e�5�5���&�&�~�7�&�C�C�4�4��F�H�d�3�3�3�4�4�4�4�4�4�4�4�4�4�4����4�4�4�4��	
4�
4s�A:�:A>	�A>	r@z()z.bz[0]z*a)r
)rkrlrj)rrnrkrlrms` @@@r�test_compiler_recursion_limitz+TestSpecifics.test_compiler_recursion_limit-s��������*�,�,�q�0�
��+�-�-��3���J��-�.�.�
�	4�	4�	4�	4�	4�	4�	4�	4�	4�	��C�������C�������C�������C������rc���|�td��5tddd��ddd��n#1swxYwY|�td��5ttd��dd��ddd��n#1swxYwYttd��dd�dd��}|�t|��d��ttd	��dd�dd��}|�t|��d��ttd
��dd�dd��}|�t|��d��|�ttd	��dd���d��t
��}ttd��dd�|��|�|dd
��dS)Nzcannot contain nullz123�<dummy>r/s123rr��s1234s$23$sax = 123r�rA)�assertRaisesRegex�
ValueErrorrr:r*r/r\r)rro�	namespaces   r�test_null_terminatedz"TestSpecifics.test_null_terminatedLs=���
#�
#�J�0E�
F�
F�	2�	2��I�y�&�1�1�1�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2����	2�	2�	2�	2�
�
#�
#�J�0E�
F�
F�	?�	?��J�z�*�*�I�v�>�>�>�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?����	?�	?�	?�	?��z�*�-�-�a��d�3�Y��G�G������d���R�(�(�(��z�'�*�*�1�R�4�0�)�V�D�D������d���R�(�(�(��z�'�*�*�1�R�4�0�)�V�D�D������d���R�(�(�(�	
����j��1�1�!�B�$�7�8�8�"�=�=�=��F�F�	��Z��
$�
$�Q�r�T�
*�I�6�6�6�����3���,�,�,�,�,s�:�>�>� B�B�Bc��|jjD]%}t|��t|��krdS�&|�d|�d|jj����dS)Nzunable to find constant z in )r�r��reprr_)r�func�expected�consts    r�check_constantzTestSpecifics.check_constant`ss���]�,�	=�	=�E��E�{�{�d�8�n�n�,�,����-�
�I�I�I�!���4�=�#:�#:�<�
=�
=�
=�
=�
=rc����fd�}|d��|d��|d��|d��|d��d�d�}}��|jj|jj����|t����t
|����t
t����d�d	�}}d
�}��|jjd|jjdd����tt|jjd����|jjd��d�d
�}}��|jj|jj����|tdh������
|d����dS)Nc�L��i}d|�d|��}t||��|d}|d}��|jj|jj����||����t
|����t
|����dS�Nzf1, f2 = lambda: z
, lambda: r�r�)rrCr�r�r|r*rx)r{�nsror�r�rs     �r�check_same_constantz?TestSpecifics.test_merge_constants.<locals>.check_same_constantos�����B�B�8=���u�u�E�D���r�N�N�N��D��B��D��B��M�M�"�+�/���1F�G�G�G�����E�*�*�*����T�"�"�$�$�Z�Z��e���5�5�5�5�5rr�sabc�abcc��dS�N.rSrSrrr�z4TestSpecifics.test_merge_constants.<locals>.<lambda>�s���rc��dSr�rSrSrrr�z4TestSpecifics.test_merge_constants.<locals>.<lambda>�s��c�rc��dS)N�
not a namerSrSrrr�z4TestSpecifics.test_merge_constants.<locals>.<lambda>�s���rc��dS)N�r�rSrSrrr�z4TestSpecifics.test_merge_constants.<locals>.<lambda>�s���rc�
�|dvS)N>r�rSr�s rr�z4TestSpecifics.test_merge_constants.<locals>.<lambda>�s��q�-�-�rrc�
�|dvS�N>rrSr�s rr�z4TestSpecifics.test_merge_constants.<locals>.<lambda>��
��1��8�rc�
�|dvSr�rSr�s rr�z4TestSpecifics.test_merge_constants.<locals>.<lambda>�s
��q�C�x�r)rCr�r�r|rr*rx�next�iter�	frozensetr")rr�r�r��f3s`    r�test_merge_constantsz"TestSpecifics.test_merge_constantsjs����
	6�	6�	6�	6�	6�	��D�!�!�!���A������C� � � ���F�#�#�#���E�"�"�"���k�k�B���
�
�b�k�+�R�[�-B�C�C�C����B��)�)�)�����b�b�d�d���T�(�^�^�4�4�4�&�%�'>�'>�B��
-�
-���
�
�b�k�+�A�.��k�+�A�.�q�1�	3�	3�	3��
�
�d�4��� 5�a� 8�9�9�:�:��k�+�A�.�	0�	0�	0�
$�#�%7�%7�B���
�
�b�k�+�R�[�-B�C�C�C����B�	�1�#���/�/�/������1�������rc�f�d�}d�}|�|jj|jj��dS)Nc��|jjSr)�yrUr�s rr�z5TestSpecifics.test_merge_code_attrs.<locals>.<lambda>��
��q�s�u�rc��|jjSr)r�r��r@s rr�z5TestSpecifics.test_merge_code_attrs.<locals>.<lambda>�r�r)rCr��co_linetable)rr�r�s   r�test_merge_code_attrsz#TestSpecifics.test_merge_code_attrs�s6���_��
�_���
�
�b�k�.���0H�I�I�I�I�Irc�L�d�}|�|jjd��dS)Nc��dS��	docstringr�rSrSrrr�z2TestSpecifics.test_strip_unused_consts.<locals>.f1�s���2rr�)r*r�r�)rr�s  r�test_strip_unused_constsz&TestSpecifics.test_strip_unused_consts�s5��	�	�	�	
�����.�0A�B�B�B�B�Brc��d�}|�dttj|����dj��dS)z9Regression test for issue35193 when run under clang msan.c��dS)Nr�)�RuntimeErrorrSrr�unused_code_at_endzcTestSpecifics.test_peephole_opt_unreachable_code_array_access_in_bounds.<locals>.unused_code_at_end�s���1r�RETURN_VALUEr�N)r*rM�dis�get_instructions�opname)rr�s  r�9test_peephole_opt_unreachable_code_array_access_in_boundszGTestSpecifics.test_peephole_opt_unreachable_code_array_access_in_bounds�s\��	.�	.�	.�	
������%�&8�9�9�:�:�2�>�E�	G�	G�	G�	G�	Grc�b���fd�}|dd��|dd��|dd��|dd��|d	d
��d�d�}}��|j|j����|d
����|d����t	|����t	d
������t	|����t	d����d�d�}}��|j|j����|tdh������|tdh������|d������|d����dS)Nc���i}td|�d|��|��|d}|d}��|j|j����|j|j����||����||����t
|����t
|������t
|����t
|����dSr)r�assertIsNotr�r�r|r*rx)�const1�const2r�r�r�rs     �r�check_different_constantszJTestSpecifics.test_dont_merge_constants.<locals>.check_different_constants�s�����B��D�f�f�f�f�f�E�r�J�J�J��D��B��D��B����R�[�"�+�6�6�6������R�[�9�9�9�����F�+�+�+�����F�+�+�+����T�"�"�$�$�Z�Z��f���6�6�6����T�"�"�$�$�Z�Z��f���6�6�6�6�6rrr�g�)r)r�r@�ar�)r�c��dS)Nr�rSrSrrr�z9TestSpecifics.test_dont_merge_constants.<locals>.<lambda>�s���rc��dS)N���rSrSrrr�z9TestSpecifics.test_dont_merge_constants.<locals>.<lambda>�s���rr�r�c�
�|dvSr�rSr�s rr�z9TestSpecifics.test_dont_merge_constants.<locals>.<lambda>�r�rc�
�|dvS)N>r�rSr�s rr�z9TestSpecifics.test_dont_merge_constants.<locals>.<lambda>�s
��q�E�z�r)r�r�r|r*rxr�r")rr�r�r�s`   r�test_dont_merge_constantsz'TestSpecifics.test_dont_merge_constants�s����
	7�
	7�
	7�
	7�
	7�	"�!�!�S�)�)�)�!�!�$��-�-�-�!�!�$��/�/�/�!�!�#�t�,�,�,�!�!�&�'�2�2�2���
�
�B�������b�k�2�2�2����B��&�&�&����B��&�&�&�����b�b�d�d���T�%�[�[�1�1�1�����b�b�d�d���T�%�[�[�1�1�1�$�#�%9�%9�B�������b�k�2�2�2����B�	�1�#���/�/�/����B�	�3�%� 0� 0�1�1�1������1�����������3��� � � � � rc�B�tdtd��d��dS)N�42�test_compile_pathliker
)rrrs r�test_path_like_objectsz$TestSpecifics.test_path_like_objects�s#����h�6�7�7��B�B�B�B�Brc�.�tddzdd��dS)Nzif a: b
i@
rqrrrs r�test_stack_overflowz!TestSpecifics.test_stack_overflow�s!��	��f�$�i��8�8�8�8�8rc��d�}d�}d�}d�}||||g}|D]�}ttj|����}|�t	|��d��|�d|dj��|�d|dj��|�d|d	j����dS)
Nc��dSrrSrSrr�unused_block_ifzPTestSpecifics.test_dead_blocks_do_not_generate_bytecode.<locals>.unused_block_if����
�
rc��dSrrSrSrr�unused_block_whilezSTestSpecifics.test_dead_blocks_do_not_generate_bytecode.<locals>.unused_block_while�r�rc��	dSrrSrSrr�unused_block_if_elsezUTestSpecifics.test_dead_blocks_do_not_generate_bytecode.<locals>.unused_block_if_else����
��trc��	dSrrSrSrr�unused_block_while_elsezXTestSpecifics.test_dead_blocks_do_not_generate_bytecode.<locals>.unused_block_while_else�r�rr3�
LOAD_CONSTr�r�r�)rMr�r��assertLessEqual�lenr*r��argval)rr�r�r�r��funcsry�opcodess        r�)test_dead_blocks_do_not_generate_bytecodez7TestSpecifics.test_dead_blocks_do_not_generate_bytecode�s��	�	�	�	�	�	�	�	�	�	�	�	�!�"4�%�'>�@���	A�	A�D��3�/��5�5�6�6�G�� � ��W���q�1�1�1����\�7�2�;�+=�>�>�>����T�7�2�;�#5�6�6�6����^�W�R�[�-?�@�@�@�@�	A�	Arc�r�d�}d�}||g}|D]�}ttj|����}|�dt	|����|�d|dj��|�d|dj��|�d|dj����dS)Nc��dSrrSrSrr�break_in_whilez;TestSpecifics.test_false_while_loop.<locals>.break_in_whiles��
�
rc��dSrrSrSrr�continue_in_whilez>TestSpecifics.test_false_while_loop.<locals>.continue_in_whiles��
�
rr�r�rr�r�)rMr�r�r*r�r�r�)rr�r�r�ryr�s      r�test_false_while_loopz#TestSpecifics.test_false_while_loops���	�	�	�	�	�	� �!2�3���	@�	@�D��3�/��5�5�6�6�G����Q��G���-�-�-����\�7�1�:�+<�=�=�=����T�7�1�:�#4�5�5�5����^�W�Q�Z�->�?�?�?�?�	@�	@rc��d�}d�}d�}d�}||||g}|D]�}|�|���5ttj|����}|�t|��d��|�d|dj��|�d	|d
j��ddd��n#1swxYwY��dS)Nc��|SrrSr�s r�and_truez;TestSpecifics.test_consts_in_conditionals.<locals>.and_true#����rc��dS)NFrSr�s r�	and_falsez<TestSpecifics.test_consts_in_conditionals.<locals>.and_false&s���rc��dS)NTrSr�s r�or_truez:TestSpecifics.test_consts_in_conditionals.<locals>.or_true)s���rc��|SrrSr�s r�or_falsez;TestSpecifics.test_consts_in_conditionals.<locals>.or_false,r�r�ryr��LOAD_r�r�r�)	�subTestrMr�r�r�r�r�r�r*)rr�r�r�r�r�ryr�s        r�test_consts_in_conditionalsz)TestSpecifics.test_consts_in_conditionals"sT��	�	�	�	�	�	�	�	�	�	�	�	��9�g�x�8���	E�	E�D����4��(�(�
E�
E��s�3�D�9�9�:�:���$�$�S��\�\�1�5�5�5��
�
�g�w�r�{�'9�:�:�:�� � �����1C�D�D�D�	
E�
E�
E�
E�
E�
E�
E�
E�
E�
E�
E����
E�
E�
E�
E��	E�	Es�BC�C	�C	c��gd�}|D]�}i}ttj|��|��|d}|�|j���5tt
j|����}d�|D��}|�d|��|�	d|��|�	d|��ddd��n#1swxYwY��dS)N)z[            import os
            def foo():
                return os.uname()
            z}            import os as operating_system
            def foo():
                return operating_system.uname()
            zh            from os import path
            def foo(x):
                return path.join(x)
            zv            from os import path as os_path
            def foo(x):
                return os_path.join(x)
            r�r�c��g|]	}|j��
SrS)r�)r�opcodes  r�
<listcomp>z;TestSpecifics.test_imported_load_method.<locals>.<listcomp>Vs��D�D�D�&��
�D�D�Dr�LOAD_METHOD�	LOAD_ATTR�PRECALL)
r�textwrap�dedentr�rOrMr�r�r�r�)r�sourcesrruryr��instructionss       r�test_imported_load_methodz'TestSpecifics.test_imported_load_method9s,��
�
�
��,�		7�		7�F��I�����(�(�)�4�4�4��U�#�D����4�=��1�1�
7�
7��s�3�D�9�9�:�:��D�D�G�D�D�D��� � ���=�=�=��
�
�k�<�8�8�8��
�
�i��6�6�6�
7�
7�
7�
7�
7�
7�
7�
7�
7�
7�
7����
7�
7�
7�
7��			7�		7s�A0C�C	�C	c�x�d�}|jjdz}|d�|j���D��vsJ�dS)Nc�"�t��dSr)�printrSrr�callz6TestSpecifics.test_lineno_procedure_call.<locals>.call\s�������rrc��g|]\}}}|��	SrSrS)r�_�lines   rr�z<TestSpecifics.test_lineno_procedure_call.<locals>.<listcomp>as��O�O�O�l�q�!�T�T�O�O�Or)r�r�r�)rr��line1s   r�test_lineno_procedure_callz(TestSpecifics.test_lineno_procedure_call[sV��	�	�	��
�,�q�0���O�O�d�m�6L�6L�6N�6N�O�O�O�O�O�O�O�O�Orc�J�
��d�
�
fd�}�
fd�}�
fd�}�
fd�}||||g}gd�}d��fd�}t||d���D]f\}}	|�|�	��5||��|��j�jjz
|	��ddd��n#1swxYwY�gdS)
NTc�$��|���rdSdSrrS�r��TRUEs �r�if1z<TestSpecifics.test_lineno_after_implicit_return.<locals>.if1fs%���
�A�C�C�C��
���
�
rc�$��|���rdSdSrrSr�s �r�if2z<TestSpecifics.test_lineno_after_implicit_return.<locals>.if2js ���
�A�C�C�C��
����rc�$��|���rdSdSrrSr�s �r�if3z<TestSpecifics.test_lineno_after_implicit_return.<locals>.if3ps ���
�A�C�C�C��
����trc�$��|���sdSdSrrSr�s �r�if4z<TestSpecifics.test_lineno_after_implicit_return.<locals>.if4vs%���
�A�C�C�C��
���
�
r)r�r�r�r�c�0��tjd���dSr2)rk�	_getframe)�frames�r�save_caller_framezJTestSpecifics.test_lineno_after_implicit_return.<locals>.save_caller_frame}s����M�!�$�$�E�E�Er��strictr�)�zipr�r*�f_lineno�f_coder�)rr�r�rrr��	lastlinesrry�lastliner�rs          @@r�!test_lineno_after_implicit_returnz/TestSpecifics.test_lineno_after_implicit_returncs�������	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	��s�C��%��!�M�M�	���	%�	%�	%�	%�	%�"�%��4�@�@�@�	W�	W�N�D�(����4��(�(�
W�
W���&�'�'�'�� � �����0K�!K�X�V�V�V�
W�
W�
W�
W�
W�
W�
W�
W�
W�
W�
W����
W�
W�
W�
W��	W�	Ws�4B�B	�B	c�F�d�}d�}||fD]�}|�|���5|j}t|�����}|d\}}}|�|d��|�||j��ddd��n#1swxYwY��dS)Nc��dS)z
doc stringNrSrSrr�no_code1z9TestSpecifics.test_lineno_after_no_code.<locals>.no_code1�����rc��dSrrSrSrr�no_code2z9TestSpecifics.test_lineno_after_no_code.<locals>.no_code2�rrr�r)r�r�rMr�r*r�)	rrrryror��start�endr�s	         r�test_lineno_after_no_codez'TestSpecifics.test_lineno_after_no_code�s��	�	�	�	�	�	��x�(�	<�	<�D����4��(�(�
<�
<��}���T�]�]�_�_�-�-��#(��8� ��s�D�� � ���*�*�*�� � ��t�':�;�;�;�
<�
<�
<�
<�
<�
<�
<�
<�
<�
<�
<����
<�
<�
<�
<��	<�	<s�A&B�B	�B	c��d}g}|���D]-\}}}|�%||kr|�||jz
��|}�.|S)Nr�)r��appendr�)rro�	last_linerZr�r�s      r�get_code_lineszTestSpecifics.get_code_lines�s^���	����-�-�/�/�	!�	!�J�A�q�$���D�I�$5�$5��
�
�4�$�"5�5�6�6�6� �	���
rc�B�d�}gd�}d�}gd�}d�}gd�}d�}gd�}||||g}	||||g}
t|	|
d	�
��D]c\}}|�|���5|�|j��}
|�||
��ddd��n#1swxYwY�ddS)Nc��tjSr)�or@rSrr�	load_attrz6TestSpecifics.test_lineno_attribute.<locals>.load_attr�s
����
r)rr�r�rc�6�t�d��S�Nr)rrbrSrr�load_methodz8TestSpecifics.test_lineno_attribute.<locals>.load_method�s��������
r)rr�r�r3r�rc�(�tt_dSr)�vrr@rSrr�
store_attrz7TestSpecifics.test_lineno_attribute.<locals>.store_attr�s��
����r)rrir�r�c�:�txjtz
c_dSr)rr@r%rSrr�aug_store_attrz;TestSpecifics.test_lineno_attribute.<locals>.aug_store_attr�s������	
����r)rr�r�rirr�Trr�)r
r�rr�r*)rr �load_attr_linesr#�load_method_linesr&�store_attr_linesr(�aug_store_attr_linesr��
func_linesryr��
code_liness              r�test_lineno_attributez#TestSpecifics.test_lineno_attribute�sU��	�	�	�
)�.�.��	�	�	�1�0�0��	�	�	�*�>�>��	�	�	� 4�3�3���[�*�n�E��&�(9�!�#7�9�
��u�j��>�>�>�	4�	4�K�D�%����4��(�(�
4�
4�!�0�0���?�?�
�� � ��
�3�3�3�
4�
4�
4�
4�
4�
4�
4�
4�
4�
4�
4����
4�
4�
4�
4��	4�	4s�1B�B	�B	c��d�}gd�}|jjd}|�|��}|�||��dS)Nc�$�d�tD��S)Nc3�K�|]}dV��dS)rNrS�rr�s  rrzOTestSpecifics.test_line_number_genexp.<locals>.return_genexp.<locals>.<genexpr>�s6�������������r)r�rSrr�
return_genexpz<TestSpecifics.test_line_number_genexp.<locals>.return_genexp�s%�����	���
r)rr�rr)r�r�rr*)rr4�genexp_lines�genexp_coder.s     r�test_line_number_genexpz%TestSpecifics.test_line_number_genexp�s[��	�	�	�!�y�y��#�,�6�q�9���(�(��5�5�
�����z�2�2�2�2�2rc�t�d�}gd�}|�|j��}|�||��dS)Nc��.K�|23d{V��}t�6dSr)r()�aseqr�s  r�testzLTestSpecifics.test_line_number_implicit_return_after_async_for.<locals>.test�s>�����
�
�
�
�
�
�
�a���� �4�4s�)rrr�r)rr�r*)rr;�expected_linesr.s    r�0test_line_number_implicit_return_after_async_forz>TestSpecifics.test_line_number_implicit_return_after_async_for�sM��	�	�	�&�����(�(���7�7�
������4�4�4�4�4rc���d}dd�d�t|��D����zdz}|�tt	|����|��dS)Ni�{�,c3�$K�|]}|�d|��V��dS)�:NrSr3s  rrz6TestSpecifics.test_big_dict_literal.<locals>.<genexpr>�s,����!G�!G��Q�*�*��*�*�!G�!G�!G�!G�!G�!Gr�})r�rr*r�r/)r�	dict_size�the_dicts   r�test_big_dict_literalz#TestSpecifics.test_big_dict_literal�se���	�����!G�!G�e�I�6F�6F�!G�!G�!G�G�G�G�#�M������T�(�^�^�,�,�i�8�8�8�8�8rc��d�}d}d}ttj|d�����D]V\}}|jdkr|�|jd���,|j|vr!|�|j|dz|z���WdS)	Nc�*�d}	|dkr|dz}ndSd}�)NrTrr�rS)�vals r�
if_else_breakzITestSpecifics.test_redundant_jump_in_if_else_break.<locals>.if_else_break�s/���C�
���7�7��1�H�C�C��E���
rr�)�POP_JUMP_IF_FALSE�POP_JUMP_IF_TRUE�
JUMP_ABSOLUTE�JUMP_FORWARDT��show_cachesrNrr)�	enumerater��Bytecoder�r�r�)rrJ�
INSTR_SIZE�
HANDLED_JUMPSr��instrs      r�$test_redundant_jump_in_if_else_breakz2TestSpecifics.test_redundant_jump_in_if_else_break�s���	�	�	��
�
�
�%��L��D�9�9�9�
�
�	F�	F�K�D�%��|�~�-�-��#�#�E�I�q�1�1�1�1����.�.��#�#�E�I��q��*�/D�E�E�E��
	F�	Frc�p�d�}tj|��D]}|�|jd���dS)Nc�H�||cxkr|ksn	||cxkr|k�dS�dSrrS)r@r�r�s   r�while_not_chainedz@TestSpecifics.test_no_wraparound_jump.<locals>.while_not_chaineds=���1�y�y�y�y�q�y�y�y�y���1�y�y�y�y�q�y�y�y�y�y�y�y�yr�EXTENDED_ARG)r�rRr�r�)rrYrUs   r�test_no_wraparound_jumpz%TestSpecifics.test_no_wraparound_jumpsR��	�	�	��\�"3�4�4�	>�	>�E������n�=�=�=�=�	>�	>rc�f��dD]�\�}d|�d|�d�}ddddt|��fgz}d|��d|�d	�d
|�d�fD]v}t|dd
��}�fd�tj|��D��}|�|��5|�||��ddd��n#1swxYwY�w��dS)N))�
COMPARE_OP�<)r]z<=)r]�>)r]z>=)�CONTAINS_OP�in)r`znot in)�IS_OP�is)rbzis notza z b z cr�rz\
zif \
z: xzx if \
z else yrrc�4��g|]}|j�k�
|j��SrS)r��	positions)r�instructionr�s  �rr�z8TestSpecifics.test_compare_positions.<locals>.<listcomp>#s4���$�$�$�#�"�)�V�3�3� �)�3�3�3r)r�rr�r�r�r*)r�op�expr�expected_positionsrro�actual_positionsr�s       @r�test_compare_positionsz$TestSpecifics.test_compare_positionssu���	
�	K�	K�J�F�B�&��%�%�r�%�%�%�D�!"�q�!�Q��D�	�	�&:�%;�!;���t�
�
�2��2�2�2�4M��4M�4M�4M��

K�

K���v�x��8�8��$�$�$�$�'*�';�D�'A�'A�$�$�$� �
�\�\�&�)�)�K�K��$�$�%5�7I�J�J�J�K�K�K�K�K�K�K�K�K�K�K����K�K�K�K��

K�	K�	Ks�B$�$B(�+B(N)ErOrPrQrrrr r#r,r0r4r7r:rerprrruryr�r�r�r�rkr�r�r�r�r�r�r�r�rrrr/r4r=r�cpython_onlyrErGrIr[r^rorvr|r�r�r�r�r�r�r�r�r�r�r�r�rrrr/r7r=rFrVr[rkrSrrrrs�������.�.�.�D�D�D�*�*�*�&�&�&�Q�Q�Q�-�-�-�J�J�J�L�L�L�Q�Q�Q�J�J�J�-%�-%�-%�^'�'�'�4D�D�D�8�8�8�'�'�'�+�+�+�1�1�1�B>�>�>�D�D�D�&�{�)�)�)�	9�	9�	9� � � �I�I�I�(-I�-I�-I�^>�>�>�%�%�%�K�K�K�*F2�F2�F2�P � � �?�?�?�!D�!D�!D�F	*�	*�	*�P�P�P�
��>�>���>�;�;�;�"	H�	H�	H�-�-�-�-�-�-�
�������<-�-�-�(=�=�=�
��(�(���(�X
��J�J���J�
��C�C���C�
��G�G���G�&!�&!�&!�PC�C�C�9�9�9�
��A�A���A�>@�@�@�&E�E�E�. 7� 7� 7�DP�P�P� W� W� W�D
<�
<�
<����*4�*4�*4�X3�3�3�5�5�5�9�9�9�F�F�F�:>�>�>�K�K�K�K�Krrc��eZdZd�Z	dd�Zd�Zd�Zd�Zd�Zd�Z	d	�Z
d
�Zd�Zd�Z
d
�Zd�Zd�Zd�Zejd���ZdS)�TestSourcePositionsc��	�
���t|dd��}t|ddtj��}|�t	|��tjk��t
��t
��t
��t
��f\���	�
G�	�
��fd�dtj��}|���	|��|�
��D]n\}}}}|dkr�|�|�|���|�|�|���|�|�|�	��|�|�|�
���o||fS)Nztest_compile.pyrc�(���eZdZ�����fd�Z�xZS)�LTestSourcePositions.check_positions_against_ast.<locals>.SourceOffsetVisitorc���t���|��t|tj��st|tj��sdS��|j����|j����|j	����|j
��dSr)�super�
generic_visitr@r-rhr��addr��
end_lineno�
col_offset�end_col_offset)r�node�	__class__�columns�end_columns�	end_linesr�s  �����rrtzZTestSourcePositions.check_positions_against_ast.<locals>.SourceOffsetVisitor.generic_visit;s�������%�%�d�+�+�+�!�$���1�1��*�T�3�8�:T�:T���F��	�	�$�+�&�&�&��
�
�d�o�.�.�.����D�O�,�,�,����� 3�4�4�4�4�4r)rOrPrQrt�
__classcell__)rzr{r|r}r�s@����r�SourceOffsetVisitorrq:sM��������
5�
5�
5�
5�
5�
5�
5�
5�
5�
5�
5�
5�
5rrr)rr r!r"r#r$�setr-�NodeVisitor�visit�co_positionsr�)
r�snippetro�ast_treerr��end_line�col�end_colr{r|r}r�s
         @@@@r�check_positions_against_astz/TestSourcePositions.check_positions_against_ast1s��������w� 1�6�:�:���7�$5�v�t�?Q�R�R������X���$�+�5�6�6�6�25������s�u�u�c�e�e�1K�.��y�'�;�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5�#�/�	5�	5�	5�	����#�#�H�-�-�-�/3�.?�.?�.A�.A�	4�	4�*�T�8�S�'��q�y�y�����
�
�d�E�*�*�*��#��
�
�h�	�2�2�2����
�
�c�7�+�+�+��"��
�
�g�{�3�3�3���X�~�rrc��ttj|d���|���d���D]�\}}	|j|krz|dz}|ss|�|	d|��|�|	d|��|�|	d|��|�|	d|��dS��|�d|�d	���dS)
NTrOrrrr�r�zOpcode z not found in code)r
r�rRr�r�r*r_)
rror�r�r��column�
end_column�
occurrencerU�positions
          r�assertOpcodeSourcePositionIsz0TestSourcePositions.assertOpcodeSourcePositionIsWs��� #��L��4�0�0�0�$�2C�2C�2E�2E�d� 
� 
� 
�
	�
	�O�E�8��|�v�%�%��a��
�!���$�$�X�a�[�$�7�7�7��$�$�X�a�[�(�;�;�;��$�$�X�a�[�&�9�9�9��$�$�X�a�[�*�=�=�=��F�F���	�	�6�F�6�6�6�7�7�7�7�7rc�4�d}|�|��dS)Nzx = 1)r��rr�s  r�test_simple_assignmentz*TestSourcePositions.test_simple_assignmenths!�����(�(��1�1�1�1�1rc	��ddz}|dz
}|�|��\}}|�|dddddd�	��|�|dd
d
ddd�	��dS)Nzx = x
i'z/while x != 0:
  x -= 1
while x != 0:
  x +=  1
�	BINARY_OPi'r��r�r�r�r�r�r�i'�	�r�r��rr��
compiled_coder�s    r� test_compiles_to_extended_op_argz4TestSourcePositions.test_compiles_to_extended_op_argls����f�$���"�	�� �;�;�G�D�D��
�q��)�)�-���j���q�	*�	2�	2�	2�	
�)�)�-���j���q�	*�	2�	2�	2�	2�	2rc�p�d}|�|��\}}|�|ddddd���dS)Nzf(
    1, 2, 3, 4
)
�CALLrr�r�r�r�r�r�r�r�s    r�test_multiline_expressionz-TestSourcePositions.test_multiline_expression�sW����
 �;�;�G�D�D��
�q��)�)�-���Q�q�Q�	*�	8�	8�	8�	8�	8rc�|�d}d|�d�}|�|��\}}|�|ddddd���dS)	N��aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazg('z')r�rri�r�r�)r�long_stringr�r�r�s     r�test_very_long_line_end_offsetz2TestSourcePositions.test_very_long_line_end_offset�se��!��'��'�'�'���;�;�G�D�D��
�q��)�)�-���Q�q�T�	*�	;�	;�	;�	;�	;rc	�P�d}|�|��\}}|�|ddddd���|�|dddddd�	��|�|ddddd
d�	��|�|ddddd
d�	��|�|ddddd
d�	��dS)Nza - b @ (c * x['key'] + 23)�
BINARY_SUBSCRr�
�r�r�r�r��r�r3�r�rr�r�s    r�#test_complex_single_line_expressionz7TestSourcePositions.test_complex_single_line_expression�s��/���;�;�G�D�D��
�q��)�)�-���Q�r�b�	*�	:�	:�	:��)�)�-���Q�q�R�A�	*�	G�	G�	G��)�)�-���Q�q�R�A�	*�	G�	G�	G��)�)�-���Q�q�R�A�	*�	G�	G�	G��)�)�-���Q�q�R�A�	*�	G�	G�	G�	G�	Grc��tjd��}|jd}tjtjtjtjdtj����dtj����gg����}tj||��tj	|��||jd<t|dd��dS)Nz
assert (
42
)rr}�eggsrr)r-�parser(�Expr�Call�	Attribute�Name�Load�
copy_location�fix_missing_locationsr)r�tree�old_node�new_nodes    r�.test_multiline_assert_rewritten_as_method_callzBTestSourcePositions.test_multiline_assert_rewritten_as_method_call�s����y�*�+�+���9�Q�<���8��H��
��H�V�S�X�Z�Z�0�0���H�J�J���
��
�
�

�

��	��(�H�-�-�-��!�(�+�+�+���	�!����h��'�'�'�'�'rc
�0�d}dD]�}|�|��5i}tj|�|����}t	||��|dj}|�|ddddd���ddd��n#1swxYwY��dS)	Nz�
        import abc, dis
        import ast as art

        abc = None
        dix = dis
        ast = art

        def f():
        {}
        )
z    abc.a()z    art.a()z    ast.a()z    dis.a()z    dix.a()z    abc[...]()z    art()()z   (ast or ...)()z
   [dis]()z   (dix + ...)()rh�LOAD_GLOBALrgr3�r�)r�r�r�rbrr�r�)r�source_templater(rurros      r�$test_push_null_load_global_positionsz8TestSourcePositions.test_push_null_load_global_positions�s���
��
�	�	�D����d�#�#�
�
��	�!���)?�)?��)E�)E�F�F���V�Y�'�'�'� ��~�.���1�1��!���� �
2����
�
�
�
�
�
�
�
�
�
�
����
�
�
�
��	�	s�A"B
�
B	�B	c��d}t|dd��}|�|ddddd���|�|d	dddd���dS)
Nz/(
 lhs  
   .    
     rhs      
       ) += 42rrr�r3rir�r��
STORE_ATTR�rr��rrros   r�test_attribute_augassignz,TestSourcePositions.test_attribute_augassign�sx��F���v�x��0�0���)�)��+�A��!��	*�	
�	
�	
�	
�)�)��,�Q��1��	*�	
�	
�	
�	
�	
rc�b�d}t|dd��}|�|ddddd���dS)	Nz-del (
 lhs  
   .    
     rhs      
       )rr�DELETE_ATTRr3rir�r�r�r�s   r�test_attribute_delz&TestSourcePositions.test_attribute_del�sL��D���v�x��0�0���)�)��-�a�!�A�!�	*�	
�	
�	
�	
�	
rc�b�d}t|dd��}|�|ddddd���dS)	Nz)(
 lhs  
   .    
     rhs      
       )rrr�r3rir�r�r�r�s   r�test_attribute_loadz'TestSourcePositions.test_attribute_load�sL��@���v�x��0�0���)�)��+�A��!��	*�	
�	
�	
�	
�	
rc�b�d}t|dd��}|�|ddddd���dS)	Nz.(
 lhs  
   .    
     rhs      
       ) = 42rrr�r3rir�r�r�r�s   r�test_attribute_storez(TestSourcePositions.test_attribute_store�sL��E���v�x��0�0���)�)��,�Q��1��	*�	
�	
�	
�	
�	
rc��d}t|dd��}|�|ddddd���|�|d	dddd
���dS)Nz+(
 lhs  
   .    
     rhs      
       )()rrr�r3rir�r�r�rgr�r�s   r�test_method_callz$TestSourcePositions.test_method_call�sx��B���v�x��0�0���)�)��-�a�!�A�!�	*�	
�	
�	
�	
�)�)��&�q�1�Q�2�	*�	
�	
�	
�	
�	
rc�*�d�}|j���D]u\}}}}|�|��|�|��|�|��|�|��|�||f||f���vdS)Nc��tjt���t���d���d��dSr")�bar�baz�files�
setdefaultrSrrrhzHTestSourcePositions.test_weird_attribute_position_regressions.<locals>.fs\��
���
���	
�	
�	
��G�G����
�
��j������r)r�r��assertIsNotNoner�)rrhr�r�r�r�s      r�)test_weird_attribute_position_regressionsz=TestSourcePositions.test_weird_attribute_position_regressionss���
	�
	�
	�34�*�2I�2I�2K�2K�	I�	I�.�D�(�F�J�� � ��&�&�&�� � ��*�*�*�� � ��(�(�(�� � ��,�,�,�� � �$���(�J�1G�H�H�H�H�	I�	Irc	���dD�]Z}|�|��5t|�d|��dd��}|�t|j��d��|�|jdtj��|�|jdtj��|�|jd|jd��|�t|jd�
����t|jd�
������ddd��n#1swxYwY��\dS)N)z	lambda: az(a for b in c)z[a for b in c]z{a for b in c}z{a: b for c in d}rrr/r�rr)r�rr*r�r�r�rArBr�rMr�r�s   r� test_column_offset_deduplicationz4TestSourcePositions.test_column_offset_deduplications|��
�	�	�F����f�%�%�	
�	
��&�4�4�F�4�4�h��G�G��� � ��T�^�!4�!4�a�8�8�8��%�%�d�n�Q�&7���H�H�H��%�%�d�n�Q�&7���H�H�H��#�#�D�N�1�$5�t�~�a�7H�I�I�I��#�#�����*�7�7�9�9�:�:�����*�7�7�9�9�:�:����
	
�	
�	
�	
�	
�	
�	
�	
�	
�	
�	
����	
�	
�	
�	
��	�	s�D+E�E	�E	Nr�)rOrPrQr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrlr�rSrrrnrn,s&������
$�$�$�N<=�8�8�8�8�"2�2�2�2�2�2�(8�8�8�;�;�;�
G�
G�
G�(�(�(�*$�$�$�L
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�I�I�I�&
��������rrnc�~�eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�ZdS)�TestExpressionStackSize�dc��t|t��rt|dd��}tjtjt
|j������}|�|j	|��dS)N�<foo>r
)
r@r�r�math�ceil�logr��co_coder��co_stacksize)rro�max_sizes   r�check_stack_sizez(TestExpressionStackSize.check_stack_size6si���d�C� � �	4��4��(�3�3�D��9�T�X�c�$�,�&7�&7�8�8�9�9�����T�.��9�9�9�9�9rc�F�|�d|jzdz��dS)Nzx and r��r��Nrs r�test_andz TestExpressionStackSize.test_and>s(�����h���/�#�5�6�6�6�6�6rc�F�|�d|jzdz��dS)Nzx or r�r�rs r�test_orzTestExpressionStackSize.test_orAs(�����g���.��4�5�5�5�5�5rc�F�|�d|jzdz��dS)Nzx and x or r�r�rs r�test_and_orz#TestExpressionStackSize.test_and_orDs(�����m�d�f�4�s�:�;�;�;�;�;rc�F�|�d|jzdz��dS)Nzx < r�r�rs r�test_chained_comparisonz/TestExpressionStackSize.test_chained_comparisonG�'�����f�t�v�o��3�4�4�4�4�4rc�F�|�d|jzdz��dS)Nzx if x else r�r�rs r�test_if_elsez$TestExpressionStackSize.test_if_elseJs(�����n�t�v�5��;�<�<�<�<�<rc�F�|�d|jzdz��dS)Nzx + r�r�rs r�
test_binopz"TestExpressionStackSize.test_binopMr�rc�L�|�dd|jzzdz��dS)N�[�x, zx]r�rs r�	test_listz!TestExpressionStackSize.test_listP�,�����c�E�D�F�N�2�T�9�:�:�:�:�:rc�L�|�dd|jzzdz��dS)N�(r�zx)r�rs r�
test_tuplez"TestExpressionStackSize.test_tupleSr�rc�L�|�dd|jzzdz��dS)Nr?r�zx}r�rs r�test_setz TestExpressionStackSize.test_setVr�rc�L�|�dd|jzzdz��dS)Nr?zx:x, zx:x}r�rs r�	test_dictz!TestExpressionStackSize.test_dictYs-�����c�G�d�f�$4�4�v�=�>�>�>�>�>rc�L�|�dd|jzzdz��dS)N�f(r��)r�rs r�test_func_argsz&TestExpressionStackSize.test_func_args\s,�����d�U�T�V�^�3�c�9�:�:�:�:�:rc��d�t|j��D��}|�dd�|��zdz��dS)Nc3�"K�|]
}d|�d�V��dS�r@z=xNrSrs  rrz;TestExpressionStackSize.test_func_kwargs.<locals>.<genexpr>`�*����3�3��)�a�)�)�)�3�3�3�3�3�3rr�rr��rr�r�r��r�kwargss  r�test_func_kwargsz(TestExpressionStackSize.test_func_kwargs_sM��3�3�U�4�6�]�]�3�3�3�����d�d�i�i��&7�&7�7�#�=�>�>�>�>�>rc�L�|�dd|jzzdz��dS)N�o.m(r�r�r�rs r�test_meth_argsz&TestExpressionStackSize.test_meth_argscs,�����f�u�t�v�~�5��;�<�<�<�<�<rc��d�t|j��D��}|�dd�|��zdz��dS)Nc3�"K�|]
}d|�d�V��dSrrSrs  rrz;TestExpressionStackSize.test_meth_kwargs.<locals>.<genexpr>grrr
rr�rrs  r�test_meth_kwargsz(TestExpressionStackSize.test_meth_kwargsfsM��3�3�U�4�6�]�]�3�3�3�����f��	�	�&�(9�(9�9�C�?�@�@�@�@�@rc�N�d}|d|jzz
}|�|��dS)Nz
def f(x):
z   x and x
)r�r�r�s  r�
test_func_andz%TestExpressionStackSize.test_func_andjs2��������'�'�����d�#�#�#�#�#rc�<�d}d|zdz}t|dd��dS)N��zx,z=tr�r
r)rrTros   r�test_stack_3050z'TestExpressionStackSize.test_stack_3050os,�����a�x�$�����g�x�(�(�(�(�(rc��d}d�d�t|��D����}d|�d�}t|dd��dS)Nrrc3�&K�|]}d|�d|��V��
dS)r�z:typeNrSrs  rrz<TestExpressionStackSize.test_stack_3050_2.<locals>.<genexpr>ws3����=�=�q�*�q�*�*�q�*�*�=�=�=�=�=�=rzdef f(z	):
  passr�r
r
)rrT�argsros    r�test_stack_3050_2z)TestExpressionStackSize.test_stack_3050_2usU�����y�y�=�=�E�!�H�H�=�=�=�=�=��(��(�(�(����g�x�(�(�(�(�(rN)rOrPrQr�r�r�r�r�r�r�r�r�r�r�r�rrrrrrrrSrrr�r�0s,������	�A�:�:�:�7�7�7�6�6�6�<�<�<�5�5�5�=�=�=�5�5�5�;�;�;�;�;�;�;�;�;�?�?�?�;�;�;�?�?�?�=�=�=�A�A�A�$�$�$�
)�)�)�)�)�)�)�)rr�c��eZdZdd�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�ZdS) �TestStackSizeStabilityFc	�b������fd���fd�tdd��D��}tt|����dkriddl}ddl}|���}|j�d��|���|�d|�d	��d	|�������dSdS)
Nc���i}d|�zz}�rd|z}t|dd��}t|||��|djS)Nzdef func():
zasync z<script>rry)rrr�)r�r��scriptro�async_r�s    ��r�compile_snippetz@TestStackSizeStability.check_stack_size.<locals>.compile_snippet�sX����B�(�1�w�;�6�F��
+�!�F�*���6�:�v�6�6�D���r�2�����f�:�&�&rc�0��g|]}�|��j��SrS)r�)rr�rs  �rr�z;TestStackSizeStability.check_stack_size.<locals>.<listcomp>�s&���F�F�F�Q����#�#�0�F�F�Frr�rirr)�filez4stack sizes diverge with # of consecutive snippets: r{)rr�r�r��io�StringIOr_�getvalue)rr�r�sizesr�r!�outrs ``    @rr�z'TestStackSizeStability.check_stack_size�s������	'�	'�	'�	'�	'�	'�G�F�F�F�%��1�+�+�F�F�F���s�5�z�z�?�?�a����N�N�N�N�N�N�N��+�+�-�-�C��C�G�O�O�A�&�&�S�1�1�1�1��I�I�I�&+�e�e�W�W�W�c�l�l�n�n�n�F�
G�
G�
G�
G�
G�	 �rc�4�d}|�|��dS)Nz1
            if x:
                a
            �r�r�s  r�test_ifzTestStackSizeStability.test_if��%����	
���g�&�&�&�&�&rc�4�d}|�|��dS)Nz{
            if x:
                a
            elif y:
                b
            else:
                c
            r'r�s  rr�z#TestStackSizeStability.test_if_else��%����	
���g�&�&�&�&�&rc�4�d}|�|��dS)NzV
            try:
                a
            except:
                b
            r'r�s  r�test_try_except_barez+TestStackSizeStability.test_try_except_bare��%����	
���g�&�&�&�&�&rc�4�d}|�|��dS)Nz�
            try:
                a
            except ImportError:
                b
            except:
                c
            else:
                d
            r'r�s  r�test_try_except_qualifiedz0TestStackSizeStability.test_try_except_qualified��%��	��	
���g�&�&�&�&�&rc�4�d}|�|��dS)Nz�
            try:
                a
            except ImportError as e:
                b
            except:
                c
            else:
                d
            r'r�s  r�test_try_except_asz)TestStackSizeStability.test_try_except_as�r1rc�4�d}|�|��dS)Nz�
            try:
                a
            except* ImportError:
                b
            else:
                c
            r'r�s  r�test_try_except_star_qualifiedz5TestStackSizeStability.test_try_except_star_qualified�r+rc�4�d}|�|��dS)Nz�
            try:
                a
            except* ImportError as e:
                b
            else:
                c
            r'r�s  r�test_try_except_star_asz.TestStackSizeStability.test_try_except_star_as�r+rc�4�d}|�|��dS)Nz�
                try:
                    a
                except* A:
                    b
                finally:
                    c
            r'r�s  r�test_try_except_star_finallyz3TestStackSizeStability.test_try_except_star_finally�r+rc�4�d}|�|��dS)Nzg
                try:
                    a
                finally:
                    b
            r'r�s  r�test_try_finallyz'TestStackSizeStability.test_try_finally�r.rc�4�d}|�|��dS)Nz8
            with x as y:
                a
            r'r�s  r�	test_withz TestStackSizeStability.test_with�r)rc�4�d}|�|��dS)NzX
            while x:
                a
            else:
                b
            r'r�s  r�test_while_elsez&TestStackSizeStability.test_while_else�r.rc�4�d}|�|��dS)Nz7
            for x in y:
                a
            r'r�s  r�test_forzTestStackSizeStability.test_forr)rc�4�d}|�|��dS)Nz[
            for x in y:
                a
            else:
                b
            r'r�s  r�
test_for_elsez$TestStackSizeStability.test_for_else	r.rc�4�d}|�|��dS)Nz�
            for x in y:
                if z:
                    break
                elif u:
                    continue
                else:
                    a
            else:
                b
            r'r�s  r�test_for_break_continuez.TestStackSizeStability.test_for_break_continues%��
��	
���g�&�&�&�&�&rc�4�d}|�|��dS)Na6
            for x in y:
                try:
                    if z:
                        break
                    elif u:
                        continue
                    else:
                        a
                finally:
                    f
            else:
                b
            r'r�s  r�0test_for_break_continue_inside_try_finally_blockzGTestStackSizeStability.test_for_break_continue_inside_try_finally_block �%��
��	
���g�&�&�&�&�&rc�4�d}|�|��dS)Na6
            for x in y:
                try:
                    t
                finally:
                    if z:
                        break
                    elif u:
                        continue
                    else:
                        a
            else:
                b
            r'r�s  r�,test_for_break_continue_inside_finally_blockzCTestStackSizeStability.test_for_break_continue_inside_finally_block1rHrc�4�d}|�|��dS)Na5
            for x in y:
                try:
                    t
                except:
                    if z:
                        break
                    elif u:
                        continue
                    else:
                        a
            else:
                b
            r'r�s  r�+test_for_break_continue_inside_except_blockzBTestStackSizeStability.test_for_break_continue_inside_except_blockBrHrc�4�d}|�|��dS)Na

            for x in y:
                with c:
                    if z:
                        break
                    elif u:
                        continue
                    else:
                        a
            else:
                b
            r'r�s  r�)test_for_break_continue_inside_with_blockz@TestStackSizeStability.test_for_break_continue_inside_with_blockSs%����	
���g�&�&�&�&�&rc�4�d}|�|��dS)Nz�
            try:
                if z:
                    return
                else:
                    a
            finally:
                f
            r'r�s  r�$test_return_inside_try_finally_blockz;TestStackSizeStability.test_return_inside_try_finally_blockb�%����	
���g�&�&�&�&�&rc�4�d}|�|��dS)Nz�
            try:
                t
            finally:
                if z:
                    return
                else:
                    a
            r'r�s  r� test_return_inside_finally_blockz7TestStackSizeStability.test_return_inside_finally_blocknrQrc�4�d}|�|��dS)Nz�
            try:
                t
            except:
                if z:
                    return
                else:
                    a
            r'r�s  r�test_return_inside_except_blockz6TestStackSizeStability.test_return_inside_except_blockzrQrc�4�d}|�|��dS)Nz~
            with c:
                if z:
                    return
                else:
                    a
            r'r�s  r�test_return_inside_with_blockz4TestStackSizeStability.test_return_inside_with_block�s%����	
���g�&�&�&�&�&rc�8�d}|�|d���dS)Nz>
            async with x as y:
                a
            T�rr'r�s  r�test_async_withz&TestStackSizeStability.test_async_with��*����	
���g�d��3�3�3�3�3rc�8�d}|�|d���dS)Nz=
            async for x in y:
                a
            TrYr'r�s  r�test_async_forz%TestStackSizeStability.test_async_for�r[rc�8�d}|�|d���dS)Nza
            async for x in y:
                a
            else:
                b
            TrYr'r�s  r�test_async_for_elsez*TestStackSizeStability.test_async_for_else�s*����	
���g�d��3�3�3�3�3rc�8�d}|�|d���dS)Na
            for x in y:
                async with c:
                    if z:
                        break
                    elif u:
                        continue
                    else:
                        a
            else:
                b
            TrYr'r�s  r�/test_for_break_continue_inside_async_with_blockzFTestStackSizeStability.test_for_break_continue_inside_async_with_block�s*����	
���g�d��3�3�3�3�3rc�8�d}|�|d���dS)Nz�
            async with c:
                if z:
                    return
                else:
                    a
            TrYr'r�s  r�#test_return_inside_async_with_blockz:TestStackSizeStability.test_return_inside_async_with_block�s*����	
���g�d��3�3�3�3�3rN)F)rOrPrQr�r(r�r-r0r3r5r7r9r;r=r?rArCrErGrJrLrNrPrSrUrWrZr]r_rarcrSrrrr}s�������G�G�G�G�$'�'�'�	'�	'�	'�'�'�'�'�'�'�'�'�'�	'�	'�	'�	'�	'�	'�	'�	'�	'�'�'�'�'�'�'�'�'�'�'�'�'�'�'�'�'�'�'�'�'�'�"'�'�'�"'�'�'�"
'�
'�
'�
'�
'�
'�
'�
'�
'�
'�
'�
'�'�'�'�4�4�4�4�4�4�4�4�4�
4�
4�
4�4�4�4�4�4rr�__main__)r�r�rQ�unittestrkr-r rOrAr�r;r�test.supportrr�test.support.os_helperr�TestCaserrnr�rrO�mainrSrr�<module>rjs���
�
�
�
�����	�	�	�	�����
�
�
�
�
�
�
�
�����������������������=�=�=�=�=�=�=�=�+�+�+�+�+�+�YK�YK�YK�YK�YK�H�%�YK�YK�YK�x ����@�@�@�@�@�(�+�@�@���@�FJ)�J)�J)�J)�J)�h�/�J)�J)�J)�ZA4�A4�A4�A4�A4�X�.�A4�A4�A4�H
�z����H�M�O�O�O�O�O��r