HEX
Server: Apache
System: Linux zacp120.webway.host 4.18.0-553.50.1.lve.el8.x86_64 #1 SMP Thu Apr 17 19:10:24 UTC 2025 x86_64
User: govancoz (1003)
PHP: 8.3.26
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: //usr/local/lib/python3.10/test/__pycache__/test_peepholer.cpython-310.opt-2.pyc
o

�iO�@s^ddlZddlZddlmZdd�ZGdd�de�ZGdd�dej�Zed	kr-e�	�dSdS)
�N)�BytecodeTestCasecCs^d}t�|�D]}|j|kr|d7}qt|d�r|j}|jD]}t|d�r,|t||�7}q|S)Nr��__code__�co_code)�dis�get_instructions�opname�hasattrr�	co_consts�count_instr_recursively)�fr�count�instr�c�r�0/usr/local/lib/python3.10/test/test_peepholer.pyrs
�


�rc@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�Zd5d6�Zd7S)8�
TestTranformsc
Cs�tt�|��}dd�|D�}|D]b}d|jvrq||j}|jdvr6|�|j�d|j�d|j�d|j���|jdvrT|jdkrT|�|j�d|j�d|j�d|j���d|jvrrd	|jvrr|�|j�d|j�d|j�d|j���qdS)
NcSsi|]}|j|�qSr)�offset��.0rrrr�
<dictcomp>sz4TestTranforms.check_jump_targets.<locals>.<dictcomp>ZJUMP_)�
JUMP_ABSOLUTE�JUMP_FORWARDz at z
 jumps to �RETURN_VALUEZ_OR_POPZJUMP_IF_)�listrrrZargvalZfailr)�self�codeZinstructions�targetsrZtgtrrr�check_jump_targetss6


��

