python (3.12.0)

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

͑eРdZddlZddlZddlZddlZddlZddlZddlZddlddl	m
Z
ddlmZddl
mZddlZGddej ZGd	d
ej ZGddej ZGd
dej ZGddej ZGddej ZGddeZGddej ZGddZGddeej ZGddZGddeej ZGdd eej ZGd!d"eej ZGd#d$ej Z e!d%k(rejDyy)&z9Unit tests for contextlib.py, and other context managers.N)*)support)	os_helper)ExceptionIsLikeMixinceZdZdZdZdZy)TestAbstractContextManagercpGddt}|}|j|j|y)NceZdZfdZxZS);TestAbstractContextManager.test_enter.<locals>.DefaultEnterct||yNsuper__exit__selfargs	__class__s  H/BuggyBox/python/3.12.0/bootstrap/lib/python3.12/test/test_contextlib.pyrzDTestAbstractContextManager.test_enter.<locals>.DefaultEnter.__exit__ $'__name__
__module____qualname__r
__classcell__rs@rDefaultEnterr

(
(rr)AbstractContextManagerassertIs	__enter__)rrmanagers   r
test_enterz%TestAbstractContextManager.test_enters/	(1	(.

g'')73rcGddt}|jt5|dddy#1swYyxYw)NceZdZy)ETestAbstractContextManager.test_exit_is_abstract.<locals>.MissingExitNrrrrrMissingExitr'rr*)r assertRaises	TypeError)rr*s  rtest_exit_is_abstractz0TestAbstractContextManager.test_exit_is_abstracts9	0	

y
)	M			s6?cZGdd}|jt|tGddt}|jt|tGdd|}|jt|tGdd|}|jt|ty)	NceZdZdZdZy)RTestAbstractContextManager.test_structural_subclassing.<locals>.ManagerFromScratchc|Sr
r)rs rr"z\TestAbstractContextManager.test_structural_subclassing.<locals>.ManagerFromScratch.__enter__$rcyr
r))rexc_type	exc_value	tracebacks    rrz[TestAbstractContextManager.test_structural_subclassing.<locals>.ManagerFromScratch.__exit__&srNrrrr"rr)rrManagerFromScratchr1#s

rr:ceZdZfdZxZS)LTestAbstractContextManager.test_structural_subclassing.<locals>.DefaultEnterct||yr
rrs  rrzUTestAbstractContextManager.test_structural_subclassing.<locals>.DefaultEnter.__exit__,rrrrs@rrr<+rrrceZdZdZy)GTestAbstractContextManager.test_structural_subclassing.<locals>.NoEnterNrrrr"r)rrNoEnterr?1sIrrAceZdZdZy)FTestAbstractContextManager.test_structural_subclassing.<locals>.NoExitNrrrrr)rrNoExitrC6sHrrE)
assertTrue
issubclassr assertFalse)rr:rrArEs     rtest_structural_subclassingz6TestAbstractContextManager.test_structural_subclassing"s			

#57MNO	(1	(	

<1GHI	(		
G-CDE	'		
F,BCDrN)rrrr$r.rIr)rrrrs4ErrceZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
ejdZejd
ZdZdZdZdZy)ContextManagerTestCasecgtfd}|5}|jdg|j|dj|ddd|jgdy#1swYxYw)Nc3ZKjddjdywN*appendstatesrwoohooz@ContextManagerTestCase.test_contextmanager_plain.<locals>.woohoo@s#LLOHLL(+rOrPrOrPrQ)contextmanagerassertEqualrSrrVxrUs   @rtest_contextmanager_plainz0ContextManagerTestCase.test_contextmanager_plain>sw		
	X	UQC(Q#LLO		
-			s7A--A6cNgtfd}|jt5|5}|jdg|j|dj	|t#1swYnxYw	dddn#1swYnxYw|jgdy)Nc3Kjd	djdy#jdwxYwwrNrRrTsrrVzBContextManagerTestCase.test_contextmanager_finally.<locals>.woohooMs4LLO
"S!S!sA,A?ArOrPrX)rYr,ZeroDivisionErrorrZrSr[s   @rtest_contextmanager_finallyz2ContextManagerTestCase.test_contextmanager_finallyKs		"
	"

0
1	*
*Q  ,  B'Q'))	
*
*
*	*	*	*	
-sBAA00A9	5BBc@td}	|5ddzddd|jt
d|j|djd|j|djdGddt}	|5|d#1swYxYw#t$r)}tj|j}Yd}~d}~wwxYw#1swYnxYwn1#|$r)}tj|j}Yd}~nd}~wwxYw|jt
|d|j|djd|j|djd	Gd
dt}td|dfD]}|jt|
5	|5|#1swYnxYw	|j|dnL#t|$r;}|j||tj|j}Yd}~nd}~wwxYw|jt
|d|j|djd|j|djdddd#1swYxYwy)Nc3Kdywr
r)r)rrfz?ContextManagerTestCase.test_contextmanager_traceback.<locals>.f]	rOrtest_contextmanager_traceback1/0ceZdZy)RContextManagerTestCase.test_contextmanager_traceback.<locals>.RuntimeErrorSubclassNr(r)rrRuntimeErrorSubclassrjlr+rrkrPzraise RuntimeErrorSubclass(42)ceZdZy)SContextManagerTestCase.test_contextmanager_traceback.<locals>.StopIterationSubclassNr(r)rrStopIterationSubclassrmyr+rrnspamtype was suppressedzraise stop_exc)rYr`r8
extract_tb
__traceback__rZlennamelineRuntimeError
StopIterationsubTestrqfailr!)rrdeframesrkrnstop_excs       rrgz4ContextManagerTestCase.test_contextmanager_traceback\s_		
		;
!

	
Va()HI/	<		;
/*2..

 	;))!//:F	;
/
/
/#	;))!//:F	;	
Va()HI)IJ	M	
&!!&)
	CH4>2
C<'&'''II
/:;	H~CMM!X.&11!//BFC  Va0  1PQ  1AB
C
C
C		CsB(BB(C*	CB%!B((	C1CCC&"C**D/DD5J7G#>GG
G#J#H,11H'"J'H,,AJJ	ctd}|}|j|j|jtt	ddy)Nc3Kdywr
r)r)rrwheezCContextManagerTestCase.test_contextmanager_no_reraise.<locals>.wheererffoo)rYr"rHrr-)rrctxs   rtest_contextmanager_no_reraisez5ContextManagerTestCase.test_contextmanager_no_reraisesD		
	f

i51A4HIrctd}|}|j|jt|jt
tddy)Nc3,K	dy#dYyxYwwr
r)r)rrwhoozOContextManagerTestCase.test_contextmanager_trap_yield_after_throw.<locals>.whoos

s	r)rYr"r,rxrr-)rrrs   r*test_contextmanager_trap_yield_after_throwzAContextManagerTestCase.test_contextmanager_trap_yield_after_throwsH		
	
f

#,,	9U3CT	
rcgtfd}|5}jdgj|dj|td#1swYnxYwjgdy)Nc3Kjd	dy#t$r<}j|jdjgdYd}~yd}~wwxYww)NrOrPrrX)rSr`rrZ)r|rrUs rrVzAContextManagerTestCase.test_contextmanager_except.<locals>.woohoosRLLO
6$
6QVVAY'  55
6s*A#A#	A 2AA#A  A#rOrPrQrX)rYrZrSr`r[s`  @rtest_contextmanager_exceptz1ContextManagerTestCase.test_contextmanager_excepts}		6
	6X	)UQC(Q#LLO#C((		)	)
	
-sAAA&cttd}Gddt}td|dfD](}|jt|5	|5|y#1swYnxYw	|j	|dn(#t
$r}|j
||Yd}~nd}~wwxYwddd#1swYxYw)Nc3Kdywr
r)r)rrrVzJContextManagerTestCase.test_contextmanager_except_stopiter.<locals>.woohoorerfceZdZy)YContextManagerTestCase.test_contextmanager_except_stopiter.<locals>.StopIterationSubclassNr(r)rrrnrr+rrnrorprr)rYryrzrqr{	Exceptionr!)rrVrnr~exs     r#test_contextmanager_except_stopiterz:ContextManagerTestCase.test_contextmanager_except_stopiters		
		M	'v.0Ef0MN	<H4>2
