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_peepholer.cpython-312.opt-2.pyc

�

'Μgj����ddlZddlmZmZddlZddlZddlZddlmZddl	m
Z
mZd�Zd�Z
Gd�de
�ZGd	�d
ej�ZGd�de
�ZGd
�de�Zedk(rej(�yy)�N)�combinations�product)�support)�BytecodeTestCase�CfgOptimizationTestCasec�n�tjd|�d��}i}t||�|djS)Nz=
        def f(x):
            match x:
                case z#:
                    pass
        �f)�textwrap�dedent�exec�__code__)�pattern�source�	namespaces   �0/usr/local/lib/python3.12/test/test_peepholer.py� compile_pattern_with_fast_localsrsG��
�_�_�
��Y�	�	��F��I������S�>�"�"�"�c���d}tj|�D]}|j|k(s�|dz
}�t|d�r|j}|j
D]}t|d�s�|t
||�z
}� |S)Nr�r
�co_code)�dis�get_instructions�opname�hasattrr
�	co_consts�count_instr_recursively)r	r�count�instr�cs     rrrsw��
�E��%�%�a�(���<�<�6�!��Q�J�E�)��q�*��
�J�J��
�[�[���1�i� ��,�Q��7�7�E���Lrc��eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zej@d�d��Z!d�Z"d �Z#d!�Z$d"�Z%d#�Z&d$�Z'd%�Z(y&)'�
TestTranformsc
�2�ttj|��}|D�cic]}|j|��}}|D]�}d|jvr�||j
}|jdvrD|j
|j�d|j�d|j�d|j���|jdvs��|jdk(s��|j
|j�d|j�d|j�d|j�����ycc}w)N�JUMP_)�
JUMP_BACKWARD�JUMP_FORWARDz at z
 jumps to �RETURN_VALUE)�listrr�offsetr�argval�fail)�self�code�instructionsr�targets�tgts      r�check_jump_targetsz TestTranforms.check_jump_targets(s���C�0�0��6�7��4@�A�L�5�5�<�<��&�L��A�!�E��e�l�l�*���%�,�,�'�C��z�z�>�>��	�	�U�\�\�N�$�u�|�|�n�=&�&)�j�j�\��c�j�j�\�C�D���� A�A��
�
�n�,��	�	�U�\�\�N�$�u�|�|�n�=&�&)�j�j�\��c�j�j�\�C�D�"��Bs�Dc�"�	tj|�}ttj|��}t	d�|D��}td�|D��}|j
|d�|j|t|j��y)Nc3�&K�|]	}|d���y�w�rN���.0�ts  r�	<genexpr>z-TestTranforms.check_lnotab.<locals>.<genexpr>?�����0��A�1�Q�4����c3�&K�|]	}|d���y�wr3r4r5s  rr8z-TestTranforms.check_lnotab.<locals>.<genexpr>@r9r:r)
r�_get_code_objectr'�findlinestarts�min�max�assertGreaterEqual�
assertLess�lenr)r+r,�lnotab�min_bytecode�max_bytecodes     r�check_lnotabzTestTranforms.check_lnotab9ss��:��#�#�D�)���c�(�(��.�/���0��0�0���0��0�0������a�0�����c�$�,�,�&7�8rc��d�}|j|d�|j|d�|j|d�|j|�y)Nc��|dk(s~yy)N�r4��xs r�unotz%TestTranforms.test_unot.<locals>.unotIs����6��r�	UNARY_NOT�POP_JUMP_IF_FALSE�POP_JUMP_IF_TRUE��assertNotInBytecode�assertInBytecoderF)r+rLs  r�	test_unotzTestTranforms.test_unotGsI��	�	
� � ��{�3�� � ��':�;����d�$6�7����$�rc���dD]R\}}}|j|��5t|dd�}|j|||�|j|�ddd��Ty#1swY�_xYw)N))z
not a is b�IS_OPr)znot a is not brUr)z
not a in b�CONTAINS_OPr)znot a not in brVr��line��single)�subTest�compilerRrF)r+rX�cmp_op�invertr,s     r�test_elim_inversion_of_is_or_inz-TestTranforms.test_elim_inversion_of_is_or_inQsd��%� �D�&�&����4��(��t�R��2���%�%�d�F�F�;��!�!�$�'�)�(�
%�)�(�s�2A�A"	c�h�d�}d�}d�}|df|df|dffD]V\}}|j|��5|j|d�|j|d|�|j|�ddd��Xd	�}|j|d�|j|d
d�|j|�y#1swY��xYw)Nc��d}d}|S�Nr4rJs rr	z0TestTranforms.test_global_as_constant.<locals>.f_s���A��A��Hrc�
�d}|S)NTr4rJs r�gz0TestTranforms.test_global_as_constant.<locals>.gcs���A��Hrc�
�d}|S)NFr4rJs r�hz0TestTranforms.test_global_as_constant.<locals>.hfs���A��HrTF)�func�LOAD_GLOBAL�
LOAD_CONSTc��	yrbr4r4rrr	z0TestTranforms.test_global_as_constant.<locals>.fps��?�r�RETURN_CONST)r[rQrRrF)r+r	rdrfrg�elems      r�test_global_as_constantz%TestTranforms.test_global_as_constant]s���	�	�	��t�9�q�$�i�!�U��<�J�D�$����4��(��(�(��}�=��%�%�d�L�$�?��!�!�$�'�)�(�=�	�	
� � ��M�2����a���6����!��)�(�s�7B(�(B1	c��d�}dD]}|j||��dD]}|j||��|j|�y)Nc��		�rb)r'r4rrr	z'TestTranforms.test_while_one.<locals>.fzs
����r)rirN)r$rP)r+r	rls   r�test_while_onezTestTranforms.test_while_onexsK��	�8�D��$�$�Q��-�8�&�D��!�!�!�T�*�'����!�rc��dD]t\}}|j|��5t|dd�}|j||�|j|d�|j|d�|j	|�ddd��vy#1swY��xYw)N))za, = a,rk)za, b = a, b�SWAP)za, b, c = a, b, crrrWrYrZ�BUILD_TUPLE�UNPACK_SEQUENCE�r[r\rRrQrF�r+rXrlr,s    r�test_pack_unpackzTestTranforms.test_pack_unpack�s����J�D�$�
���4��(��t�B�x�0���%�%�d�D�1��(�(��}�=��(�(��/@�A��!�!�$�'�)�(��
)�(�s�AA;�;B	c	�N�dD]c\}}|j|��5t|dd�}|j|d|�|j|d�|j	|�ddd��ettt
td���dd�}|j|d�tj|�D�cgc]}|jdk(r|��}}|jt|�d�|j	|�d	�}|j	|�y#1swY��xYwcc}w)
N))z	a = 1,2,3�rrI�)z
("a","b","c")��a�br)z
a,b,c = 1,2,3ry)z(None, 1, None)�NrN)z((1, 2), 3, 4)��rrIrz�rWrYrZrirs�'rc��gd�fy)N)drrrIrzr������	rrrIrzr�r�r�r�r�r�rrrIrzr�r�r�r�r�r�rrrIrzr�r�r�r�r�r�rrrIrzr�r�r�r�r�r�rrrIrzr�r�r�r�r�r�rrrIrzr�r�r�r�r�r�rrrIrzr�r�r�r�r�r�rrrIrzr�r�r�r�r�r�rrrIrzr�r�r�r�r�r�r4r4rr�craterzATestTranforms.test_folding_of_tuples_of_constants.<locals>.crater�s����
r)
r[r\rRrQrF�repr�tuple�rangerrr�assertEqualrB)r+rXrlr,r�load_constsr�s       r�#test_folding_of_tuples_of_constantsz1TestTranforms.test_folding_of_tuples_of_constants�s���J�D�$����4��(��t�B�x�0���%�%�d�L�$�?��(�(��}�=��!�!�$�'�	)�(���t�E�%��,�/�0��H�=��� � ��}�5�*-�*>�*>�t�*D�?�*D��!&����!=��*D��?�����[�)�1�-����$��
	�	
���&�!�?)�(��?s�AD�:D"�D	c���dD]c\}}|j|��5t|dd�}|j|d|�|j|d�|j	|�ddd��ey#1swY�pxYw)N))za in [1,2,3]ry)za not in ["a","b","c"]r{)za in [None, 1, None]r~)za not in [(1, 2), 3, 4]rrWrYrZri�
BUILD_LISTrurvs    r�"test_folding_of_lists_of_constantsz0TestTranforms.test_folding_of_lists_of_constants�sq���J�D�$����4��(��t�R��2���%�%�d�L�$�?��(�(��|�<��!�!�$�'�	)�(��)�(�s�AA*�*A3	c	��dthd��fdthd��fdtddh�fdthd��fd	thd��ffD]c\}}|j|�
�5t|dd�}|j|d
�|j	|d|�|j|�ddd��ed�}d�}|j
|d��|j
|d��|j|�|j
|d��|j
|d��|j|�y#1swY��xYw)Nza in {1,2,3}�rrIrzza not in {"a","b","c"}>r|r}rza in {None, 1, None}rza not in {(1, 2), 3, 4}>r�rzr�za in {1, 2, 3, 3, 2, 1}rWrYrZ�	BUILD_SETric�
�|dvS�Nr�r4�r|s rr	z:TestTranforms.test_folding_of_sets_of_constants.<locals>.f�s���	�>�!rc�
�|dvSr�r4r�s rrdz:TestTranforms.test_folding_of_sets_of_constants.<locals>.g�s
���I�%�%rrzr�)�	frozensetr[r\rQrRrF�
assertTrue)r+rXrlr,r	rds      r�!test_folding_of_sets_of_constantsz/TestTranforms.test_folding_of_sets_of_constants�s$���Y�y�1�2�
%�y��'A�B�
#�Y��4�y�%9�:�
&�	�.�(A�B�
&�	�)�(<�=�
�J�D�$����4��(��t�R��2���(�(��{�;��%�%�d�L�$�?��!�!�$�'�	)�(��	"�	&�	
����!������A�a�D��!����!�����A�a�D��!�����!������!��')�(�s
�!AD6�6D?	c��dD]�\}}|j|��5t|dd�}|j|d|�tj|�D],}|j|jjd���.|j|�ddd���tddd�}|j|dd�|j|dd	�|j|�td
dd�}|j|dd�|jddz|j�|j|�td
dd�}|j|dd�|jddz|j�|j|�tddd�}|j|dd�|jddz|j�|j|�y#1swY���xYw)N))z	a = 2+3+4r�)z"@"*4z@@@@)za="abc" + "def"�abcdef)za = 3**4�Q)za = 3*4�)z	a = 13//4rz)za = 14%4rI)za = 2+3r�)za = 13-4r�)za = (12,13)[1]�
)za = 13 << 2�4)za = 13 >> 2rz)z
a = 13 & 7r�)z
a = 13 ^ 7�
)z
a = 13 | 7�rWrYrZri�BINARY_za=2+"b"rIr}za="x"*10000r�rKz	a=1<<1000i�rz	a=2**1000)r[r\rRrr�assertFalser�
startswithrF�assertNotInr)r+rXrlr,rs     r�#test_folding_of_binops_on_constantsz1TestTranforms.test_folding_of_binops_on_constants�s����J�D�$�"���4��(��t�R��2���%�%�d�L�$�?� �1�1�$�7�E��$�$�U�\�\�%<�%<�Y�%G�H�8��!�!�$�'�)�(�#�2�y�"�h�/�����d�L�!�4����d�L�#�6����$���}�b�(�3�����d�L�%�8�����U��D�N�N�3����$���{�B��1�����d�L�$�7�����D��$�.�.�1����$���{�B��1�����d�L�$�7�����D��$�.�.�1����$��3)�(�s�A6G�G	c��tddd�}|j|dd�|j|d�|j|�tddd�}|j|dd�|j|d�|j|�td	dd�}|j|dd
�|j|d�|j|�tddd�}|j|d�|j|�y)Nz"foo"[0]rYrZrir	�
BINARY_SUBSCRu	"a￿"[1]u￿u	"𒍅"[0]u𒍅z	"fuu"[10])r\rRrQrF)r+r,s  r�test_binary_subscr_on_unicodez+TestTranforms.test_binary_subscr_on_unicodes����z�2�x�0�����d�L�#�6�� � ���7����$���*�B��9�����d�L�(�;�� � ��o�6����$���(�"�h�7�����d�L�,�?�� � ���7����$���{�B��1�����d�O�4����$�rc���dD]�\}}|j|��5t|dd�}|j|d|�tj|�D],}|j|jjd���.|j|�ddd���d�}tj|�D],}|j|jjd���.|j|�dD]d\}}}|j|��5t|dd�}|j|d|�|j||�|j|�ddd��fy#1swY��dxYw#1swY�~xYw)	N))z-0.5g�)z-0.0��)z
-(1.0-1.0)r�)z-0r)z~-2r)z+1rrWrYrZri�UNARY_c��y)Nr�r4r4rr�negzerozDTestTranforms.test_folding_of_unaryops_on_constants.<locals>.negzero<s��r))z-"abc"�abc�UNARY_NEGATIVE)z~"abc"r��UNARY_INVERT)	r[r\rRrrr�rr�rF)r+rXrlr,rr�rs       r�%test_folding_of_unaryops_on_constantsz3TestTranforms.test_folding_of_unaryops_on_constants+sL��
�J�D�$����4��(��t�R��2���%�%�d�L�$�?� �1�1�$�7�E��$�$�U�\�\�%<�%<�X�%F�G�8��!�!�$�'�)�(�
� 	��)�)�'�2�E����U�\�\�4�4�X�>�?�3����'�"�#
��D�$�����4��(��t�R��2���%�%�d�L�$�?��%�%�d�F�3��!�!�$�'�	)�(�	#
�!)�(��()�(�s�A6E�AE*�E'	�*E3	c���d�}|j|dd�tj|�D�cgc]}|jdk(r|��}}|j	t|�d�|j
|�ycc}w)Nc��|Srbr4rJs rr	z/TestTranforms.test_elim_extra_return.<locals>.fPs���Hrrir&r)rQrrrr�rBrF�r+r	r�returnss    r�test_elim_extra_returnz$TestTranforms.test_elim_extra_returnNst��	�� � ��L�$�7�&)�&:�&:�1�&=�=�&=�U�"�\�\�^�;��&=��=�����W��q�)����!���=s�A5c�8�d�}|j|�|j|d�|j|d�tj|�D�cgc]}|jdk(r|��}}|jt
|�d�|j|�ycc}w)Nc��|r|S|Srbr4)�cond�
true_value�false_values   rr	z1TestTranforms.test_elim_jump_to_return.<locals>.fZs��"&�J�
&�$�
&rr%r$r&rI)r0rQrrrr�rBrFr�s    r�test_elim_jump_to_returnz&TestTranforms.test_elim_jump_to_returnXs���	&�	
����"�� � ��N�3�� � ��O�4�&)�&:�&:�1�&=�=�&=�U�"�\�\�^�;��&=��=�����W��q�)����!���=s�Bc�N�d�}|j|�|j|�y)Nc�T�trtstrt�yyt	�yrb)r|r�d�foo�bazr4rrr	z6TestTranforms.test_elim_jump_to_uncond_jump.<locals>.fhs������E���r�r0rF�r+r	s  r�test_elim_jump_to_uncond_jumpz+TestTranforms.test_elim_jump_to_uncond_jumpfs%��	�	
����"����!�rc�N�d�}|j|�|j|�y)Nc�<�rtstr
t�}|r�yyrb)rr�r�r�s rr	z7TestTranforms.test_elim_jump_to_uncond_jump2.<locals>.fus�������A�	rr�r�s  r�test_elim_jump_to_uncond_jump2z,TestTranforms.test_elim_jump_to_uncond_jump2ss%��	�	
����"����!�rc�|�d�}|j|�|j|�|jt|d�d�d�}|j|�|j|�|jt|d�d�d�}|j|�|j|�|jt|d�d�|jt|d�d�d�}|j|�|j|�|jt|d�d�|jt|d�d�y)	Nc��|xr|xr|Srbr4r{s   rr	z7TestTranforms.test_elim_jump_to_uncond_jump3.<locals>.f�s���W�1���
rrNrIc��|xs|xs|Srbr4r{s   rr	z7TestTranforms.test_elim_jump_to_uncond_jump3.<locals>.f�s���V�!���
rrOc��|xr|xs|Srbr4r{s   rr	z7TestTranforms.test_elim_jump_to_uncond_jump3.<locals>.f�s���W�1���
rrc��|xs|xr|Srbr4r{s   rr	z7TestTranforms.test_elim_jump_to_uncond_jump3.<locals>.f�s���V�!���
r)r0rFr�rr�s  r�test_elim_jump_to_uncond_jump3z,TestTranforms.test_elim_jump_to_uncond_jump3~s$��	�	
����"����!�����0��4G�H�!�L�	�	
����"����!�����0��4F�G��K�	�	
����"����!�����0��4G�H�!�L����0��4F�G��K�	�	
����"����!�����0��4G�H�!�L����0��4F�G��Krc�,�d�}|j|�y)Nc�F�td�D]}|dkDs�	t|��y)Nr�rz)r��print)�is rr	z7TestTranforms.test_elim_jump_to_uncond_jump4.<locals>.f�s���1�X���q�5��!�H�r)r0r�s  r�test_elim_jump_to_uncond_jump4z,TestTranforms.test_elim_jump_to_uncond_jump4�s��	�	
����"rc��d�}|j|d�|j|d�tj|�D�cgc]}|jdk(r|��}}|j	t|�d�|j
|�ycc}w)Nc��|ry|ry	y)NrrIrzr4)�cond1�cond2s  rr	z5TestTranforms.test_elim_jump_after_return1.<locals>.f�s���Q��Q��rr%r$r&r�)rQrrr�assertLessEqualrBrFr�s    r�test_elim_jump_after_return1z*TestTranforms.test_elim_jump_after_return1�s���	�	
� � ��N�3�� � ��O�4�&)�&:�&:�1�&=�=�&=�U�"�\�\�^�;��&=��=����S��\�1�-����!���=s�Bc�P�d�}|j|d�|j|�y)Nc��dd�}|S)Nc��yrbr4r4rrrdzBTestTranforms.test_make_function_doesnt_bail.<locals>.f.<locals>.g�s��r)�returnrIr4)rds rr	z7TestTranforms.test_make_function_doesnt_bail.<locals>.f�s��
��Hr�	BINARY_OP)rQrFr�s  r�test_make_function_doesnt_bailz,TestTranforms.test_make_function_doesnt_bail�s'��	�	
� � ��K�0����!�rc���gd�}|D]�}|j|��5t|dd�}tj|�D]�}|j	|j
j
d��|j	|j
j
d��|j	|j
j
d����|j|�ddd���y#1swY��xYw)N)	z3 * -5z-3 * 5z2 * (3 * 4)z(2 * 3) * 4z
(-1, 2, 3)z
(1, -2, 3)z
(1, 2, -3)z(1, 2, -3) * 6z:lambda x: x in {(3 * -5) + (-1 - 6), (1, -2, 3) * 2, None})�erYrZr�r��BUILD_)r[r\rrr�rr�rF)r+�exprsr�r,rs     r�test_constant_foldingz#TestTranforms.test_constant_folding�s���

���A������"��q�"�h�/�� �1�1�$�7�E��$�$�U�\�\�%<�%<�X�%F�G��$�$�U�\�\�%<�%<�Y�%G�H��$�$�U�\�\�%<�%<�X�%F�G�8��!�!�$�'�
#�"��"�"�s�B7C�C'	c�d�d�}|jt|d�d�|j|�y)Nc�&�tttfvSrb)rKr|r}r4rr�containtestz7TestTranforms.test_in_literal_list.<locals>.containtest�s����A��;�rr�r�r�rrF)r+r�s  r�test_in_literal_listz"TestTranforms.test_in_literal_list�s-��	����0��l�K�Q�O����+�&rc�d�d�}|jt|d�d�|j|�y)Nc�&�ttfD]}�yrb�r|r}rJs r�forloopz8TestTranforms.test_iterate_literal_list.<locals>.forloop�s����V���rr�rr�)r+r�s  r�test_iterate_literal_listz'TestTranforms.test_iterate_literal_list�s/��	�	
���0��,�G��K����'�"rc�Z�d�}|j|�d�|j|�y)Nc��	y�Nrr4r4rrr	z=TestTranforms.test_condition_with_binop_with_bools.<locals>.f�s���rr)r�rFr�s  r�$test_condition_with_binop_with_boolsz2TestTranforms.test_condition_with_binop_with_bools�s)��	�	
�����a� ����!�rc�Z�d�}|j|d��|j|�y)Nc��|r	y	y)NTFr4rJs rr	z3TestTranforms.test_if_with_if_expression.<locals>.f�s����� %�rT)r�rFr�s  r�test_if_with_if_expressionz(TestTranforms.test_if_with_if_expression�s'��	�	
����$�� ����!�rc�,�d�}|j|�y)Nc��	y)Nrzr4rJs rr	z+TestTranforms.test_trailing_nops.<locals>.f�s���r)rFr�s  r�test_trailing_nopsz TestTranforms.test_trailing_nops�s��	�	
���!�rc��d�}|jt|d�d�d�}|jt|d�d�d�}|jt|d�d�d�}|jt|d�d�y)Nc�P�tD��cgc]}t|�}|��c}}Scc}}wrb�r|r	�rK�ys  r�listcompzGTestTranforms.test_assignment_idiom_in_comprehensions.<locals>.listcomp�"�� �1�q�!�1�Q�4�Q�A�q�1�1��1��"�FOR_ITERrc�P�tD��chc]}t|�}|��c}}Scc}}wrbr�r�s  r�setcompzFTestTranforms.test_assignment_idiom_in_comprehensions.<locals>.setcomprrc�R�tD��cic]}t|�}||��c}}Scc}}wrbr�r�s  r�dictcompzGTestTranforms.test_assignment_idiom_in_comprehensions.<locals>.dictcomps(��"#�4�!�Q�a��d��A�q�D�A�!�4�4��4s�#c��d�tD�S)Nc3�6K�|]}t|�}|���y�wrb)r	)r6rKrs   rr8zYTestTranforms.test_assignment_idiom_in_comprehensions.<locals>.genexpr.<locals>.<genexpr>s����1�q�!�1�Q�4�Q�A�q�s�r�r4rr�genexprzFTestTranforms.test_assignment_idiom_in_comprehensions.<locals>.genexpr
s
��1�q�1�1r)r�r)r+rrrrs     r�'test_assignment_idiom_in_comprehensionsz5TestTranforms.test_assignment_idiom_in_comprehensionssv��	2����0��:�F��J�	2����0��*�E�q�I�	5����0��:�F��J�	2����0��*�E�q�Ir�cpuc��d}gtdd��tdd��tdd��ttd�td�fd	��}gtd
d��d�d
�}|D]�\}}|D]�\}}tt|�dz�D]x}t	||�D]g}	ddj|	�z|z|z|z}
|j
|
|��5|
|z}t|
�d�d|i�}|j||d|
���ddd��i�z����y#1swY�zxYw)Nz-+ #0)rY�1234uабвг�sra)��i.����duioxX)��|��EJ�@g�|��EJ���	duifegFEG�inf�fegFEG)rY�1�30)rY�.z.0z.2)rY�.40)rrr�%rY)�fmt�valuez % (x,)rKzfmt = )	r�floatr�rBr�joinr[�evalr�)
r+�flags�	testcases�width_precsr�suffix�width�prec�r�specr�s1�s2s
             r�test_format_combinationsz&TestTranforms.test_format_combinationssJ����
�
�-�u�
5�
�
�]�H�
-�
��2�K�
@�
��e�E�l�U�5�\�M�2�H�
=�	
�	�
�
�_�&;�
<�
��
�
�
��
'�M�E�6�*���t��s�5�z�A�~�.�A� ,�U�A� 6��!�B�G�G�D�M�1�E�9�D�@�6�I��!�\�\�c��\�?�!$�u��B�!%���w�&7�#�u��!F�B� �,�,�R����x�[�A�@�?�!7�/� +�'�
@�?�s�-D�Dc�0�d�}|j|d�d�|j|dd�d�|j|dd�d�|j|dd�d�|j|d	d�d
�|j|dd�d�|j|d	d�d
�|j|dd�d�|j|dd�d�|j|dd�d�|j|ddd�d�y)Nc	��tt|��D�cgc]
}d|dz����}}t|�dk(rd|dzdz}nddj|�zdz}t|�d|��t	t||���Scc}w)	NrKr�(rz,)z, �)z % )r�rBrr �dict�zip)r�valuesr��vars�argss     r�formatz.TestTranforms.test_format_misc.<locals>.format's���',�S��[�'9�:�'9�!�a��!��u�I�'9�D�:��4�y�A�~��T�!�W�}�t�+���T�Y�Y�t�_�,�s�2���3�'��T�F�+�T�#�d�F�2C�-D�E�E��;s�A=�stringzx = %s!rz	x = 1234!zx = %d!zx = %x!zx = 4d2!zx = %f!zx = 1234.000000!rzx = 1234.5678901!zx = 1234.567890!z
x = %s%% %%%%zx = 1234% %%z%% %sz
x = %% %s!zx = %s, y = %dr��"zx = 12, y = 34)r�)r+r5s  r�test_format_misczTestTranforms.test_format_misc&s��	F�	
�����)�8�4�����	�4�0�+�>�����	�4�0�+�>�����	�4�0�*�=�����	�4�0�2D�E�����	�<�8�:M�N�����	�<�8�:L�M�����	�<�8�+�F�������6��G�����	�7�3�\�B����� 0�"�b�9�;K�Lrc�p�|jtd�5td�ddd�|jtd�5tdddd��ddd�|jtd�5td	d
di�ddd�|jtd�5tdd
di�ddd�|jtd�5td
d
di�ddd�|jtd�5tdd
di�ddd�|jtd�5tdd
di�ddd�|jtd�5tdd
di�ddd�|jtd�5tdd
di�ddd�|jtd�5tdd
di�ddd�|jtd�5tddgd��ddd�|jtd�5tddddgd��ddd�y#1swY���xYw#1swY���xYw#1swY���xYw#1swY���xYw#1swY��~xYw#1swY��^xYw#1swY��>xYw#1swY��xYw#1swY��xYw#1swY��xYw#1swY��xYw#1swYyxYw)Nz&not enough arguments for format stringz	'%s' % ()z4not all arguments converted during string formattingz
'%s' % (x, y)rrIr�zincomplete formatz'%s%' % (x,)rKrz'%s%%%' % (x,)z
'%s%z' % (x,)zunsupported format characterz'%s%z' % (x, 5)z"a real number is required, not strz'%d' % (x,)rz!an integer is required, not floatz'%x' % (x,)g
ףp=J�@zan integer is required, not strzmust be real number, not strz'%f' % (x,)z'%s, %s' % (x, *y)rz)�assertRaisesRegex�	TypeErrorr �
ValueError�r+s r�test_format_errorsz TestTranforms.test_format_errors;sL��
�
#�
#�I�<�>����>��
#�
#�I�J�L�����"2�3�L��
#�
#�J�0C�
D���#�t��-�E�
�
#�
#�J�0C�
D��!�C��;�/�E�
�
#�
#�I�<�>���3��+�.�>��
#�
#�J�0N�
O��"�S�$�K�0�P�
�
#�
#�I�/S�
T����f�
�.�U�
�
#�
#�I�/R�
S����g��/�T�
�
#�
#�I�/P�
Q����f�
�.�R�
�
#�
#�I�/M�
N����f�
�.�O�
�
#�
#�I�<�>��%�Q�R�'8�9�>��
#�
#�I�J�L��%�Q�a��V�'<�=�L�L�5>�>��L�L��E�
D��
D�
D��>�>��P�
O��
T�
T��
S�
S��
Q�
Q��
N�
N��>�>��L�L�s��H �H-�/H:�I�	I�6I!�#I.�I;�=J�*J�J �J,� H*�-H7�:I�I�I�!I+�.I8�;J�J�J� J)�,J5c�.�d�}|j|d�y)Nc��||}}||}}yrbr4r�s  rr	z5TestTranforms.test_static_swaps_unpack_two.<locals>.f[s���a�q�A��a�q�Arrr�rQr�s  r�test_static_swaps_unpack_twoz*TestTranforms.test_static_swaps_unpack_twoZs��	�	
� � ��F�+rc�.�d�}|j|d�y)Nc�L�|||}}}|||}}}|||}}}|||}}}|||}}}|||}}}yrbr4r{s   rr	z7TestTranforms.test_static_swaps_unpack_three.<locals>.fasP����A�!�q�A���A�!�q�A���A�!�q�A���A�!�q�A���A�!�q�A���A�!�q�ArrrrAr�s  r�test_static_swaps_unpack_threez,TestTranforms.test_static_swaps_unpack_three`s��	�	
� � ��F�+rc���tddd�D]I\}}}d|�d|�d|�d�}|j|�5t|�}|j|d�ddd��Ky#1swY�VxYw)	N�_a�_b�_cz{'a': z, 'b': z, 'c': �}rr)rr[rrQ)r+r|r}rrr,s      r�test_static_swaps_match_mappingz-TestTranforms.test_static_swaps_match_mappingjsj���t�T�4�0�G�A�q�!���s�'�!��G�A�3�b�9�G����g�&�7��@���(�(��v�6�'�&�1�&�&�s�A�A$	c���gd�}tddd�D]W\}}}|D]L}|j|||�}|j|�5t|�}|j	|d�ddd��N�Yy#1swY�[xYw)N)z
C({}, {}, {})zC({}, {}, c={})zC({}, b={}, c={})zC(a={}, b={}, c={})rGrHrIrr)rr5r[rrQ)r+�formsr|r}r�formrr,s        r�test_static_swaps_match_classz+TestTranforms.test_static_swaps_match_classqsw��
���t�T�4�0�G�A�q�!����+�+�a��A�.���\�\�'�*�;�G�D�D��,�,�T�6�:�+�*��1�+�*�s�A-�-A6c�(�hd�}gd�}tddd�D]n\}}}|D]c}|j|||�}|j|�5t|�}||vr|j	|d�n|j|d�ddd��e�py#1swY�rxYw)N>�*_, b, c�a, *_, c�a, b, *_)z
{}, {}, {}z{}, {}, *{}z{}, *{}, {}z*{}, {}, {}rGrHrIrr)rr5r[rrRrQ)	r+�swapsrMr|r}rrNrr,s	         r� test_static_swaps_match_sequencez.TestTranforms.test_static_swaps_match_sequences���4��K���t�T�4�0�G�A�q�!����+�+�a��A�.���\�\�'�*�;�G�D�D��%�'��-�-�d�F�;��0�0��v�>�+�*��1�+�*�s�5B�BN))�__name__�
__module__�__qualname__r0rFrSr_rmrprwr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rr�requires_resourcer+r8r>rBrErKrOrUr4rrr!r!&s���D�"	9� �
(��6
�(�'"�R(��>+ �Z �.!(�F���	�L�B#��$�(�,'�#���
�J��W���u�%�B�&�B�.M�*>�>,�,�7�;�
?rr!c�$�eZdZd�Zd�Zd�Zd�Zy)�TestBugletsc�l�d�}|jt�5|�ddd�y#1swYyxYw)Nc��ddh\}}||fSr�r4r�s  rr	z%TestBuglets.test_bug_11510.<locals>.f�s���q�6�D�A�q��a�4�Kr)�assertRaisesr<r�s  r�test_bug_11510zTestBuglets.test_bug_11510�s(��	��
�
�z�
*�
�C�+�
*�
*�s�*�3c�^�td�D]}	t�y#txst$rY�wxYw)Nr�)r��	Exception)r+r�s  r�test_bpo_42057zTestBuglets.test_bpo_42057�s3���r��A�
������)�	�
��
�s��,�,c��tddd�y)Nzwhile True or spam: pass�<test>r�r\r=s r�test_bpo_45773_pop_jump_if_truez+TestBuglets.test_bpo_45773_pop_jump_if_true�s���*�H�f�=rc��tddd�y)Nzwhile True or not spam: passrdrrer=s r� test_bpo_45773_pop_jump_if_falsez,TestBuglets.test_bpo_45773_pop_jump_if_false�s���.��&�ArN)rVrWrXr_rbrfrhr4rrr[r[�s����>�Brr[c�r�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zd�Zy)�TestMarkingVariablesAsUnKnownc��|jtjtj��tjd�yrb)�
addCleanup�sys�settrace�gettracer=s r�setUpz#TestMarkingVariablesAsUnKnown.setUp�s&��������c�l�l�n�5����T�rc�.�d�}|j|d�y)Nc��d}||z}yr�r4r�s  rr	zDTestMarkingVariablesAsUnKnown.test_load_fast_known_simple.<locals>.f�s���A��A��Ar�	LOAD_FAST�rRr�s  r�test_load_fast_known_simplez9TestMarkingVariablesAsUnKnown.test_load_fast_known_simple�s��	�	
���a��-rc�R�d�}|j|d�|j|d�y)Nc�2�t�rd}t�yr���	conditionr�rJs rr	zFTestMarkingVariablesAsUnKnown.test_load_fast_unknown_simple.<locals>.f�s���{����!�Hr�LOAD_FAST_CHECKrs�rRrQr�s  r�test_load_fast_unknown_simplez;TestMarkingVariablesAsUnKnown.test_load_fast_unknown_simple��*��	�	
���a�!2�3�� � ��K�0rc�R�d�}|j|d�|j|d�y)Nc� �d}~t�yr��r�rJs rr	zKTestMarkingVariablesAsUnKnown.test_load_fast_unknown_because_del.<locals>.f�s���A���!�Hrrzrsr{r�s  r�"test_load_fast_unknown_because_delz@TestMarkingVariablesAsUnKnown.test_load_fast_unknown_because_del�r}rc��d�}|j|d�|j|d�d�}|j|d�|j|d�d�}|j|d�|j|d�d�}|j|d�|j|d�dd�}|j|d�|j|d�y)	Nc��t|�yrbr�rJs r�f1zPTestMarkingVariablesAsUnKnown.test_load_fast_known_because_parameter.<locals>.f1��	���!�Hrrsrzc��t|�yrbr�rJs r�f2zPTestMarkingVariablesAsUnKnown.test_load_fast_known_because_parameter.<locals>.f2�r�rc��t|�yrbr�)r4s r�f3zPTestMarkingVariablesAsUnKnown.test_load_fast_known_because_parameter.<locals>.f3�s	���$�Krc��t|�yrbr�)�kwargss r�f4zPTestMarkingVariablesAsUnKnown.test_load_fast_known_because_parameter.<locals>.f4�s	���&�Mrc��t|�yrbr�rJs r�f5zPTestMarkingVariablesAsUnKnown.test_load_fast_known_because_parameter.<locals>.f5�r�r)rr{)r+r�r�r�r�r�s      r�&test_load_fast_known_because_parameterzDTestMarkingVariablesAsUnKnown.test_load_fast_known_because_parameter�s���	����b�+�.�� � ��%6�7�	����b�+�.�� � ��%6�7�	����b�+�.�� � ��%6�7�	����b�+�.�� � ��%6�7�	����b�+�.�� � ��%6�7rc�R�d�}|j|d�|j|d�y)Nc�H�t�rd}t�t|�yr�rxrJs rr	zTTestMarkingVariablesAsUnKnown.test_load_fast_known_because_already_loaded.<locals>.f�s���{����!�H��!�Hrrzrsrtr�s  r�+test_load_fast_known_because_already_loadedzITestMarkingVariablesAsUnKnown.test_load_fast_known_because_already_loaded�s*��	�
	
���a�!2�3����a��-rc�R�d�}|j|d�|j|d�y)Nc�8�t�rd}nd}t|�y)NrrIrxrJs rr	zOTestMarkingVariablesAsUnKnown.test_load_fast_known_multiple_branches.<locals>.f�s���{������!�Hrrsrzr{r�s  r�&test_load_fast_known_multiple_brancheszDTestMarkingVariablesAsUnKnown.test_load_fast_known_multiple_branches�s*��	�	
���a��-�� � ��$5�6rc�.�d�}|j|d�y)Nc�2�	ddz}|S#t$rYSwxYw�Nrr)�ZeroDivisionError)�ress rr	zKTestMarkingVariablesAsUnKnown.test_load_fast_unknown_after_error.<locals>.f�s0��
��!�e���J��%�
���J�
�s�	�	�rzrtr�s  r�"test_load_fast_unknown_after_errorz@TestMarkingVariablesAsUnKnown.test_load_fast_unknown_after_error�s��	�	
���a�!2�3rc�R�d�}|j|d�|j|d�y)Nc
�\�	ddzdx}x}x}x}x}x}}y#t�Y�$xYwr�r�)r|r}rr�r�r	rds       rr	zMTestMarkingVariablesAsUnKnown.test_load_fast_unknown_after_error_2.<locals>.f�sN��
+��A��)*�)�A�)��)�A�)��)�A�)��A��
+��a��A�q�!�Q��*�s��+rzrsr{r�s  r�$test_load_fast_unknown_after_error_2zBTestMarkingVariablesAsUnKnown.test_load_fast_unknown_after_error_2�s*��	*�	
���a�!2�3�� � ��K�0rc���d�}dD]0}|j|dd|d���|j|dd|d����2dD]0}|j|dd|d���|j|dd|d����2dD]0}|j|dd|d���|j|dd|d����2|j|dd	�|j|dd	�|j|dd
�|j|dd
�y)Nc��dx}x}x}x}x}x}x}x}x}}	dx}
x}x}x}
x}x}x}x}x}}dx}x}x}x}x}x}x}x}x}}dx}x}x} x}!x}"x}#x}$x}%x}&}'dx}(x})x}*x}+x},x}-x}.x}/x}0}1dx}2x}3x}4x}5x}6x}7x}8x}9x}:};dx}<x}=x}>x}?x}@x}Ax}Bx}Cx}D}Edx}Fx}Gx}Hx}Ix}Jx}Kx}Lx}Mx}N}O~H~ItI�t|F|GH|I�	t|||>|?�t@ANO��r�r�)P�a00�a01�a02�a03�a04�a05�a06�a07�a08�a09�a10�a11�a12�a13�a14�a15�a16�a17�a18�a19�a20�a21�a22�a23�a24�a25�a26�a27�a28�a29�a30�a31�a32�a33�a34�a35�a36�a37�a38�a39�a40�a41�a42�a43�a44�a45�a46�a47�a48�a49�a50�a51�a52�a53�a54�a55�a56�a57�a58�a59�a60�a61�a62�a63�a64�a65�a66�a67�a68�a69�a70�a71�a72�a73�a74�a75�a76�a77�a78�a79sP                                                                                rr	zGTestMarkingVariablesAsUnKnown.test_load_fast_too_many_locals.<locals>.fs���HI�I�C�I�#�I��I�c�I�C�I�#�I��I�c�I�C�#�HI�I�C�I�#�I��I�c�I�C�I�#�I��I�c�I�C�#�HI�I�C�I�#�I��I�c�I�C�I�#�I��I�c�I�C�#�HI�I�C�I�#�I��I�c�I�C�I�#�I��I�c�I�C�#�HI�I�C�I�#�I��I�c�I�C�I�#�I��I�c�I�C�#�HI�I�C�I�#�I��I�c�I�C�I�#�I��I�c�I�C�#�HI�I�C�I�#�I��I�c�I�C�I�#�I��I�c�I�C�#�HI�I�C�I�#�I��I�c�I�C�I�#�I��I�c�I�C�#��S��#�J��#�s�C��%���c�3��S�)��c�3��S�)�r)rr�>�?rsr|�02rz)�@�A�N�O)�F�Gr�r�r{)r+r	r�s   r�test_load_fast_too_many_localsz<TestMarkingVariablesAsUnKnown.test_load_fast_too_many_localss��	*� �A��!�!�!�[�A�a��V�*�=��$�$�Q�(9�Q�q��f�:�F�� �A��!�!�!�%6�!�A�b�6�
�C��$�$�Q��q��2��Z�@� ��A��!�!�!�[�A�a��V�*�=��$�$�Q�(9�Q�q��f�:�F��
	
���a�!2�E�:�� � ��K��7����a�!2�E�:����a��e�4rc����tjd�}i}t||�|d}|j|d�|j	|d�|j
j}�fd��tj��|�}|j|�|j|d�|j	|d�|j|j
j|�y)Na            def f():
                x = y = 2
                if not x:
                    return 4
                for i in range(55):
                    x + 6
                L = 7
                L = 8
                L = 9
                L = 10
        r	rsrzc�j��|dk(r,|jdk(rd|_tjd�y�S�NrXr�rz��f_linenormrn��frame�event�arg�traces   �rrzMTestMarkingVariablesAsUnKnown.test_setting_lineno_no_undefined.<locals>.traceA�0������5�>�>�Q�#6�!"������T�"���Lr)r
rrrRrQr
rrmrn�assertIsNoner�)r+r,�nsr	r�resultrs      @r� test_setting_lineno_no_undefinedz>TestMarkingVariablesAsUnKnown.test_setting_lineno_no_undefined.s������� �
�����T�2���s�G�����a��-�� � ��$5�6��*�*�$�$��	�	���U��������&�!����a��-�� � ��$5�6�������+�+�W�5rc���tjd�}i}t||�|d}|j|d�|j	|d�|j
j}�fd��d}|jt|�5tj��|�}ddd�|jd�|j|d�|j	|d�|j|j
j|�y#1swY�fxYw)Na            def f():
                x = y = 2
                if not x:
                    return 4
                for i in range(55):
                    x + 6
                del x
                L = 8
                L = 9
                L = 10
        r	rsrzc�j��|dk(r,|jdk(rd|_tjd�y�Sr�r�rs   �rrzNTestMarkingVariablesAsUnKnown.test_setting_lineno_one_undefined.<locals>.tracearrz!assigning None to 1 unbound localr��r
rrrRrQr
r�assertWarnsRegex�RuntimeWarningrmrnr��r+r,rr	rr�rrs       @r�!test_setting_lineno_one_undefinedz?TestMarkingVariablesAsUnKnown.test_setting_lineno_one_undefinedNs������� �
�����T�2���s�G�����a��-�� � ��$5�6��*�*�$�$��	�
1��
�
"�
"�>�1�
5��L�L����S�F�6�	
�����#����a��-�� � ��$5�6�������+�+�W�5�
6�
5���D�Dc���tjd�}i}t||�|d}|j|d�|j	|d�|j
j}�fd��d}|jt|�5tj��|�}ddd�|jd�|j|d�|j	|d�|j|j
j|�y#1swY�fxYw)Na            def f():
                x = y = 2
                if not x:
                    return 4
                for i in range(55):
                    x + 6
                del x, y
                L = 8
                L = 9
                L = 10
        r	rsrzc�j��|dk(r,|jdk(rd|_tjd�y�Sr�r�rs   �rrzNTestMarkingVariablesAsUnKnown.test_setting_lineno_two_undefined.<locals>.trace�rrz"assigning None to 2 unbound localsr�rrs       @r�!test_setting_lineno_two_undefinedz?TestMarkingVariablesAsUnKnown.test_setting_lineno_two_undefinedps������� �
�����T�2���s�G�����a��-�� � ��$5�6��*�*�$�$��	�
2��
�
"�
"�>�1�
5��L�L����S�F�6�	
�����#����a��-�� � ��$5�6�������+�+�W�5�
6�
5�rc��tjd�}i}t||�|d}|j|d�|j	|d�|S)Nz�            def f():
                x = 2
                L = 3
                L = 4
                L = 5
                if not L:
                    x + 7
                    y = 2
        r	rsrz)r
rrrRrQ)r+r,rr	s    r�make_function_with_no_checksz:TestMarkingVariablesAsUnKnown.make_function_with_no_checks�sT�����	 �	
�����T�2���s�G�����a��-�� � ��$5�6��rc���|j�}|jj}�fd��d}|jt|�5tj��|�ddd�|j|d�|j|d�|j|jj|�y#1swY�TxYw)Nc�v��|dk(r2|jdk(r#|jd=tjd�y�S)NrXr�rK�r��f_localsrmrnrs   �rrzWTestMarkingVariablesAsUnKnown.test_deleting_local_warns_and_assigns_none.<locals>.trace�s5������5�>�>�Q�#6��N�N�3�'����T�"���Lrz#assigning None to unbound local 'x'rsrz)
rr
rr
rrmrnrRrQr�)r+r	rr�rs    @r�*test_deleting_local_warns_and_assigns_nonezHTestMarkingVariablesAsUnKnown.test_deleting_local_warns_and_assigns_none�s�����-�-�/���*�*�$�$��	�
3��
�
"�
"�>�1�
5��L�L���
�C�6�	
���a��-�� � ��$5�6�������+�+�W�5�6�
5�s�B5�5B>c���|j�}�fd��tj��|�|j|d�|j	|d�y)Nc�z��|dk(r4|jdk(r%d|jd<tjd�y�S)NrXr��*rKrrs   �rrzTTestMarkingVariablesAsUnKnown.test_modifying_local_does_not_add_check.<locals>.trace��7������5�>�>�Q�#6�&(����s�#����T�"���Lrrsrz�rrmrnrRrQ�r+r	rs  @r�'test_modifying_local_does_not_add_checkzETestMarkingVariablesAsUnKnown.test_modifying_local_does_not_add_check��J����-�-�/��	�	���U��	�����a��-�� � ��$5�6rc���|j�}�fd��tj��|�|j|d�|j	|d�y)Nc�z��|dk(r4|jdk(r%d|jd<tjd�y�S)NrXr�rrrrs   �rrzWTestMarkingVariablesAsUnKnown.test_initializing_local_does_not_add_check.<locals>.trace�rrrsrzr r!s  @r�*test_initializing_local_does_not_add_checkzHTestMarkingVariablesAsUnKnown.test_initializing_local_does_not_add_check�r#rN)rVrWrXrprur|r�r�r�r�r�r�r�r	rrrrr"r&r4rrrjrj�s[���.�1�1�8�4.�7�	4�1�%5�N6�@ 6�D 6�D�$6�"7�7rrjc�<�eZdZ		d	d�Zd�Zd�Zd�Zd�Zd�Zd�Z	y)
�DirectCfgOptimizerTestsNc��|�|}|j|||�\}}|j|�}|j||�|j||�yrb)�
get_optimized�normalize_insts�assertInstructionsMatchr�)r+�insts�expected_insts�consts�expected_consts�nlocals�	opt_insts�
opt_constss        r�cfg_optimization_testz-DirectCfgOptimizerTests.cfg_optimization_test�sX���"�$�O� $� 2� 2�5�&�'� J��	�:��-�-�n�=���$�$�Y��?�����_�5rc��dd|j�x}dfd|ddg}dd|j�x}dfd|dg}|j||gd	�gd
���y)N��	LOAD_NAMEr�rOr��rirIr��rirz��r&r;)rirr�)rkrIr;�rrrIrzr�)rrIrz�r/r0��Labelr4�r+�lblr-r.s    r�1test_conditional_jump_forward_non_const_conditionzIDirectCfgOptimizerTests.test_conditional_jump_forward_non_const_condition�sw�� �
��
�
��!4��b�9�!��!� �

��
!�
��
�
��!4��b�9�!��#�
��	
�"�"�5�#1�*9�3<�	#�	>rc�t�dd|j�x}dfd|ddg}gd�}|j||gd�d	d
g��y)N�rirzr8rOr�r9r:r<)��NOPr8)rGr�)rkrr;r=rrzr>r?rAs    r�-test_conditional_jump_forward_const_conditionzEDirectCfgOptimizerTests.test_conditional_jump_forward_const_condition�sZ��

"�
��
�
��!4��b�9�!��!� �

��
��
	
�"�"�5�#1�*9�45�q�6�	#�	;rc	��|j�x}dd|dfddg}|j�x}dd|dfddg}|j||ttd����y)Nr6rOr�)r7rIr��r&r�r��r/�r@r4r'r�)r+�lbl1r-rB�expecteds     r�2test_conditional_jump_backward_non_const_conditionzJDirectCfgOptimizerTests.test_conditional_jump_backward_non_const_conditionss���J�J�L� �D� �
��r�*� � �
���:�:�<��C� �
��b�)� � �
��	
�"�"�5�(�4��a��>�"�Jrc	��|j�x}dd|dfddg}|j�x}dd|dfg}|j||ttd���	�y)
NrErOr�r9rJrF�JUMPr�rKrL)r+rMr-rBr.s     r�.test_conditional_jump_backward_const_conditionzFDirectCfgOptimizerTests.test_conditional_jump_backward_const_conditionso���J�J�L� �D�!�
��r�*�!� �
���:�:�<��C��
�S�"��
��
	
�"�"�5�.��e�A�h��"�Prc	�Z�gd�}|j||ttd��d��y)N))rirr)rirrI)rirIrz)rrrzr���
STORE_FASTrr�rT)�POP_TOPrr�)r&r�rzr)r/r1)r4r'r�)r+r-s  r�test_no_unsafe_static_swapz2DirectCfgOptimizerTests.test_no_unsafe_static_swap(s+��	
��	
�"�"�5�%��U�1�X��PQ�"�Rrc�d�gd�}gd�}|j||g��|j||g��y)N)��	PUSH_NULLrrrY)rhrr��CALLrrr[�r&rr)rY)rhrrr[r[r])r.r/)r4)r+�before�afters   r�'test_only_one_push_null_per_load_globalz?DirectCfgOptimizerTests.test_only_one_push_null_per_load_global6s<��
��
��	
�"�"�6�%��"�K��"�"�5��r�"�Jr)NNr)
rVrWrXr4rCrHrOrRrWr`r4rrr(r(�s2��<@�&'�6�>�*;�,K�"Q� S�Krr(�__main__)r�	itertoolsrrrmr
�unittest�testr�test.support.bytecode_helperrrrrr!�TestCaser[rjr(rV�mainr4rr�<module>rhs���
�+�
����R�#�
�f	?�$�f	?�RB�(�#�#�B�4d7�$4�d7�N	yK�5�yK�v�z���H�M�M�O�r

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