������z TestTranforms.check_jump_targetscCs`	t�|�}tt�|��}tdd�|D��}tdd�|D��}|�|d�|�|t|j	��dS)Ncs��|]}|dVqdS�rNr�r�trrr�	<genexpr>1��z-TestTranforms.check_lnotab.<locals>.<genexpr>csrr rr!rrrr#2r$r)
rZ_get_code_objectrZfindlinestarts�min�maxZassertGreaterEqualZ
assertLess�lenr)rrZlnotabZmin_bytecodeZmax_bytecoderrr�check_lnotab+s
zTestTranforms.check_lnotabcCs:dd�}|�|d�|�|d�|�|d�|�|�dS)NcSs|dks~dSdS)N�r��xrrr�unot;s�z%TestTranforms.test_unot.<locals>.unotZ	UNARY_NOT�POP_JUMP_IF_FALSE�POP_JUMP_IF_TRUE��assertNotInBytecode�assertInBytecoder()rr,rrr�	test_unot9s
zTestTranforms.test_unotcCs8dD]\}}}t|dd�}|�|||�|�|�qdS)N))z
not a is b�IS_OPr)znot a is not br3r)z
not a in b�CONTAINS_OPr)znot a not in br4r��single)�compiler1r()r�lineZcmp_op�invertrrrr�test_elim_inversion_of_is_or_inCs
�z-TestTranforms.test_elim_inversion_of_is_or_incCs�dd�}dd�}dd�}|df|df|dffD]\}}|�|d	�|�|d
|�|�|�qdd�}|�|d	�|�|d
d�|�|�dS)NcSsd}d}|S�Nrr*rrrrPsz0TestTranforms.test_global_as_constant.<locals>.fcS�d}|S)NTrr*rrr�gT�z0TestTranforms.test_global_as_constant.<locals>.gcSr<)NFrr*rrr�hWr>z0TestTranforms.test_global_as_constant.<locals>.hTFZLOAD_GLOBAL�
LOAD_CONSTcSs	dSr;rrrrrr`�r/)rrr=r?�func�elemrrr�test_global_as_constantNsz%TestTranforms.test_global_as_constantcCsBdd�}dD]}|�||�qdD]}|�||�q|�|�dS)NcSs		qr;)rrrrrrjs�z'TestTranforms.test_while_one.<locals>.f)r@r-)rr/)rrrCrrr�test_while_onehszTestTranforms.test_while_onecCsLdD]!\}}t|dd�}|�||�|�|d�|�|d�|�|�qdS)N))za, = a,r@)za, b = a, bZROT_TWO)za, b, c = a, b, cZ	ROT_THREEr5r6�BUILD_TUPLEZUNPACK_TUPLE�r7r1r0r(�rr8rCrrrr�test_pack_unpackts�zTestTranforms.test_pack_unpackcCs�dD]\}}t|dd�}|�|d|�|�|d�|�|�qttttd���dd�}|�|d�dd�t�|�D�}|�	t
|�d	�|�|�d
d�}|�|�dS)N))z	a = 1,2,3�rr)�)z
("a","b","c")��a�br)z
a,b,c = 1,2,3rJ)z(None, 1, None)�NrN)z((1, 2), 3, 4)��rr)rK�r5r6r@rF�'cS�g|]	}|jdkr|�qS)r@�rrrrr�
<listcomp>��
�zETestTranforms.test_folding_of_tuples_of_constants.<locals>.<listcomp>r)cSsgd�fdS)N)drrr)rKrR�����	rrr)rKrRrXrYrZr[r\rrr)rKrRrXrYrZr[r\rrr)rKrRrXrYrZr[r\rrr)rKrRrXrYrZr[r\rrr)rKrRrXrYrZr[r\rrr)rKrRrXrYrZr[r\rrr)rKrRrXrYrZr[r\rrr)rKrRrXrYrZr[r\rrr)rKrRrXrYrZr[r\rrrrr�crater��zATestTranforms.test_folding_of_tuples_of_constants.<locals>.crater)r7r1r0r(�repr�tuple�rangerr�assertEqualr')rr8rCrZload_constsr]rrr�#test_folding_of_tuples_of_constants�s

z1TestTranforms.test_folding_of_tuples_of_constantscCsBdD]\}}t|dd�}|�|d|�|�|d�|�|�qdS)N))za in [1,2,3]rJ)za not in ["a","b","c"]rL)za in [None, 1, None]rO)za not in [(1, 2), 3, 4]rPr5r6r@�
BUILD_LISTrGrHrrr�"test_folding_of_lists_of_constants�s�z0TestTranforms.test_folding_of_lists_of_constantscCs�dthd��fdthd��fdtddh�fdthd��fd	thd��ffD]\}}t|d
d�}|�|d�|�|d
|�|�|�q%dd�}dd�}|�|d��|�|d��|�|�|�|d��|�|d��|�|�dS)Nza in {1,2,3}�rr)rKza not in {"a","b","c"}>rMrrNza in {None, 1, None}rza not in {(1, 2), 3, 4}>rQrKrRza in {1, 2, 3, 3, 2, 1}r5r6Z	BUILD_SETr@cSs|dvS�Nrfr�rMrrrr��z:TestTranforms.test_folding_of_sets_of_constants.<locals>.fcSs|dvSrgrrhrrrr=�riz:TestTranforms.test_folding_of_sets_of_constants.<locals>.grKrR)�	frozensetr7r0r1r(�
assertTrue)rr8rCrrr=rrr�!test_folding_of_sets_of_constants�s$�
z/TestTranforms.test_folding_of_sets_of_constantscCs,dD]'\}}t|dd�}|�|d|�t�|�D]}|�|j�d��q|�|�qtddd�}|�|dd�|�|dd�|�|�td	dd�}|�|dd
�|�dd
|j	�|�|�tddd�}|�|dd
�|�dd
>|j	�|�|�tddd�}|�|dd
�|�dd
|j	�|�|�dS)N))z	a = 2+3+4r\)z"@"*4z@@@@)za="abc" + "def"Zabcdef)za = 3**4�Q)za = 3*4�)z	a = 13//4rK)za = 14%4r))za = 2+3rX)za = 13-4r\)za = (12,13)[1]�
)za = 13 << 2�4)za = 13 >> 2rK)z
a = 13 & 7rX)z
a = 13 ^ 7�
)z
a = 13 | 7�r5r6r@�BINARY_za=2+"b"r)rNza="x"*10000rSr+z	a=1<<1000i�rz	a=2**1000)
r7r1rr�assertFalser�
startswithr(ZassertNotInr
)rr8rCrrrrr�#test_folding_of_binops_on_constants�s,


z1TestTranforms.test_folding_of_binops_on_constantscCs�tddd�}|�|dd�|�|d�|�|�tddd�}|�|dd�|�|d�|�|�td	dd�}|�|dd
�|�|d�|�|�tddd�}|�|d�|�|�dS)Nz"foo"[0]r5r6r@rZ
BINARY_SUBSCRu	"a￿"[1]u￿u	"𒍅"[0]u𒍅z	"fuu"[10]rG)rrrrr�test_binary_subscr_on_unicode�s


