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

�Ke�j���ddlZddlmZmZddlZddlZddlmZd�Zd�Z	Gd�de��Z
Gd�d	ej��Ze
d
krej��dSdS)�N)�combinations�product)�BytecodeTestCasec�p�tjd|�d���}i}t||��|djS)Nz=
        def f(x):
            match x:
                case z#:
                    pass
        �f)�textwrap�dedent�exec�__code__)�pattern�source�	namespaces   �=/usr/local/apps/python3/lib/python3.11/test/test_peepholer.py� compile_pattern_with_fast_localsr	sP��
�_�	��	�	�	���F��I��������S�>�"�"�c���d}tj|��D]}|j|kr|dz
}�t|d��r|j}|jD]%}t|d��r|t
||��z
}�&|S)Nr�r�co_code)�dis�get_instructions�opname�hasattrr�	co_consts�count_instr_recursively)rr�count�instr�cs     rrrs���
�E��%�a�(�(�����<�6�!�!��Q�J�E���q�*����
�J��
�[�8�8���1�i� � �	8��,�Q��7�7�7�E���Lrc��eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zejd��d���Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z!d�Z"d �Z#d!�Z$d"�Z%d#�Z&d$�Z'd%S)&�
TestTranformsc
�.�ttj|����}d�|D��}|D]�}d|jvr�||j}|jdvr4|�|j�d|j�d|j�d|j����|jdvr?|jdkr4|�|j�d|j�d|j�d|j����d|jvr=d|jvr4|�|j�d|j�d|j�d|j������dS)	Nc��i|]
}|j|��S�)�offset��.0rs  r�
<dictcomp>z4TestTranforms.check_jump_targets.<locals>.<dictcomp>(s��A�A�A�5�5�<��A�A�Ar�JUMP_)�
JUMP_ABSOLUTE�JUMP_FORWARDz at z
 jumps to �RETURN_VALUE�_OR_POP�JUMP_IF_)�listrrr�argval�failr#)�self�code�instructions�targetsr�tgts      r�check_jump_targetsz TestTranforms.check_jump_targets&s����C�0��6�6�7�7��A�A�L�A�A�A��!�	D�	D�E��e�l�*�*���%�,�'�C��z�>�>�>��	�	�U�\�C�C�u�|�C�C�&)�j�C�C�69�j�C�C�D�D�D��� A�A�A��
