Sindbad~EG File Manager
�
'Μg�D��z�ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl
Z
ddlmZddl
mZmZmZmZmZddlmZGd�dej*�Ze�Gd�dej*��ZGd �d
ej*�ZGd�dej*�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
�Zd�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__�sureF)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)Nzlambda 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()zz = 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
�|jtdtjdz
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)zimport (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����tjtjdtj���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
gddg|gg}|D]�\}}t|d
|zd�}t|d|zdtj�}|jt|�tjk(�t|d|zd�}|j||�|j|jd|z���tdddtj�}|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
���tjd��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��/|jttdtd�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 |dd
�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.)rrrrrrr�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}y)Nc��t�yr)�printrWrr�callz6TestSpecifics.test_lineno_procedure_call.<locals>.call�s���rr�)r�r�)rr$�line1s r�test_lineno_procedure_callz(TestSpecifics.test_lineno_procedure_call�s�� ��
�
�,�,�q�0�rc�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|dd
�}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�X3�5�=�9�F�:>�
��� .�� .�DK�2 2�
(�+�0�0�� ��(rrc�^�eZdZd�Z d&d�Zd�Zd�Zd�Zed��Z e
jejjd�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
tjf�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|dddd
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|dddd
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
ddd��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|tj�|j|dddddd� �|j|d
ddddd� �|j|dddd
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|tj�|j|dddddd� �|j|d
ddddd� �|j|dddd
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|tj�|j|dddddd� �|j|d
ddddd� �|j|dddd
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|ddddd
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
tjdtj��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 jdt�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|jdtj�|j|jdtj�|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
�Zd�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)Nzx 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
�Zd�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)Nzdef 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