z+TestTranforms.test_binary_subscr_on_unicodecCs�dD]'\}}t|dd�}|�|d|�t�|�D]}|�|j�d��q|�|�qdd�}t�|�D]}|�|j�d��q3|�|�dD]\}}}t|dd�}|�|d|�|�||�|�|�qFdS)	N))z-0.5g�)z-0.0��)z
-(1.0-1.0)rx)z-0r)z~-2r)z+1rr5r6r@�UNARY_cSsdS)Nrxrrrrr�negzero&�zDTestTranforms.test_folding_of_unaryops_on_constants.<locals>.negzero))z-"abc"�abcZUNARY_NEGATIVE)z~"abc"r|ZUNARY_INVERT)r7r1rrrtrrur()rr8rCrrrzrrrr�%test_folding_of_unaryops_on_constantss 
�z3TestTranforms.test_folding_of_unaryops_on_constantscCsHdd�}|�|dd�dd�t�|�D�}|�t|�d�|�|�dS)NcSs|Sr;rr*rrrr9r{z/TestTranforms.test_elim_extra_return.<locals>.fr@cSrT�rrUrrrrrV<rWz8TestTranforms.test_elim_extra_return.<locals>.<listcomp>r)r0rrrbr'r(�rr�returnsrrr�test_elim_extra_return7s
z$TestTranforms.test_elim_extra_returncCs\dd�}|�|�|�|d�|�|d�dd�t�|�D�}|�t|�d�|�|�dS)NcSs|r|S|Sr;r)�condZ
true_valueZfalse_valuerrrrCs�z1TestTranforms.test_elim_jump_to_return.<locals>.frrcSrTr~rUrrrrrVJrWz:TestTranforms.test_elim_jump_to_return.<locals>.<listcomp>r))rr0rrrbr'r(rrrr�test_elim_jump_to_returnAs
z&TestTranforms.test_elim_jump_to_returncC� dd�}|�|�|�|�dS)NcSs$tr
tstrt�dSdSt�dSr;)rMr�d�fooZbazrrrrrQs�
�
z6TestTranforms.test_elim_jump_to_uncond_jump.<locals>.f�rr(�rrrrr�test_elim_jump_to_uncond_jumpOs
z+TestTranforms.test_elim_jump_to_uncond_jumpcCr�)NcSs|r
tstr	t�}|sdSdSr;)rr�r�rhrrrr^s��z7TestTranforms.test_elim_jump_to_uncond_jump2.<locals>.fr�r�rrr�test_elim_jump_to_uncond_jump2\s
z,TestTranforms.test_elim_jump_to_uncond_jump2cCs�dd�}|�|�|�|�|�t|d�d�dd�}|�|�|�|�|�t|d�d�dd�}|�|�|�|�|�|d�|�|d�|�|d�d	d�}|�|�|�|�|�|d�|�|d�|�|d
�dS)NcSs|o|o|Sr;rrLrrrrj��z7TestTranforms.test_elim_jump_to_uncond_jump3.<locals>.fZJUMP_IF_FALSE_OR_POPr)cSs|p|p|Sr;rrLrrrrqr�ZJUMP_IF_TRUE_OR_POPcSs|r|p|Sr;rrLrrrrxr�r-cSs|s|o|Sr;rrLrrrr�r�r.)rr(rbrr0r1r�rrr�test_elim_jump_to_uncond_jump3gs(







z,TestTranforms.test_elim_jump_to_uncond_jump3cCsRdd�}|�|d�|�|d�dd�t�|�D�}|�t|�d�|�|�dS)NcSs|rdS|rdS	dS)Nrr)rKr)Zcond1Zcond2rrrr�sz5TestTranforms.test_elim_jump_after_return1.<locals>.frrcSrTr~rUrrrrrV�rWz>TestTranforms.test_elim_jump_after_return1.<locals>.<listcomp>rY)r0rrZassertLessEqualr'r(rrrr�test_elim_jump_after_return1�s	z*TestTranforms.test_elim_jump_after_return1cCs"dd�}|�|d�|�|�dS)NcSsddd�}|S)N�returnr)cSsdSr;rrrrrr=�r{zBTestTranforms.test_make_function_doesnt_bail.<locals>.f.<locals>.g)r�r)r)r=rrrr�s
z7TestTranforms.test_make_function_doesnt_bail.<locals>.fZ
BINARY_ADD)r0r(r�rrr�test_make_function_doesnt_bail�sz,TestTranforms.test_make_function_doesnt_bailcCsrgd�}|D]0}t|dd�}t�|�D]}|�|j�d��|�|j�d��|�|j�d��q|�|�qdS)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}r5r6ryrsZBUILD_)r7rrrtrrur()rZexprs�errrrr�test_constant_folding�s�z#TestTranforms.test_constant_foldingcC�(dd�}|�t|d�d�|�|�dS)NcSstttfvSr;)r+rMrNrrrr�containtest�sz7TestTranforms.test_in_literal_list.<locals>.containtestrdr�rbrr()rr�rrr�test_in_literal_list�sz"TestTranforms.test_in_literal_listcCr�)NcSsttfD]}qdSr;)rMrNr*rrr�forloop�s�z8TestTranforms.test_iterate_literal_list.<locals>.forlooprdrr�)rr�rrr�test_iterate_literal_list�sz'TestTranforms.test_iterate_literal_listcCs$dd�}|�|�d�|�|�dS)NcSs	dS)NTFrrrrrrr�rAz=TestTranforms.test_condition_with_binop_with_bools.<locals>.fr)rbr(r�rrr�$test_condition_with_binop_with_bools�sz2TestTranforms.test_condition_with_binop_with_boolscCs$dd�}|�|d��|�|�dS)NcSs|rdS	dS)NTFrr*rrrr�s�z3TestTranforms.test_if_with_if_expression.<locals>.fT)rkr(r�rrr�test_if_with_if_expression�sz(TestTranforms.test_if_with_if_expressioncCsdd�}|�|�dS)NcSs	dS)NrrKrr*rrrr�rAz+TestTranforms.test_trailing_nops.<locals>.f)r(r�rrr�test_trailing_nops�sz TestTranforms.test_trailing_nopscCsldd�}|�t|d�d�dd�}|�t|d�d�dd�}|�t|d�d�d	d
�}|�t|d�d�dS)NcS�dd�tD�S)NcSsg|]}t|�}|�qSr�r�rr+�yrrrrV��z[TestTranforms.test_assignment_idiom_in_comprehensions.<locals>.listcomp.<locals>.<listcomp>rhrrrr�listcomp��zGTestTranforms.test_assignment_idiom_in_comprehensions.<locals>.listcompZFOR_ITERrcSr�)NcSsh|]}t|�}|�qSrr�r�rrr�	<setcomp>�r�zYTestTranforms.test_assignment_idiom_in_comprehensions.<locals>.setcomp.<locals>.<setcomp>rhrrrr�setcomp�r�zFTestTranforms.test_assignment_idiom_in_comprehensions.<locals>.setcompcSr�)NcSsi|]	}t|�}||�qSrr�r�rrrr�sz[TestTranforms.test_assignment_idiom_in_comprehensions.<locals>.dictcomp.<locals>.<dictcomp>rhrrrr�dictcomp�r�zGTestTranforms.test_assignment_idiom_in_comprehensions.<locals>.dictcompcSr�)Ncss�|]	}t|�}|VqdSr;r�r�rrrr#�s�zYTestTranforms.test_assignment_idiom_in_comprehensions.<locals>.genexpr.<locals>.<genexpr>rhrrrr�genexpr�r�zFTestTranforms.test_assignment_idiom_in_comprehensions.<locals>.genexpr)rbr)rr�r�r�r�rrr�'test_assignment_idiom_in_comprehensions�sz5TestTranforms.test_assignment_idiom_in_comprehensionsN)�__name__�
__module__�__qualname__rr(r2r:rDrErIrcrerlrvrwr}r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrs8
(
,!

#	rc@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�TestBugletscCs>dd�}|�t��|�Wd�dS1swYdS)NcSsddh\}}||fS)Nrr)r+r�rrrr�sz%TestBuglets.test_bug_11510.<locals>.f)ZassertRaises�
ValueErrorr�rrr�test_bug_11510�s"�zTestBuglets.test_bug_11510c	Cs,td�D]}zt�tp
tyYqwdS)Nrq)ra�	Exception)r�irrr�test_bpo_42057�s��zTestBuglets.test_bpo_42057cC�tddd�dS)Nzwhile True or spam: pass�<test>�exec�r7�rrrr�test_bpo_45773_pop_jump_if_truer^z+TestBuglets.test_bpo_45773_pop_jump_if_truecCr�)Nzwhile True or not spam: passr�r�r�r�rrr� test_bpo_45773_pop_jump_if_falser^z,TestBuglets.test_bpo_45773_pop_jump_if_falseN)r�r�r�r�r�r�r�rrrrr��s

r��__main__)
rZunittestZtest.support.bytecode_helperrrrZTestCaser�r��mainrrrr�<module>s
a