Sindbad~EG File Manager

Current Path : /proc/2568807/root/usr/local/lib/python3.12/test/__pycache__/
Upload File :
Current File : //proc/2568807/root/usr/local/lib/python3.12/test/__pycache__/test_compile.cpython-312.pyc

�

'Μg�D��z�ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlmZddl
mZmZmZmZmZddlmZGd�dej*�Ze�Gd�dej*��ZGd	�d
ej*�ZGd�dej*�Zed
k(rej6�yy)�N)�support)�
script_helper�requires_debug_ranges�run_code�requires_specialization�C_RECURSION_LIMIT)�FakePathc���eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
ejej"d�d
��Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zej6dk(rd�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*ejVd%��Z,d&�Z-d'�Z.d(�Z/d)�Z0ejVejej"d�d*���Z1d+�Z2d,�Z3ejVd-��Z4ejVd.��Z5ejVd/��Z6ejVd0��Z7ejVd1��Z8ejVd2��Z9ejVd3��Z:d4�Z;d5�Z<ejzd6�d7��Z>ejVd8��Z?d9�Z@d:�ZAd;�ZBd<�ZCd=�ZDd>�ZEd?�ZFd@�ZGdA�ZHdB�ZIdC�ZJdD�ZKdE�ZLdF�ZMejVdG��ZNdH�ZOdI�ZPdJ�ZQdK�ZRdL�ZSdM�ZTdN�ZUdO�ZVdP�ZWdQ�ZXyR)S�
TestSpecificsc��t|dd�y)N�<single>�single��compile��self�sources  �./usr/local/lib/python3.12/test/test_compile.py�compile_singlezTestSpecifics.compile_singles����
�H�-�c�F�|jt|j|�y�N)�assertRaises�SyntaxErrorrrs  r�assertInvalidSinglez!TestSpecifics.assertInvalidSingles�����+�t�':�':�F�Crc�8�tddd�tddd�y)N�hi�<test>�execzhi
r�rs r�test_no_ending_newlinez$TestSpecifics.test_no_ending_newlines����h��'����&�)rc��tddd�y)N�rrrr s r�
test_emptyzTestSpecifics.test_emptys����H�f�%rc�l�tddd�tddd�tddd�tddd�y)Nz
rr�
zhi
stuff
def f():
    pass
z(this_is
really_old_mac
def f():
    passrr s r�test_other_newlinesz!TestSpecifics.test_other_newlines s4�����&�)���h��'��5�x��H��=�x��Prc��|jttddd�ddl}|j}t|dd�|j
d|�t|d|�y)Nz
__debug__ = 1�?rr�	__debug__�sureT)rrr�builtinsr*�setattr�assertEqual)rr,�prevs   r�test_debug_assignmentz#TestSpecifics.test_debug_assignment&sN�����+�w���h�O���!�!����+�v�.�����D�)���+�t�,rc�H�|jttd�|jttd�|jttd�|jttd�|jttd�|jttd�y)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�evalrr s r�test_argument_handlingz$TestSpecifics.test_argument_handling/ss�����+�t�^�<����+�t�-=�>����+�t�-?�@����+�t�-@�A����+�t�-H�I����+�t�-H�Irc�>�|jttddd�y)Nz1+*3�filenamer�rrrr s r�test_syntax_errorzTestSpecifics.test_syntax_error8s�����+�w��
�F�Krc�>�|jttddd�y)Nz	f(None=1)�<string>rr7r s r�test_none_keyword_argz#TestSpecifics.test_none_keyword_arg;s�����+�w��Z��Prc�:�|jttd�y)Nr2�rrrr s r�test_duplicate_global_localz)TestSpecifics.test_duplicate_global_local>s�����+�t�-H�Irc��Gd�d�}|�}t�}td||�|j|jd�	td||�|j	d�td||�|j|jdt
d	�f�td
||�|j|jd|f�td||�|j|jd|f�|jttd|�Gd�d
�}|�}|jttd||�Gd�dt�}|�}td||�|j|dd�y#t
$rY��wxYw)Nc�"�eZdZdZd�Zd�Zd�Zy)�BTestSpecifics.test_exec_with_general_mapping_for_locals.<locals>.Mz9Test mapping interface versus possible calls from eval().c��|dk(ryt��N�a�)�KeyError�r�keys  r�__getitem__zNTestSpecifics.test_exec_with_general_mapping_for_locals.<locals>.M.__getitem__Es���#�:���rc��||f|_yr)�results�rrH�values   r�__setitem__zNTestSpecifics.test_exec_with_general_mapping_for_locals.<locals>.M.__setitem__Is
�� #�U�|��rc��td�S)N�xyz)�listr s r�keyszGTestSpecifics.test_exec_with_general_mapping_for_locals.<locals>.M.keysKs���E�{�"rN)�__name__�
__module__�__qualname__�__doc__rIrNrR�rr�MrACs��G�
�
,�
#rrXzz = a)�zrEzz = bzDid not detect a KeyErrorz	z = dir()rYrPz
z = globals()zz = locals()c��eZdZdZy)�BTestSpecifics.test_exec_with_general_mapping_for_locals.<locals>.AzNon-mappingN)rSrTrUrVrWrr�Ar[`s���rr\c��eZdZd�Zy)�BTestSpecifics.test_exec_with_general_mapping_for_locals.<locals>.Dc�:�|dk(rytj||�SrC)�dictrIrGs  rrIzNTestSpecifics.test_exec_with_general_mapping_for_locals.<locals>.D.__getitem__hs���#�:���'�'��c�2�2rN)rSrTrUrIrWrr�Dr^gs��
3rrarE)
�globalsrr.rK�fail�	NameErrorrQr�	TypeErrorr`)rrX�m�gr\ra�ds       r�)test_exec_with_general_mapping_for_localsz7TestSpecifics.test_exec_with_general_mapping_for_localsAsS��		#�		#�
�C���I���W�a���������I�.�	3���!�Q��
�I�I�1�2��[�!�Q��������S�$�u�+�$6�7��_�a��#�������S�!�H�-��^�Q��"�������S�!�H�-����)�T�7�A�6�	�	�
�C�����)�T�7�A�q�9�	3��	3�

�C���W�a�������3���$��5�	��	�s�
E1�1	E>�=E>zexhausts limited stack on WASIc���ttdz�}dd|zz}i}tjd|fdzz�}t	||�|j|dd�d�y)	N��������?z	x = x or z-xa�
            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)�intr�textwrap�dedentrr.)r�repeat�longexprrg�codes     r�test_extended_argzTestSpecifics.test_extended_argpsm���&��,�-������.������� �"�;�r�>�# #�$��$	
�T�1�
������3����A�&rc�:�|jttd�y)Nzdef f(a=1, b): passr=r s r�test_argument_orderz!TestSpecifics.test_argument_order�s�����+�t�-B�Crc���|jttd�|jttd�|jttd�|jttd�y)N�2ez2.0e+z1e-z3-4e/21)rrr3r s r�test_float_literalsz!TestSpecifics.test_float_literals�sJ�����+�t�T�2����+�t�W�5����+�t�U�3����+�t�Y�7rc�H�tjd�}t|dd�y)NzN
            if 1:
                if 2:
                    pass
            r:r�rprqr�r�ss  r�test_indentationzTestSpecifics.test_indentation�s#���O�O��
��
	��:�v�&rc��djdgdzdgz�}t|dd�}|j|jd�|j	�D��cgc]\}}}|��
}}}|j|dd	g�ycc}}w)
Nr#�
��spam�fnr�ri)�joinrr.�co_firstlineno�co_lines)r�s256�co�_�line�liness      r�test_leading_newlinesz#TestSpecifics.test_leading_newlines�sz���w�w��v��|�v�h�.�/��
�T�4��
(������*�*�A�.�(*���
�6�
�*�!�Q���
��6������C��)��7s�
A;c�X�dD]}|jtt|��|jtd�d�|jtd�d�|jtd�d�|jtd�d�|jtd�d	�|jtd
�d�|jtd�d�|jtd
�d�|jtd�d�|jtd�d�|jtd�d�|jtd�d�|jtd�d�|jtd�d�|jtd�d�|jtd�d�|jtd�d�|jtd�d�|jtd�d�|jtd�d �|jtd!�d"�|jtd#�d$�|jtd%�d&�|jtd'�d(�y))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����)rrr3r.)r�args  r�!test_literals_with_leading_zeroesz/TestSpecifics.test_literals_with_leading_zeroes�s��1�C�

���k�4��5�1�	
����f��s�+�����g���,�����h���-�����X�Y�[^�_�����h���.�����e��a�(�����k�*�A�.�����f��s�+�����g���-�����e��a�(�����e��b�)�����f��q�)�����e��a�(�����0�1�?�C�����F�G��Y�����1�2�O�D�����2�3�_�E�����0�1�?�C�����0�1�2�6�����0�1�2�6�����j�)�2�.�����/�0�"�5�����g���,�����l�+�R�0rc��d}dd|z�d�}tj|�5t|dd�ddd�tj|dz
�5|jt�5}t|dd�ddd�j
}|j
|jd	�|jd
t|��|jdt|��ddd�y#1swY��xYw#1swY�|xYw#1swYyxYw)Ni�za = 1
b = 2
c = �3z
d = 4z<long_int_pass>rr�z<long_int_fail>�zExceeds the limit z Consider hexadecimal )
r�adjust_int_max_str_digitsrrr�	exceptionr.�lineno�assertIn�str)r�nr�err_ctx�excs     r�test_int_literals_too_longz(TestSpecifics.test_int_literals_too_long�s�����%�c�!�e�W�G�4��
�
.�
.�q�
1��F�-�v�6�2�
�
.�
.�q��s�
3��"�"�;�/�7��� 1�6�:�0��#�#�C����S�Z�Z��+��M�M�.��C��9��M�M�2�C��H�=�
4�
3�2�
1��0�/��4�
3�s0�C"�C:�%C.�3A&C:�"C+�.C7	�3C:�:Dc�2�tjdk(r<d}|jt|�d�|jtd|z�d�n`tjdk(r<d}|jt|�d�|jtd|z�d	�n|j	d
�|jtdtjdz
z�t�|jtdtjd
z
z�t�y)Ni����
0xffffffffl���-l������������0xffffffffffffffffl����l��������z)How many bits *does* this machine have???z%sr��)�sys�maxsizer.r3rc�assertIsInstancero)r�all_one_bitss  r�test_unary_minuszTestSpecifics.test_unary_minus�s����;�;�*�$�'�L����T�,�/��<����T�#��"4�5�{�C�
�[�[�/�
/�/�L����T�,�/�1E�F����T�#��"4�5�7L�M��I�I�A�B�	
���d�4�C�K�K�<�!�+;�#<�=�s�C����d�4�C�K�K�<�!�+;�#<�=�s�Crr�c��d}d}d}d}d}d}d}d}|jjjD]}	|	��|j|	t��y)	Nll����ll����ll����r�l��������)�test_32_63_bit_values�__code__�	co_constsr�ro)
rrD�b�crh�ermrg�h�variables
          rr�z#TestSpecifics.test_32_63_bit_values�s]���A��A� �A� �A�$�A�$�A�$�A�$�A� �6�6�?�?�I�I���'��)�)�(�C�8�Jrc�V�d\}}|j|d�|j|d�y)N)r����r�r��r.)r�i�js   r�test_sequence_unpacking_errorz+TestSpecifics.test_sequence_unpacking_error�s+�����!�����A������B�rc��gd�}|D]A}|dz
}|jtt|dd�|jtt|dd��Cy)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��tmprrr7)r�stmts�stmts   r�test_none_assignmentz"TestSpecifics.test_none_assignment�sJ��

���D��D�L�D����k�7�D�%��J����k�7�D�%��H�rc��gd�}gd�}|D]}t|dd��|D]}|jtt|dd��!y)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)rrr)r�succeedrcr�s    r�test_importzTestSpecifics.test_importsH����"��0�D��D�%��(���D����k�7�D�%��H�rc��d�}|�\}}|jt|j�t|j��y)Nc��dd�}dd�}||fS)Nc��|SrrW��xs r�<lambda>zITestSpecifics.test_for_distinct_code_objects.<locals>.f.<locals>.<lambda>D���Qrc��|SrrWr�s rr�zITestSpecifics.test_for_distinct_code_objects.<locals>.f.<locals>.<lambda>Er�r�r�)r�rW)�f1�f2s  rrmz7TestSpecifics.test_for_distinct_code_objects.<locals>.fCs���B��B��r�6�Mr)�assertNotEqual�idr�)rrmr�r�s    r�test_for_distinct_code_objectsz,TestSpecifics.test_for_distinct_code_objectsAs4��	�����B����B�r�{�{�O�R����_�=rc�@�d�}|j|j�y)Nc��y)N�foorWrWrrr�z/TestSpecifics.test_lambda_doc.<locals>.<lambda>Ks��Er)�assertIsNonerV)r�ls  r�test_lambda_doczTestSpecifics.test_lambda_docJs�������!�)�)�$rc�,�d}|jtt|dd�d}t|dd�|jt	|�d�d}|jt	|�d�d}|jt	|�d�d	}|jt	|�d�d
}|jt	|�d�d}|jt	|�d�d
}|jt	|�d�d}|jt	|�d�y)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 -*-
¤)rrrr.r3�rrts  r�
test_encodingzTestSpecifics.test_encodingNs���7�����+�w��e�V�D�<����e�V�$�����d��Z�0�������d��Z�0�������d��V�,�8������d��Z�0�7������d��V�,�<������d��\�2�C������d��%M�N�D������d��%I�Jrc��Gd�dt�}|�}d|d<|j|dd�|dxxdz
cc<|j|dd�|d=|jd|�d|d<|j|dd�|dxxdz
cc<|j|dd�|d=|jd|�d|dd|j|ddd�|ddxxxdz
ccc|j|ddd�|dd�=|jtdd�|�d|dd�dd�f<|j|dd�dd�fd�|dd�dd�fxxdz
cc<|j|dd�dd�fd�|dd�dd�f=|jtdd�tdd�f|�d|ddd�<|j|ddd�d�|ddd�xxdz
cc<|j|ddd�d�|ddd�=|jtddd�|�d|ddd�ddd�f<|j|ddd�ddd�fd�|ddd�ddd�fxxdz
cc<|j|ddd�ddd�fd�|ddd�ddd�f=|jtddd�tddd�f|�d|d<|j|dd�|dxxdz
cc<|j|dd�|d=|jt|�d|d<|j|dd�|dxxdz
cc<|j|dd�|d=|jttf|�y)	Nc�*�eZdZd�Zd�Zd�Zd�Zd�Zy)�.TestSpecifics.test_subscripts.<locals>.str_mapc��i|_yr)�datar s r�__init__z7TestSpecifics.test_subscripts.<locals>.str_map.__init__gs	����	rc�2�|jt|�Sr�r�r�rGs  rrIz:TestSpecifics.test_subscripts.<locals>.str_map.__getitem__is���y�y��S��*�*rc�4�||jt|�<yrrrLs   rrNz:TestSpecifics.test_subscripts.<locals>.str_map.__setitem__ks��&+��	�	�#�c�(�#rc�0�|jt|�=yrrrGs  r�__delitem__z:TestSpecifics.test_subscripts.<locals>.str_map.__delitem__ms���I�I�c�#�h�'rc�0�t|�|jvSr)r�r�rGs  r�__contains__z;TestSpecifics.test_subscripts.<locals>.str_map.__contains__os���3�x�4�9�9�,�,rN)rSrTrUr�rIrNrrrWrr�str_mapr�fs��
�
+�
,�
(�
-rrr�r�)r�r�r�.)..)�objectr.�assertNotIn�slice�Ellipsis)rrrhs   r�test_subscriptszTestSpecifics.test_subscriptscs���
	-�f�
	-�
�I����!������1��q�!�	�!���	������1��q�!�
�a�D�����A����$������4��!�$�	�$��1�������4��!�$�
�d�G������#���!�A������1�Q���#�	�!�A��!�������1�Q���#�
�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���!�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�1rc�j�d}|djd�td�D��z}t|dd�y)Nzdef f(%s): pass�, c3�*K�|]}d||fz���
y�w)za%d:%dNrW��.0r�s  r�	<genexpr>z6TestSpecifics.test_annotation_limit.<locals>.<genexpr>�s����<��A�x�1�Q�%�'����i,r)r�r��rangerr}s  r�test_annotation_limitz#TestSpecifics.test_annotation_limit�s0����	�T�Y�Y�<��s��<�
<�<����3��rc��Gd�d�}|jd|jjj�|jd|jjj�|jd|jjj�|jd|jjj�y)Nc��eZdZd�Zy)�&TestSpecifics.test_mangling.<locals>.Ac��d}d}ddl}ddl}y)Nr�r�r)�_A__mangled_mod�__package__.module)�_A__mangled�__not_mangled__r�__package__s    rrmz(TestSpecifics.test_mangling.<locals>.A.f�s���	�"#��$�)rN)rSrTrUrmrWrrr\r�s��
*rr\rrrr)r�rmr��co_varnames)rr\s  r�
test_manglingzTestSpecifics.test_mangling�s���	*�	*�	
�
�
�m�Q�S�S�\�\�%=�%=�>��
�
�'������)A�)A�B��
�
�'������)A�)A�B��
�
�m�Q�S�S�\�\�%=�%=�>rc�b�tjtjtjtjtj
d��tj
d����tjtjdtj���tjdtj���gd�	�g�
���gg��}|jtd�5ttj|�d
d�ddd�y#1swYyxYw)Nr��rMr�)�targetrMr��r��ctx�yr)r#�iter�ifs�is_async)�elt�
generators��body�type_ignoreszNamedExpr target must be a Name�<file>r)�ast�Module�Expr�ListComp�	NamedExpr�Constant�
comprehension�Name�Store�Load�assertRaisesRegexrer�fix_missing_locations�rrfs  r�test_compile_invalid_namedexprz,TestSpecifics.test_compile_invalid_namedexpr�s����J�J�����,�,��M�M�#&�<�<�a�#8�"%�,�,�Q�"7��
 �-�-�'*�x�x�3�C�I�I�K�'H�%(�X�X��#�(�(�*�%E�$&�)*�	�$�
���$�'
��,�
#�
#�I�/P�
Q��C�-�-�a�0�(�F�C�R�
Q�
Q�s�;!D%�%D.c��t}|j�jd�r|dd}t|d��5}|j	�}ddd�ddgddgd	d
gddg|gg}|D]�\}}t|d
|zd�}t|d|zdtj�}|jt|�tjk(�t|d|zd�}|j||�|j|jd|z���tdddtj�}|jtt
|dd�|jtt
t
j�dd�t
j�}t
j �g|_|jtt
|dd�y#1swY��txYw)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)r:z<ast>r3)�__file__�lower�endswith�open�readr�_ast�
PyCF_ONLY_AST�
assertTrue�typer1r.�co_filenamerre�If�BoolOpr-)	r�fnamerm�	fcontents�sample_codert�co1r0�co2s	         r�test_compile_astzTestSpecifics.test_compile_ast�s������;�;�=�!�!�%�(��#�2�J�E�
�%�'�
*�a�����I�+���!�
�4�5�
�D�E�
�=�>�
�I��
��'�K�E�4��$���
�v�6�C��$���
�v�t�7I�7I�J�C��O�O�D��I����4�5��#�u�u�}�f�5�C����S�#�&����S�_�_�e�e�m�<�'��j�*�f�d�6H�6H�I�����)�W�c�7�F�C�	
���)�W�d�g�g�i��&�I��k�k�m���K�K�M�?������)�W�c�7�F�C�;+�
*�s�F;�;Gc�
�tjtjtjtjdtj
���tjd��tj���gtjdtj
�����gg��}|jtd	�5ttj|�d
d�ddd�y#1swYyxYw)Nr�r$r�r")rMr	r%�Callable)�name�type_paramsrMr,zTypeAlias with non-Name namer/r)r0r1�	TypeAlias�	Subscriptr7r9r5r8r:rerr;r<s  r�test_compile_invalid_typealiasz,TestSpecifics.test_compile_invalid_typealias�s����J�J��
�
����!�h�h�%�S�X�X�Z�@�!�l�l��5��I�I�K��
!#��(�(�j�c�h�h�j�A��
��

���
#�
#�I�/M�
N��C�-�-�a�0�(�F�C�O�
N�
N�s�!C9�9Dc�r��d��fd�}|�|�|�|�i}|j|ddd��y)Nrc����dz
��S�Nr�rW�r�s�rrmz3TestSpecifics.test_dict_evaluation_order.<locals>.fs���
��F�A��Hrr��)r�r�r�)rrmrhr�s   @r�test_dict_evaluation_orderz(TestSpecifics.test_dict_evaluation_orders9���
��	�
�S�!�#�q�s�A�C� �������a�L�)rc�T�dD]+}td|d�}|j|jd��-td�t	d�fD]-}|jt�5td|d�ddd��/|jttdtd�d�y#1swY�`xYw)N)�file.py�file.py�passrrarb)rr.rJ�	bytearray�
memoryviewrrerQ)rr6rts   r�test_compile_filenamez#TestSpecifics.test_compile_filenames���-�H��6�8�V�4�D����T�-�-�y�9�.�"�*�-�z�*�/E�E�H��"�"�9�-����&�1�.�-�F�	
���)�W�f�d�:�6F��O�.�-�s�B�B'	c���d}t|dd�}|jD]C}t|tj�s�|j|j|j��Ey)Nzdef f(): pass
def g(): pass�myfiler)rr��
isinstance�types�CodeType�assertIsrJ)rr~r��objs    r�test_same_filename_usedz%TestSpecifics.test_same_filename_used$sG��.���A�x��(���;�;�C��#�u�~�~�.��
�
�c�o�o�q�}�}�=�rc��|jd�|jd�|jd�|jd�|jd�|jd�|jd�|jd�|jd	�|jd
�|jd�|jd�|jd
�|jd�|jd�y)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
''')rr s r�test_single_statementz#TestSpecifics.test_single_statement,s������G�$����I�&����I�&����K�(����M�*����1�2����2�3����F�#����-�.����/�0����3�4����,�-����<�=����/�0����9�:rc�6�|jd�|jd�|jd�|jd�|jd�|jd�|jd�|jd�|jd	�y)
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
)rr s r�test_bad_single_statementz'TestSpecifics.test_bad_single_statement=s���� � ��(�� � ��1�� � �!2�3�� � ��0�� � ��,�� � �!6�7�� � �!9�:�� � �!;�<�� � �!F�Grc�f�d}tj�5}tjj	|d�}t|d�5}|j
|�ddd�tj|�d}ddd�|jdj�y#1swY�FxYw#1swY�2xYw)Ns0000
00000000000

�
�bad.py�wbr�%source code cannot contain null bytes��tempfile�TemporaryDirectory�os�pathr�rD�writer�run_python_until_endr��err�r�src�tmpdr��fp�ress      r�"test_particularly_evil_undecodablez0TestSpecifics.test_particularly_evil_undecodableHs���4��
�
(�
(�
*�d������d�H�-�B��b�$��2�����
� ��4�4�R�8��;�C�	+�
	
�
�
�>����H� ���+�
*��#�-B'�B� B'�B$	� B'�'B0c�f�d}tj�5}tjj	|d�}t|d�5}|j
|�ddd�tj|�d}ddd�|jdj�y#1swY�FxYw#1swY�2xYw)Ns#
#�
rtrurrvrwrs      r�$test_yet_more_evil_still_undecodablez2TestSpecifics.test_yet_more_evil_still_undecodableRs�����
�
(�
(�
*�d������d�H�-�B��b�$��2�����
� ��4�4�R�8��;�C�	+�
	
�
�
�>����H� ���+�
*�r�c������tdz�tdz�ttdz��d
����fd�	}|dd�|dd�|dd�|dd	�y)Nr��drkc����||�
zz}t|d|���fD]J}|||zz}dj|||�}�	jt|��5t|d|�ddd��Ly#1swY�WxYw)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_limitfs������M�!9�9�I��I�x��.�$�k�2���(�U�"2�2��8�?�?�"�H�e�5���&�&�~�7�&�C��F�H�d�3�D�C�	3�D�C�s�A)�)A2	rDz()z.bz[0]z*a)r)rro)rr�r�r�r�s` @@@r�test_compiler_recursion_limitz+TestSpecifics.test_compiler_recursion_limit\s]���'��*�
�'�#�-���-��3�4�
�	4�	4�	�C����C����C����C��rc���|jtd�5tddd�ddd�|jtd�5ttd�dd�ddd�ttd�dddd�}|j	t|�d�ttd	�dddd�}|j	t|�d�ttd
�dddd�}|j	t|�d�|j	ttd	�dd�d�t
�}ttd�dd|�|j	|dd
�y#1swY��:xYw#1swY��xYw)Nzcannot contain nullz123�<dummy>r3s123r�r��s1234s$23$sax = 123r�rE)r:rrrer.r3r`r)rrt�	namespaces   r�test_null_terminatedz"TestSpecifics.test_null_terminatedxs>���
#�
#�K�1F�
G��I�y�&�1�H�
�
#�
#�K�1F�
G��J�z�*�I�v�>�H��z�*�-�a��3�Y��G������d��R�(��z�'�*�1�R�0�)�V�D������d��R�(��z�'�*�1�R�0�)�V�D������d��R�(�	
����j��1�!�B�7�8�"�=��F�	��Z��
$�Q�r�
*�I�6�����3���,�H�
G��
G�
G�s�E�E*�E'�*E4c���|jjD]}t|�t|�k(s�y|jd|�d|jj���y)Nzunable to find constant z in )r�r��reprrc)r�func�expected�consts    r�check_constantzTestSpecifics.check_constant�sK���]�]�,�,�E��E�{�d�8�n�,��-�
�I�I�!�4�=�=�#:�#:�<�
=rc����fd�}|d�|d�|d�|d�|d�d�d�}}�j|jj|jj��j|t��jt
|��t
t��d�d	�}}d
�}�j|jjd|jjdd��jtt|jjd��|jjd�d�d
�}}�j|jj|jj��j|tdh���j|d��y)Nc�0��i}d|�d|��}t||�|d}|d}�j|jj|jj��j	||��jt
|��t
|��y�Nzf1, f2 = lambda: z
, lambda: r�r�)rrlr�r�r�r.r�)r��nsrtr�r�rs     �r�check_same_constantz?TestSpecifics.test_merge_constants.<locals>.check_same_constant�sy����B�8=�u�E�D���r�N��D��B��D��B��M�M�"�+�+�/�/����1F�1F�G�����E�*����T�"�$�Z��e��5rr�sabc�abcc��y�N.rWrWrrr�z4TestSpecifics.test_merge_constants.<locals>.<lambda>�s��rc��yr�rWrWrrr�z4TestSpecifics.test_merge_constants.<locals>.<lambda>�s��crc��y)N�
not a namerWrWrrr�z4TestSpecifics.test_merge_constants.<locals>.<lambda>�s��rc��y)N�r�rWrWrrr�z4TestSpecifics.test_merge_constants.<locals>.<lambda>�s��rc�
�|dvS)N>r�rWr�s rr�z4TestSpecifics.test_merge_constants.<locals>.<lambda>�s
��q�-�-rr�c�
�|dvS�N>rrWr�s rr�z4TestSpecifics.test_merge_constants.<locals>.<lambda>����1��8rc�
�|dvSr�rWr�s rr�z4TestSpecifics.test_merge_constants.<locals>.<lambda>�s��q�C�xr)rlr�r�r�r
r.r��nextr'�	frozensetrH)rr�r�r��f3s`    r�test_merge_constantsz"TestSpecifics.test_merge_constants�s[���
	6�	�D�!��A���C� ��F�#��E�"��k�B���
�
�b�k�k�+�+�R�[�[�-B�-B�C����B��)�����b�d��T�(�^�4�&�'>�B��
-���
�
�b�k�k�+�+�A�.��k�k�+�+�A�.�q�1�	3��
�
�d�4���� 5� 5�a� 8�9�:��k�k�+�+�A�.�	0�
$�%7�B���
�
�b�k�k�+�+�R�[�[�-B�-B�C����B�	�1�#��/�����1��rc��d�}d�}|j|jj|jj�y)Nc�.�|jjSr)r&rYr�s rr�z5TestSpecifics.test_merge_code_attrs.<locals>.<lambda>����q�s�s�u�urc�.�|jjSr)r�r��rDs rr�z5TestSpecifics.test_merge_code_attrs.<locals>.<lambda>�r�r)rlr��co_linetable)rr�r�s   r�test_merge_code_attrsz#TestSpecifics.test_merge_code_attrs�s0����
���
�
�b�k�k�.�.����0H�0H�Irc�n�d�}|j|jj|jdf�y)Nc��	y)�	docstring�usedrWrWrrrmz2TestSpecifics.test_remove_unused_consts.<locals>.f�s���rr��r.r�r�rV�rrms  r�test_remove_unused_constsz'TestSpecifics.test_remove_unused_consts�s/��	 �	
������-�-��)�)�V�,�	.rc�V�d�}|j|jjd�y)Nc��	y�Nr�rWrWrrrmz?TestSpecifics.test_remove_unused_consts_no_docstring.<locals>.f�s���rr�)r.r�r�r�s  r�&test_remove_unused_consts_no_docstringz4TestSpecifics.test_remove_unused_consts_no_docstring�s&��	 �	
������-�-�'�	)rc�^�d}dg}|jd�|jd�t|�D],}|jd|�d��|jd|�d���.|jd�d	j|�}i}tt	|d
d�|�t||�|d}t
gd
�t|�D�cgc]}d|����	c}z�}|j|jj|�d	j|dd�}|j||��ycc}w)Ni�z	def f():
z	s = ''
z	for i in range(1):
z		if True: s += 'tz'
z		if False: s += 'fz
	return s
r#rarrm)Nr#r��tr�)
�appendrr�r3rr�tupler.r�r�)r�Nrtr�rgrmr�s       r�'test_remove_unused_consts_extended_argsz5TestSpecifics.test_remove_unused_consts_extended_args�s�����~�����L�!����,�-��q��A��K�K�.�q�c��5�6��K�K�/��s�#�6�7��	
���N�#��w�w�t�}�����W�T�9�f�
-�q�1��T�1�
�
�c�F����5��8�)D�8�a�A�a�S�'�8�)D�D�E��������-�-�x�8��7�7�8�A�B�<�(������1�3�'��*Es�D*
c�n�d�}|j|jj|jdf�y)Nc��y)r�r�rWrWrrr�z0TestSpecifics.test_strip_unused_None.<locals>.f1�s��rr�r�)rr�s  r�test_strip_unused_Nonez$TestSpecifics.test_strip_unused_None�s,��	�	
������.�.����R�0@�Arc��d�}|jdttj|��dj�y)z9Regression test for issue35193 when run under clang msan.c��y)Nr�)�RuntimeErrorrWrr�unused_code_at_endzcTestSpecifics.test_peephole_opt_unreachable_code_array_access_in_bounds.<locals>.unused_code_at_ends��r�RETURN_CONSTr�N)r.rQ�dis�get_instructions�opname)rr�s  r�9test_peephole_opt_unreachable_code_array_access_in_boundszGTestSpecifics.test_peephole_opt_unreachable_code_array_access_in_boundss:��	.�	
������%�%�&8�9�:�2�>�E�E�	Grc�����fd�}|dd�|dd�|dd�|dd�|d	d
�d�d�}}�j|j|j��j|d
��j|d��jt	|��t	d
���jt	|��t	d��d�d�}}�j|j|j��j|tdh���j|tdh���j
|d���j
|d��y)Nc����i}td|�d|��|�|d}|d}�j|j|j��j|j|j��j	||��j	||��jt
|��t
|���jt
|��t
|��yr�)r�assertIsNotr�r�r�r.r�)�const1�const2r�r�r�rs     �r�check_different_constantszJTestSpecifics.test_dont_merge_constants.<locals>.check_different_constantss�����B��f�f�E�r�J��D��B��D��B����R�[�[�"�+�+�6�������R�[�[�9�����F�+�����F�+����T�"�$�Z��f��6����T�"�$�Z��f��6rrr�g�)r)r�rD�ar�)r�c��y)Nr�rWrWrrr�z9TestSpecifics.test_dont_merge_constants.<locals>.<lambda>.s��rc��y)N���rWrWrrr�z9TestSpecifics.test_dont_merge_constants.<locals>.<lambda>.s��rr�r�c�
�|dvSr�rWr�s rr�z9TestSpecifics.test_dont_merge_constants.<locals>.<lambda>7r�rc�
�|dvS)N>r�rWr�s rr�z9TestSpecifics.test_dont_merge_constants.<locals>.<lambda>7s��q�E�zr)r�r�r�r.r�r�rH)rr�r�r�s`   r�test_dont_merge_constantsz'TestSpecifics.test_dont_merge_constantss$���
	7�	"�!�S�)�!�$��-�!�$��/�!�#�t�,�!�&�'�2��
�B��������b�k�k�2����B��&����B��&�����b�d��T�%�[�1�����b�d��T�%�[�1�$�%9�B��������b�k�k�2����B�	�1�#��/����B�	�3�%� 0�1�����1�������3�� rc�0�tdtd�d�y)N�42�test_compile_pathliker)rr	r s r�test_path_like_objectsz$TestSpecifics.test_path_like_objects>s����h�6�7��Br�cpuc�$�tddzdd�y)Nzif a: b
i@
r�rrr s r�test_stack_overflowz!TestSpecifics.test_stack_overflowBs��	��f�$�i��8rc�$�d�}d�}d�}d�}||||g}|D]y}ttj|��}|jt	|�d�|jd|dj�|jd|dj��{y)Nc��yrrWrWrr�unused_block_ifzPTestSpecifics.test_dead_blocks_do_not_generate_bytecode.<locals>.unused_block_ifLs��rc��yrrWrWrr�unused_block_whilezSTestSpecifics.test_dead_blocks_do_not_generate_bytecode.<locals>.unused_block_whilePs��rc��	yrrWrWrr�unused_block_if_elsezUTestSpecifics.test_dead_blocks_do_not_generate_bytecode.<locals>.unused_block_if_elseTs���rc��	yrrWrWrr�unused_block_while_elsezXTestSpecifics.test_dead_blocks_do_not_generate_bytecode.<locals>.unused_block_while_elseZs���rr�r�r�)rQr�r��assertLessEqual�lenr.r��argval)rr�r�r�r��funcsr��opcodess        r�)test_dead_blocks_do_not_generate_bytecodez7TestSpecifics.test_dead_blocks_do_not_generate_bytecodeJs���	�	�	�	�!�"4�%�'>�@���D��3�/�/��5�6�G�� � ��W��q�1����^�W�R�[�-?�-?�@����T�7�2�;�#5�#5�6�	rc��d�}d�}||g}|D]y}ttj|��}|jdt	|��|jd|dj
�|jd|dj��{y)Nc��yrrWrWrr�break_in_whilez;TestSpecifics.test_false_while_loop.<locals>.break_in_whilej���rc��yrrWrWrr�continue_in_whilez>TestSpecifics.test_false_while_loop.<locals>.continue_in_whilenrrr�r�r�)rQr�r�r.r�r�r�)rrrrr�rs      r�test_false_while_loopz#TestSpecifics.test_false_while_loopis���	�	� �!2�3���D��3�/�/��5�6�G����Q��G��-����^�W�Q�Z�->�->�?����T�7�1�:�#4�#4�5�	rc�r�d�}d�}d�}d�}||||g}|D]�}|j|��5ttj|��}|j	t|�d�|j
d|dj�|jd	|d
j�ddd���y#1swY��xYw)Nc��|SrrWr�s r�and_truez;TestSpecifics.test_consts_in_conditionals.<locals>.and_true|����rc��dS)NFrWr�s r�	and_falsez<TestSpecifics.test_consts_in_conditionals.<locals>.and_falses���rc��dS)NTrWr�s r�or_truez:TestSpecifics.test_consts_in_conditionals.<locals>.or_true�s���rc��|SrrWr�s r�or_falsez;TestSpecifics.test_consts_in_conditionals.<locals>.or_false�r
r�r�r��LOAD_r��RETURN_VALUEr�)	�subTestrQr�r�r�r�r�r�r.)rrrrrrr�rs        r�test_consts_in_conditionalsz)TestSpecifics.test_consts_in_conditionals{s���	�	�	�	��9�g�x�8���D����4��(��s�3�3�D�9�:���$�$�S��\�1�5��
�
�g�w�r�{�'9�'9�:�� � �����1C�1C�D�	)�(��(�(�s�A8B-�-B6	c��gd�}|D]�}i}ttj|�|�|d}|j|j��5tt
j|��}|D�cgc]}|j��}}|jd|�|jd|�|jd|�ddd���ycc}w#1swY��xYw)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�LOAD_METHOD�	LOAD_ATTR�CALL)rrprqrrSrQr�r�r�rr�)r�sourcesrr�r�r�opcode�instructionss        r�test_imported_load_methodz'TestSpecifics.test_imported_load_method�s���
��,�F��I������(�)�4��U�#�D����4�=�=��1��s�3�3�D�9�:��<C�D�G�&��
�
�G��D�� � ���=��
�
�k�<�8��
�
�f�l�3�2�1�	�� E�2�1�s�#C
�/C�8C
�C
�
C	c��d�}|jjdz}||jj�D��cgc]\}}}|��
c}}vsJ�ycc}}w)Nc��t�yr)�printrWrr�callz6TestSpecifics.test_lineno_procedure_call.<locals>.call�s���rr�)r�r�r�)rr$�line1r�r�s     r�test_lineno_procedure_callz(TestSpecifics.test_lineno_procedure_call�sR��	��
�
�,�,�q�0���d�m�m�6L�6L�6N�O�6N�l�q�!�T�T�6N�O�O�O�O��Os�
Ac�F�
��d�
�
fd�}�
fd�}�
fd�}�
fd�}||||g}gd�}d��fd�}t||d��D][\}}	|j|�	�5||�|j�j�jj
z
|	�ddd��]y#1swY�hxYw)
NTc���|��ryyrrW�r��TRUEs �r�if1z<TestSpecifics.test_lineno_after_implicit_return.<locals>.if1�s���
�C���rc���|��ryyrrWr)s �r�if2z<TestSpecifics.test_lineno_after_implicit_return.<locals>.if2�s���
�C���rc���|��ryyrrWr)s �r�if3z<TestSpecifics.test_lineno_after_implicit_return.<locals>.if3�s���
�C���rc���|��syyrrWr)s �r�if4z<TestSpecifics.test_lineno_after_implicit_return.<locals>.if4�s���
�C���r)r�r�r�r�c�0��tjd��yr\)r��	_getframe)�frames�r�save_caller_framezJTestSpecifics.test_lineno_after_implicit_return.<locals>.save_caller_frame�s����M�M�!�$�Er��strictr)�ziprr.�f_lineno�f_coder�)rr+r-r/r1r�	lastlinesr5r��lastliner*r4s          @@r�!test_lineno_after_implicit_returnz/TestSpecifics.test_lineno_after_implicit_return�s������	�	�	�	��s�C��%��!�	���	%�"�%��4�@�N�D�(����4��(��&�'�� � �������0K�0K�!K�X�V�)�(�A�(�(�s�<B�B 	c��d�}d�}||fD]�}|j|��5||ur|j�
	ddd��0|j}|j�\\}}}|j	|d�|j	|t|j��|j	||j�ddd���y#1swY��xYw)Nc��y)z
doc stringNrWrWrr�no_code1z9TestSpecifics.test_lineno_after_no_code.<locals>.no_code1���rc��yrrWrWrr�no_code2z9TestSpecifics.test_lineno_after_no_code.<locals>.no_code2�rArrr)rrVr�r�r.r��co_coder�)rr@rCr�rt�start�endr�s        r�test_lineno_after_no_codez'TestSpecifics.test_lineno_after_no_code�s���	�	��x�(�D����4��(��8�#��(8�(8�(@��)�(��}�}��'+�}�}��$�#�%��d�� � ���*�� � ��c�$�,�,�&7�8�� � ��t�':�':�;�)�(�)�(�(�s�B;�A5B;�;C	c��d}g}|j�D]/\}}}|��
||k7s�|j||jz
�|}�1|S)Nr�)r�r�r�)rrt�	last_liner�r�r�s      r�get_code_lineszTestSpecifics.get_code_lines�sR���	����-�-�/�J�A�q�$���D�I�$5��
�
�4�$�"5�"5�5�6� �	�*��
rc�(�d�}gd�}d�}gd�}d�}gd�}d�}gd�}||||g}	||||g}
t|	|
d	�
�D]M\}}|j|��5|j|j�}
|j	||
�ddd��Oy#1swY�ZxYw)Nc�"�tjSr)�orDrWrr�	load_attrz6TestSpecifics.test_lineno_attribute.<locals>.load_attr�s�����
r)rr�r�r�c�,�tjd�S�Nr)rMrfrWrr�load_methodz8TestSpecifics.test_lineno_attribute.<locals>.load_methods�������
r)rr�r�r^r�r�c�"�tt_yr)�vrMrDrWrr�
store_attrz7TestSpecifics.test_lineno_attribute.<locals>.store_attr	s��
��r)rrnr�r�c�>�txjtz
c_yr)rMrDrSrWrr�aug_store_attrz;TestSpecifics.test_lineno_attribute.<locals>.aug_store_attrs�������	
�r)rr�r�rnr�r�Tr6r)r8rrJr�r.)rrN�load_attr_linesrQ�load_method_linesrT�store_attr_linesrV�aug_store_attr_linesr�
func_linesr�r��
code_liness              r�test_lineno_attributez#TestSpecifics.test_lineno_attribute�s���	�
)��	�1��	�*��	� 4���[�*�n�E��&�(9�!�#7�9�
��u�j��>�K�D�%����4��(�!�0�0����?�
�� � ��
�3�)�(�?�(�(�s�.B�B	c��d�}gd�}|jjd}|j|�}|j||�y)Nc��d�tD�S)Nc3� K�|]}d���y�w)r�NrW�rr�s  rrzOTestSpecifics.test_line_number_genexp.<locals>.return_genexp.<locals>.<genexpr>'s���������s�)r&rWrr�
return_genexpz<TestSpecifics.test_line_number_genexp.<locals>.return_genexp&s����	�
r)rr^r�rr^r�)r�r�rJr.)rrb�genexp_lines�genexp_coder\s     r�test_line_number_genexpz%TestSpecifics.test_line_number_genexp$sD��	�'��#�,�,�6�6�q�9���(�(��5�
�����z�2rc�l�d�}gd�}|j|j�}|j||�y)Nc��6K�|23d{���}t�7�6y�wr)r-)�aseqr�s  r�testzLTestSpecifics.test_line_number_implicit_return_after_async_for.<locals>.test4s�����
�a��
��4�s�������)rr�r�r�)rJr�r.)rri�expected_linesr\s    r�0test_line_number_implicit_return_after_async_forz>TestSpecifics.test_line_number_implicit_return_after_async_for2s2��	�&���(�(����7�
������4rc���d�}td�tj|j�D��}|j	t|�dkD�|j	t
d�|D���y)Nc�(�tD]	}ts�
�yr)r�r&r]s rrmz5TestSpecifics.test_lineno_of_backward_jump.<locals>.f>s������rc3�fK�|])}|jdk(r|jj���+y�w)�
JUMP_BACKWARDN)r��	positionsr�)r�insts  rrz=TestSpecifics.test_lineno_of_backward_jump.<locals>.<genexpr>Cs.����:�#C�4��+�+��8��~�~�,�,�#C�s�/1rc3�$K�|]}|du���
y�wrrW)rr�s  rrz=TestSpecifics.test_lineno_of_backward_jump.<locals>.<genexpr>Hs����;�7�a�A�T�M�7�s�)rQr�r�r�rHr��all)rrm�linenoss   r�test_lineno_of_backward_jumpz*TestSpecifics.test_lineno_of_backward_jump<s]��	�
�:�#&�#7�#7��
�
�#C�:�:��	
����G��q�(�)�����;�7�;�;�<rc��d}ddjd�t|�D��zdz}|jtt	|��|�y)Ni�{�,c3�*K�|]}|�d|�����
y�w)�:NrWras  rrz6TestSpecifics.test_big_dict_literal.<locals>.<genexpr>Qs����!G�6F��Q�C�q���*�6F�r�})r�rr.r�r3)r�	dict_size�the_dicts   r�test_big_dict_literalz#TestSpecifics.test_big_dict_literalJsE���	�����!G�e�I�6F�!G�G�G�#�M������T�(�^�,�i�8rc��d�}d}d}ttj|d���D]b\}}|jdk(r|j	|j
d��2|j|vs�A|j	|j
|dz|z��dy)	Nc�&�d}	|dkDr|dz}nyd}�)Nr�rr�rW)�vals r�
if_else_breakzITestSpecifics.test_redundant_jump_in_if_else_break.<locals>.if_else_breakXs'���C����7��1�H�C����rr�)�POP_JUMP_IF_FALSE�POP_JUMP_IF_TRUE�
JUMP_ABSOLUTE�JUMP_FORWARDT��show_cachesr�rr�)�	enumerater��Bytecoder�r�r�)rr��
INSTR_SIZE�
HANDLED_JUMPSr��instrs      r�$test_redundant_jump_in_if_else_breakz2TestSpecifics.test_redundant_jump_in_if_else_breakTs���	��
�
�
�%��L�L��D�9�
�K�D�%��|�|�~�-��#�#�E�I�I�q�1�����.��#�#�E�I�I��q��*�/D�E�

rc�v�d�}tj|�D]}|j|jd�� y)Nc�>�||cxkr|ksn	||cxkr|ks�
y�yrrW)rDr�r�s   r�while_not_chainedz@TestSpecifics.test_no_wraparound_jump.<locals>.while_not_chainedts���1�y�q�y���1�y�q�yr�EXTENDED_ARG)r�r�r�r�)rr�r�s   r�test_no_wraparound_jumpz%TestSpecifics.test_no_wraparound_jumpqs1��	��\�\�"3�4�E�������n�=�5rc�����fd�}d�}d�}d�}d�}||dd�||dd	�||d
d�||dd	�||dd�||dd	�||dd�||d
d�||dd	�y)Nc���d}tj|�D]}|j|k(s�|dz
}��j||�y)Nrr�)r�r�r�r.)r��opr��actualr�rs     �r�check_op_countzBTestSpecifics.test_uses_slice_instructions.<locals>.check_op_count~sB����F����d�+���<�<�2�%��a�K�F�,�
���V�X�.rc�p�tttttdztdtztddzSr)r�rDr�rWrr�loadz8TestSpecifics.test_uses_slice_instructions.<locals>.load�s,���Q�q�6�A�q�r�F�?�Q�r��U�*�Q�q�T�1�1rc��tttttttdttdtttddyr)r&r�rDr�rWrr�storez9TestSpecifics.test_uses_slice_instructions.<locals>.store�s,���A�a��F��A�q�r�F��A�b�q�E��A�a�Drc�2�tttt�Sr)r�rDr�r�rWrr�
long_slicez>TestSpecifics.test_uses_slice_instructions.<locals>.long_slice�s���Q�q��U�8�Orc�@�tttxxxtz
cccyr)r�rDr�r&rWrr�augz7TestSpecifics.test_uses_slice_instructions.<locals>.aug�s��
�a��F�a�K�Fr�BINARY_SLICEr^�BUILD_SLICEr�STORE_SLICEr�rW)rr�r�r�r�r�s`     r�test_uses_slice_instructionsz*TestSpecifics.test_uses_slice_instructions{s����	/�	2�	�	�	�	�t�^�Q�/��t�]�A�.��u�m�Q�/��u�m�Q�/��z�=�!�4��z�>�1�5��s�N�A�.��s�M�1�-��s�M�1�-rc��dD]�\}}d|�d|�d�}ddddt|�fgz}d|��d|�d	�d
|�d�fD]�}t|dd
�}tj|�D�cgc])}|jj|�r|j��+}}|j|�5|j||�ddd�����ycc}w#1swY��xYw)N))�COMPARE_�<)r�z<=)r��>)r�z>=)�CONTAINS_OP�in)r�znot in)�IS_OP�is)r�zis notza z b z cr�rz\
zif \
z: xzx if \
z else yrr)	r�rr�r�r��
startswithrprr.)	r�
opname_prefixr��expr�expected_positionsrrt�instruction�actual_positionss	         r�test_compare_positionsz$TestSpecifics.test_compare_positions�s���	"
��M�2���t�3�r�d�"�%�D�!"�q�!�Q��D�	�&:�%;�!;���t�f�
����c�2�i��v�W�4M����v�x��8��(+�';�';�D�'A�$�'A��"�)�)�4�4�]�C� �)�)�'A�!�$�
�\�\�&�)��$�$�%5�7I�J�*�)��	"
�� $�
*�)�s�.B=�C�Cc��gd�}|D]*}|j|��5t|dd�ddd��,y#1swY�7xYw)N)zassert (False if 1 else True)z=def f():
	if not (False if 1 else True): raise AssertionErrorz2def f():
	if not (False if 1 else True): return 12)r�r
r)rr)r�exprsr�s   r�)test_if_expression_expression_empty_blockz7TestSpecifics.test_if_expression_expression_empty_block�s>��
��
�D����4��(���j�&�1�)�(��(�(�s�5�>	c�H�tjd�}t|dd�y)Nz�
            def foo(param, lambda_exp):
                pass

            foo(param=0,
                lambda_exp=lambda:
                1)
        rrr|r�s  r�"test_multi_line_lambda_as_argumentz0TestSpecifics.test_multi_line_lambda_as_argument�s#����� �
��	��h��'rc�<�d�}|j|dd�d�y)Nc��||c}}|SrrW)r�r&rDs   rrmz0TestSpecifics.test_apply_static_swaps.<locals>.f�s���a�D�A�q��Hrr�r&r�r�s  r�test_apply_static_swapsz%TestSpecifics.test_apply_static_swaps�s��	�	
����3���c�*rc�>�d�}|j|ddd�d�y)Nc��|||c}}}|SrrW�r�r&rYrDr�s     rrmz2TestSpecifics.test_apply_static_swaps_2.<locals>.f������A�G�A�q�!��Hrr�r&rYr�r�s  r�test_apply_static_swaps_2z'TestSpecifics.test_apply_static_swaps_2��"��	�	
����3��S�)�3�/rc�>�d�}|j|ddd�d�y)Nc��|||c}}}|SrrWr�s     rrmz2TestSpecifics.test_apply_static_swaps_3.<locals>.f�r�rr�r&rYr�r�s  r�test_apply_static_swaps_3z'TestSpecifics.test_apply_static_swaps_3�r�rc�
�d�}y)Nc�\�trtr		tSyyyy#YnxYwts�tr� �r)�element�	somethingrWrrrmz9TestSpecifics.test_duplicated_small_exit_block.<locals>.f�s.���i��$�$���i�'�����	�i�s��rWr�s  r� test_duplicated_small_exit_blockz.TestSpecifics.test_duplicated_small_exit_block�s��	rc�
�d�}y)Nc�6�tr	ydy#YnxYwtr��r\)rUrWrrrmz5TestSpecifics.test_cold_block_moved_to_end.<locals>.f�s"����������	�s�rWr�s  r�test_cold_block_moved_to_endz*TestSpecifics.test_cold_block_moved_to_end�s��	rc�
�d�}y)Nc��|rd|r�yyrPrWr�s rrmzMTestSpecifics.test_remove_empty_basic_block_with_jump_target_label.<locals>.f�s
����rrWr�s  r�4test_remove_empty_basic_block_with_jump_target_labelzBTestSpecifics.test_remove_empty_basic_block_with_jump_target_label�s��	rc�
�d�}y)Nc�D�trtytrtytyr)r�r�rDrhrWrrrmz<TestSpecifics.test_remove_redundant_nop_edge_case.<locals>.f�s
���A�a�A�arrWr�s  r�#test_remove_redundant_nop_edge_casez1TestSpecifics.test_remove_redundant_nop_edge_case�s��	(rN)YrSrTrUrrr!r$r'r0r4r8r;r>ri�unittest�skipIfr�is_wasirurwrzrr�r�r�r�r�r�r�r�r�r�r�r�r�rrr r=rRrYr_rf�cpython_onlyrnrprrr�r�r�r�r�r�r�r�r�r�r�r�r�r��requires_resourcer�rr	rr r&r=rGrJr]rerkrur~r�r�r�r�r�r�r�r�r�r�r�r�r�rWrrrrs��.�D�*�&�Q�-�J�L�Q�J�-%�^�X�_�_�W�_�_�&F�G�'�H�'�2D�8�'�*�1�B>�D�&�{�{�)�)�	9� �I�(-I�^>�%�K�*F2�P �?�D�6!D�FD�(	*�P�
���>��>�;�"	H�I�I�
����X�_�_�W�_�_�&F�G��H���4-�(=�
���(��(�X
���J��J�
���	.��	.�
���
)��
)�
���(��(�,
���B��B�
���G��G�&!�PC��W���u�%�9�&�9�
���7��7�<6�$E�. 4�DP� W�D<�"�*4�X3�5�=�9�F�:>�
��� .�� .�DK�2	2�
(�+�0�0��	��(rrc�^�eZdZd�Z	d&d�Zd�Zd�Zd�Zed��Z	e
jejjd�d��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'e(jRd!��Z*d"�Z+d#�Z,d$�Z-y%)'�TestSourcePositionsc�Z�	�
���t|dd�}t|ddtj�}|jt	|�tj
k(�t
�t
�t
�t
�f\���	�
G�	�
��fd�dtj�}|�j|�|j�D]^\}}}}|dk(r�|�|j|��|�|j|��|�|j|�	�|��M|j|�
��`||fS)Nztest_compile.pyrc�(���eZdZ�����fd�Z�xZS)�LTestSourcePositions.check_positions_against_ast.<locals>.SourceOffsetVisitorc�p��t�|�|�t|tjtj
tjf�sy�j|j��j|j��j|j��j|j�yr)�super�
generic_visitrir0r�r��pattern�addr��
end_lineno�
col_offset�end_col_offset)r�node�	__class__�columns�end_columns�	end_linesr�s  �����rr�zZTestSourcePositions.check_positions_against_ast.<locals>.SourceOffsetVisitor.generic_visitsr�����%�d�+�!�$����3�8�8�S�[�[�(I�J���	�	�$�+�+�&��
�
�d�o�o�.����D�O�O�,����� 3� 3�4r)rSrTrUr��
__classcell__)r�r�r�r�r�s@����r�SourceOffsetVisitorr�
s
���
5�
5rr�r)rrFrGrHrIr1�setr0�NodeVisitor�visit�co_positionsr�)
r�snippetrt�ast_treer�r��end_line�col�end_colr�r�r�r�s
         @@@@r�check_positions_against_astz/TestSourcePositions.check_positions_against_asts����w� 1�6�:���7�$5�v�t�?Q�?Q�R������X��$�+�+�5�6�25����s�u�c�e�1K�.��y�'�;�	5�	5�#�/�/�	5�	��#�#�H�-�/3�.?�.?�.A�*�T�8�S�'��q�y�����
�
�d�E�*��#��
�
�h�	�2����
�
�c�7�+��"��
�
�g�{�3�/B��X�~�rc�z�ttj|d��|j�d��D]r\}}	|j|k(s�|dz}|r�|j|	d|�|j|	d|�|j|	d|�|j|	d|�y|j
d|�d	��y)
NTr�r6r�rr�r�zOpcode z not found in code)r8r�r�r�r�r.rc)
rrtrr�r��column�
end_column�
occurrencer��positions
          r�assertOpcodeSourcePositionIsz0TestSourcePositions.assertOpcodeSourcePositionIs*s��� #��L�L��4�0�$�2C�2C�2E�d� 
�O�E�8��|�|�v�%��a��
�!��$�$�X�a�[�$�7��$�$�X�a�[�(�;��$�$�X�a�[�&�9��$�$�X�a�[�*�=�� 
�	
�	�	�G�F�8�#5�6�7rc�*�d}|j|�y)Nzx = 1)r��rr�s  r�test_simple_assignmentz*TestSourcePositions.test_simple_assignment;s�����(�(��1rc	��ddz}|dz
}|j|�\}}|j|dddddd�	�|j|dd
d
ddd�	�y)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_arg?s|���f�$���"�	�� �;�;�G�D��
�q��)�)�-���j���q�	*�	2�	
�)�)�-���j���q�	*�	2rc��tjd�}|j|�\}}|j|ddddd��y)NzD            f(
                1, 2, 3, 4
            )
            rr�r�r�r�r�r�r��rprqr�r�rs    r�test_multiline_expressionz-TestSourcePositions.test_multiline_expressionSsL���/�/�#���
 �;�;�G�D��
�q��)�)�-���Q�q�Q�	*�	8rc	�F�tjd�}|j|�\}}|j|dddddd��|j|ddddd	d��|j|dddd
dd��|j|dddd
dd��|j|dddd
dd��y)Nz�            if (a or
                (b and not c) or
                not (
                    d > 0)):
                x = 42
            r�r�r^rnrr�r�����
COMPARE_OPr�
r
rs    r�!test_multiline_boolean_expressionz5TestSourcePositions.test_multiline_boolean_expression]s����/�/�#��� �;�;�G�D��
�q��)�)�-�9K��Q�q�Q�1�	*�	F�	
�)�)�-�9L��Q�q�Q�1�	*�	F�	
�)�)�-�9L��Q�r�b�Q�	*�	H�	
�)�)�-���Q�q�R�A�	*�	G�	
�)�)�-�9K��Q�q�R�A�	*�	Grz)Assertions are disabled in optimized modec	��tjd�}|j|�\}}|j|dddddd��|j|dddd	dd
��|j|dddddd��|j|dddd
dd��y)Nzt            assert (a > 0 and
                    bb > 0 and
                    ccc == 4), "error msg"
            �LOAD_ASSERTION_ERRORr�r�r�r�
LOAD_CONST�r^r�
RAISE_VARARGSrrr
rs    r�test_multiline_assertz)TestSourcePositions.test_multiline_assertws����/�/�#���
 �;�;�G�D��
�q��)�)�-�9O��Q�q�R�A�	*�	G�	
�)�)�-���Q�r�b�Q�	*�	H��)�)�-���Q�q�R�A�	*�	G��)�)�-���Q�q�R�A�	*�	Grc	�D�tjd�}|j|�\}}|jd}|j	|t
j�|j|dddddd��|j|dddddd��|j|d	d
d
ddd��y)
Nz�            ((x,
                2*x)
                for x
                in [1,2,3] if (x > 0
                               and x < 100
                               and x != 50))
            r�YIELD_VALUEr�r�rrror�r^���rprqr�r�r�rjrkr�rs    r�#test_multiline_generator_expressionz7TestSourcePositions.test_multiline_generator_expression�s����/�/�#��� �;�;�G�D��
�q�%�/�/��2�
����m�U�^�^�<��)�)�-���Q�q�Q�1�	*�	F��)�)�-���Q�q�Q�1�	*�	F��)�)�-���Q�q�R�A�	*�	Grc	��tjd�}|j|�\}}|jd}|j	|t
j�|j|dddddd��|j|ddd	dd
d��y)Nz�            ((x,
                2*x)
                async for x
                in [1,2,3] if (x > 0
                               and x < 100
                               and x != 50))
            rrr�r�rrr�r
� rrs    r�)test_multiline_async_generator_expressionz=TestSourcePositions.test_multiline_async_generator_expression�s����/�/�#��� �;�;�G�D��
�q�%�/�/��2�
����m�U�^�^�<��)�)�-���Q�q�Q�1�	*�	F��)�)�-���Q�q�R�A�	*�	Grc	��tjd�}|j|�\}}|j|tj
�|j
|dddddd��|j
|dddddd��y)Nz�            [(x,
                2*x)
                for x
                in [1,2,3] if (x > 0
                               and x < 100
                               and x != 50)]
            �LIST_APPENDr�r�rrro�rprqr�r�rjrkr�rs    r�!test_multiline_list_comprehensionz5TestSourcePositions.test_multiline_list_comprehension�s����/�/�#��� �;�;�G�D��
�q����m�U�^�^�<��)�)�-���Q�q�Q�1�	*�	F��)�)�-���Q�q�Q�1�	*�	Frc	�`�tjd�}|j|�\}}i}t||�|dj}|j|tj�|j|dddddd�	�|j|d
ddddd�	�|j|dddd
dd�	�y)Nz�            async def f():
                [(x,
                    2*x)
                    async for x
                    in [1,2,3] if (x > 0
                                   and x < 100
                                   and x != 50)]
            rmr$r�r�rnrEr�rror�rr^�$�	rprqr�r3r�r�rjrkr��rr�rr�rgs     r�'test_multiline_async_list_comprehensionz;TestSourcePositions.test_multiline_async_list_comprehension�s����/�/�#��� �;�;�G�D��
�q����]�A���#����
����m�U�^�^�<��)�)�-���Q�q�R�A�	*�	G��)�)�-���Q�q�R�A�	*�	G��)�)�-���Q�q�R�A�	*�	Grc	��tjd�}|j|�\}}|j|tj
�|j
|dddddd��|j
|dddddd��y)Nz�            {(x,
                2*x)
                for x
                in [1,2,3] if (x > 0
                               and x < 100
                               and x != 50)}
            �SET_ADDr�r�rrror%rs    r� test_multiline_set_comprehensionz4TestSourcePositions.test_multiline_set_comprehension�����/�/�#��� �;�;�G�D��
�q����m�U�^�^�<��)�)�-���Q�q�Q�1�	*�	F��)�)�-���Q�q�Q�1�	*�	Frc	�`�tjd�}|j|�\}}i}t||�|dj}|j|tj�|j|dddddd�	�|j|d
ddddd�	�|j|dddd
dd�	�y)Nz�            async def f():
                {(x,
                    2*x)
                    async for x
                    in [1,2,3] if (x > 0
                                   and x < 100
                                   and x != 50)}
            rmr-r�r�rnrEr�rror�rr^r(r)r*s     r�&test_multiline_async_set_comprehensionz:TestSourcePositions.test_multiline_async_set_comprehension������/�/�#��� �;�;�G�D��
�q����]�A���#����
����m�U�^�^�<��)�)�-���Q�q�R�A�	*�	G��)�)�-���Q�q�R�A�	*�	G��)�)�-���Q�q�R�A�	*�	Grc	��tjd�}|j|�\}}|j|tj
�|j
|dddddd��|j
|dddddd��y)Nz�            {x:
                2*x
                for x
                in [1,2,3] if (x > 0
                               and x < 100
                               and x != 50)}
            �MAP_ADDr�r�rrror%rs    r�!test_multiline_dict_comprehensionz5TestSourcePositions.test_multiline_dict_comprehension�r/rc	�`�tjd�}|j|�\}}i}t||�|dj}|j|tj�|j|dddddd�	�|j|d
ddddd�	�|j|dddd
dd�	�y)Nz�            async def f():
                {x:
                    2*x
                    async for x
                    in [1,2,3] if (x > 0
                                   and x < 100
                                   and x != 50)}
            rmr4r�r�rn�r�rror�rr^r(r)r*s     r�'test_multiline_async_dict_comprehensionz;TestSourcePositions.test_multiline_async_dict_comprehension	r2rc	��tjd�}|j|�\}}|j|dddddd��|j|dddddd��|j|d	ddddd��|j|d	ddddd��y)
NzU            match x:
                case a, b:
                    pass
            �MATCH_SEQUENCEr�rrr�r�UNPACK_SEQUENCE�
STORE_NAMEr
rs    r�test_matchcase_sequencez+TestSourcePositions.test_matchcase_sequences����/�/�#���
 �;�;�G�D��
�q��)�)�-�9I��Q�q�R�A�	*�	G��)�)�-�9J��Q�q�R�A�	*�	G��)�)�-���Q�q�R�A�	*�	G��)�)�-���Q�q�R�A�	*�	Grc	�F�tjd�}|j|�\}}|j|dddddd��|j|dddddd��|j|d	ddddd��|j|d	ddddd��|j|d	ddddd
��y)NzY            match x:
                case a, *b, c:
                    pass
            r:r�r�r�r�	UNPACK_EXr<r�r
rs    r� test_matchcase_sequence_wildcardz4TestSourcePositions.test_matchcase_sequence_wildcard/s����/�/�#���
 �;�;�G�D��
�q��)�)�-�9I��Q�q�R�A�	*�	G��)�)�-���Q�q�R�A�	*�	G��)�)�-���Q�q�R�A�	*�	G��)�)�-���Q�q�R�A�	*�	G��)�)�-���Q�q�R�A�	*�	Grc	��tjd�}|j|�\}}|j|dddddd��|j|dddddd��|j|d	ddddd��|j|d	ddddd��y)
Nzb            match x:
                case {"a" : a, "b": b}:
                    pass
            �
MATCH_MAPPINGr�r�r�r�
MATCH_KEYSr<r
rs    r�test_matchcase_mappingz*TestSourcePositions.test_matchcase_mappingA����/�/�#���
 �;�;�G�D��
�q��)�)�-���Q�q�R�A�	*�	G��)�)�-���Q�q�R�A�	*�	G��)�)�-���Q�q�R�A�	*�	G��)�)�-���Q�q�R�A�	*�	Grc	��tjd�}|j|�\}}|j|dddddd��|j|dddddd��|j|d	ddddd��|j|d	ddddd��y)
Nzg            match x:
                case {"a" : a, "b": b, **c}:
                    pass
            rCr�r�r�rrEr<r
rs    r�test_matchcase_mapping_wildcardz3TestSourcePositions.test_matchcase_mapping_wildcardQrGrc	��tjd�}|j|�\}}|j|dddddd��|j|dddddd��|j|d	ddddd��|j|d	ddddd��y)
NzX            match x:
                case C(a, b):
                    pass
            �MATCH_CLASSr�rrr�rr;r<r
rs    r�test_matchcase_classz(TestSourcePositions.test_matchcase_classas����/�/�#���
 �;�;�G�D��
�q��)�)�-���Q�q�R�A�	*�	G��)�)�-�9J��Q�q�R�A�	*�	G��)�)�-���Q�q�R�A�	*�	G��)�)�-���Q�q�R�A�	*�	Grc	��tjd�}|j|�\}}|j|dddddd��|j|ddddd	d��y)
Nz\            match x:
                case C(1) | C(2):
                    pass
            rLr�rrr�rr�r
rs    r�test_matchcase_orz%TestSourcePositions.test_matchcase_orqsr���/�/�#���
 �;�;�G�D��
�q��)�)�-���Q�q�R�A�	*�	G��)�)�-���Q�r�b�Q�	*�	Hrc�j�d}d|�d�}|j|�\}}|j|ddddd��y)	N��aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazg('z')rr�ri�r	r)r�long_stringr�rr�s     r�test_very_long_line_end_offsetz2TestSourcePositions.test_very_long_line_end_offset}sL��!����}�B�'���;�;�G�D��
�q��)�)�-���Q�q�T�	*�	;rc	��d}|j|�\}}|j|ddddd��|j|dddddd�	�|j|ddddd
d�	�|j|ddddd
d�	�|j|ddddd
d�	�y)Nza - b @ (c * x['key'] + 23)�
BINARY_SUBSCRr�r�r	rrrrDr�r^�r�rrrs    r�#test_complex_single_line_expressionz7TestSourcePositions.test_complex_single_line_expression�s���/���;�;�G�D��
�q��)�)�-���Q�r�b�	*�	:��)�)�-���Q�q�R�A�	*�	G��)�)�-���Q�q�R�A�	*�	G��)�)�-���Q�q�R�A�	*�	G��)�)�-���Q�q�R�A�	*�	Grc���tjd�}|jd}tjtjtj
tjdtj��dtj��gg��}tj||�tj|�||jd<t|dd�y)Nz
assert (
42
)rr��eggsrr)r0�parser-r2�Call�	Attributer7r9�
copy_locationr;r)r�tree�old_node�new_nodes    r�.test_multiline_assert_rewritten_as_method_callzBTestSourcePositions.test_multiline_assert_rewritten_as_method_call�s����y�y�*�+���9�9�Q�<���8�8��H�H��
�
��H�H�V�S�X�X�Z�0���H�H�J��
��
�

��	���(�H�-��!�!�(�+���	�	�!����h��'rc
��d}dD]�}|j|�5i}tj|j|��}t	j
�5t	jdt�t||�ddd�|dj}|j|ddddd�	�ddd���y#1swY�:xYw#1swY��xYw)
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 + ...)()�ignorerm�LOAD_GLOBALrlr^rr	)rrprqr��warnings�catch_warnings�simplefilter�
SyntaxWarningrr�r�)r�source_templater-r�rrts      r�$test_push_null_load_global_positionsz8TestSourcePositions.test_push_null_load_global_positions�s���
��
�D����d�#��	�!����)?�)?��)E�F���,�,�.��)�)�(�M�B����+�/�!��~�.�.���1�1��!���� �
2��$�#�
�/�.��$�#�s#�;C�'B4�;.C�4B=�9C�C		c�~�d}t|dd�}|j|ddddd��|j|d	dddd��y)
Nz/(
 lhs  
   .    
     rhs      
       ) += 42rrrr^rnrr	�
STORE_ATTR�rr��rrrts   r�test_attribute_augassignz,TestSourcePositions.test_attribute_augassign�sW��F���v�x��0���)�)��+�A��!��	*�	
�	
�)�)��,�Q��1��	*�	
rc�P�d}t|dd�}|j|ddddd��y)	Nz-del (
 lhs  
   .    
     rhs      
       )rr�DELETE_ATTRr^rnrr	rorps   r�test_attribute_delz&TestSourcePositions.test_attribute_del�s5��D���v�x��0���)�)��-�a�!�A�!�	*�	
rc�P�d}t|dd�}|j|ddddd��y)	Nz)(
 lhs  
   .    
     rhs      
       )rrrr^rnrr	rorps   r�test_attribute_loadz'TestSourcePositions.test_attribute_load�s5��@���v�x��0���)�)��+�A��!��	*�	
rc�P�d}t|dd�}|j|ddddd��y)	Nz.(
 lhs  
   .    
     rhs      
       ) = 42rrrnr^rnrr	rorps   r�test_attribute_storez(TestSourcePositions.test_attribute_store�s5��E���v�x��0���)�)��,�Q��1��	*�	
rc�~�d}t|dd�}|j|ddddd��|j|d	dddd
��y)Nz+(
 lhs  
   .    
     rhs      
       )()rrrr^rnrr	rrlrorps   r�test_method_callz$TestSourcePositions.test_method_call�sW��B���v�x��0���)�)��+�A��!��	*�	
�	
�)�)��&�q�1�Q�2�	*�	
rc��d�}|jj�D]a\}}}}|j|�|j|�|j|�|j|�|j||f||f��cy)Nc��tjtj�t�jd�jd�yrP)�bar�baz�files�
setdefaultrWrrrmzHTestSourcePositions.test_weird_attribute_position_regressions.<locals>.f�s7��
���
���	
��G����
��j��r)r�r��assertIsNotNoner�)rrmr�r�r�r�s      r�)test_weird_attribute_position_regressionsz=TestSourcePositions.test_weird_attribute_position_regressions�s{��
	�34�*�*�2I�2I�2K�.�D�(�F�J�� � ��&�� � ��*�� � ��(�� � ��,�� � �$���(�J�1G�H�3Lrc	��dD�]4}|j|�5t|�d|��dd�}|jt|j�d�|j|jdtj�|j|jdtj�|j|jd|jd�|jt|jdj��t|jdj���ddd���7y#1swY��CxYw)N)z	lambda: az(a for b in c)r
rr3r�rr�)rrr.r�r�r�rjrkr�rQr�rps   r� test_column_offset_deduplicationz4TestSourcePositions.test_column_offset_deduplications���
�F����f�%��&���F�8�4�h��G��� � ��T�^�^�!4�a�8��%�%�d�n�n�Q�&7����H��%�%�d�n�n�Q�&7����H��#�#�D�N�N�1�$5�t�~�~�a�7H�I��#�#������*�7�7�9�:������*�7�7�9�:��
&�%�	
�&�%�s�DD<�<E	c��d}t|dd�jdjd}|j|ddddd	�
�y)Nz5class C:
  def __init__(self):
    super().__init__()rrrr�rfr�r^rr	)rr�r�rps   r�test_load_super_attrz(TestSourcePositions.test_load_super_attr!sK��J���v�x��0�:�:�1�=�G�G��J���)�)��-�a�!�A�!�	*�	
rc	��gd�}|D�]%}|j|��5t|�d}|jj�}t	|�D]�\}}|j||��5|\}}}	}
|dk(r|	|
cxk(rdk(r
nn
	ddd��>|j|d�|j|d�|j
d�dz}t|�}|j|	|�|j|
|�|j|
|	�|j|
|�ddd���	ddd���(y#1swY��xYw#1swY��@xYw)	N)z
f = lambda: xzf = lambda: 42zf = lambda: 1 + 2zf = lambda: a + b)r�rm)r��posrr�rzr�)
rrr�r�r�r.�findr��assertGreaterEqualr�)
r�snippetsr��lambrpr�r��
start_liner��	start_colr��
code_start�code_ends
             r�test_lambda_return_positionz/TestSourcePositions.test_lambda_return_position(s3��
�� �G����g��.���(��-�� �M�M�6�6�8�	�'�	�2�F�A�s�����s��3�CF�@�
�H�i����6�i�7�&?�a�&?�$�	4�3�
�(�(��Q�7��(�(��1�5�%,�\�\�#�%6��%:�
�#&�w�<���/�/�	�:�F��,�,�W�h�?��/�/���C��,�,�W�h�?�4�3�3�	/�.� �4�3��/�.�s1�A
D=�*D1	�	D=�BD1	�
D=�1D:
�6D=�=E	c��d�}tj|�D]%}|j\}}}}|j||��'tj|�D�cgc]}|jdk(r|j
�|��!}}tj|�D�cgc]}|jdk(r|��}}|jt
|�d�|jt
|�d�||zD]�}|j\}}}}	|j||jjdz�|j||jjdz�|j|d�|j|	d���ycc}wcc}w)Nc�N�t5				tcddd�S#1swYyxYwr)rP�RrWrrrmz<TestSourcePositions.test_return_in_with_positions.<locals>.fEs�����������s�
�$rrr�r�r?rO)	r�r�rpr.r�r�r�r�r�)
rrmr�r�r�r��	load_none�return_valuer�r�s
          r�test_return_in_with_positionsz1TestSourcePositions.test_return_in_with_positionsCsj��	��)�)�!�,�E�).���&�J��!�Q����Z��2�-�),�(<�(<�Q�(?�L�(?�u��\�\�\�1�e�l�l�6J��(?�	�L�+.�+?�+?��+B�8�+B�%�����6��+B��8�	
����Y���+�����\�*�A�.���-�E�7<���4�J��)�W����Z����)B�)B�Q�)F�G����X�q�z�z�'@�'@�1�'D�E����Y��+����W�b�)�.��L��8s�$E7�E<Nr�).rSrTrUr�r�r�rrrrr�r�r��flags�optimizerrr"r&r+r.r1r5r8r=rArFrJrMrPrTrYrcrlrqrtrvrxrzr�rr�r�r�r�r�rWrrr�r��s��
$�N<=�8�"2�2�(8��G��G�2�X�_�_�S�Y�Y�'�'�)T�U�G�V�G�"G�&G�"F� G�,F� G�,F� G�,G� G�$G� G� G� 
H�;�
G�(�*&�P
�
�
�
�
�I�&
������"
�@�6*rr�c�|�eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zy)�TestExpressionStackSizer�c���t|t�r
t|dd�}tjtj
t
|j���}|j|j|�y)N�<foo>r)
rir�r�math�ceil�logr�rDr��co_stacksize)rrt�max_sizes   r�check_stack_sizez(TestExpressionStackSize.check_stack_sizeksR���d�C� ��4��(�3�D��9�9�T�X�X�c�$�,�,�&7�8�9�����T�.�.��9rc�F�|jd|jzdz�y)Nzx and r��r�r�r s r�test_andz TestExpressionStackSize.test_andss�����h����/�#�5�6rc�F�|jd|jzdz�y)Nzx or r�r�r s r�test_orzTestExpressionStackSize.test_orvs�����g����.��4�5rc�F�|jd|jzdz�y)Nzx and x or r�r�r s r�test_and_orz#TestExpressionStackSize.test_and_orys�����m�d�f�f�4�s�:�;rc�F�|jd|jzdz�y)Nzx < r�r�r s r�test_chained_comparisonz/TestExpressionStackSize.test_chained_comparison|������f�t�v�v�o��3�4rc�F�|jd|jzdz�y)Nzx if x else r�r�r s r�test_if_elsez$TestExpressionStackSize.test_if_elses�����n�t�v�v�5��;�<rc�F�|jd|jzdz�y)Nzx + r�r�r s r�
test_binopz"TestExpressionStackSize.test_binop�r�rc�L�|jdd|jzzdz�y)N�[�x, zx]r�r s r�	test_listz!TestExpressionStackSize.test_list��"�����c�E�D�F�F�N�2�T�9�:rc�L�|jdd|jzzdz�y)N�(r�zx)r�r s r�
test_tuplez"TestExpressionStackSize.test_tuple�r�rc�L�|jdd|jzzdz�y)Nrwr�zx}r�r s r�test_setz TestExpressionStackSize.test_set�r�rc�L�|jdd|jzzdz�y)Nrwzx:x, zx:x}r�r s r�	test_dictz!TestExpressionStackSize.test_dict�s#�����c�G�d�f�f�$4�4�v�=�>rc�L�|jdd|jzzdz�y)N�f(r��)r�r s r�test_func_argsz&TestExpressionStackSize.test_func_args�s"�����d�U�T�V�V�^�3�c�9�:rc��d�t|j�D�}|jddj|�zdz�y)Nc3�(K�|]
}d|�d����y�w�rDz=xNrWrs  rrz;TestExpressionStackSize.test_func_kwargs.<locals>.<genexpr>������3�]��A�a�S��)�]���r�r
r��rr�r�r��r�kwargss  r�test_func_kwargsz(TestExpressionStackSize.test_func_kwargs�s5��3�U�4�6�6�]�3�����d�d�i�i��&7�7�#�=�>rc�L�|jdd|jzzdz�y)N�o.m(r�r�r�r s r�test_meth_argsz&TestExpressionStackSize.test_meth_args�s"�����f�u�t�v�v�~�5��;�<rc��d�t|j�D�}|jddj|�zdz�y)Nc3�(K�|]
}d|�d����y�wr�rWrs  rrz;TestExpressionStackSize.test_meth_kwargs.<locals>.<genexpr>�r�r�r�r
r�r�r�s  r�test_meth_kwargsz(TestExpressionStackSize.test_meth_kwargs�s5��3�U�4�6�6�]�3�����f��	�	�&�(9�9�C�?�@rc�N�d}|d|jzz
}|j|�y)Nz
def f(x):
z   x and x
)r�r�r�s  r�
test_func_andz%TestExpressionStackSize.test_func_and�s(���������'�'�����d�#rc�2�d}d|zdz}t|dd�y)N��zx,z=tr�rr)rrXrts   r�test_stack_3050z'TestExpressionStackSize.test_stack_3050�s �����a�x�$�����g�x�(rc�p�d}djd�t|�D��}d|�d�}t|dd�y)Nr�r
c3�,K�|]}d|�d|�����y�w)r�z:typeNrWrs  rrz<TestExpressionStackSize.test_stack_3050_2.<locals>.<genexpr>�s����=�H�q�3�q�c��q�c�*�H�s�zdef f(z	):
  passr�rr)rrX�argsrts    r�test_stack_3050_2z)TestExpressionStackSize.test_stack_3050_2�s9�����y�y�=�E�!�H�=�=����v�Z�(����g�x�(rN)rSrTrUr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rWrrr�r�esd��	�A�:�7�6�<�5�=�5�;�;�;�?�;�?�=�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�Zy)�TestStackSizeStabilityc	�T�����fd�}tdd�D�cgc]}||�j��}}tt|��dk7r[ddl}ddl}|j
�}|j|d�|��|jd|�d��d|j����yycc}w)	Nc�x��i}d|�zz}�rd|z}t|dd�}t|||�|djS)Nzdef func():
zasync z<script>rr�)rrr�)r�r��scriptrt�async_r�s    ��r�compile_snippetz@TestStackSizeStability.check_stack_size.<locals>.compile_snippet�sM����B�(�1�w�;�6�F��!�F�*���6�:�v�6�D���r�2���f�:�&�&�&rr�rnr�r)�filez4stack sizes diverge with # of consecutive snippets: r�)	rr�r�r�r��io�StringIOrc�getvalue)	rr�r�r�r��sizesr�r��outs	 ``      rr�z'TestStackSizeStability.check_stack_size�s����	'�;@��1�+�F�+�Q���#�0�0�+��F��s�5�z�?�a����+�+�-�C��C�G�G�O�A�&�S�1��I�I�&+�W�c�l�l�n�F�
G�	 ��Gs�B%c�*�d}|j|�y)Nz1
            if x:
                a
            �r�r�s  r�test_ifzTestStackSizeStability.test_if������	
���g�&rc�*�d}|j|�y)Nz{
            if x:
                a
            elif y:
                b
            else:
                c
            r�r�s  rr�z#TestStackSizeStability.test_if_else������	
���g�&rc�*�d}|j|�y)NzV
            try:
                a
            except:
                b
            r�r�s  r�test_try_except_barez+TestStackSizeStability.test_try_except_bare������	
���g�&rc�*�d}|j|�y)Nz�
            try:
                a
            except ImportError:
                b
            except:
                c
            else:
                d
            r�r�s  r�test_try_except_qualifiedz0TestStackSizeStability.test_try_except_qualified����	��	
���g�&rc�*�d}|j|�y)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�r�rc�*�d}|j|�y)Nz�
            try:
                a
            except* ImportError:
                b
            else:
                c
            r�r�s  r�test_try_except_star_qualifiedz5TestStackSizeStability.test_try_except_star_qualified�r�rc�*�d}|j|�y)Nz�
            try:
                a
            except* ImportError as e:
                b
            else:
                c
            r�r�s  r�test_try_except_star_asz.TestStackSizeStability.test_try_except_star_asr�rc�*�d}|j|�y)Nz�
                try:
                    a
                except* A:
                    b
                finally:
                    c
            r�r�s  r�test_try_except_star_finallyz3TestStackSizeStability.test_try_except_star_finallyr�rc�*�d}|j|�y)Nzg
                try:
                    a
                finally:
                    b
            r�r�s  r�test_try_finallyz'TestStackSizeStability.test_try_finallyr�rc�*�d}|j|�y)Nz8
            with x as y:
                a
            r�r�s  r�	test_withz TestStackSizeStability.test_with'r�rc�*�d}|j|�y)NzX
            while x:
                a
            else:
                b
            r�r�s  r�test_while_elsez&TestStackSizeStability.test_while_else.r�rc�*�d}|j|�y)Nz7
            for x in y:
                a
            r�r�s  r�test_forzTestStackSizeStability.test_for7r�rc�*�d}|j|�y)Nz[
            for x in y:
                a
            else:
                b
            r�r�s  r�
test_for_elsez$TestStackSizeStability.test_for_else>r�rc�*�d}|j|�y)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_continueGs��
��	
���g�&rc�*�d}|j|�y)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_blockU���
��	
���g�&rc�*�d}|j|�y)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_blockfr	rc�*�d}|j|�y)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_blockwr	rc�*�d}|j|�y)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_block�s����	
���g�&rc�*�d}|j|�y)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_block������	
���g�&rc�*�d}|j|�y)Nz�
            try:
                t
            finally:
                if z:
                    return
                else:
                    a
            r�r�s  r� test_return_inside_finally_blockz7TestStackSizeStability.test_return_inside_finally_block�rrc�*�d}|j|�y)Nz�
            try:
                t
            except:
                if z:
                    return
                else:
                    a
            r�r�s  r�test_return_inside_except_blockz6TestStackSizeStability.test_return_inside_except_block�rrc�*�d}|j|�y)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�.�d}|j|d��y)Nz>
            async with x as y:
                a
            T�r�r�r�s  r�test_async_withz&TestStackSizeStability.test_async_with������	
���g�d��3rc�.�d}|j|d��y)Nz=
            async for x in y:
                a
            Trr�r�s  r�test_async_forz%TestStackSizeStability.test_async_for�rrc�.�d}|j|d��y)Nza
            async for x in y:
                a
            else:
                b
            Trr�r�s  r�test_async_for_elsez*TestStackSizeStability.test_async_for_else�s����	
���g�d��3rc�.�d}|j|d��y)Na
            for x in y:
                async with c:
                    if z:
                        break
                    elif u:
                        continue
                    else:
                        a
            else:
                b
            Trr�r�s  r�/test_for_break_continue_inside_async_with_blockzFTestStackSizeStability.test_for_break_continue_inside_async_with_block�s����	
���g�d��3rc�.�d}|j|d��y)Nz�
            async with c:
                if z:
                    return
                else:
                    a
            Trr�r�s  r�#test_return_inside_async_with_blockz:TestStackSizeStability.test_return_inside_async_with_block�s����	
���g�d��3rN)F)rSrTrUr�r�r�r�r�r�r�r�r�r�r�rrrrrrr
rrrrrrrr r"r$rWrrr�r��s���G�$'�	'�'�'�'�	'�	'�	'�'�'�'�'�'�'�'�"'�"'�"
'�
'�
'�
'�'�4�4�4�
4�4rr��__main__)r�r�rzr�r�r0rFrxrjrprgrir�test.supportrrrrr�test.support.os_helperr	�TestCaserr�r�r�rS�mainrWrr�<module>r*s���
��	��
�
�������F�F�+�l(�H�%�%�l(�\'��b	*�(�+�+�b	*��b	*�JJ)�h�/�/�J)�ZA4�X�.�.�A4�H
�z���H�M�M�O�r

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists