python (3.12.0)

(root)/
lib/
python3.12/
test/
__pycache__/
test_peepholer.cpython-312.opt-1.pyc

ΑeddlZddlmZmZddlZddlZddlZddlmZddl	m
Z
mZdZdZ
Gdde
ZGd	d
ejZGdde
ZGd
deZedk(rej(yy)N)combinationsproduct)support)BytecodeTestCaseCfgOptimizationTestCasecntjd|d}i}t|||djS)Nz=
        def f(x):
            match x:
                case z#:
                    pass
        f)textwrapdedentexec__code__)patternsource	namespaces   G/BuggyBox/python/3.12.0/bootstrap/lib/python3.12/test/test_peepholer.py compile_pattern_with_fast_localsrsG
__
Y		FIS>"""cd}tj|D]}|j|k(s|dz
}t|dr|j}|j
D]}t|ds|t
||z
} |S)Nrr
co_code)disget_instructionsopnamehasattrr
	co_constscount_instr_recursively)r	rcountinstrcs     rrrs
E%%a(<<6!QJEq*
JJ
[[81i ,Q77E8LrceZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZej@ddZ!dZ"d Z#d!Z$d"Z%d#Z&d$Z'd%Z(y&)'
TestTranformsc
2ttj|}|Dcic]}|j|}}|D]}d|jvr||j
}|jdvrD|j
|jd|jd|jd|j|jdvs|jdk(s|j
|jd|jd|jd|jycc}w)NJUMP_)
JUMP_BACKWARDJUMP_FORWARDz at z
 jumps to RETURN_VALUE)listrroffsetrargvalfail)selfcodeinstructionsrtargetstgts      rcheck_jump_targetsz TestTranforms.check_jump_targets(s	C00674@A55<<&AA!	DEell*%,,'Czz>>		U\\N$u||n=&&)jj\cjj\CD AA

n,		U\\N$u||n=&&)jj\cjj\CD	DBsDc tj|}ttj|}t	d|D}td|D}|j
|d|j|t|jy)z0Check that the lnotab byte offsets are sensible.c3&K|]	}|dywrN.0ts  r	<genexpr>z-TestTranforms.check_lnotab.<locals>.<genexpr>?0A1Q40c3&K|]	}|dywr3r4r5s  rr8z-TestTranforms.check_lnotab.<locals>.<genexpr>@r9r:rN)
r_get_code_objectr'findlinestartsminmaxassertGreaterEqual
assertLesslenr)r+r,lnotabmin_bytecodemax_bytecodes     rcheck_lnotabzTestTranforms.check_lnotab9sp##D)c((./000000a0c$,,&78rcd}|j|d|j|d|j|d|j|y)Nc|dk(s~yy)Nr4xs runotz%TestTranforms.test_unot.<locals>.unotIs6r	UNARY_NOTPOP_JUMP_IF_FALSEPOP_JUMP_IF_TRUEassertNotInBytecodeassertInBytecoderF)r+rLs  r	test_unotzTestTranforms.test_unotGsI		
  {3  ':;d$67$rcdD]R\}}}|j|5t|dd}|j||||j|dddTy#1swY_xYw)N))z
not a is bIS_OPr)znot a is not brUr)z
not a in bCONTAINS_OPr)znot a not in brVrlinesingle)subTestcompilerRrF)r+rXcmp_opinvertr,s     rtest_elim_inversion_of_is_or_inz-TestTranforms.test_elim_inversion_of_is_or_inQsr%		( D&&4(
(tR2%%dFF;!!$'
(
(
		(
(
(s2AA"	chd}d}d}|df|df|dffD]V\}}|j|5|j|d|j|d||j|dddXd	}|j|d|j|d
d|j|y#1swYxYw)Ncd}d}|SNr4rJs rr	z0TestTranforms.test_global_as_constant.<locals>.f_sAAHrc
d}|S)NTr4rJs rgz0TestTranforms.test_global_as_constant.<locals>.gcsAHrc
d}|S)NFr4rJs rhz0TestTranforms.test_global_as_constant.<locals>.hfsAHrTF)funcLOAD_GLOBAL
LOAD_CONSTcy)z1Adding a docstring made this test fail in Py2.5.0Nr4r4rrr	z0TestTranforms.test_global_as_constant.<locals>.fpsrRETURN_CONST)r[rQrRrF)r+r	rdrfrgelems      rtest_global_as_constantz%TestTranforms.test_global_as_constant]s			t9q$i!U<	(JD$4(
(((}=%%dL$?!!$'
(
(	(		
  M2a6!
(
(s7B((B1	cd}dD]}|j||dD]}|j|||j|y)Nc		rb)r'r4rrr	z'TestTranforms.test_while_one.<locals>.fzs
r)rirN)r$rP)r+r	rls   rtest_while_onezTestTranforms.test_while_onexsU	8	.D$$Q-	.&	+D!!!T*	+!rcdD]t\}}|j|5t|dd}|j|||j|d|j|d|j	|dddvy#1swYxYw)N))za, = a,rk)za, b = a, bSWAP)za, b, c = a, b, crrrWrYrZBUILD_TUPLEUNPACK_SEQUENCEr[r\rRrQrFr+rXrlr,s    rtest_pack_unpackzTestTranforms.test_pack_unpacks
	(JD$
4(
(tBx0%%dD1((}=((/@A!!$'
(
(
	(

(
(sAA;;B	c	NdD]c\}}|j|5t|dd}|j|d||j|d|j	|dddettt
tddd}|j|dtj|Dcgc]}|jdk(r|}}|jt|d|j	|d	}|j	|y#1swYxYwcc}w)
N))z	a = 1,2,3rrI)z
("a","b","c")abr)z
a,b,c = 1,2,3ry)z(None, 1, None)NrN)z((1, 2), 3, 4)rrIrzrWrYrZrirs'rcgdfy)N)drrrIrzr	rrrIrzrrrrrrrrrIrzrrrrrrrrrIrzrrrrrrrrrIrzrrrrrrrrrIrzrrrrrrrrrIrzrrrrrrrrrIrzrrrrrrrrrIrzrrrrrrrrrIrzrrrrrrr4r4rrcraterzATestTranforms.test_folding_of_tuples_of_constants.<locals>.craters
r)
r[r\rRrQrFreprtuplerangerrrassertEqualrB)r+rXrlr,rload_constsrs       r#test_folding_of_tuples_of_constantsz1TestTranforms.test_folding_of_tuples_of_constantss	(JD$4(
(tBx0%%dL$?((}=!!$'	
(
(	(tE%,/0H=  }5*-*>*>t*D?!&!=??[)1-$
		
&!?
(
(?sAD:D"D	cdD]c\}}|j|5t|dd}|j|d||j|d|j	|dddey#1swYpxYw)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_constantss	(JD$4(
(tR2%%dL$?((|<!!$'	
(
(	(
(
(sAA**A3	c	dthdfdthdfdtddhfdthdfd	thdffD]c\}}|j|
5t|dd}|j|d
|j	|d||j|ddded}d}|j
|d|j
|d|j||j
|d|j
|d|j|y#1swYxYw)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}>rrzrza in {1, 2, 3, 3, 2, 1}rWrYrZ	BUILD_SETric
|dvSNrr4r|s rr	z:TestTranforms.test_folding_of_sets_of_constants.<locals>.fs	>!rc
|dvSrr4rs rrdz:TestTranforms.test_folding_of_sets_of_constants.<locals>.gs
I%%rrzr)	frozensetr[r\rQrRrF
assertTrue)r+rXrlr,r	rds      r!test_folding_of_sets_of_constantsz/TestTranforms.test_folding_of_sets_of_constantss2Yy12
%y'AB
#Y4y%9:
&	.(AB
&	)(<=
	(JD$4(
(tR2(({;%%dL$?!!$'	
(
(	(	"	&	
!AaD!!AaD!!!'
(
(s
!AD66D?	cdD]\}}|j|5t|dd}|j|d|tj|D],}|j|jjd.|j|dddtddd}|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#1swYxYw)N))z	a = 2+3+4r)z"@"*4z@@@@)za="abc" + "def"abcdef)za = 3**4Q)za = 3*4)z	a = 13//4rz)za = 14%4rI)za = 2+3r)za = 13-4r)za = (12,13)[1]
)za = 13 << 24)za = 13 >> 2rz)z
a = 13 & 7r)z
a = 13 ^ 7
)z
a = 13 | 7rWrYrZriBINARY_za=2+"b"rIr}za="x"*10000rrKz	a=1<<1000irz	a=2**1000)r[r\rRrrassertFalser
startswithrFassertNotInr)r+rXrlr,rs     r#test_folding_of_binops_on_constantsz1TestTranforms.test_folding_of_binops_on_constantss	(JD$"4(
(tR2%%dL$? 11$7IE$$U\\%<%<Y%GHI!!$'
(
(#	(2y"h/dL!4dL#6$}b(3dL%8UDNN3${B1dL$7D$..1${B1dL$7D$..1$3
(
(sA6GG	ctddd}|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  rtest_binary_subscr_on_unicodez+TestTranforms.test_binary_subscr_on_unicodesz2x0dL#6  7$*B9dL(;  o6$("h7dL,?  7${B1dO4$rcdD]\}}|j|5t|dd}|j|d|tj|D],}|j|jjd.|j|dddd}tj|D],}|j|jjd.|j|dD]d\}}}|j|5t|dd}|j|d||j|||j|dddfy#1swYdxYw#1swY~xYw)	N))z-0.5g)z-0.0)z
-(1.0-1.0)r)z-0r)z~-2r)z+1rrWrYrZriUNARY_cy)Nrr4r4rrnegzerozDTestTranforms.test_folding_of_unaryops_on_constants.<locals>.negzero<sr))z-"abc"abcUNARY_NEGATIVE)z~"abc"rUNARY_INVERT)	r[r\rRrrrrrrF)r+rXrlr,rrrs       r%test_folding_of_unaryops_on_constantsz3TestTranforms.test_folding_of_unaryops_on_constants+sv

	(JD$4(
(tR2%%dL$? 11$7HE$$U\\%<%<X%FGH!!$'
(
(
	( 	))'2	@EU\\44X>?	@'"#
	(D$4(
(tR2%%dL$?%%dF3!!$'	
(
(		(!
(
((
(
(sA6EAE*E'	*E3	cd}|j|ddtj|Dcgc]}|jdk(r|}}|j	t|d|j
|ycc}w)Nc|Srbr4rJs rr	z/TestTranforms.test_elim_extra_return.<locals>.fPsHrrir&r)rQrrrrrBrFr+r	rreturnss    rtest_elim_extra_returnz$TestTranforms.test_elim_extra_returnNss	  L$7&)&:&:1&==U"\\^;==Wq)!=sA5c8d}|j||j|d|j|dtj|Dcgc]}|jdk(r|}}|jt
|d|j|ycc}w)Nc|r|S|Srbr4)cond
true_valuefalse_values   rr	z1TestTranforms.test_elim_jump_to_return.<locals>.fZs"&J
&$
&rr%r$r&rI)r0rQrrrrrBrFrs    rtest_elim_jump_to_returnz&TestTranforms.test_elim_jump_to_returnXs	&	
"  N3  O4&)&:&:1&==U"\\^;==Wq)!=sBcNd}|j||j|y)NcTtrtstrtyyt	yrb)r|rdfoobazr4rrr	z6TestTranforms.test_elim_jump_to_uncond_jump.<locals>.fhsErr0rFr+r	s  rtest_elim_jump_to_uncond_jumpz+TestTranforms.test_elim_jump_to_uncond_jumpfs%		
"!rcNd}|j||j|y)Nc<rtstr
t}|ryyrb)rrrrs rr	z7TestTranforms.test_elim_jump_to_uncond_jump2.<locals>.fusA	rrrs  rtest_elim_jump_to_uncond_jump2z,TestTranforms.test_elim_jump_to_uncond_jump2ss%		
"!rc|d}|j||j||jt|ddd}|j||j||jt|ddd}|j||j||jt|dd|jt|ddd}|j||j||jt|dd|jt|ddy)	Nc|xr|xr|Srbr4r{s   rr	z7TestTranforms.test_elim_jump_to_uncond_jump3.<locals>.fsW1
rrNrIc|xs|xs|Srbr4r{s   rr	z7TestTranforms.test_elim_jump_to_uncond_jump3.<locals>.fsV!
rrOc|xr|xs|Srbr4r{s   rr	z7TestTranforms.test_elim_jump_to_uncond_jump3.<locals>.fsW1
rrc|xs|xr|Srbr4r{s   rr	z7TestTranforms.test_elim_jump_to_uncond_jump3.<locals>.fsV!
r)r0rFrrrs  rtest_elim_jump_to_uncond_jump3z,TestTranforms.test_elim_jump_to_uncond_jump3~s$		
"!04GH!L		
"!04FGK		
"!04GH!L04FGK		
"!04GH!L04FGKrc,d}|j|y)NcFtdD]}|dkDs	t|y)Nrrz)rprint)is rr	z7TestTranforms.test_elim_jump_to_uncond_jump4.<locals>.fs#1X
q5!H
r)r0rs  rtest_elim_jump_to_uncond_jump4z,TestTranforms.test_elim_jump_to_uncond_jump4s		
"rcd}|j|d|j|dtj|Dcgc]}|jdk(r|}}|j	t|d|j
|ycc}w)Nc|ry|ry	y)NrrIrzr4)cond1cond2s  rr	z5TestTranforms.test_elim_jump_after_return1.<locals>.fsQQrr%r$r&r)rQrrrassertLessEqualrBrFrs    rtest_elim_jump_after_return1z*TestTranforms.test_elim_jump_after_return1s		
  N3  O4&)&:&:1&==U"\\^;==S\1-!=sBcPd}|j|d|j|y)Ncdd}|S)Ncyrbr4r4rrrdzBTestTranforms.test_make_function_doesnt_bail.<locals>.f.<locals>.gsr)returnrIr4)rds rr	z7TestTranforms.test_make_function_doesnt_bail.<locals>.fs
Hr	BINARY_OP)rQrFrs  rtest_make_function_doesnt_bailz,TestTranforms.test_make_function_doesnt_bails'		
  K0!rcgd}|D]}|j|5t|dd}tj|D]}|j	|j
j
d|j	|j
j
d|j	|j
j
d|j|dddy#1swYxYw)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})erYrZrrBUILD_)r[r\rrrrrrF)r+exprsrr,rs     rtest_constant_foldingz#TestTranforms.test_constant_foldings

	(A"
(q"h/ 11$7HE$$U\\%<%<X%FG$$U\\%<%<Y%GH$$U\\%<%<X%FGH!!$'

(
(	(
(
(sB7CC'	cdd}|jt|dd|j|y)Nc&tttfvSrb)rKr|r}r4rrcontaintestz7TestTranforms.test_in_literal_list.<locals>.containtestsA;rrrrrrF)r+rs  rtest_in_literal_listz"TestTranforms.test_in_literal_lists-	0lKQO+&rcdd}|jt|dd|j|y)Nc&ttfD]}yrbr|r}rJs rforloopz8TestTranforms.test_iterate_literal_list.<locals>.forloopsV

rrrr)r+rs  rtest_iterate_literal_listz'TestTranforms.test_iterate_literal_lists/		
0,GK'"rcZd}|j|d|j|y)Nc	yNrr4r4rrr	z=TestTranforms.test_condition_with_binop_with_bools.<locals>.fsrr)rrFrs  r$test_condition_with_binop_with_boolsz2TestTranforms.test_condition_with_binop_with_boolss)		
a !rcZd}|j|d|j|y)Nc|r	y	y)NTFr4rJs rr	z3TestTranforms.test_if_with_if_expression.<locals>.fs %rT)rrFrs  rtest_if_with_if_expressionz(TestTranforms.test_if_with_if_expressions'		
$ !rc,d}|j|y)Nc	y)Nrzr4rJs rr	z+TestTranforms.test_trailing_nops.<locals>.fsr)rFrs  rtest_trailing_nopsz TestTranforms.test_trailing_nopss		
!rcd}|jt|ddd}|jt|ddd}|jt|ddd}|jt|ddy)NcPtDcgc]}t|}|c}}Scc}}wrbr|r	rKys  rlistcompzGTestTranforms.test_assignment_idiom_in_comprehensions.<locals>.listcomp 1!1Q4QA111"FOR_ITERrcPtDchc]}t|}|c}}Scc}}wrbrrs  rsetcompzFTestTranforms.test_assignment_idiom_in_comprehensions.<locals>.setcomprrcRtDcic]}t|}||c}}Scc}}wrbrrs  rdictcompzGTestTranforms.test_assignment_idiom_in_comprehensions.<locals>.dictcomps$"#4QadAqDA444s#cdtDS)Nc36K|]}t|}|ywrb)r	)r6rKrs   rr8zYTestTranforms.test_assignment_idiom_in_comprehensions.<locals>.genexpr.<locals>.<genexpr>s1!1Q4QA1srr4rrgenexprzFTestTranforms.test_assignment_idiom_in_comprehensions.<locals>.genexpr
s
1q11r)rr)r+rrrrs     r'test_assignment_idiom_in_comprehensionsz5TestTranforms.test_assignment_idiom_in_comprehensionssv	20:FJ	20*EqI	50:FJ	20*EqIrcpucd}gtddtddtddttdtdfd	}gtd
ddd
}|D]\}}|D]\}}tt|dzD]x}t	||D]g}	ddj|	z|z|z|z}
|j
|
|5|
|z}t|
dd|i}|j||d|
dddizy#1swYzxYw)Nz-+ #0)rY1234uабвгsra)i.duioxX)|EJ@g|EJ	duifegFEGinffegFEG)rY130)rY.z.0z.2)rY.40)rrr%rY)fmtvaluez % (x,)rKzfmt = )	rfloatrrBrjoinr[evalr)
r+flags	testcaseswidth_precsrsuffixwidthprecrspecrs1s2s
             rtest_format_combinationsz&TestTranforms.test_format_combinationssr

-u
5

]H
-
2K
@
eElU5\M2H
=	
	

_&;
<




'	BME6*
Bts5zA~.BA ,UA 6B!BGGDM1E9D@6I!\\c\?B!$uB!%w&7#u!FB ,,Rx[ABBBB
B	B
BBs-DDc0d}|j|dd|j|ddd|j|ddd|j|ddd|j|d	dd
|j|ddd|j|d	dd
|j|ddd|j|ddd|j|ddd|j|ddddy)Nc	tt|Dcgc]
}d|dz}}t|dk(rd|dzdz}nddj|zdz}t|d|t	t||Scc}w)	NrKr(rz,)z, )z % )rrBrr dictzip)rvaluesrvarsargss     rformatz.TestTranforms.test_format_misc.<locals>.format's',S['9:!a!uI:D:4yA~T!W}t+TYYt_,s23'TF+T#dF2C-DEE;sA=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  rtest_format_misczTestTranforms.test_format_misc&s	F	
)84	40+>	40+>	40*=	402DE	<8:MN	<8:LM	<8+F6G	73\B 0"b9;KLrcp|jtd5tdddd|jtd5tddddddd|jtd5td	d
diddd|jtd5tdd
diddd|jtd5td
d
diddd|jtd5tdd
diddd|jtd5tdd
diddd|jtd5tdd
diddd|jtd5tdd
diddd|jtd5tdd
diddd|jtd5tddgdddd|jtd5tddddgddddy#1swYxYw#1swYxYw#1swYxYw#1swYxYw#1swY~xYw#1swY^xYw#1swY>xYw#1swYxYw#1swYxYw#1swYxYw#1swYxYw#1swYyxYw)Nz&not enough arguments for format stringz	'%s' % ()z4not all arguments converted during string formattingz
'%s' % (x, y)rrIrzincomplete 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 
ValueErrorr+s rtest_format_errorsz TestTranforms.test_format_errors;s

#
#I<>		
#
#IJL	4"23	4
#
#J0C
D	.#t-	.

#
#J0C
D	0!C;/	0

#
#I<>	/3+.	/
#
#J0N
O	1"S$K0	1

#
#I/S
T	/f
.	/

#
#I/R
S	0g/	0

#
#I/P
Q	/f
.	/

#
#I/M
N	/f
.	/

#
#I<>	:%QR'89	:
#
#IJL	>%QaV'<=	>	>5			4	4	.	.	0	0	/	/	1	1	/	/	0	0	/	/	/	/	:	:	>	>sH H-/H:I	I6I!#I.I;=J*JJ J, H*-H7:III!I+.I8;JJJ J),J5c.d}|j|dy)Nc||}}||}}yrbr4rs  rr	z5TestTranforms.test_static_swaps_unpack_two.<locals>.f[saqAaqArrrrQrs  rtest_static_swaps_unpack_twoz*TestTranforms.test_static_swaps_unpack_twoZs		
  F+rc.d}|j|dy)NcL|||}}}|||}}}|||}}}|||}}}|||}}}|||}}}yrbr4r{s   rr	z7TestTranforms.test_static_swaps_unpack_three.<locals>.fasPA!qAA!qAA!qAA!qAA!qAA!qArrrrArs  rtest_static_swaps_unpack_threez,TestTranforms.test_static_swaps_unpack_three`s		
  F+rctdddD]I\}}}d|d|d|d}|j|5t|}|j|ddddKy#1swYVxYw)	N_a_b_cz{'a': z, 'b': z, 'c': }rr)rr[rrQ)r+r|r}rrr,s      rtest_static_swaps_match_mappingz-TestTranforms.test_static_swaps_match_mappingjsztT40	7GAq!s'!GA3b9Gg&
77@((v6
7
7	7
7
7sAA$	cgd}tdddD]W\}}}|D]L}|j|||}|j|5t|}|j	|ddddNYy#1swY[xYw)N)z
C({}, {}, {})zC({}, {}, c={})zC({}, b={}, c={})zC(a={}, b={}, c={})rGrHrIrr)rr5r[rrQ)r+formsr|r}rformrr,s        rtest_static_swaps_match_classz+TestTranforms.test_static_swaps_match_classqs
tT40	;GAq!
;++aA.\\'*;;GDD,,T6:;;
;	;;;sA--A6c(hd}gd}tdddD]n\}}}|D]c}|j|||}|j|5t|}||vr|j	|dn|j|ddddepy#1swYrxYw)N>*_, b, ca, *_, ca, b, *_)z
{}, {}, {}z{}, {}, *{}z{}, *{}, {}z*{}, {}, {}rGrHrIrr)rr5r[rrRrQ)	r+swapsrMr|r}rrNrr,s	         r test_static_swaps_match_sequencez.TestTranforms.test_static_swaps_match_sequences4KtT40
	?GAq!	
?++aA.\\'*?;GDD%'--dF;00v>??	
?
	???s5BBN))__name__
__module____qualname__r0rFrSr_rmrprwrrrrrrrrrrrrrrrrrrrrrrrequires_resourcer+r8r>rBrErKrOrUr4rrr!r!&sD"	9 
(6
('"R(>+ Z .!(F	LB#$(,'#
JWu%B&B.M*>>,,7;
?rr!c$eZdZdZdZdZdZy)TestBugletscld}|jt5|dddy#1swYyxYw)Ncddh\}}||fSrr4rs  rr	z%TestBuglets.test_bug_11510.<locals>.fsq6DAqa4Kr)assertRaisesr<rs  rtest_bug_11510zTestBuglets.test_bug_11510s1	

z
*	
C			s*3c^tdD]}	ty#txst$rYwxYw)Nr)r	Exception)r+rs  rtest_bpo_42057zTestBuglets.test_bpo_42057s8r	A
	)	

s,,ctdddy)Nzwhile True or spam: pass<test>rr\r=s rtest_bpo_45773_pop_jump_if_truez+TestBuglets.test_bpo_45773_pop_jump_if_trues*Hf=rctdddy)Nzwhile True or not spam: passrdrrer=s r test_bpo_45773_pop_jump_if_falsez,TestBuglets.test_bpo_45773_pop_jump_if_falses.&ArN)rVrWrXr_rbrfrhr4rrr[r[s>Brr[creZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZdZdZdZy)TestMarkingVariablesAsUnKnownc|jtjtjtjdyrb)
addCleanupsyssettracegettracer=s rsetUpz#TestMarkingVariablesAsUnKnown.setUps&clln5Trc.d}|j|dy)Ncd}||z}yrr4rs  rr	zDTestMarkingVariablesAsUnKnown.test_load_fast_known_simple.<locals>.fsAAAr	LOAD_FASTrRrs  rtest_load_fast_known_simplez9TestMarkingVariablesAsUnKnown.test_load_fast_known_simples		
a-rcRd}|j|d|j|dy)Nc2trd}tyr	conditionrrJs rr	zFTestMarkingVariablesAsUnKnown.test_load_fast_unknown_simple.<locals>.fs{!HrLOAD_FAST_CHECKrsrRrQrs  rtest_load_fast_unknown_simplez;TestMarkingVariablesAsUnKnown.test_load_fast_unknown_simple*		
a!23  K0rcRd}|j|d|j|dy)Nc d}~tyrrrJs rr	zKTestMarkingVariablesAsUnKnown.test_load_fast_unknown_because_del.<locals>.fsA!Hrrzrsr{rs  r"test_load_fast_unknown_because_delz@TestMarkingVariablesAsUnKnown.test_load_fast_unknown_because_delr}rcd}|j|d|j|dd}|j|d|j|dd}|j|d|j|dd}|j|d|j|ddd}|j|d|j|dy)	Nct|yrbrrJs rf1zPTestMarkingVariablesAsUnKnown.test_load_fast_known_because_parameter.<locals>.f1	!Hrrsrzct|yrbrrJs rf2zPTestMarkingVariablesAsUnKnown.test_load_fast_known_because_parameter.<locals>.f2rrct|yrbr)r4s rf3zPTestMarkingVariablesAsUnKnown.test_load_fast_known_because_parameter.<locals>.f3s	$Krct|yrbr)kwargss rf4zPTestMarkingVariablesAsUnKnown.test_load_fast_known_because_parameter.<locals>.f4s	&Mrct|yrbrrJs rf5zPTestMarkingVariablesAsUnKnown.test_load_fast_known_because_parameter.<locals>.f5rr)rr{)r+rrrrrs      r&test_load_fast_known_because_parameterzDTestMarkingVariablesAsUnKnown.test_load_fast_known_because_parameters	b+.  %67	b+.  %67	b+.  %67	b+.  %67	b+.  %67rcRd}|j|d|j|dy)NcHtrd}tt|yrrxrJs rr	zTTestMarkingVariablesAsUnKnown.test_load_fast_known_because_already_loaded.<locals>.fs{!H!Hrrzrsrtrs  r+test_load_fast_known_because_already_loadedzITestMarkingVariablesAsUnKnown.test_load_fast_known_because_already_loadeds*	
	
a!23a-rcRd}|j|d|j|dy)Nc8trd}nd}t|y)NrrIrxrJs rr	zOTestMarkingVariablesAsUnKnown.test_load_fast_known_multiple_branches.<locals>.fs{!Hrrsrzr{rs  r&test_load_fast_known_multiple_brancheszDTestMarkingVariablesAsUnKnown.test_load_fast_known_multiple_branchess*		
a-  $56rc.d}|j|dy)Nc2	ddz}|S#t$rYSwxYwNrr)ZeroDivisionError)ress rr	zKTestMarkingVariablesAsUnKnown.test_load_fast_unknown_after_error.<locals>.fs0
!eJ%
J
s		rzrtrs  r"test_load_fast_unknown_after_errorz@TestMarkingVariablesAsUnKnown.test_load_fast_unknown_after_errors		
a!23rcRd}|j|d|j|dy)Nc
\	ddzdx}x}x}x}x}x}}y#tY$xYwrr)r|r}rrrr	rds       rr	zMTestMarkingVariablesAsUnKnown.test_load_fast_unknown_after_error_2.<locals>.fsN
+A)*)A))A))A)A
+aAq!Q*s+rzrsr{rs  r$test_load_fast_unknown_after_error_2zBTestMarkingVariablesAsUnKnown.test_load_fast_unknown_after_error_2s*	*	
a!23  K0rcd}dD]0}|j|dd|d|j|dd|d2dD]0}|j|dd|d|j|dd|d2dD]0}|j|dd|d|j|dd|d2|j|dd	|j|dd	|j|dd
|j|dd
y)Ncdx}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~ItIt|F|GH|I	t|||>|?t@ANOrr)Pa00a01a02a03a04a05a06a07a08a09a10a11a12a13a14a15a16a17a18a19a20a21a22a23a24a25a26a27a28a29a30a31a32a33a34a35a36a37a38a39a40a41a42a43a44a45a46a47a48a49a50a51a52a53a54a55a56a57a58a59a60a61a62a63a64a65a66a67a68a69a70a71a72a73a74a75a76a77a78a79sP                                                                                rr	zGTestMarkingVariablesAsUnKnown.test_load_fast_too_many_locals.<locals>.fsHIICI#IIcICI#IIcIC#HIICI#IIcICI#IIcIC#HIICI#IIcICI#IIcIC#HIICI#IIcICI#IIcIC#HIICI#IIcICI#IIcIC#HIICI#IIcICI#IIcIC#HIICI#IIcICI#IIcIC#HIICI#IIcICI#IIcIC#S#J#sC%c3S)c3S)r)rr>?rsr|02rz)@ANO)FGrrr{)r+r	rs   rtest_load_fast_too_many_localsz<TestMarkingVariablesAsUnKnown.test_load_fast_too_many_localss+	* 	GA!!![AaV*=$$Q(9Qqf:F	G 	AA!!!%6!Ab6
C$$Qq2Z@	A	GA!!![AaV*=$$Q(9Qqf:F	G
	
a!2E:  K7a!2E:ae4rctjd}i}t|||d}|j|d|j	|d|j
j}fdtj|}|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	rsrzcj|dk(r,|jdk(rd|_tjdySNrXrrzf_linenormrnframeeventargtraces   rrzMTestMarkingVariablesAsUnKnown.test_setting_lineno_no_undefined.<locals>.traceA05>>Q#6!"T"Lr)r
rrrRrQr
rrmrnassertIsNoner)r+r,nsr	rresultrs      @r test_setting_lineno_no_undefinedz>TestMarkingVariablesAsUnKnown.test_setting_lineno_no_undefined.s 
T2sGa-  $56**$$		U&!a-  $56++W5rctjd}i}t|||d}|j|d|j	|d|j
j}fdd}|jt|5tj|}ddd|jd|j|d|j	|d|j|j
j|y#1swYfxYw)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	rsrzcj|dk(r,|jdk(rd|_tjdySrrrs   rrzNTestMarkingVariablesAsUnKnown.test_setting_lineno_one_undefined.<locals>.tracearrz!assigning None to 1 unbound localrr
rrrRrQr
rassertWarnsRegexRuntimeWarningrmrnrr+r,rr	rrrrs       @r!test_setting_lineno_one_undefinedz?TestMarkingVariablesAsUnKnown.test_setting_lineno_one_undefinedNs 
T2sGa-  $56**$$	
1

"
">1
5	LLSF		
#a-  $56++W5
		DDctjd}i}t|||d}|j|d|j	|d|j
j}fdd}|jt|5tj|}ddd|jd|j|d|j	|d|j|j
j|y#1swYfxYw)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	rsrzcj|dk(r,|jdk(rd|_tjdySrrrs   rrzNTestMarkingVariablesAsUnKnown.test_setting_lineno_two_undefined.<locals>.tracerrz"assigning None to 2 unbound localsrrrs       @r!test_setting_lineno_two_undefinedz?TestMarkingVariablesAsUnKnown.test_setting_lineno_two_undefinedps 
T2sGa-  $56**$$	
2

"
">1
5	LLSF		
#a-  $56++W5
		rctjd}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    rmake_function_with_no_checksz:TestMarkingVariablesAsUnKnown.make_function_with_no_checkssT	 	
T2sGa-  $56rc|j}|jj}fdd}|jt|5tj|ddd|j|d|j|d|j|jj|y#1swYTxYw)Ncv|dk(r2|jdk(r#|jd=tjdyS)NrXrrKrf_localsrmrnrs   rrzWTestMarkingVariablesAsUnKnown.test_deleting_local_warns_and_assigns_none.<locals>.traces55>>Q#6NN3'T"Lrz#assigning None to unbound local 'x'rsrz)
rr
rr
rrmrnrRrQr)r+r	rrrs    @r*test_deleting_local_warns_and_assigns_nonezHTestMarkingVariablesAsUnKnown.test_deleting_local_warns_and_assigns_nones--/**$$	
3

"
">1
5	LL
C		
a-  $56++W5		sB55B>c|j}fdtj||j|d|j	|dy)Ncz|dk(r4|jdk(r%d|jd<tjdyS)NrXr*rKrrs   rrzTTestMarkingVariablesAsUnKnown.test_modifying_local_does_not_add_check.<locals>.trace75>>Q#6&(s#T"LrrsrzrrmrnrRrQr+r	rs  @r'test_modifying_local_does_not_add_checkzETestMarkingVariablesAsUnKnown.test_modifying_local_does_not_add_checkJ--/		U	a-  $56rc|j}fdtj||j|d|j	|dy)Ncz|dk(r4|jdk(r%d|jd<tjdyS)NrXrrrrrs   rrzWTestMarkingVariablesAsUnKnown.test_initializing_local_does_not_add_check.<locals>.tracerrrsrzr r!s  @r*test_initializing_local_does_not_add_checkzHTestMarkingVariablesAsUnKnown.test_initializing_local_does_not_add_checkr#rN)rVrWrXrprur|rrrrrrrr	rrrrr"r&r4rrrjrjs[.1184.7	41%5N6@ 6D 6D$6"77rrjc6eZdZ		ddZdZdZdZdZdZy)	DirectCfgOptimizerTestsNc||}|j|||\}}|j|}|j|||j||yrb)
get_optimizednormalize_instsassertInstructionsMatchr)r+instsexpected_instsconstsexpected_constsnlocals	opt_insts
opt_constss        rcfg_optimization_testz-DirectCfgOptimizerTests.cfg_optimization_testsX"$O $ 2 25&' J	:--n=$$Y?_5rcdd|jx}dfd|ddg}dd|jx}dfd|dg}|j||gd	gd
y)N	LOAD_NAMErrOrrirIrrirzr&r;)rirr)rkrIr;rrrIrzr)rrIrzr/r0Labelr4r+lblr-r.s    r1test_conditional_jump_forward_non_const_conditionzIDirectCfgOptimizerTests.test_conditional_jump_forward_non_const_conditionsw 


!4b9!! 


!


!4b9!#
	
""5#1*93<	#	>rctdd|jx}dfd|ddg}gd}|j||gdd	d
gy)Nrirzr8rOrr9r:r<)NOPr8)rGr)rkrr;r=rrzr>r?rAs    r-test_conditional_jump_forward_const_conditionzEDirectCfgOptimizerTests.test_conditional_jump_forward_const_conditionsZ

"


!4b9!! 



	
""5#1*945q6	#	;rc	|jx}dd|dfddg}|jx}dd|dfddg}|j||ttdy)Nr6rOr)r7rIrr&rrr/r@r4r'r)r+lbl1r-rBexpecteds     r2test_conditional_jump_backward_non_const_conditionzJDirectCfgOptimizerTests.test_conditional_jump_backward_non_const_conditionssJJL D 
r*  
::<C 
b)  
	
""5(4a>"Jrc	|jx}dd|dfddg}|jx}dd|dfg}|j||ttd	y)
NrErOrr9rJrFJUMPrrKrL)r+rMr-rBr.s     r.test_conditional_jump_backward_const_conditionzFDirectCfgOptimizerTests.test_conditional_jump_backward_const_conditionsoJJL D!
r*! 
::<C
S"

	
""5.eAh"Prc	Zgd}|j||ttddy)N))rirr)rirrI)rirIrz)rrrzr
STORE_FASTrrrT)POP_TOPrr)r&rrzr)r/r1)r4r'r)r+r-s  rtest_no_unsafe_static_swapz2DirectCfgOptimizerTests.test_no_unsafe_static_swap(s+	
	
""5%U1XPQ"Rr)NNr)	rVrWrXr4rCrHrOrRrWr4rrr(r(s,<@&'6>*;,K"Q Srr(__main__)r	itertoolsrrrmr
unittesttestrtest.support.bytecode_helperrrrrr!TestCaser[rjr(rVmainr4rr<module>r_s
+
R#
f	?$f	?RB(##B4d7$4d7N	dS5dSLzHMMOr