�n�,�,��	�	�U�\�C�C�u�|�C�C�&)�j�C�C�69�j�C�C�D�D�D��E�L�(�(�Z�3�:�-E�-E��	�	�U�\�C�C�u�|�C�C�&)�j�C�C�69�j�C�C�D�D�D��	D�	Drc�P�tj|��}ttj|����}t	d�|D����}td�|D����}|�|d��|�|t|j	����dS)z0Check that the lnotab byte offsets are sensible.c3�&K�|]}|dV��
dS�rNr"�r%�ts  r�	<genexpr>z-TestTranforms.check_lnotab.<locals>.<genexpr>A�&����0�0�A�1�Q�4�0�0�0�0�0�0rc3�&K�|]}|dV��
dSr8r"r9s  rr;z-TestTranforms.check_lnotab.<locals>.<genexpr>Br<rrN)
r�_get_code_objectr-�findlinestarts�min�max�assertGreaterEqual�
assertLess�lenr)r0r1�lnotab�min_bytecode�max_bytecodes     r�check_lnotabzTestTranforms.check_lnotab;s����#�D�)�)���c�(��.�.�/�/���0�0��0�0�0�0�0���0�0��0�0�0�0�0������a�0�0�0�����c�$�,�&7�&7�8�8�8�8�8rc���d�}|�|d��|�|d��|�|d��|�|d��|�|��dS)Nc��|dks~dSdS)N�r"��xs r�unotz%TestTranforms.test_unot.<locals>.unotKs����6�6��A�A��6r�	UNARY_NOT�POP_JUMP_FORWARD_IF_FALSE�POP_JUMP_BACKWARD_IF_FALSE�POP_JUMP_FORWARD_IF_TRUE��assertNotInBytecode�assertInBytecoderH)r0rNs  r�	test_unotzTestTranforms.test_unotIs���	�	�	�	
� � ��{�3�3�3�� � ��'B�C�C�C�� � ��'C�D�D�D����d�$>�?�?�?����$�����rc���dD]q\}}}|�|���5t|dd��}|�|||��|�|��ddd��n#1swxYwY�rdS)N))z
not a is b�IS_OPr)znot a is not brXr)z
not a in b�CONTAINS_OPr)znot a not in brYr��line��single)�subTest�compilerUrH)r0r[�cmp_op�invertr1s     r�test_elim_inversion_of_is_or_inz-TestTranforms.test_elim_inversion_of_is_or_inTs���%�		(�		(� �D�&�&����4��(�(�
(�
(��t�R��2�2���%�%�d�F�F�;�;�;��!�!�$�'�'�'�
(�
(�
(�
(�
(�
(�
(�
(�
(�
(�
(����
(�
(�
(�
(��
		(�		(s�>A)�)A-	�0A-	c��d�}d�}d�}|df|df|dffD]u\}}|�|���5|�|d��|�|d|��|�|��ddd��n#1swxYwY�vd	�}|�|d��|�|dd��|�|��dS)
Nc��d}d}|S�Nr"rLs rrz0TestTranforms.test_global_as_constant.<locals>.fbs���A��A��Hrc�
�d}|S)NTr"rLs r�gz0TestTranforms.test_global_as_constant.<locals>.gfs���A��Hrc�
�d}|S)NFr"rLs r�hz0TestTranforms.test_global_as_constant.<locals>.his���A��HrTF)�func�LOAD_GLOBAL�
LOAD_CONSTc��dS)z1Adding a docstring made this test fail in Py2.5.0Nr"r"rrrz0TestTranforms.test_global_as_constant.<locals>.fss���4r)r^rTrUrH)r0rrgrirj�elems      r�test_global_as_constantz%TestTranforms.test_global_as_constant`s\��	�	�	�	�	�	�	�	�	��t�9�q�$�i�!�U��<�	(�	(�J�D�$����4��(�(�
(�
(��(�(��}�=�=�=��%�%�d�L�$�?�?�?��!�!�$�'�'�'�
(�
(�
(�
(�
(�
(�
(�
(�
(�
(�
(����
(�
(�
(�
(��
	�	�	�	
� � ��M�2�2�2����a��t�4�4�4����!�����s�AA?�?B	�B	c��d�}dD]}|�||���dD]}|�||���|�|��dS)Nc��		�re)r-r"rrrz'TestTranforms.test_while_one.<locals>.f}s��
��
r)rl�POP_JUMP_IF_FALSE)�
JUMP_BACKWARDrS)r0rrns   r�test_while_onezTestTranforms.test_while_one{s}��	�	�	�8�	.�	.�D��$�$�Q��-�-�-�-�&�	+�	+�D��!�!�!�T�*�*�*�*����!�����rc�B�dD]�\}}|�|���5t|dd��}|�||��|�|d��|�|d��|�|��ddd��n#1swxYwY��dS)N))za, = a,rl)za, b = a, b�SWAP)za, b, c = a, b, crvrZr\r]�BUILD_TUPLE�UNPACK_SEQUENCE�r^r_rUrTrH�r0r[rnr1s    r�test_pack_unpackzTestTranforms.test_pack_unpack�s����
	(�
	(�J�D�$�
���4��(�(�
(�
(��t�B�x�0�0���%�%�d�D�1�1�1��(�(��}�=�=�=��(�(��/@�A�A�A��!�!�$�'�'�'�
(�
(�
(�
(�
(�
(�
(�
(�
(�
(�
(����
(�
(�
(�
(��
	(�
	(s�A)B�B	�B	c	��dD]�\}}|�|���5t|dd��}|�|d|��|�|d��|�|��ddd��n#1swxYwY��ttt
td������dd��}|�|d��d�tj	|��D��}|�
t|��d	��|�|��d
�}|�|��dS)N))z	a = 1,2,3�rrK�)z
("a","b","c")��a�br)z
a,b,c = 1,2,3r})z(None, 1, None)�NrN)z((1, 2), 3, 4)��rrKr~�rZr\r]rlrw�'c�(�g|]}|jdk�
|��S)rl�rr$s  r�
<listcomp>zETestTranforms.test_folding_of_tuples_of_constants.<locals>.<listcomp>�s.��?�?�?��!&���!=�!=��!=�!=�!=rrKc��gd�fdS)N)drrrKr~r������	rrrKr~r�r�r�r�r�r�rrrKr~r�r�r�r�r�r�rrrKr~r�r�r�r�r�r�rrrKr~r�r�r�r�r�r�rrrKr~r�r�r�r�r�r�rrrKr~r�r�r�r�r�r�rrrKr~r�r�r�r�r�r�rrrKr~r�r�r�r�r�r�rrrKr~r�r�r�r�r�r�r"r"rr�craterzATestTranforms.test_folding_of_tuples_of_constants.<locals>.crater�s*������
�
�
�
r)r^r_rUrTrH�repr�tuple�rangerr�assertEqualrD)r0r[rnr1�load_constsr�s      r�#test_folding_of_tuples_of_constantsz1TestTranforms.test_folding_of_tuples_of_constants�s����	(�	(�J�D�$����4��(�(�
(�
(��t�B�x�0�0���%�%�d�L�$�?�?�?��(�(��}�=�=�=��!�!�$�'�'�'�	
(�
(�
(�
(�
(�
(�
(�
(�
(�
(�
(����
(�
(�
(�
(���t�E�%��,�,�/�/�0�0��H�=�=��� � ��}�5�5�5�?�?�#�*>�t�*D�*D�?�?�?������[�)�)�1�-�-�-����$����
	�	�	�	
���&�!�!�!�!�!��AA>�>B	�B	c��dD]�\}}|�|���5t|dd��}|�|d|��|�|d��|�|��ddd��n#1swxYwY��dS)N))za in [1,2,3]r})za not in ["a","b","c"]r)za in [None, 1, None]r�)za not in [(1, 2), 3, 4]r�rZr\r]rl�
BUILD_LISTryrzs    r�"test_folding_of_lists_of_constantsz0TestTranforms.test_folding_of_lists_of_constants�s����	(�	(�J�D�$����4��(�(�
(�
(��t�R��2�2���%�%�d�L�$�?�?�?��(�(��|�<�<�<��!�!�$�'�'�'�	
(�
(�
(�
(�
(�
(�
(�
(�
(�
(�
(����
(�
(�
(�
(��	(�	(r�c	� �dthd���fdthd���fdtddh��fdthd���fd	thd���ffD]�\}}|�|�
��5t|dd��}|�|d
��|�|d|��|�|��ddd��n#1swxYwY��d�}d�}|�|d����|�|d����|�|��|�|d����|�|d����|�|��dS)Nza in {1,2,3}�rrKr~za not in {"a","b","c"}>r�r�rza in {None, 1, None}rza not in {(1, 2), 3, 4}>r�r~r�za in {1, 2, 3, 3, 2, 1}rZr\r]�	BUILD_SETrlc�
�|dvS�Nr�r"�r�s rrz:TestTranforms.test_folding_of_sets_of_constants.<locals>.f�s���	�>�!rc�
�|dvSr�r"r�s rrgz:TestTranforms.test_folding_of_sets_of_constants.<locals>.g�s
���I�%�%rr~r�)�	frozensetr^r_rTrUrH�
assertTrue)r0r[rnr1rrgs      r�!test_folding_of_sets_of_constantsz/TestTranforms.test_folding_of_sets_of_constants�s����Y�y�y�y�1�1�2�
%�y����'A�'A�B�
#�Y��4�y�%9�%9�:�
&�	�.�.�.�(A�(A�B�
&�	�)�)�)�(<�(<�=�
�	(�	(�J�D�$����4��(�(�
(�
(��t�R��2�2���(�(��{�;�;�;��%�%�d�L�$�?�?�?��!�!�$�'�'�'�	
(�
(�
(�
(�
(�
(�
(�
(�
(�
(�
(����
(�
(�
(�
(��	"�	"�	"�	&�	&�	&�	
�����!���������A�A�a�D�D��!�!�!����!�������A�A�a�D�D��!�!�!������!���������!�����s�8AC�C	�C	c�>�dD]�\}}|�|���5t|dd��}|�|d|��tj|��D]/}|�|j�d�����0|�|��ddd��n#1swxYwY��tddd��}|�|dd��|�|dd	��|�|��td
dd��}|�|dd��|�	ddz|j
��|�|��td
dd��}|�|dd��|�	ddz|j
��|�|��tddd��}|�|dd��|�	ddz|j
��|�|��dS)N))z	a = 2+3+4r�)z"@"*4z@@@@)za="abc" + "def"�abcdef)za = 3**4�Q)za = 3*4�)z	a = 13//4r~)za = 14%4rK)za = 2+3r�)za = 13-4r�)za = (12,13)[1]�
)za = 13 << 2�4)za = 13 >> 2r~)z
a = 13 & 7r�)z
a = 13 ^ 7�
)z
a = 13 | 7�rZr\r]rl�BINARY_za=2+"b"rKr�za="x"*10000r�rMz	a=1<<1000i�rz	a=2**1000)r^r_rUrr�assertFalser�
startswithrH�assertNotInr)r0r[rnr1rs     r�#test_folding_of_binops_on_constantsz1TestTranforms.test_folding_of_binops_on_constants�sm���	(�	(�J�D�$�"���4��(�(�
(�
(��t�R��2�2���%�%�d�L�$�?�?�?� �1�$�7�7�I�I�E��$�$�U�\�%<�%<�Y�%G�%G�H�H�H�H��!�!�$�'�'�'�
(�
(�
(�
(�
(�
(�
(�
(�
(�
(�
(����
(�
(�
(�
(���y�"�h�/�/�����d�L�!�4�4�4����d�L�#�6�6�6����$�����}�b�(�3�3�����d�L�%�8�8�8�����U��D�N�3�3�3����$�����{�B��1�1�����d�L�$�7�7�7�����D��$�.�1�1�1����$�����{�B��1�1�����d�L�$�7�7�7�����D��$�.�1�1�1����$�����s�BB,�,B0	�3B0	c�p�tddd��}|�|dd��|�|d��|�|��tddd��}|�|dd��|�|d��|�|��td	dd��}|�|dd
��|�|d��|�|��tddd��}|�|d��|�|��dS)Nz"foo"[0]r\r]rlr�
BINARY_SUBSCRu	"a￿"[1]u￿u	"𒍅"[0]u𒍅z	"fuu"[10])r_rUrTrH)r0r1s  r�test_binary_subscr_on_unicodez+TestTranforms.test_binary_subscr_on_unicodesB���z�2�x�0�0�����d�L�#�6�6�6�� � ���7�7�7����$�����*�B��9�9�����d�L�(�;�;�;�� � ��o�6�6�6����$�����(�"�h�7�7�����d�L�,�?�?�?�� � ���7�7�7����$�����{�B��1�1�����d�O�4�4�4����$�����rc�@�dD]�\}}|�|���5t|dd��}|�|d|��tj|��D]/}|�|j�d�����0|�|��ddd��n#1swxYwY��d�}tj|��D]/}|�|j�d�����0|�|��dD]�\}}}|�|���5t|dd��}|�|d|��|�||��|�|��ddd��n#1swxYwY��dS)	N))z-0.5g�)z-0.0��)z
-(1.0-1.0)r�)z-0r)z~-2r)z+1rrZr\r]rl�UNARY_c��dS)Nr�r"r"rr�negzerozDTestTranforms.test_folding_of_unaryops_on_constants.<locals>.negzero?s���:r))z-"abc"�abc�UNARY_NEGATIVE)z~"abc"r��UNARY_INVERT)	r^r_rUrrr�rr�rH)r0r[rnr1rr�rs       r�%test_folding_of_unaryops_on_constantsz3TestTranforms.test_folding_of_unaryops_on_constants.sL��
�
	(�
	(�J�D�$����4��(�(�
(�
(��t�R��2�2���%�%�d�L�$�?�?�?� �1�$�7�7�H�H�E��$�$�U�\�%<�%<�X�%F�%F�G�G�G�G��!�!�$�'�'�'�
(�
(�
(�
(�
(�
(�
(�
(�
(�
(�
(����
(�
(�
(�
(��	�	�	��)�'�2�2�	@�	@�E����U�\�4�4�X�>�>�?�?�?�?����'�"�"�"�#
�	(�	(��D�$�����4��(�(�
(�
(��t�R��2�2���%�%�d�L�$�?�?�?��%�%�d�F�3�3�3��!�!�$�'�'�'�	
(�
(�
(�
(�
(�
(�
(�
(�
(�
(�
(����
(�
(�
(�
(��		(�	(s%�BB,�,B0	�3B0	�2AF�F	�F	c���d�}|�|dd��d�tj|��D��}|�t	|��d��|�|��dS)Nc��|Srer"rLs rrz/TestTranforms.test_elim_extra_return.<locals>.fSs���Hrrlc�(�g|]}|jdk�
|��S�r*r�r$s  rr�z8TestTranforms.test_elim_extra_return.<locals>.<listcomp>V�.��=�=�=�U�"�\�^�;�;��;�;�;rr)rTrrr�rDrH�r0r�returnss   r�test_elim_extra_returnz$TestTranforms.test_elim_extra_returnQs���	�	�	�� � ��L�$�7�7�7�=�=�c�&:�1�&=�&=�=�=�=������W���q�)�)�)����!�����rzVFollowing gh-92228 the return has two predecessors and that prevents jump elimination.c�:�d�}|�|��|�|d��|�|d��d�tj|��D��}|�t|��d��|�|��dS)Nc��|r|n|Srer")�cond�
true_value�false_values   rrz1TestTranforms.test_elim_jump_to_return.<locals>.f_s��"&�%�J�J�$�
&rr)r(c�(�g|]}|jdk�
|��Sr�r�r$s  rr�z:TestTranforms.test_elim_jump_to_return.<locals>.<listcomp>fr�rrK)r5rTrrr�rDrHr�s   r�test_elim_jump_to_returnz&TestTranforms.test_elim_jump_to_return[s���	&�	&�	&�	
����"�"�"�� � ��N�3�3�3�� � ��O�4�4�4�=�=�c�&:�1�&=�&=�=�=�=������W���q�)�)�)����!�����rc�`�d�}|�|��|�|��dS)Nc�p�tr tstrt��dSdSt	��dSre)r�r�d�foo�bazr"rrrz6TestTranforms.test_elim_jump_to_uncond_jump.<locals>.fms@���
������E�E�E�E�E��������r�r5rH�r0rs  r�test_elim_jump_to_uncond_jumpz+TestTranforms.test_elim_jump_to_uncond_jumpksA��	�	�	�	
����"�"�"����!�����rc�`�d�}|�|��|�|��dS)Nc�J�|r tstrt��}|�dSdSre)rr�r�r�s rrz7TestTranforms.test_elim_jump_to_uncond_jump2.<locals>.fzsA���
��������A�	�
�
�
�
�
rr�r�s  r�test_elim_jump_to_uncond_jump2z,TestTranforms.test_elim_jump_to_uncond_jump2xsA��	�	�	�	
����"�"�"����!�����rc��d�}|�|��|�|��|�t|d��d��d�}|�|��|�|��|�t|d��d��d�}|�|��|�|��|�|d��|�|d��|�|d��d�}|�|��|�|��|�|d��|�|d��|�|d	��dS)
Nc��|o|o|Srer"rs   rrz7TestTranforms.test_elim_jump_to_uncond_jump3.<locals>.f�s���W�1���
r�JUMP_IF_FALSE_OR_POPrKc��|p|p|Srer"rs   rrz7TestTranforms.test_elim_jump_to_uncond_jump3.<locals>.f�s���V�!���
r�JUMP_IF_TRUE_OR_POPc��|r|p|Srer"rs   rrz7TestTranforms.test_elim_jump_to_uncond_jump3.<locals>.f�s���W�1���
rrPc��|s|o|Srer"rs   rrz7TestTranforms.test_elim_jump_to_uncond_jump3.<locals>.f�s���V�!���
rrR)r5rHr�rrTrUr�s  r�test_elim_jump_to_uncond_jump3z,TestTranforms.test_elim_jump_to_uncond_jump3�s���	�	�	�	
����"�"�"����!�������0��4J�K�K�Q�O�O�O�	�	�	�	
����"�"�"����!�������0��4I�J�J�A�N�N�N�	�	�	�	
����"�"�"����!����� � ��$:�;�;�;����a�!6�7�7�7����a�!<�=�=�=�	�	�	�	
����"�"�"����!����� � ��$9�:�:�:����a�!7�8�8�8����a�!;�<�<�<�<�<rc��d�}|�|d��|�|d��d�tj|��D��}|�t	|��d��|�|��dS)Nc��|rdS|rdS	dS)NrrKr~r")�cond1�cond2s  rrz5TestTranforms.test_elim_jump_after_return1.<locals>.f�s ����Q�Q���Q�Q�
��qrr)r(c�(�g|]}|jdk�
|��Sr�r�r$s  rr�z>TestTranforms.test_elim_jump_after_return1.<locals>.<listcomp>�r�rr�)rTrr�assertLessEqualrDrHr�s   r�test_elim_jump_after_return1z*TestTranforms.test_elim_jump_after_return1�s���	�	�	�	
� � ��N�3�3�3�� � ��O�4�4�4�=�=�c�&:�1�&=�&=�=�=�=�����S��\�\�1�-�-�-����!�����rc�b�d�}|�|d��|�|��dS)Nc��dd�}|S)N�returnrKc��dSrer"r"rrrgzBTestTranforms.test_make_function_doesnt_bail.<locals>.f.<locals>.g�s���r)r�rKr")rgs rrz7TestTranforms.test_make_function_doesnt_bail.<locals>.f�s��
�
�
�
��Hr�	BINARY_OP)rTrHr�s  r�test_make_function_doesnt_bailz,TestTranforms.test_make_function_doesnt_bail�sC��	�	�	�	
� � ��K�0�0�0����!�����rc��gd�}|D]�}|�|���5t|dd��}tj|��D]�}|�|j�d����|�|j�d����|�|j�d������|�|��ddd��n#1swxYwY��dS)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})�er\r]r�r��BUILD_)r^r_rrr�rr�rH)r0�exprsr�r1rs     r�test_constant_foldingz#TestTranforms.test_constant_folding�sH��

�

�

���	(�	(�A������"�"�
(�
(��q�"�h�/�/�� �1�$�7�7�H�H�E��$�$�U�\�%<�%<�X�%F�%F�G�G�G��$�$�U�\�%<�%<�Y�%G�%G�H�H�H��$�$�U�\�%<�%<�X�%F�%F�G�G�G�G��!�!�$�'�'�'�

(�
(�
(�
(�
(�
(�
(�
(�
(�
(�
(����
(�
(�
(�
(��	(�	(s�CC0�0C4	�7C4	c�~�d�}|�t|d��d��|�|��dS)Nc�,�tttfvSre)rMr�r�r"rr�containtestz7TestTranforms.test_in_literal_list.<locals>.containtest�s����A��;�rr�r�r�rrH)r0r�s  r�test_in_literal_listz"TestTranforms.test_in_literal_list�sL��	�	�	����0��l�K�K�Q�O�O�O����+�&�&�&�&�&rc�~�d�}|�t|d��d��|�|��dS)Nc�(�ttfD]}�dSre�r�r�rLs r�forloopz8TestTranforms.test_iterate_literal_list.<locals>.forloop�s"����V�
�
���
�
rr�rr�)r0r�s  r�test_iterate_literal_listz'TestTranforms.test_iterate_literal_list�sN��	�	�	�	
���0��,�G�G��K�K�K����'�"�"�"�"�"rc�r�d�}|�|��d��|�|��dS)Nc��	dS)NTFrr"r"rrrz=TestTranforms.test_condition_with_binop_with_bools.<locals>.f����
��qrr)r�rHr�s  r�$test_condition_with_binop_with_boolsz2TestTranforms.test_condition_with_binop_with_bools�sI��	�	�	�	
�������a� � � ����!�����rc�r�d�}|�|d����|�|��dS)Nc��|rnndSdS)NTFr"rLs rrz3TestTranforms.test_if_with_if_expression.<locals>.f�s���
�
�
��t��5rT)r�rHr�s  r�test_if_with_if_expressionz(TestTranforms.test_if_with_if_expression�sG��	�	�	�	
�����$��� � � ����!�����rc�6�d�}|�|��dS)Nc��	dS)Nrr~r"rLs rrz+TestTranforms.test_trailing_nops.<locals>.f�r�r)rHr�s  r�test_trailing_nopsz TestTranforms.test_trailing_nops�s-��	�	�	�	
���!�����rc�>�d�}|�t|d��d��d�}|�t|d��d��d�}|�t|d��d��d�}|�t|d��d��dS)Nc�$�d�tD��S)Nc�0�g|]}t|��}|��Sr"�r�r%rM�ys   rr�z[TestTranforms.test_assignment_idiom_in_comprehensions.<locals>.listcomp.<locals>.<listcomp>�"��1�1�1�!�1�Q�4�4�Q�A�1�1�1rr�r"rr�listcompzGTestTranforms.test_assignment_idiom_in_comprehensions.<locals>.listcomp���1�1�q�1�1�1�1r�FOR_ITERrc�$�d�tD��S)Nc�0�h|]}t|��}|��Sr"r	r
s   r�	<setcomp>zYTestTranforms.test_assignment_idiom_in_comprehensions.<locals>.setcomp.<locals>.<setcomp>rrr�r"rr�setcompzFTestTranforms.test_assignment_idiom_in_comprehensions.<locals>.setcomprrc�$�d�tD��S)Nc�2�i|]}t|��}||��Sr"r	r
s   rr&z[TestTranforms.test_assignment_idiom_in_comprehensions.<locals>.dictcomp.<locals>.<dictcomp>s$��4�4�4�Q�a��d�d��A�q�4�4�4rr�r"rr�dictcompzGTestTranforms.test_assignment_idiom_in_comprehensions.<locals>.dictcomps��4�4�!�4�4�4�4rc�$�d�tD��S)Nc3�8K�|]}t|��}|V��dSrer	r
s   rr;zYTestTranforms.test_assignment_idiom_in_comprehensions.<locals>.genexpr.<locals>.<genexpr>s,����1�1�!�1�Q�4�4�Q�A�1�1�1�1�1�1rr�r"rr�genexprzFTestTranforms.test_assignment_idiom_in_comprehensions.<locals>.genexpr
rr)r�r)r0r
rrrs     r�'test_assignment_idiom_in_comprehensionsz5TestTranforms.test_assignment_idiom_in_comprehensionss���	2�	2�	2����0��:�F�F��J�J�J�	2�	2�	2����0��*�E�E�q�I�I�I�	5�	5�	5����0��:�F�F��J�J�J�	2�	2�	2����0��*�E�E�q�I�I�I�I�Irc��d}gtdd���tdd���tdd���ttd��td��fd	���}gtd
d���d�d
�}|D]�\}}|D]�\}}tt|��dz��D]�}t	||��D]�}	dd�|	��z|z|z|z}
|�|
|���5|
|z}t|
�d�d|i��}|�||d|
����ddd��n#1swxYwY��������dS)Nz-+ #0)r\�1234uабвг�sra)��i.����duioxX)��|��EJ�@g�|��EJ���	duifegFEG�inf�fegFEG)r\�1�30)r\�.z.0z.2)r\�.40)r%r'r�%r\)�fmt�valuez % (x,)rMzfmt = )	r�floatr�rDr�joinr^�evalr�)
r0�flags�	testcases�width_precsr*�suffix�width�prec�r�specr)�s1�s2s
             r�test_format_combinationsz&TestTranforms.test_format_combinationss����
�
�-�u�
5�
5�
�
�]�H�
-�
-�
��2�K�
@�
@�
��e�E�l�l�U�5�\�\�M�2�H�
=�
=�	
�	�
�
�_�&;�
<�
<�
��
�
�
��
'�	B�	B�M�E�6�*�
B�
B���t��s�5�z�z�A�~�.�.�B�B�A� ,�U�A� 6� 6�B�B��!�B�G�G�D�M�M�1�E�9�D�@�6�I��!�\�\�c��\�?�?�B�B�!$�u��B�!%��&7�&7�&7�#�u��!F�!F�B� �,�,�R��[��[�[�A�A�A�B�B�B�B�B�B�B�B�B�B�B����B�B�B�B��B�B�
B�	B�	Bs�15D2�2D6�9D6c���d�}|�|d��d��|�|dd��d��|�|dd��d��|�|dd��d��|�|d	d��d
��|�|dd��d��|�|d	d��d
��|�|dd��d��|�|dd��d��|�|dd��d��|�|ddd��d��dS)Nc	�(�d�tt|����D��}t|��dkrd|dzdz}ndd�|��zdz}t|�d|��t	t||������S)	Nc��g|]
}d|dz����S)rMrr")r%�is  rr�zBTestTranforms.test_format_misc.<locals>.format.<locals>.<listcomp>'s"��:�:�:�!�I��!��I�I�:�:�:rr�(rz,)z, �)z % )r�rDr,r-�dict�zip)r)�values�vars�argss    r�formatz.TestTranforms.test_format_misc.<locals>.format&s���:�:�u�S��[�[�'9�'9�:�:�:�D��4�y�y�A�~�~��T�!�W�}�t�+����T�Y�Y�t�_�_�,�s�2���3�+�+�T�+�+�T�#�d�F�2C�2C�-D�-D�E�E�Er�stringzx = %s!rz	x = 1234!zx = %d!zx = %x!zx = 4d2!zx = %f!zx = 1234.000000!r zx = 1234.5678901!zx = 1234.567890!z
x = %s%% %%%%zx = 1234% %%z%% %sz
x = %% %s!zx = %s, y = %dr��"zx = 12, y = 34)r�)r0rDs  r�test_format_misczTestTranforms.test_format_misc%s���	F�	F�	F�	
������)�)�8�4�4�4������	�4�0�0�+�>�>�>������	�4�0�0�+�>�>�>������	�4�0�0�*�=�=�=������	�4�0�0�2D�E�E�E������	�<�8�8�:M�N�N�N������	�<�8�8�:L�M�M�M������	�<�8�8�+�F�F�F��������6�6��G�G�G������	�7�3�3�\�B�B�B������ 0�"�b�9�9�;K�L�L�L�L�Lrc��|�td��5td��ddd��n#1swxYwY|�td��5tdddd���ddd��n#1swxYwY|�td��5td	d
di��ddd��n#1swxYwY|�td��5tdd
di��ddd��n#1swxYwY|�td��5td
d
di��ddd��n#1swxYwY|�td��5tdd
di��ddd��n#1swxYwY|�td��5tdd
di��ddd��n#1swxYwY|�td��5tdd
di��ddd��n#1swxYwY|�td��5tdd
di��ddd��n#1swxYwY|�td��5tdd
di��ddd��n#1swxYwY|�td��5tddgd���ddd��n#1swxYwY|�td��5tddddgd���ddd��dS#1swxYwYdS)Nz&not enough arguments for format stringz	'%s' % ()z4not all arguments converted during string formattingz
'%s' % (x, y)rrK�rMrzincomplete formatz'%s%' % (x,)rMrz'%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)r~)�assertRaisesRegex�	TypeErrorr-�
ValueError�r0s r�test_format_errorsz TestTranforms.test_format_errors:s?��
�
#�
#�I�<�>�>�	�	������	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��
#�
#�I�J�L�L�	4�	4�����"2�"2�3�3�3�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4����	4�	4�	4�	4��
#�
#�J�0C�
D�
D�	.�	.���#�t��-�-�-�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.����	.�	.�	.�	.�
�
#�
#�J�0C�
D�
D�	0�	0��!�C��;�/�/�/�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0����	0�	0�	0�	0�
�
#�
#�I�<�>�>�	/�	/���3��+�.�.�.�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/����	/�	/�	/�	/��
#�
#�J�0N�
O�
O�	1�	1��"�S�$�K�0�0�0�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1����	1�	1�	1�	1�
�
#�
#�I�/S�
T�
T�	/�	/����f�
�.�.�.�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/����	/�	/�	/�	/�
�
#�
#�I�/R�
S�
S�	0�	0����g��/�/�/�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0����	0�	0�	0�	0�
�
#�
#�I�/P�
Q�
Q�	/�	/����f�
�.�.�.�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/����	/�	/�	/�	/�
�
#�
#�I�/M�
N�
N�	/�	/����f�
�.�.�.�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/����	/�	/�	/�	/�
�
#�
#�I�<�>�>�	:�	:��%�Q�R�'8�'8�9�9�9�	:�	:�	:�	:�	:�	:�	:�	:�	:�	:�	:����	:�	:�	:�	:��
#�
#�I�J�L�L�	>�	>��%�Q�a��V�'<�'<�=�=�=�	>�	>�	>�	>�	>�	>�	>�	>�	>�	>�	>�	>����	>�	>�	>�	>�	>�	>s��8�<�<�A>�>B�B�$C�C�
C�)D�D�D�.E
�
E�E�3F�F�F�8G�G�G�=H�H �#H �I!�!I%�(I%�J&�&J*�-J*�K,�,K0�3K0�L5�5L9�<L9c�8�d�}|�|d��dS)Nc��||}}||}}dSrer"r�s  rrz5TestTranforms.test_static_swaps_unpack_two.<locals>.fZs���a�q�A��a�q�A�A�Arrv�rTr�s  r�test_static_swaps_unpack_twoz*TestTranforms.test_static_swaps_unpack_twoYs/��	�	�	�	
� � ��F�+�+�+�+�+rc�8�d�}|�|d��dS)Nc�N�|||}}}|||}}}|||}}}|||}}}|||}}}|||}}}dSrer"rs   rrz7TestTranforms.test_static_swaps_unpack_three.<locals>.f`sT����A�!�q�A���A�!�q�A���A�!�q�A���A�!�q�A���A�!�q�A���A�!�q�A�A�ArrvrQr�s  r�test_static_swaps_unpack_threez,TestTranforms.test_static_swaps_unpack_three_s/��	�	�	�	
� � ��F�+�+�+�+�+rc���tddd��D]d\}}}d|�d|�d|�d�}|�|��5t|��}|�|d��ddd��n#1swxYwY�edS)	N�_a�_b�_cz{'a': z, 'b': z, 'c': �}rv)rr^rrT)r0r�r�rrr1s      r�test_static_swaps_match_mappingz-TestTranforms.test_static_swaps_match_mappingis����t�T�4�0�0�	7�	7�G�A�q�!�9��9�9�!�9�9�A�9�9�9�G����g�&�&�
7�
7�7��@�@���(�(��v�6�6�6�
7�
7�
7�
7�
7�
7�
7�
7�
7�
7�
7����
7�
7�
7�
7��	7�	7s�&A+�+A/	�2A/	c��gd�}tddd��D]t\}}}|D]k}|�|||��}|�|��5t|��}|�|d��ddd��n#1swxYwY�l�udS)N)z
C({}, {}, {})zC({}, {}, c={})zC({}, b={}, c={})zC(a={}, b={}, c={})rWrXrYrv)rrDr^rrT)r0�formsr�r�r�formrr1s        r�test_static_swaps_match_classz+TestTranforms.test_static_swaps_match_classps���
�
�
���t�T�4�0�0�	;�	;�G�A�q�!��
;�
;���+�+�a��A�.�.���\�\�'�*�*�;�;�;�G�D�D�D��,�,�T�6�:�:�:�;�;�;�;�;�;�;�;�;�;�;����;�;�;�;��
;�	;�	;s�&A>�>B�Bc�X�hd�}gd�}tddd��D]�\}}}|D]�}|�|||��}|�|��5t|��}||vr|�|d��n|�|d��ddd��n#1swxYwY����dS)N>�*_, b, c�a, *_, c�a, b, *_)z
{}, {}, {}z{}, {}, *{}z{}, *{}, {}z*{}, {}, {}rWrXrYrv)rrDr^rrUrT)	r0�swapsr]r�r�rr^rr1s	         r� test_static_swaps_match_sequencez.TestTranforms.test_static_swaps_match_sequence~s��4�4�4��K�K�K���t�T�4�0�0�
	?�
	?�G�A�q�!��	