<<'&		<'''
II
/:;!0MM"h//0	
<
<
<sH
B.A=AA$ A=(B.=	B"BB.B""B..B7	cd}i}t||||d}td}	|5|#1swYnxYw	|jdy#t$r}|j	||Yd}~yd}~wwxYw)Nztfrom __future__ import generator_stop
from contextlib import contextmanager
@contextmanager
def woohoo():
    yield
rVrozStopIteration was suppressed)execryr{rr!)rcodelocalsrVr~rs      r!test_contextmanager_except_pep479z8ContextManagerTestCase.test_contextmanager_except_pep479sT66"! (	6





II45	(MM"h''	(s$A-6A	A1A,,A1cXtd}	|5t#1swYnxYwnt#t$rh}|jt	|t
|j
|jdd|j|jtYd}~nd}~wwxYw	|5td#1swYyxYw#t$rc}|jt	|t|j
|jdd|j|jYd}~yd}~wwxYw)Nc3PK	dy#t$r}td|d}~wwxYww)Nissue29692:Chained)rrxexcs rtest_issue29692zoContextManagerTestCase.test_contextmanager_do_not_unchain_non_stopiteration_exceptions.<locals>.test_issue29692s.
B
B"#78cA
Bs&	&	##&rrzissue29692:Unchained)rYr`rr!rqrxrZrassertIsInstance	__cause__ryassertIsNone)rrrs   r?test_contextmanager_do_not_unchain_non_stopiteration_exceptionszVContextManagerTestCase.test_contextmanager_do_not_unchain_non_stopiteration_exceptionss		B
	B
	C "
(''
(
(
(	CMM$r(L1RWWQZ)=>!!",,0ABB	C
	, "
<#$:;;
<
<	,MM$r(M2RWWQZ)?@bll++	,sR)%)	BABBB=%B11B:6B=:B==	D)AD$$D)c<d}t|dd}|S)Ncfd}|S)NcRjD]\}}t||||Sr
)itemssetattr)funckvkws   rdecoratezXContextManagerTestCase._create_contextmanager_attribs.<locals>.attribs.<locals>.decorates-88:&CAaD1%&rr))rrs` rattribszFContextManagerTestCase._create_contextmanager_attribs.<locals>.attribss
Orbar)rcy)Whee!Nr))ros rbazzBContextManagerTestCase._create_contextmanager_attribs.<locals>.bazrrY)rrrs   r_create_contextmanager_attribsz5ContextManagerTestCase._create_contextmanager_attribss-	
	U		

	
rc|j}|j|jd|j|jdy)Nrr)rrZrrrrs  rtest_contextmanager_attribsz2ContextManagerTestCase.test_contextmanager_attribss8113e,%(rc\|j}|j|jdyNrrrZ__doc__rs  rtest_contextmanager_doc_attribz5ContextManagerTestCase.test_contextmanager_doc_attribs$113g.rch|jd}|j|jdyrrrs  r*test_instance_docstring_given_cm_docstringzAContextManagerTestCase.test_instance_docstring_given_cm_docstring
s+3d113D9g.rctd}|dddd5}|j|ddddy#1swYyxYw)Nc3K||||fywr
r)rrrkwdss    rrVz4ContextManagerTestCase.test_keywords.<locals>.woohoostT**s
!,r)rrrrrYrZ)rrVtargets   r
test_keywordsz$ContextManagerTestCase.test_keywordssJ		+
	+
"2B
7	76V%56	7	7	7s5>cGdd}tfd}|||5	dddy#1swYyxYw)NceZdZy)0ContextManagerTestCase.test_nokeepref.<locals>.ANr(r)rrArr+rrc3Ktj|}tj|}tjj	|j	|dywr
)weakrefrefr
gc_collectr)abrs  rrVz5ContextManagerTestCase.test_nokeepref.<locals>.woohoosPAAAA ac"ac"sA0A3rr)rrrVs`  rtest_nokeeprefz%ContextManagerTestCase.test_nokeeprefsI		
	
	AC13
				s	9AcJtd}|jt5|ddd|jt5|ddddd|jt5|ddddy#1swYXxYw#1swY=xYw#1swYyxYw)Nc3Kdywr
r)rrs  rrVz8ContextManagerTestCase.test_param_errors.<locals>.woohoo)rerfr)rYr,r-)rrVs  rtest_param_errorsz(ContextManagerTestCase.test_param_errors(s		
	

y
)	H	


y
)	1aL	


y
)	QK									s#B
B
.
BB

BB"c~dtfd}|fdjdy)Nrc3RK}dz
ddzj|ywNrO)rZ)beforedepthrs rrVz5ContextManagerTestCase.test_recursive.<locals>.woohoo6s3FQJEQJEUF+s$'c dkryy)N
r))r	recursivesrrz8ContextManagerTestCase.test_recursive.<locals>.recursive?srzrr)rrVrrs` @@rtest_recursivez%ContextManagerTestCase.test_recursive4sG		,
	,
	
		"rN)rrrr]rargrrrrrrrrrrequires_docstringsrrrrrrr)rrrKrK<s.."0CdJ
."<$6*,.)

  /!/
  /!/7"
#rrKc<eZdZejdZdZdZy)ClosingTestCasecrtj}td}|j|j|yr
)closingrrZrcm_docstringobjs   rtest_instance_docsz"ClosingTestCase.test_instance_docsJs*dml3rcgGfdd}|}|jgt|5}|j||ddd|jdgy#1swYxYw)NceZdZfdZy)'ClosingTestCase.test_closing.<locals>.Cc(jdyrrRrrUs rclosez-ClosingTestCase.test_closing.<locals>.C.closeTQrNrrrrrTsrCrS
 rrrO)rZrrrr\yrUs    @rtest_closingzClosingTestCase.test_closingQsk	 	 
C#
QZ	#1Q"	#$	#	#sA##A,c<gGfdd}|}|jg|jt5t|5}|j||ddzdddddd|jdgy#1swY%xYw#1swY)xYw)NceZdZfdZy)-ClosingTestCase.test_closing_error.<locals>.Cc(jdyrrRrs rrz3ClosingTestCase.test_closing_error.<locals>.C.close_rrNrrTsrrr^rrrrOr)rZr,r`rrs    @rtest_closing_errorz"ClosingTestCase.test_closing_error\s	 	 
C#


0
1	
q  A&A
		
$

		s#B
B"BB	BBN)rrrrrrrrr)rrrrHs$  4!4	%%rrceZdZdZy)NullcontextTestCasecGdd}|}t|5}|j||dddy#1swYyxYw)NceZdZy)/NullcontextTestCase.test_nullcontext.<locals>.CNr(r)rrrrlr+rr)nullcontextr!)rrcc_ins    rtest_nullcontextz$NullcontextTestCase.test_nullcontextks?		
C
^	#tMM$"	#	#	#s	9AN)rrrrr)rrrrjs#rrceZdZdZy)FileContextTestCasectj}	d}t|dd5}|j|j|jdddd|j
|jd}|jt5t|dd5}|j|j|j|jdddzdddddd|j
|jtj|y#1swYxYw#1swYNxYw#1swYRxYw#tj|wxYw)Nwzutf-8)encodingzBooh
rrOr)
tempfilemktempopenrHclosedwriterFr,r`rZreadrunlink)rtfnrds   rtestWithOpenz FileContextTestCase.testWithOpenusoo	"Ac31
"Q  *!
"
OOAHH%A""#45
#sW5$$QXX.$$QVVXx8E


OOAHH%S!
"
"


S!sSE-D:E
D6AD*D6%#ED'#E*D3	/D66D?;EEN)rrrrr)rrr	r	ss"rr	c0eZdZdZdZdZdZdZdZy)LockContextTestCasec|j||5|j|ddd|j||jt5|5|j|ddzdddddd|j|y#1swYzxYw#1swY4xYw#1swY8xYwNrOr)rHrFr,r`)rlocklockeds   rboilerPlatezLockContextTestCase.boilerPlates"
	&OOFH%	&"


0
1	
)A
		
"	&	&

		s/B)#C&B5C)B25B>	:CC
cdtj}|j||jyr
)	threadingLockrrrrs  rtestWithLockz LockContextTestCase.testWithLocks"~~t{{+rcdtj}|j||jyr
)rRLockr	_is_ownedr!s  r
testWithRLockz!LockContextTestCase.testWithRLocks" t~~.rc\tjfd}|j|y)Nc$jSr
)r%rsrrz5LockContextTestCase.testWithCondition.<locals>.lockeds>>##r)r	Conditionrrrrs  @rtestWithConditionz%LockContextTestCase.testWithConditions&""$	$v&rc\tjfd}|j|y)NcJjdrjyyNFTacquirereleaser)srrz5LockContextTestCase.testWithSemaphore.<locals>.locked||E"r)r	Semaphorerr+s  @rtestWithSemaphorez%LockContextTestCase.testWithSemaphores(""$		
v&rc\tjfd}|j|y)NcJjdrjyyr/r0r)srrz<LockContextTestCase.testWithBoundedSemaphore.<locals>.lockedr3r)rBoundedSemaphorerr+s  @rtestWithBoundedSemaphorez,LockContextTestCase.testWithBoundedSemaphores())+		
v&rN)	rrrrr"r&r,r5r9r)rrrrs 	#,/'''rrc(eZdZdZdZdZdZdZdZy)	mycontextz9Example decoration-compatible context manager for testingFNcd|_|SNTstartedr3s rr"zmycontext.__enter__src(||_|jSr
)rcatchrrs  rrzmycontext.__exit__szzr)	rrrrr?rrAr"rr)rrr;r;sCG
CErr;cfeZdZejdZdZdZdZdZ	dZ
dZdZd	Z
d
Zy)TestContextDecoratorcptj}t}|j|j|yr
)r;rrZrs   rrz'TestContextDecorator.test_instance_docss*!((kl3rct}|5}|j|||j|jddd|j	|j
dy#1swY&xYw)NNNN)r;r!rFr?rZr)rcontextresults   rtest_contextdecoratorz*TestContextDecorator.test_contextdecoratorsX+
	-MM&'*OOGOO,	-	
&89		-	-s.A  A)ct}|jtd5|5td#1swYnxYw	dddn#1swYnxYw|j|j|j|jdtt}d|_|5td#1swYnxYw|j|j|j|jdty)NrrT)r;assertRaisesRegex	NameErrorassertIsNotNonerr!rA)rrHs  r$test_contextdecorator_with_exceptionz9TestContextDecorator.test_contextdecorator_with_exceptions+

#
#Iu
5	'
'&&
'
'
'	'	'	'	
W[[)

gkk!ni0+

	#E""	#	#W[[)

gkk!ni0s$A09	AA#B//B8cxtfd}|jjdy)Ncrjjjjyr
rrrFr?rHrsrtestz1TestContextDecorator.test_decorator.<locals>.test%gkk*OOGOO,rrG)r;rZrrrTrHs` @rtest_decoratorz#TestContextDecorator.test_decorators8+		-
	-	
&89rctfd}jtd5|dddjjjjdty#1swYHxYw)Ncjjjjt	d)Nr)rrrFr?rMrSsrrTz@TestContextDecorator.test_decorator_with_exception.<locals>.tests0gkk*OOGOO,E""rrr)r;rLrMrNrr!rVs` @rtest_decorator_with_exceptionz2TestContextDecorator.test_decorator_with_exceptionsp+		#
	#

#
#Iu
5	F	W[[)

gkk!ni0		sA==BctGfddt}|}|jdd|j|jd|j|j
d|j|jd|}|jddd|j|jd|j|j
d|j|jd|}|jdd|j|jd|j|j
dy)	Nc"eZdZWddZy)9TestContextDecorator.test_decorating_method.<locals>.TestNc.||_||_||_yr
)rrr)rrrrs    rmethodz@TestContextDecorator.test_decorating_method.<locals>.Test.methodsrr
)rrrr_)rHsrTestr]s


rr`rOrrrr)r;objectr_rZrrr)rr`rTrHs   @rtest_decorating_methodz+TestContextDecorator.test_decorating_methods+	6	vAq##&vCc"%%%va1##rcGddt}|jtd5|5	ddddddy#1swYxYw#1swYyxYw)NceZdZdZdZy)7TestContextDecorator.test_typo_enter.<locals>.mycontextcyr
r)r3s r	__unter__zATestContextDecorator.test_typo_enter.<locals>.mycontext.__unter__#rcyr
r)rBs  rrz@TestContextDecorator.test_typo_enter.<locals>.mycontext.__exit__%rirN)rrrrhrr)rrr;rf"

rr;the context managerContextDecoratorrLr-rr;s  rtest_typo_enterz$TestContextDecorator.test_typo_enter!sY	(	
#
#I/D
E	

		

		!A
AA
A
	A

AcGddt}|jtd5|5	ddddddy#1swYxYw#1swYyxYw)NceZdZdZdZy)6TestContextDecorator.test_typo_exit.<locals>.mycontextcyr
r)r3s rr"z@TestContextDecorator.test_typo_exit.<locals>.mycontext.__enter__/rircyr
r)rBs  r__uxit__z?TestContextDecorator.test_typo_exit.<locals>.mycontext.__uxit__1rirN)rrrr"rwr)rrr;rt.rkrr;zthe context manager.*__exit__rmros  rtest_typo_exitz#TestContextDecorator.test_typo_exit-sY	(	
#
#I/N
O	

		

		rqcGddt}Gdd|t}|fd}|jjdy)Nc eZdZdZdZdZdZy)HTestContextDecorator.test_contextdecorator_as_mixin.<locals>.somecontextFNcd|_|Sr=r>r3s rr"zRTestContextDecorator.test_contextdecorator_as_mixin.<locals>.somecontext.__enter__>s#rc||_yr
rrBs  rrzQTestContextDecorator.test_contextdecorator_as_mixin.<locals>.somecontext.__exit__B	r)rrrr?rr"rr)rrsomecontextr{:sGC

rrceZdZy)FTestContextDecorator.test_contextdecorator_as_mixin.<locals>.mycontextNr(r)rrr;rEr+rr;crjjjjyr
rRrSsrrTzATestContextDecorator.test_contextdecorator_as_mixin.<locals>.testIrUrrG)rbrnrZr)rrr;rTrHs`   @rtest_contextdecorator_as_mixinz3TestContextDecorator.test_contextdecorator_as_mixin9sU		&			%5	+		-
	-	
&89rctfd}g|dfd}|djgdg|djgdy)Nc3ZKj|djdyw)NrQrR)rrUs rrVzETestContextDecorator.test_contextmanager_as_decorator.<locals>.woohooRs!LLOLLrWrOcNjdgj|yr)rZrS)r\rrUs rrTzCTestContextDecorator.test_contextmanager_as_decorator.<locals>.testYs UQC(LLOr	something)rOrrQsomething else)rOrrQr)rrVrTrUs`  @r test_contextmanager_as_decoratorz5TestContextDecorator.test_contextmanager_as_decoratorQsn		
	
		
		
[ 56
 :;rN)rrrrrrrJrOrWrZrcrprxrrr)rrrDrDsG  4!4:1":1$<		:0<rrDceZdZdZej
dZdZdZdZ	dZ
dZdZd	Z
d
ZdZdZd
ZdZdZdZdZdZdZdZdZdZdZy)TestBaseExitStackNc|jj}|j}|j|j|yr
)
exit_stackrrZrs   rrz$TestBaseExitStack.test_instance_docsis3..ool3rcP|j5	dddy#1swYyxYwr
)rr3s rtest_no_resourcesz#TestBaseExitStack.test_no_resourcesps$
__
				s%cdifdifdifdtdfdtdfdtdfdtddfg}gfd	}|j5}t|D]o\}}|r|r|j|g|i|}n=|r|j|g|}n'|r|j|fi|}n|j|}|j	||q|j
D]s}|j	|dj||j|dj|j|j|dj|ju	ddd|j|g|j5}|jt5|jd
ddd|jt5|jjd
ddd|jt5|j|ddddddd|jgy#1swYxYw#1swYxYw#1swYmxYw#1swYHxYw#1swYLxYw)
Nr))rO)rOrarO)exampler)rcallbackc,j||fy)zTest metadata propagationNrR)rrrIs  r_exitz.TestBaseExitStack.test_callback.<locals>._exitsMM4,'r)argra)rr)dictrreversedrr!_exit_callbacks__wrapped__assertNotEqualrrrrZr,r-)	rexpectedrstackrrrdwrapperrIs	        @r
test_callbackzTestBaseExitStack.test_callbackts[
H
2J
BK
a!
4?#
DO$
Da!,-
	(__
	E%&x0	
(
dD&u<t<t<A&u4t4A&u55Au-A

a'	
(!00
E

gaj44e<##GAJ$7$7H!!'!*"4"4emmD
E	E	
*
__
	6%""9-
&1%
&""9-
0((Q(/
0""9-
615
6	6	
$3	E	E&
&
&
0
0
6
6	6	6saDH=I-I	/I-I)I-I!I-=I	I	I-I	I-!I*	&I--I6cNtfd}d}fd}Gddt}j5}|j|j	|j
dd|||}|j|j	|j
ddj||j|j	|j
dd|||}|j|j	|j
ddj||j|j	|j
dd||j|j	|j
dd|ddzdddy#1swYyxYw)	Nc*j|yr
)r!)r6rexc_tb
exc_raisedrs   r_expect_excz0TestBaseExitStack.test_push.<locals>._expect_excsMM(J/rcyr=r)exc_detailss r
_suppress_excz2TestBaseExitStack.test_push.<locals>._suppress_excrclj|j|j|yr
)r)r6rrrs   r
_expect_okz/TestBaseExitStack.test_push.<locals>._expect_oks-h'c"f%rceZdZdZdZdZy)+TestBaseExitStack.test_push.<locals>.ExitCMc||_yr
	check_exc)rrs  r__init__z4TestBaseExitStack.test_push.<locals>.ExitCM.__init__s	!*rc&|jdy)NzShould not be called!)r{r3s rr"z5TestBaseExitStack.test_push.<locals>.ExitCM.__enter__s		12rc"|j|yr
rrrs  rrz4TestBaseExitStack.test_push.<locals>.ExitCM.__exit__s,rNrrrrr"rr)rrExitCMrs
+
3
-rrrOr)r`rbrpushr!r__self__)rrrrrrcmrs`      @r	test_pushzTestBaseExitStack.test_pushsg&
	0		&	-V	-__
	%JJz"MM%//3A6
C
#BJJrNMM%//3A6??DJJ}%MM%//3A6
F$BJJrNMM%//3A6??DJJ{#MM%//3A6DJJ{#MM%//3A6D
aC			sEFF$cGfddt}g|}|j5}|jfd}|j||j	||j|jddj|jdddd|jgdy#1swYxYw)Nc"eZdZfdZfdZy)4TestBaseExitStack.test_enter_context.<locals>.TestCMc(jdyrrR)rrIs rr"z>TestBaseExitStack.test_enter_context.<locals>.TestCM.__enter__

a rc(jdyNrrR)rrrIs  rrz=TestBaseExitStack.test_enter_context.<locals>.TestCM.__exit__rrNr9rIsrTestCMrs

!
!rrc(jdy)NrrRrsrrz3TestBaseExitStack.test_enter_context.<locals>._exit

a rrrOra)rOrarr)
rbrrrN
enter_contextr!rrrSrZ)rrrrrrIs     @rtest_enter_contextz$TestBaseExitStack.test_enter_contexts	!V	!
X
__
	%
^^
!
!  '#MM%//3A6??DMM!		
.		sA4B==CcFGdd}Gdd}Gdd}|j5}|jtd5|j|ddd|jtd5|j|ddd|jtd5|j|ddd|j	|j
dddy#1swYxYw#1swYnxYw#1swYExYw#1swYyxYw)NceZdZy)FTestBaseExitStack.test_enter_context_errors.<locals>.LacksEnterAndExitNr(r)rrLacksEnterAndExitrr+rrceZdZdZy)?TestBaseExitStack.test_enter_context_errors.<locals>.LacksEntercyr
r))rexc_infos  rrzHTestBaseExitStack.test_enter_context_errors.<locals>.LacksEnter.__exit__rirNrDr)rr
LacksEnterr
rrceZdZdZy)>TestBaseExitStack.test_enter_context_errors.<locals>.LacksExitcyr
r)r3s rr"zHTestBaseExitStack.test_enter_context_errors.<locals>.LacksExit.__enter__rirNr@r)rr	LacksExitrrrrrl)rrLr-rrHr)rrrrrs     rtest_enter_context_errorsz+TestBaseExitStack.test_enter_context_errorss						__
	4%''	3HI
9##$5$78
9''	3HI
2##JL1
2''	3HI
1##IK0
1U223	4	4
9
9
2
2
1
1	4	4sSDC3D;C?D0D#D3C<	8D?D	DD	DD cg|j5}|jfd}|j||jj	dddd|jddgy#1swYxYw)Nc(jdyrrRrsrrz+TestBaseExitStack.test_close.<locals>._exitrrrarO)rrrNrrSrZ)rrrrIs   @r
test_closezTestBaseExitStack.test_closesx
__
	%
^^
!
!  'KKMMM!
		
!Q(		sAA88BcJg|j5}|jfd}|j||j}j	ddddj	dj|j
gdy#1swY?xYw)Nc(jdyrrRrsrrz-TestBaseExitStack.test_pop_all.<locals>._exitrrrOra)rOrar)rrrNpop_allrSrrZ)rrr	new_stackrIs    @rtest_pop_allzTestBaseExitStack.test_pop_alls
__
	%
^^
!
!  '

IMM!
		

a+		sABB"c|jt5|j5}|jdddzddddddy#1swYxYw#1swYyxYw)Ncy)NFr)rs r<lambda>z3TestBaseExitStack.test_exit_raise.<locals>.<lambda>rrrOr)r,r`rrrrs  rtest_exit_raisez!TestBaseExitStack.test_exit_raises`


0
1	"
e

-.!
		

		s!AAAA	AA%c||j5}|jdddzdddy#1swYyxYw)Ncyr=r)rs rrz6TestBaseExitStack.test_exit_suppress.<locals>.<lambda>rrrOrrrrs  rtest_exit_suppressz$TestBaseExitStack.test_exit_suppresss7
__
	%JJ()
aC			s2;cd}	|j5}|j|tddzddd|jtt	j
|j}dg|jzddgz}|j|Dcgc]}|j|jfc}||j|jtt	j
|jj}|j|Dcgc]}|j|jfc}dgy#1swYxYw#t$r
}|}Yd}~d}~wwxYwcc}wcc}w)Nc|r
r)rs r	raise_exczBTestBaseExitStack.test_exit_exception_traceback.<locals>.raise_excIrrOr)test_exit_exception_tracebackz with self.exit_stack() as stack:)
_exit_wrapperzcallback(*args, **kwds))rz	raise exc)rrh)
rr
ValueErrorrr8rsrtcallback_error_internal_framesrZrvrw__context__r`)	rrrr|r	ve_framesrrd
zde_framess	         rrz/TestBaseExitStack.test_exit_exception_tracebacks@		"
ey*5!
	
c:.(():):;	
RS//
0
9
'
)
)		
'01!affaff
18	=	
coo/@A))#//*G*GH
J?q166166*?BC	E'

	C	
2@s9ED:EE E%:E?E	EEEc	Gdd}Gdd}Gdd}	|t5|tt5|5|t5ddzdddddddddddd|j	d	|jd}|j|t|j|jty#1swYxxYw#1swY|xYw#1swYxYw#1swYxYw#t$r}|j|jt|j|jjt|j|jjjYd}~d}~wwxYw)
NceZdZdZdZdZy)JTestBaseExitStack.test_exit_exception_chaining_reference.<locals>.RaiseExcc||_yr
rrBs  rrzSTestBaseExitStack.test_exit_exception_chaining_reference.<locals>.RaiseExc.__init__,r~rc|Sr
r)r3s rr"zTTestBaseExitStack.test_exit_exception_chaining_reference.<locals>.RaiseExc.__enter__.r4rc|jr
rrs  rrzSTestBaseExitStack.test_exit_exception_chaining_reference.<locals>.RaiseExc.__exit__0shhrNrr)rrRaiseExcr+s


rrceZdZdZdZdZy)UTestBaseExitStack.test_exit_exception_chaining_reference.<locals>.RaiseExcWithContextc ||_||_yr
)outerinner)rrrs   rrz^TestBaseExitStack.test_exit_exception_chaining_reference.<locals>.RaiseExcWithContext.__init__4s"
"
rc|Sr
r)r3s rr"z_TestBaseExitStack.test_exit_exception_chaining_reference.<locals>.RaiseExcWithContext.__enter__7r4rc>	|j#|jxYwr
)rrrs  rrz^TestBaseExitStack.test_exit_exception_chaining_reference.<locals>.RaiseExcWithContext.__exit__9s"%**$%**$sNrr)rrRaiseExcWithContextr3s
#

%rrceZdZdZdZy)MTestBaseExitStack.test_exit_exception_chaining_reference.<locals>.SuppressExcc|Sr
r)r3s rr"zWTestBaseExitStack.test_exit_exception_chaining_reference.<locals>.SuppressExc.__enter__@r4rc$|t|_yr=)rq
saved_detailsrs  rrzVTestBaseExitStack.test_exit_exception_chaining_reference.<locals>.SuppressExc.__exit__Bs+6T
(rNr9r)rrSuppressExcr?s

rrrOr0Expected IndexError, but no exception was raised)

IndexErrorKeyErrorAttributeErrorrr{rrrrr`)rrrrr	inner_excs      r&test_exit_exception_chaining_referencez8TestBaseExitStack.test_exit_exception_chaining_reference(sH		
	%
	%			J*%
"(>B"$"%j1"E"""
"
IIHI--a0	i4i335FG""""""
"
"
	G!!#//8<!!#//"="=~Ncoo99EEFF		GsvDC4C(
CC	C!C()C41DC
CC%!C((C1	-C44C=9D	F	A9FFcd}dfd}	|j5}|j|t|j|t|j|t|j||j|tddzddd|jdd}|j|t|j|jty#1swYVxYw#t$r}|j|jt|j|jjt|j|jjjYd}~d}~wwxYw)Nc|r
r)rs rrzATestBaseExitStack.test_exit_exception_chaining.<locals>.raise_excZrrc
|yr=r))rrs rsuppress_exczDTestBaseExitStack.test_exit_exception_chaining.<locals>.suppress_exc^s'MrrOrr	)rrr
rrrrr{rrrr`)rrrrrr
rs      @rtest_exit_exception_chainingz.TestBaseExitStack.test_exit_exception_chainingXs(	
	
	J"
ey*5y(3y.9

<(y*5A


IIHI!!$	i4i335FG#

	G!!#//8<!!#//"="=~Ncoo99EEFF		Gs0C-A/C!C-!C*&C--	E96A9E44E9c|Gddttfdtfd}|fD]%}j5	|5ty#1swYnxYw	j	dn-#$r%}j|jYd}~nd}~wwxYwddd~#1swYxYw)NceZdZy)PTestBaseExitStack.test_exit_exception_explicit_none_context.<locals>.MyExceptionNr(r)rrMyExceptionr{r+rrc3^K	dy#t$r}	|#d|_wxYwwxYwwr
)
BaseExceptionr)rrs rmy_cmzJTestBaseExitStack.test_exit_exception_explicit_none_context.<locals>.my_cm~s7
+ 
+!m+I&*CO
+s -
-*	&*-c3Kj5}|j|dddy#1swYyxYwwr
)rr)rrrs rmy_cm_with_exit_stackzZTestBaseExitStack.test_exit_exception_explicit_none_context.<locals>.my_cm_with_exit_stacks<"
e##EG,


sA8	AAAr	)rrYrzr
r{rr)rrrrrrs`   @@r)test_exit_exception_explicit_none_contextz;TestBaseExitStack.test_exit_exception_explicit_none_contextws	)	
	+
	+
	
	
/0	RB
RR+(l*		R+++
IIPQ#7%%coo667	
R
R
RsHB2	A<AA&"A<*B2<B&B!B2!B&&B22B;	cfd}d}	|j5}|jd|j|tddd|jd	|j5}|j|t|j||j|tddd|jdy#1swYxYw#t$r }|j|tYd}~d}~wwxYw#1swYSxYw#t$r }|j|tYd}~yd}~wwxYw)Nc|r
r)rs rrzHTestBaseExitStack.test_exit_exception_non_suppressing.<locals>.raise_excrrcyr=r)rs rrzKTestBaseExitStack.test_exit_exception_non_suppressing.<locals>.suppress_excrrcyr
r)r)rrrzGTestBaseExitStack.test_exit_exception_non_suppressing.<locals>.<lambda>rrr	z.Expected KeyError, but no exception was raised)rrr
r{rrrr)rrrrrs     r#test_exit_exception_non_suppressingz5TestBaseExitStack.test_exit_exception_non_suppressings			J"
6e|,y*5
6
IIHI	H"
6ey(3

<(y*5
6
IIFG!
6
6	3!!#z22	3
6
6	1!!#x00	1s^C)CCD+>C;)DCC	C8C33C8;DD	D0D++D0ctd}td}td}td}td}	|j5}|j|||j|||j|||#1swYyxYw#t$r}|j	|||j	|j
||j	|j
j
||j	|j
j
j
||j
|j
j
j
j
Yd}~yd}~wwxYw)Nc3$K	d|#|xYwwr
r)rs rgets_the_context_rightzZTestBaseExitStack.test_exit_exception_with_correct_context.<locals>.gets_the_context_rights
	c	s

rOrarr)rYrrrr!rr)rr%exc1exc2exc3exc4rrs        r(test_exit_exception_with_correct_contextz:TestBaseExitStack.test_exit_exception_with_correct_contexts4		
	||||
	L"
e##$:4$@A##$:4$@A##$:4$@A
	


	LMM#t$MM#//40MM#//55t<MM#//55AA4H22>>JJ
L
L	Ls1B
ABBBB	E.'B=E))E.c2d}td}td}td}td}td}	|j5}|j||||j||||#1swYyxYw#t$r}|j|||j|j||j|jj||j|jjj||j|jjjj||j|jjjjjYd}~yd}~wwxYw)Nc	|#|xYwr
r))r
	outer_excs  rraise_nestedzQTestBaseExitStack.test_exit_exception_with_existing_context.<locals>.raise_nesteds
 srOrarrr)rrrr!rr)	rr.r&r'r(r)exc5rrs	         r)test_exit_exception_with_existing_contextz;TestBaseExitStack.test_exit_exception_with_existing_contextsB	 
|||||
	Q"
e|T48|T48


	QMM#t$MM#//40MM#//55t<MM#//55AA4HMM,,88DDd
L++77CCOO
Q
Q	Qs0B)A55A>:B>B
FDFFcd}	|j5}|j|ddzdddy#1swYyxYw#t$r}|jdYd}~yd}~wwxYw)Ncyr=r)rs rrzDTestBaseExitStack.test_body_exception_suppress.<locals>.suppress_excrrrOrz%Expected no exception, got IndexError)rrr
r{)rrrrs    rtest_body_exception_suppressz.TestBaseExitStack.test_body_exception_suppresssa		?"
e

<(!


	?II=>>	?s.A5A>AA	A%
A  A%c|j5}|jd|jd|jddddy#1swYyxYw)Ncyr=r)rs rrzITestBaseExitStack.test_exit_exception_chaining_suppress.<locals>.<lambda>rrcddzSrr)rs rrzITestBaseExitStack.test_exit_exception_chaining_suppress.<locals>.<lambda>s
AaCrcidSrr)rs rrzITestBaseExitStack.test_exit_exception_chaining_suppress.<locals>.<lambda>s
BqErrrs  r%test_exit_exception_chaining_suppressz7TestBaseExitStack.test_exit_exception_chaining_suppresssJ
__
	+%JJ()JJ'(JJ)*	+	+	+s7AAc|j5}tdD]}|jt	dddy#1swYyxYw)Ni')rrangerint)rris   rtest_excessive_nestingz(TestBaseExitStack.test_excessive_nestingsB
__
	$%5\
$s#
$	$	$	$s&AA
cjGddt}|}t|_t|_|j}|j	t
d5|j
|ddd|j||j|jdd|y#1swY=xYw)NceZdZy)7TestBaseExitStack.test_instance_bypass.<locals>.ExampleNr(r)rrExampler@rrArlrrO)
rbr"rrrLr-rrr!r)rrArrs    rtest_instance_bypassz&TestBaseExitStack.test_instance_bypasss#f#
Yxh!

#
#I/D
E	$#	$

2

e++B/2B7	$	$sB))B2cGddtGddt}tfd}td}|j5}|j	5}|j||j||d#1swYnxYw	dddn#1swYnxYwj}|j||j|j||j|jj|j|jj|j|j|jy)NceZdZy)ITestBaseExitStack.test_dont_reraise_RuntimeError.<locals>.UniqueExceptionNr(r)rrUniqueExceptionrFrBrrGceZdZy)LTestBaseExitStack.test_dont_reraise_RuntimeError.<locals>.UniqueRuntimeErrorNr(r)rrUniqueRuntimeErrorrIrBrrJc3LK	dy#t$r}d|d}~wwxYww)NrOz
new exceptionr)rrGs rsecondz@TestBaseExitStack.test_dont_reraise_RuntimeError.<locals>.seconds0
@
@%o6C?
@s$
$	!	!$c3<K	dy#t$r}|d}~wwxYwwrrLrs rfirstz?TestBaseExitStack.test_dont_reraise_RuntimeError.<locals>.firsts$

	
s		zplease no infinite loop.)rrxrYr,rr	exceptionrrrrr!)rrJrMrOerr_ctxes_ctxrrGs       @rtest_dont_reraise_RuntimeErrorz0TestBaseExitStack.test_dont_reraise_RuntimeErrors/.i.44		@
	@
	
	


/	E7"
Ef$$VX.$$UW-()CDD
E
E
E	E	E	Ec?3coo/AB#//556#//334

cmmS__5sB'5BB	B''B0)rrrrrrrrrrrrrrrrrrrrr"r*r0r3r8r=rCrSr)rrrrfsJ  4!4'%R D/&4&	),
E@.H`H> RDH6L>Q8?+$	8 6rrceZdZeZddgZy)
TestExitStack)rzraise exc_details[1])rzif cb(*exc_details):N)rrr	ExitStackrrr)rrrUrU3sJ,,&"rrUcVeZdZdZdZejdZdZdZ	dZ
dZdZy)TestRedirectStreamNc|jj}|jd}|j|j|yr
)redirect_streamrrZrs   rrz%TestRedirectStream.test_instance_docs@s9++33""4(l3rctt|j}|jd|j	tt|j|yr
)getattrsysorig_streamrZr!)rorig_stdouts  rtest_no_redirect_in_initz+TestRedirectStream.test_no_redirect_in_initGs=c4#3#34T"

gc4#3#34kBrctj}d}tt|j}|j|5t
|tt|jddd|jtt|j||jj}|j||y#1swYdxYw)Nz<Consider an API like help(), which prints directly to stdoutfile)ioStringIOr\r]r^rZprintr!getvaluestriprZ)rrdmsgr_ss     rtest_redirect_to_string_ioz-TestRedirectStream.test_redirect_to_string_ioLsKKMLc4#3#34

!
!!
$	<#GC)9)9:;	<

gc4#3#34kB
JJL C 		<	<s&CCctj}|j|5}|j||dddy#1swYyxYwr
)rdrerZr!)rrdenter_results   rtest_enter_result_is_targetz.TestRedirectStream.test_enter_result_is_targetVs@KKM

!
!!
$	+MM,*	+	+	+sAAc	tj}|j|}tt|j
}|5t
ddtt|j
ddd|5t
dtt|j
ddd|jtt|j
||j}|j|dy#1swYxYw#1swYbxYwNHello )endrczWorld!rbz
Hello World!

rdrerZr\r]r^rfr!rgrZrrd
write_to_fr_rjs     rtest_cm_is_reusablez&TestRedirectStream.test_cm_is_reusable[sKKM))!,
c4#3#34
	I'sd6F6F)GH	I
	A(d.>.>!?@	A

gc4#3#34kB
JJL,-
	I	I	A	As'C.3&C:.C7:Dc	tj}|j|}tt|j
}|5t
ddtt|j
|5t
dtt|j
dddddd|jtt|j
||j}|j|dy#1swY^xYw#1swYbxYwrprtrus     rtest_cm_is_reentrantz'TestRedirectStream.test_cm_is_reentrantgsKKM))!,
c4#3#34
	E'sd6F6F)GH
EhWS$2B2B%CD
E	E	


gc4#3#34kB
JJL,-	
E
E	E	Es$)C:+&C.C:.C7	3C::D)
rrrrZr^rrrr`rkrnrwryr)rrrXrX;s>OK  4!4C
!+

.
.rrXceZdZeZdZy)TestRedirectStdoutstdoutN)rrrredirect_stdoutrZr^r)rrr{r{t%OKrr{ceZdZeZdZy)TestRedirectStderrstderrN)rrrredirect_stderrrZr^r)rrrrzr~rrcfeZdZejdZdZdZdZdZ	dZ
dZdZd	Z
d
Zy)TestSuppresscptj}t}|j|j|yr
)suppressrrZrs   rrzTestSuppress.test_instance_docss* ''jl3rcntt5}|j|dddy#1swYyxYwr
)rrr)rrms  rtest_no_result_from_enterz&TestSuppress.test_no_result_from_enters/
j
!	,\l+	,	,	,s+4ctt5|jtddddddy#1swYyxYw)Nrar )rrrZpowr3s rtest_no_exceptionzTestSuppress.test_no_exceptions5
j
!	,SAY+	,	,	,s6?cbtt5tddddy#1swYyxYw)Nr)rr-rur3s rtest_exact_exceptionz!TestSuppress.test_exact_exceptions&
i
 	F			s%.cVtt5dddddy#1swYyxYw)Nrq2)rLookupErrorr3s rtest_exception_hierarchyz%TestSuppress.test_exception_hierarchys&
k
"	BK			s(c|jt5tt5ddzddddddy#1swYxYw#1swYyxYwr)r,r`rr-r3s rtest_other_exceptionz!TestSuppress.test_other_exceptionsO


0
1	)$
!
		

		sA	=A	A	A		Ac|jt5t5ddzddddddy#1swYxYw#1swYyxYwr)r,r`rr3s rtest_no_argszTestSuppress.test_no_argssL


0
1	
!
		

		sA8AA	AA
cttt5ddzdddttt5tddddy#1swY2xYw#1swYyxYw)NrOrr)rr`r-rur3s rtest_multiple_exception_argsz)TestSuppress.test_multiple_exception_argssU
'
3	
aC	
'
3	F						sAAAA!c8tt}|5	ddd|5tdddd|5|5tddddd}ddzddd|jy#1swYYxYw#1swYOxYw#1swYBxYw#1swY?xYw)NrTrOr)rrrurF)rignore_exceptionsouter_continueds   rryz!TestSuppress.test_cm_is_reentrants$Y/
		
	F	
	"
A
"O
aC		
	
(				

		s8A,A8BBB,A58BB
		BBc
d}d}tt5|#1swYnxYwttt5|#1swYnxYw|jt5}tt5|#1swYnxYw	dddn#1swYnxYw|jjt	dtdtdgy)NcVtdtdtdtdgS)NzEG with ValueErrors onlyve1ve2ve3)ExceptionGrouprr)rrrz4TestSuppress.test_exception_groups.<locals>.<lambda>s'&


5 1:e3DE
rc	jtdtdtdtdtdgS)N EG with many types of exceptionsrke1rke2)rrrr)rrrz4TestSuppress.test_exception_groups.<locals>.<lambda>s,.

E1BHUOT
rrrr)rrrr,rassertExceptionIsLikerP)reg_veeg_alleg1s    rtest_exception_groupsz"TestSuppress.test_exception_groupss

j
!	'M		
j(
+	(N		


~
.	#*%
h


				
""MM2%(5/2
	
s1'AA'B7A??B	BBN)rrrrrrrrrrrrrryrr)rrrrsG  4!4,,

)
rrc$eZdZdZdZdZdZy)	TestChdirctjjtjjtjj	t
g|Sr
)ospathjoindirnamerealpath__file__)rpartss  rmake_relative_pathzTestChdir.make_relative_paths>ww||GGOOBGG,,X67


	
rcBtj}|jd}|j||t	|5|jtj|ddd|jtj|y#1swY.xYw)Ndata)rgetcwdrrchdirrZ)rold_cwdrs   rtest_simplezTestChdir.test_simplesu))+((0GV,
6]	2RYY[&1	2g.	2	2s%BBctj}|jd}|jd}|j|||ft	|t	|}}|5|jtj||5|jtj||5|jtj|ddd|jtj|ddd|jtj|ddd|jtj|y#1swYxYw#1swYfxYw#1swYFxYw)Nrziptestdata)rrrassertNotInrrZ)rrtarget1target2chdir1chdir2s      rtest_reentrantzTestChdir.test_reentrants#))+))&1))-87G"45ww
	3RYY['2
7  g6;$$RYY[':;  g6	
7

RYY['2	3	
g.	;;
7
7	3	3s<#'E3
'E'1%E,E',E3E$ E''E0	,E33E<ctj}|jd}|j||	t	|5|jtj|t
d#1swYnxYwn1#t$r%}|jt|dYd}~nd}~wwxYw|jtj|y)Nrboom)rrrrrrZrxstr)rrrres    rtest_exceptionzTestChdir.test_exceptions))+((0GV,	.v
+  f5"6**
+
+
+	.SWf--	.g.s)B0A44A=9B	B/
B**B/N)rrrrrrrr)rrrrs
//"/rr__main__)#rrdrr]rrr8unittest
contextlibrTrtest.supportrtest.support.testcaserrTestCaserrKrrr	rrnr;rDrrUrXr{rrrrmainr)rr<module>rs^?		
"6(E!2!2(EVI#X..I#X%h''%D#(++#"(++"(-'(++-'` ]<8,,]<@J6J6Z%x'8'86.6.r+X->->+X->->L
'):):L
^,/!!,/^zHMMOr