?�	
?���+�+�a��A�.�.���\�\�'�*�*�?�?�;�G�D�D�D��%�'�'��-�-�d�F�;�;�;�;��0�0��v�>�>�>�?�?�?�?�?�?�?�?�?�?�?����?�?�?�?��	
?�
	?�
	?s�AB�B!�$B!N)(�__name__�
__module__�__qualname__r5rHrVrbrortr{r�r�r�r�r�r�r��unittest�skipr�r�r�r�r�r�r�r�r�r�rrrr8rGrNrRrUr[r_rer"rrrr$sS������D�D�D�*	9�	9�	9�	 �	 �	 �
(�
(�
(����6
�
�
�(�(�(�'"�'"�'"�R(�(�(����>+ �+ �+ �Z � � �.!(�!(�!(�F����X�]�9�:�:���:�:�����	�	�	�!=�!=�!=�F���$���(�(�(�,'�'�'�#�#�#�������
�
�
�J�J�J�B�B�B�.M�M�M�*>�>�>�>,�,�,�,�,�,�7�7�7�;�;�;�
?�
?�
?�
?�
?rrc�&�eZdZd�Zd�Zd�Zd�ZdS)�TestBugletsc��d�}|�t��5|��ddd��dS#1swxYwYdS)Nc��ddh\}}||fS)Nrr"rIs  rrz%TestBuglets.test_bug_11510.<locals>.f�s���q�6�D�A�q��a�4�Kr)�assertRaisesrLr�s  r�test_bug_11510zTestBuglets.test_bug_11510�s���	�	�	��
�
�z�
*�
*�	�	�
�A�C�C�C�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�6�:�:c�f�td��D] }	t�#tpt$rY�wxYwdS)Nr�)r��	Exception)r0r<s  r�test_bpo_42057zTestBuglets.test_bpo_42057�sP���r���	�	�A�
�����)�	�
�
�
���
����	�	s��.�.c�(�tddd��dS)Nzwhile True or spam: pass�<test>r
�r_rMs r�test_bpo_45773_pop_jump_if_truez+TestBuglets.test_bpo_45773_pop_jump_if_true�s���*�H�f�=�=�=�=�=rc�(�tddd��dS)Nzwhile True or not spam: passrur
rvrMs r� test_bpo_45773_pop_jump_if_falsez,TestBuglets.test_bpo_45773_pop_jump_if_false�s���.��&�A�A�A�A�ArN)rfrgrhrprsrwryr"rrrlrl�sU������������>�>�>�B�B�B�B�Brrl�__main__)r�	itertoolsrrrri�test.support.bytecode_helperrrrr�TestCaserlrf�mainr"rr�<module>rs���
�
�
�
�+�+�+�+�+�+�+�+���������9�9�9�9�9�9�#�#�#�
�
�
�g	?�g	?�g	?�g	?�g	?�$�g	?�g	?�g	?�TB�B�B�B�B�(�#�B�B�B�4�z����H�M�O�O�O�O�O��r