python (3.11.7)

(root)/
lib/
python3.11/
test/
__pycache__/
test__xxsubinterpreters.cpython-311.opt-2.pyc

e_;ddlmZddlZddlZddlZddlZddlZddlmZddl	Z	ddl
Z
ddlZddlm
Z
ddlmZddlmZejdZdZdAd	ZdAd
ZejdZdZifd
ZGddeddZejdZGddeddZGddeddZdddZdZdZ dZ!Gddej"Z#Gd d!ej"Z$Gd"d#ej"Z%Gd$d%e#Z&Gd&d'e#Z'Gd(d)e#Z(Gd*d+e#Z)Gd,d-e#Z*Gd.d/e#Z+Gd0d1e#Z,Gd2d3e#Z-Gd4d5e#Z.Gd6d7e#Z/Gd8d9e#Z0Gd:d;ed;d<Z1ej2d=Gd>d?e#Z3e4d@krej5dSdS)B)
namedtupleN)dedent)support)
import_helper)
script_helper_xxsubinterpretersctj\}}|dd}td|d|d}|t	|dfS)N
z
                z-
        import contextlib
        with open(zg, 'w', encoding="utf-8") as spipe:
            with contextlib.redirect_stdout(spipe):
                z	
        utf-8encoding)ospipereplaceropen)scriptrwindentedwrappeds     P/BuggyBox/python/3.11.7/bootstrap/lib/python3.11/test/test__xxsubinterpreters.py_captured_scriptrst
799DAq~~d$899H	

GDW-----ct|\}}|5t||||cdddS#1swxYwYdSN)rinterpreters
run_stringread)interprequestsharedrrpipes     r_run_outputr##s$W--MFE	777zz||s0AAAc|tj}tj|dD]}t|rdS td)NF)errorzinterp is not running)r
SHORT_TIMEOUTsleeping_retryr
is_runningRuntimeError)rtimeout_s   r_wait_for_interp_to_runr,*sc'

#G5
9
9
944""6**	EE	2333rc#dKtj\}fd}tj|}|tdVt
|dd5}|ddddn#1swxYwY|dS)Nc`ttdddS)Nz7
            # wait for "signal"
            with open(zG, encoding="utf-8") as rpipe:
                rpipe.read()
            )rrr)rrsrrunz_running.<locals>.run:sJ0000))					rtargetrrrdone)	rr	threadingThreadstartr,rwritejoin)rrr/tspipers`    @r_runningr:7s
799DAq	$$$AGGIIIF###	EEE	
aw	'	'	'5
FFFHHHHHs/BBBc(t|||dSr)_run_interp)idsourcer!s   r
run_interpr?VsFF#####rct|}t}||kr6t|krtt||dSt|||dSr)rrget_mainget_currentr)execr)r=r>r!_mainnsmains     rr<r<Zsx
F^^F  ""Drzz##%%--VWFF33333rc6eZdZedZdfd	ZxZS)Interpreterctt||r|St|tr||Str)
isinstancestrNotImplementedError)clsraws  rfrom_rawzInterpreter.from_rawhs>c3	&J
S
!
!	&3s88O%%rNct}||kr0|sd}n(|dkr"td||}nw|O|sd}n|dkrtdt	|tjst|}n&|r|dkrd}|}nt}t|||}|S)NrEz)name mismatch (expected "main", got "{}")rz!name mismatch (unexpected "main"))	rrA
ValueErrorformatrI
InterpreterIDcreatesuper__new__)rLnamer=rEself	__class__s     rrUzInterpreter.__new__qs$$&&
::
N ?FFtLLNNNBB
^
F !DEEEb,"<==
4!//33	'DBB$$&&BwwsD"--rNN)__name__
__module____qualname__classmethodrNrU
__classcell__rXs@rrGrGfsV&&[&rrGzname idc#@K	dVdS#tj$rYdSwxYwr)rChannelClosedErrorrrexpect_channel_closedrcs=+
*



s
c2eZdZdfd	ZdZdZdZxZS)
ChannelActionNc`|sd}|sd}t||||}|S)NbothrErTrU)rLactionendrrWrXs     rrUzChannelAction.__new__s=	C	FwwsFC88rc|jdkr|jdvrt|jn;|jdvr|jdvrt|jnt|j|jdvrt|jdS)Nuse)sameoppositesendrecvcloseforce-close)rgrmrnrorp)rErmotherextra)rirjrPr)rWargskwargss   r__init__zChannelAction.__init__s;%xCCC ***D
[4
4
4xKKK ***LT[)));@@@T[)))A@rcT|jdkr|S|jdkr
|dkrdndS|jS)NrmrnrorprjrWrjs  rresolve_endzChannelAction.resolve_ends:8vJ
X
#
# F]]6668Orc|jdkr|S|jdkr|t|S|jdkr|t|S|jdkr#|jdkr|S|r
|jdkr|StdS)NrmrtrurE)rr)rV)rWrrtrus    rresolve_interpzChannelAction.resolve_interps;&  M
[G
#
#}""L
[G
#
#}""L
[F
"
"{f$$

#5://""
#
"rrY)rZr[r\rUrxr|r~r^r_s@rreresj
*
*
*#######rrezaction end interpc>eZdZd
ddfdZdZdZddd	ZxZS)ChannelStaterFclosedcNt|||}|Srrh)rLpendingrrWrXs    rrUzChannelState.__new__s!wwsGV44rcPt||jdz|jSNrtyperrrWs rincrzChannelState.incr&tDzz$,*4;????rcPt||jdz
|jSrrrs rdecrzChannelState.decrrrTforcect|jr|r|jdkr|St||rdn|jdS)NrTr)rrr)rWrs  rrrzChannelState.closesK;	
DLA--tDzzu6!!$,tDDDDr)r)rZr[r\rUrrrrr^r_s@rrrs%@@@@@@"EEEEEEEEErrzpending closedT
hideclosedc|jr|dkr|dkr
|jrd}nd}nd}	t||||}|rdn.#tj$r|s|s|}YnwxYw|S)NrlrpFT.)rr_run_actionrrarr)cidrirjstater
expectfailresults       r
run_actionrs|U??sf}}}JJJJ
S&#u55	I	*	*	Ms;(A&%A&c|dkr|dkr/t|d|S|dkrv|jsA	t|td#tj$r|cYSwxYwt||St||dkr1i}|dvrd||<tj	|fi||
S|d	kr5d
di}|dvrd||<tj	|fi||
dSt|)Nrlrospamrpzexpected ChannelEmptyErrorrrrproTrsrr)rchannel_sendrrchannel_recv	ExceptionChannelEmptyErrorrrP
channel_closerr)rrirjrrws     rrrs
&==%%c7333::<<
F]]=	
$B --c222$$@AAA$5!!! LLL!
))#...zz||#S//!	7		"""F3K"311&111{{}}	=	 	 T"""F3K"311&111{{{&&&   s
A33BBctD]4}|dkr		t|%#t$rY1wxYwdS)Nr)rlist_alldestroyr)r=s rclean_up_interpretersrso##%%
77	  $$$$			D	s?
AActD]2}	t|#tj$rY/wxYwdSr)rchannel_list_allchannel_destroyChannelNotFoundErrorrs rclean_up_channelsrsf,,..	((----0			D	s8A
	A
ceZdZdZdS)TestBasec>ttdSrrrrs rtearDownzTestBase.tearDown) rN)rZr[r\rrbrrrr's#rrceZdZdZdZdS)IsShareableTestscgd}|D]\}||5|t|dddn#1swxYwY]dS)N)Nrspam
i)subTest
assertTrueris_shareable)rW
shareablesobjs   rtest_default_shareablesz(IsShareableTests.test_default_shareables3s
	4	4Cc""
4
4 --c22444
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4	4	4s.AA	A	cGdd}Gddt}ddtdtttt	d||d	|d
g}|D]i}|t
|5|t	|dddn#1swxYwYjdS)NceZdZdZdZdS)3IsShareableTests.test_not_shareable.<locals>.Cheesec||_dSrrV)rWrVs  rrxz<IsShareableTests.test_not_shareable.<locals>.Cheese.__init__Ds
 			rc|jSrrrs r__str__z;IsShareableTests.test_not_shareable.<locals>.Cheese.__str__Fs
y rN)rZr[r\rxrrbrrCheeserCs2
!
!
!
!
!
!
!
!rrceZdZdS)5IsShareableTests.test_not_shareable.<locals>.SubBytesN)rZr[r\rbrrSubBytesrIs11rrTF.gY@Wensleydaler)
bytesNotImplementedrobjectrrreprassertFalserr)rWrrnot_shareablesrs     rtest_not_shareablez#IsShareableTests.test_not_shareableBsO	!	!	!	!	!	!	!	!	2	2	2	2	2u	2	2	2
}%%!!""	4	4Cd3ii((
4
4   --c22444
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4	4	4s.CC	C	N)rZr[r\rrrbrrrr1s2
4
4
444444rrcReZdZfdZfdZdZdZdZdZdZ	dZ
d	ZxZS)
ShareableTypeTestsctt|_dSr)rTsetUprchannel_createrrWrXs rrzShareableTypeTests.setUpes+


..00rct|jtdSr)rrrrTrrs rrzShareableTypeTests.tearDownis5$$TX...
rct|D]}||5t|j|t|j}||||t|t|dddn#1swxYwYdSr)rrrrrassertEqualassertIsr)rWvaluesrgots    r_assert_valuesz!ShareableTypeTests._assert_valuesms	4	4Cc""
4
4))$(C888"//99  c***

d3iic333
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4	4	4sBB,,B0	3B0	cdD]}||5t|j|t|j}|||dddn#1swxYwYdS)Nr)rrrrrr)rWrrs   rtest_singletonsz"ShareableTypeTests.test_singletonsxs	(	(Cc""
(
())$(C888"//99

c3'''
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(	(	(sAA<<B	B	c@|dd|jgdS)Nri')rrrs r
test_typeszShareableTypeTests.test_typess4H					rc`|dtddDdS)Nc3FK|]}|dddVdS)littleT)signedN)to_bytes).0is  r	<genexpr>z0ShareableTypeTests.test_bytes.<locals>.<genexpr>sH55 !JJq(4J@@555555r)rrangers r
test_byteszShareableTypeTests.test_bytessH55%*2s^^555	5	5	5	5	5rc4|gddS)N)zhello worldu你好世界)rrs r	test_strszShareableTypeTests.test_strss#???@@@@@rc|tjtddtjtjdz
gdS)Nrrr)r	itertoolschainrsysmaxsizers rtest_intzShareableTypeTests.test_intsVIOE"cNN-0[3;,:J,KMM	N	N	N	N	NrcTtjdztjdz
ddzg}|D]}||5|t5t
|j|dddn#1swxYwYdddn#1swxYwYdS)Nrr)rrrassertRaises
OverflowErrorrrr)rWintsrs   rtest_non_shareable_intz)ShareableTypeTests.test_non_shareable_ints'K!O
[L1
tG

	;	;Aa
;
;&&}55;; --dh:::;;;;;;;;;;;;;;;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;	;	;s5B!B9BB		BB	
BB 	#B 	)
rZr[r\rrrrrrrrrr^r_s@rrrcs11111444(((555AAANNN	;	;	;	;	;	;	;rrc eZdZdZdZdZdS)ListAllTestsct}t}|||gdSr)rrArr)rWrEidss   rtest_initialzListAllTests.test_initialsB$$&&##%%tf%%%%%rct}t}t}t}|||||gdSr)rrArSrrrWrEfirstsecondrs     rtest_after_creatingz ListAllTests.test_after_creatingsi$$&&##%%$$&&##%%tUF344444rc2t}t}t}t|t}||||gdSr)rrArSrrrrs     rtest_after_destroyingz"ListAllTests.test_after_destroyingsz$$&&##%%$$&&U#####%%tVn-----rN)rZr[r\rrr
rbrrrrsA&&&
555.....rrceZdZdZdZdS)GetCurrentTestsct}t}|||||tjdSr)rrArBrassertIsInstancerR)rWrEcurs   r	test_mainzGetCurrentTests.test_mainsY$$&&&&((d###c<#=>>>>>rcvt}t}t|t	d}t|}t\}}||||	||dS)Nz
            import _xxsubinterpreters as _interpreters
            cur = _interpreters.get_current()
            print(cur)
            assert isinstance(cur, _interpreters.InterpreterID)
            )
rrArSr#rintstriprrassertNotEqual)rWrEroutrr+expecteds       rtest_subinterpreterz#GetCurrentTests.test_subinterpreters$$&&$$&&&&*###))++"++--8h'''C&&&&&rN)rZr[r\rrrbrrrrs2???'''''rrceZdZdZdZdS)GetMainTestsct\}t}|||||tjdSr)rrrArrrR)rWrrEs   rtest_from_mainzGetMainTests.test_from_mains[!**,,
$$&&x(((dL$>?????rct\}t}t|t	d}t|}|||dS)Nz
            import _xxsubinterpreters as _interpreters
            main = _interpreters.get_main()
            print(main)
            assert isinstance(main, _interpreters.InterpreterID)
            )rrrSr#rrrr)rWrrrrEs     rtest_from_subinterpreterz%GetMainTests.test_from_subinterpreters{!**,,
$$&&&&*##399;;x(((((rN)rZr[r\rrrbrrrrs5@@@
)
)
)
)
)rrc^eZdZdZejddZdZdZdZ	dZ
dS)	IsRunningTestsct}|t|dSr)rrArr()rWrEs  rrzIsRunningTests.test_mains9$$&&//5566666rzFails on FreeBSDct}|t|t	|5|t|dddn#1swxYwY|t|dSr)rrSrr(r:rrWrs  rrz"IsRunningTests.test_subinterpreters$$&&0088999
f

	=	=OOL33F;;<<<	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=008899999s.BBBct}t|td|d}||ddS)Nz`
            import _xxsubinterpreters as _interpreters
            if _interpreters.is_running(zZ):
                print(True)
            else:
                print(False)
            True)rrSr#rrr)rWrrs   rrz'IsRunningTests.test_from_subinterpretersm$$&&&&*)/***##	
f-----rct}t||t5t|ddddS#1swxYwYdSr)rrSrrr)r(r"s  rtest_already_destroyedz%IsRunningTests.test_already_destroyeds$$&&V$$$


|
,
,	,	,##F+++	,	,	,	,	,	,	,	,	,	,	,	,	,	,	,	,	,	,A66A:=A:c|t5tdddddS#1swxYwYdSNi@B)rr)rr(rs rtest_does_not_existz"IsRunningTests.test_does_not_exists


|
,
,	/	/##I...	/	/	/	/	/	/	/	/	/	/	/	/	/	/	/	/	/	/AA
Ac|t5tdddddS#1swxYwYdSNr)rrPrr(rs rtest_bad_idzIsRunningTests.test_bad_id	s


z
*
*	(	(##B'''	(	(	(	(	(	(	(	(	(	(	(	(	(	(	(	(	(	(r+N)rZr[r\runittestskiprrr&r*r.rbrrrrs777X]%&&::'&:	.	.	.,,,///(((((rrc8eZdZdZdZdZdZdZdZdZ	dS)	InterpreterIDTestsctdd}|t|ddS)NrTr)rrRrrrWr=s  r
test_with_intz InterpreterIDTests.test_with_ints<

'
'$
'
7
7R"%%%%%rcGddt}t|d}|t	|ddS)NceZdZdZdS).InterpreterIDTests.test_coerce_id.<locals>.IntcdSNrrbrs r	__index__z8InterpreterIDTests.test_coerce_id.<locals>.Int.__index__rrNrZr[r\r;rbrrIntr8#




rr>Trr)rJrrRrr)rWr>r=s   rtest_coerce_idz!InterpreterIDTests.test_coerce_idsn					#			
'
'T
'
:
:R"%%%%%rc|ttjt	|ttjd|ttjd|ttjd|t
tjd|ttjddSNg$@10s10rl)r	TypeErrorrrRrrPrrs rr.zInterpreterIDTests.test_bad_ids)\%?JJJ)\%?FFF)\%?FFF)\%?GGG*l&@"EEE-)CUKKKKKrct}|t5tt|dzddddS#1swxYwYdSNr)rrrr)rRrr4s  rr*z&InterpreterIDTests.test_does_not_exist%s

(
(
*
*


|
,
,	4	4&&s2ww{333	4	4	4	4	4	4	4	4	4	4	4	4	4	4	4	4	4	4s+A,,A03A0ctdd}|t|ddSNrTrrC)rrRrrJr4s  rtest_strzInterpreterIDTests.test_str*s<

'
'$
'
7
7R$'''''rctdd}|t|ddS)NrTrzInterpreterID(10))rrRrrr4s  r	test_reprzInterpreterIDTests.test_repr.s=

'
'$
'
7
7b#677777rct}tt|}t}|||k|||k||t|k|t||k||tt|k|tt||k||tt|dzk||tt|k||ddzk||tdk||dk|||k|||k|||k|||kdSN皙?rrinfr)rrSrRrrfloatrrJrWid1id2id3s    r
test_equalityz InterpreterIDTests.test_equality2s!!##((S22!!##s
###s
###s3xx(((CC(((uSXX.///c#hh3.///c#hh# 55666CHH

-...4(((e,---'''$$$$$$$$$s
#####rN)
rZr[r\r5r@r.r*rIrKrUrbrrr2r2s&&&
&&&LLL444
(((888$$$$$rr2cdeZdZdZejddZdZdZdZ	dZ
dZd	S)
CreateTestsct}||tj||tdSr)rrSrrRassertInrr4s  rtest_in_mainzCreateTests.test_in_mainKsR

 
 
"
"b,"<===

b,//1122222rz*enable this test when working on pystate.cct}tdD]J}t}t|||K|t|ddS)Nd)setrrrSraddrlen)rWseenr+r=s    rtest_unique_idzCreateTests.test_unique_idQsxuus		A$$&&B  $$$HHRLLLLTC(((((rcHtjdfd}tj|}5|dddn#1swxYwY||tdS)NctdSr)rrSacquirerelease)r=locksrfz%CreateTests.test_in_thread.<locals>.f^s2$$&&BLLNNNLLNNNNNrr0)r3Lockr4r5r7rYrr)rWrgr8r=rfs   @@rtest_in_threadzCreateTests.test_in_thread[s~
						
A&&&
		
GGIII																

b,//1122222sAAAcdt\}t}t|t	d}t|}|tt|||hdS)Nz
            import _xxsubinterpreters as _interpreters
            id = _interpreters.create()
            print(id)
            assert isinstance(id, _interpreters.InterpreterID)
            )	rrrSr#rrrrr])rWrErRrrSs     rtest_in_subinterpreterz"CreateTests.test_in_subinterpreterjs%%''!!###v'  #))++\224455c37GHHHHHrcvt\}tdfd}tj|}|||tt|hdS)Ncttd}t|dS)Nz
                import _xxsubinterpreters as _interpreters
                id = _interpreters.create()
                print(id)
                )r#rrr)rrRrSs rrgz6CreateTests.test_in_threaded_subinterpreter.<locals>.f{s@c6+$$C
ciikk""CCCrr0)	rrrSr3r4r5r7rr])rWrErgr8rRrSs    @@rtest_in_threaded_subinterpreterz+CreateTests.test_in_threaded_subinterpreterws%%''!!##	#	#	#	#	#	#
A&&&					\224455c37GHHHHHrctt}g}tdD]0}t}||1|D]}t|t}|tt||hzdSN)r]rrrrSappendrrrWbeforerr+r=s     rtest_after_destroy_allz"CreateTests.test_after_destroy_alls\**,,--q		A$$&&BJJrNNNN	%	%B  $$$$

 
 
"
"\224455v}EEEEErctt}t}t}t}t|t|t}|tt|||hzdSr)r]rrrSrr)rWrtrRrSrTr=s      rtest_after_destroy_somez#CreateTests.test_after_destroy_somes\**,,--!!##!!##!!##S!!!S!!!

 
 
"
"\224455vS	7IJJJJJrN)rZr[r\rZr/r0rarirkrnrurwrbrrrWrWIs333X]?@@))A@)
3
3
3IIIIII&FFFKKKKKrrWcJeZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdS)DestroyTestsc8t}t}t}||tt|||t||t||tdSr)rrSrYrrassertNotInrQs    rtest_onezDestroyTests.test_ones!!##!!##!!##

c<0022333S!!!l3355666

c<0022333

c<002233333rctt}t}tdD]0}t}||1|tt||z|D]}t||tt|dSrp)r]rrrrSr^rrrss     rtest_allzDestroyTests.test_alls\**,,--eeq		A$$&&BGGBKKKK\224455v|DDD	%	%B  $$$$\224455v>>>>>rc^t\t5tdddn#1swxYwYfd}tj|}||dS)Nct5tddddS#1swxYwYdSrrr)rr)rErWsrrgz!DestroyTests.test_main.<locals>.fs""<00
+
+$$T***
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+sAAAr0)	rrrr)rr3r4r5r7)rWrgr8rEs`  @rrzDestroyTests.test_mains%%''


|
,
,	'	'  &&&	'	'	'	'	'	'	'	'	'	'	'	'	'	'	'	+	+	+	+	+	+
A&&&					sAA#&A#ct}t||t5t|ddddS#1swxYwYdSr)rrSrrr)r4s  rr&z#DestroyTests.test_already_destroyeds

 
 
"
"R   


|
,
,	%	%  $$$	%	%	%	%	%	%	%	%	%	%	%	%	%	%	%	%	%	%r'c|t5tdddddS#1swxYwYdSr)rrs rr*z DestroyTests.test_does_not_exists


|
,
,	,	,  +++	,	,	,	,	,	,	,	,	,	,	,	,	,	,	,	,	,	,r+c|t5tdddddS#1swxYwYdSr-)rrPrrrs rr.zDestroyTests.test_bad_ids


z
*
*	%	%  $$$	%	%	%	%	%	%	%	%	%	%	%	%	%	%	%	%	%	%r+cBt\}t}td|d}t|||t
t||hdS)Nzo
            import _xxsubinterpreters as _interpreters
            try:
                _interpreters.destroy(zD)
            except RuntimeError:
                pass
            rrrSrrrr])rWrEr=rs    rtest_from_currentzDestroyTests.test_from_currents%%''

 
 
"
"(*	F+++\224455bzBBBBBrctt\}t}t}td|d}t|||t
t||hdS)NzZ
            import _xxsubinterpreters as _interpreters
            _interpreters.destroy()
            r)rWrErRrSrs     rtest_from_siblingzDestroyTests.test_from_siblings%%''!!##!!###&	V,,,\224455c{CCCCCrctfd}tj|}||dS)Nc<tdSr)rrrsrrgz.DestroyTests.test_from_other_thread.<locals>.fs  $$$$$rr0)rrSr3r4r5r7)rWrgr8r=s   @rtest_from_other_threadz#DestroyTests.test_from_other_threads`

 
 
"
"	%	%	%	%	%
A&&&					rc"t\}t}t|5|t|d|d|td|d5t|dddn#1swxYwY|t|ddddS#1swxYwYdS)NzInterp z& should be running before destruction.)msgz%Should not be able to destroy interp z while it's still running.)	rrrSr:rr(rr)r)rWrErs   rtest_still_runningzDestroyTests.test_still_runnings%%''$$&&
f

	=	=OOL33F;; X& X X X

Z
Z
Z""<'qv'q'q'q#ss
-
-$$V,,,
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
OOL33F;;<<<	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=s7ADB?3D?C	DC	0DDDN)
rZr[r\r|r~rr&r*r.rrrrrbrrryrys444	?	?	?%%%,,,%%%CCC
D
D
D
=
=
=
=
=rryceZdZfdZdZdZdZejdZ	dZ
dZdZd	Z
d
ZdZejdd
ZdZdZdZdZdZdZdZdZdZejddZxZS)RunStringTestsctt|_dSr)rTrrrSr=rs rrzRunStringTests.setUp
s+


%%''rctd\}}|5t|j||}dddn#1swxYwY||ddS)Nprint("it worked!", end="")
it worked!)rrrr=rr)rWrfilers    rtest_successzRunStringTests.test_successs'(EFF
		##DGV444))++C																
l+++++s5AAAc<td\}|5fd}tj|}|||}dddn#1swxYwY|ddS)NrcHtjdSr)rrr=)rrWsrrgz(RunStringTests.test_in_thread.<locals>.fs!''88888rr0r)rr3r4r5r7rr)rWrrgr8rrs`    @rrizRunStringTests.test_in_threads'(EFF
		
9
9
9
9
9
9 ***A
GGIII
FFHHH))++C																
l+++++sAA;;A?A?ctd}td\}}|5t|||}dddn#1swxYwY||ddS)NF)isolatedz
            import threading
            def f():
                print('it worked!', end='')

            t = threading.Thread(target=f)
            t.start()
            t.join()
            r)rrSrrrr)rW	subinterprrrs     rtest_create_threadz!RunStringTests.test_create_thread#s '''77	')		##Iv666))++C																
l+++++s0A,,A03A0cddl}|dd5}|d|d}t	d|jd|d	}t|j||	d|
}|||ddddS#1swxYwYdS)
Nrzw+rrrzspam spam spam spam spamz
                import os
                try:
                    os.fork()
                except RuntimeError:
                    with open('zE', 'w', encoding='utf-8') as out:
                        out.write('z')
                )tempfileNamedTemporaryFiler6flushrrVrrr=seekrr)rWrrrrcontents      r	test_forkzRunStringTests.test_fork4s+

(
(
(
@
@	0DJJrNNNJJLLL1H
!%	%-
F
##DGV444IIaLLLiikkGWh///#	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0sB&CCCct|j5|t5t|jddddn#1swxYwYddddS#1swxYwYdS)N
print("spam"))r:r=rr)rrrs rtest_already_runningz#RunStringTests.test_already_runningJs
dg

	B	B""<00
B
B''AAA
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B	B	B	B	B	B	B	B	B	B	B	B	B	B	B	B	B	B	Bs4A5!AA5A!	!A5$A!	%A55A9<A9cd}|tvr |dz
}|tv |t5t|dddddS#1swxYwYdS)Nrrr)rrrr)rr4s  rr*z"RunStringTests.test_does_not_existOs
L))++++!GBL))++++


|
,
,	9	9##B888	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9sBBBc|t5tddddddS#1swxYwYdS)Nrr)rrPrrrs r
test_error_idzRunStringTests.test_error_idVs


z
*
*	9	9##B888	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9AAAc|t5tddddddS#1swxYwYdS)Nrr)rrDrrrs rr.zRunStringTests.test_bad_idZs


y
)
)	=	=##FO<<<	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=rc|t5t|jdddddS#1swxYwYdSr:rrDrrr=rs rtest_bad_scriptzRunStringTests.test_bad_script^s


y
)
)	1	1##DGR000	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1!A		A
A
c|t5t|jdddddS#1swxYwYdS)Ns
print("spam")rrs rtest_bytes_for_scriptz$RunStringTests.test_bytes_for_scriptbs


y
)
)	?	?##DG-=>>>	?	?	?	?	?	?	?	?	?	?	?	?	?	?	?	?	?	?rNc#K|tj5}dVdddn#1swxYwY|P|t	|jddt	|dS|t	|jd||dS)N:rz{}: {})rrRunFailedErrorrrJ	exceptionsplitrQ)rWexctypercaughts    rassert_run_failedz RunStringTests.assert_run_failedfs



|:
;
;	vEEE															;S!12288==a@ \\
+
+
+
+
+
S!122%__Wc::
<
<
<
<
<s377c|t5t|jdddddS#1swxYwYdS)Nzprint("spam")rSyntaxErrorrrr=rs rtest_invalid_syntaxz"RunStringTests.test_invalid_syntaxqs

#
#K
0
0	=	=##DG^<<<	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=rc|td5t|jdddddS#1swxYwYdS)Nrzraise Exception("spam"))rrrrr=rs rtest_failurezRunStringTests.test_failurevs

#
#Iv
6
6	H	H##DG-FGGG	H	H	H	H	H	H	H	H	H	H	H	H	H	H	H	H	H	H!A

AAc|td5t|jdddddS#1swxYwYdS)N42zraise SystemExit(42))r
SystemExitrrr=rs rtest_SystemExitzRunStringTests.test_SystemExitzs

#
#J
5
5	E	E##DG-CDDD	E	E	E	E	E	E	E	E	E	E	E	E	E	E	E	E	E	Erc|t5t|jtddddn#1swxYwY|td5t|jtdddddS#1swxYwYdS)NzG
                import sys
                sys.exit()
                rzI
                import sys
                sys.exit(42)
                )rrrrr=rrs r
test_sys_exitzRunStringTests.test_sys_exit~sA

#
#J
/
/		##DGV5..


															
#
#J
5
5		##DGV5..


																		s#.AAA;.B66B:=B:ctj\}}dddd}td|d}t|j||t
|d5}tj|}dddn#1swxYwY|	|dd|	|d	d
|	|dd|
|d
dS)Nhams-1)reggscheddarz
            eggs = int(eggs)
            spam = 42
            result = spam + eggs

            ns = dict(vars())
            del ns['__builtins__']
            import pickle
            with open(C, 'wb') as chan:
                pickle.dump(ns, chan)
            rbr*rrr)r)rrrrrr=rpickleloadrassertIsNonerWrrr!rchannss       rtest_with_sharedzRunStringTests.test_with_sharedsKwyy1






	888
!T]]	#dT""B	#	#	#	#	#	#	#	#	#	#	#	#	#	#	#	
FR(((FR(((Hr***"Y-(((((s!BB	Bct|jtdddi}td}t|j||t	j\}}td|d}t|j|t
|d5}tj|}dddn#1swxYwY|	|ddd	|	|d
dd|	|dddS)Nzj
            spam = 'eggs'
            ns1 = dict(vars())
            del ns1['__builtins__']
            rrzL
            ns2 = dict(vars())
            del ns2['__builtins__']
        zr
            ns = dict(vars())
            del ns['__builtins__']
            import pickle
            with open(rrns1rns2)
rrr=rrrrrrr)rWr!rrrrrs       rtest_shared_overwritesz%RunStringTests.test_shared_overwritess1**			&!

	888wyy1		000
!T]]	#dT""B	#	#	#	#	#	#	#	#	#	#	#	#	#	#	#	
E6*F333E6*F333FV,,,,,s;CC #C cRtj\}}ddi}td|d}t|j||t
|d5}tj|}dddn#1swxYwY|	|dddS)NrZsnot __main__z
            spam = 42

            ns = dict(vars())
            del ns['__builtins__']
            import pickle
            with open(rr)
rrrrrr=rrrrrs       r#test_shared_overwrites_default_varsz2RunStringTests.test_shared_overwrites_default_varsswyy1o.
	888
!T]]	#dT""B	#	#	#	#	#	#	#	#	#	#	#	#	#	#	#	
J99999sBBBctj\}}t|jtd|dt
|d5}tj|}dddn#1swxYwYtj\}}t|jtd|dt
|d5}tj|}dddn#1swxYwY|	d||
d||	d||	d|dS)Nz
            spam = True

            ns = dict(vars())
            del ns['__builtins__']
            import pickle
            with open(zd, 'wb') as chan:
                pickle.dump(ns, chan)
            del ns, pickle, chan
            rz
            eggs = False

            ns = dict(vars())
            del ns['__builtins__']
            import pickle
            with open(rrr)rrrrr=rrrrrYr{)rWrrrrrs      rtest_main_reusedzRunStringTests.test_main_reusedswyy1	1
	1	1	1	*	*						!T]]	$d+d##C	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$wyy11
111**			!T]]	$d+d##C	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$	


fc"""%%%

fc"""

fc"""""s$A99A=A=C<<DDc
tj\}}td|d}t|j|t
|d5}tj|}dddn#1swxYwY|	d|	d|
|diddddddS)	Nz
            spam = 42

            ns = dict(vars())
            ns['__builtins__'] = str(ns['__builtins__'])
            import pickle
            with open(rr__builtins__
__loader____main__r)rZ__annotations____doc____package____spec__r)rrrrrr=rrrpopr)rWrrrrrs      r test_execution_namespace_is_mainz/RunStringTests.test_execution_namespace_is_mains(wyy1
	000
!T]]	#dT""B	#	#	#	#	#	#	#	#	#	#	#	#	#	#	#	~
|"!
					sA;;A?A?zblocking forevercRtd}tj5}tj|d|}tj|5}|}dddn#1swxYwYdddn#1swxYwY||ddS)Na
        from textwrap import dedent
        import threading
        import _xxsubinterpreters as _interpreters
        id = _interpreters.create()
        def f():
            _interpreters.run_string(id, dedent('''
                import time
                # Give plenty of time for the main interpreter to finish.
                time.sleep(1_000_000)
                '''))

        t = threading.Thread(target=f)
        t.start()
        rr)rrtemp_dirrmake_scriptspawn_pythonwaitr)rWrdirnamefilenameprocretcodes      rtest_still_running_at_exitz)RunStringTests.test_still_running_at_exits




	&7$0(FKKH+H55
&))++
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&	&	&	&	&	&	&	&	&	&	&	&	&	&	&	&
	
!$$$$$s5+BA/#B/A3	3B6A3	7BB

B
r) rZr[r\rrrirr
requires_forkrrr*rr.rr
contextlibcontextmanagerrrrrrrrrrrr/r0rr^r_s@rrrs(((((,,,,,,,,,"W000*BBB
999999===111???<<<<===
HHHEEE)))8---<:::&###B8X]%&&%%'&%%%%%rrcDeZdZdZdZdZdZdZdZdZ	dZ
d	Zd
S)ChannelIDTestsctdd}|t|d||jddS)NrTrrg)r_channel_idrrrjrWrs  rtest_default_kwargsz"ChannelIDTests.test_default_kwargs3sT&&r&66S2&&&&)))))rc<tddd}||jdtdddd}||jdtddd}||jdtdddd	}||jdtdddd}||jd
dS)NrTrorroFrorprrprrp)rprorrg)rrrrjrs  rtest_with_kwargszChannelIDTests.test_with_kwargs9s&&rD&AA&)))&&r5&MM&)))&&rD&AA&)))&&r5&MM&)))&&r4t&LL&)))))rcGddt}t|d}|t	|ddS)NceZdZdZdS)*ChannelIDTests.test_coerce_id.<locals>.IntcdSr:rbrs rr;z4ChannelIDTests.test_coerce_id.<locals>.Int.__index__Kr<rNr=rbrrr>rJr?rr>Trr)rJrrrr)rWr>rs   rr@zChannelIDTests.test_coerce_idIsn					#			&&ssuuD&99S2&&&&&rc|ttjt	|ttjd|ttjd|ttjd|t
tjd|ttjddSrB)rrDrrrrPrrs rr.zChannelIDTests.test_bad_idQs)\%=vxxHHH)\%=tDDD)\%=tDDD)\%=uEEE*l&>CCC-)A5IIIIIrc|t5tdddddddS#1swxYwYdS)NrFrorp)rrPrrrs rtest_bad_kwargszChannelIDTests.test_bad_kwargsYs


z
*
*	A	A$$Re%$@@@	A	A	A	A	A	A	A	A	A	A	A	A	A	A	A	A	A	AsAA

A
ct}|tj5tt|dzddddS#1swxYwYdSrF)rrrrrrrs  rr*z"ChannelIDTests.test_does_not_exist]s))++


|@
A
A	3	3$$SXX\222	3	3	3	3	3	3	3	3	3	3	3	3	3	3	3	3	3	3s+A11A58A5ctdd}|t|ddSrH)rrrrJrs  rrIzChannelIDTests.test_strbs<&&r&66S4(((((rctdd}|t|dtddd}|t|dtddd}|t|dtdddd	}|t|ddS)
NrTrz
ChannelID(10)rzChannelID(10, send=True)rzChannelID(10, recv=True)r)rrrrrs  rrKzChannelIDTests.test_reprfs&&r&66cO444&&rD&AAc$>???&&rD&AAc$>???&&r4t&LLcO44444rct}tt|}t}|||k|||k||t|k|t||k||tt|k|tt||k||tt|dzk||tt|k||ddzk||tdk||dk|||k|||k|||k|||kdSrM)rrrrrrPrrJ)rWcid1cid2cid3s    rrUzChannelIDTests.test_equalityss**,,''D		22**,,%%%%%%D		)***D		T)***c$ii 0 00111c$ii((D0111s4yy!1!1C!77888SYY/000D)))u-...(((&&&&&&&&&%%%%%rN)rZr[r\rrr@r.rr*rIrKrUrbrrrr1s****** '''JJJAAA333
)))555&&&&&rrceZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZdZdZdZdZdZdZejddZdZdZdZdZdZdZdZ dZ!dZ"d Z#d!Z$d"Z%d#Z&d$Z'd%Z(d&Z)d'S)(ChannelTestscxt}||tjdSr)rrr	ChannelIDrs  rtest_create_cidzChannelTests.test_create_cids2))++c<#9:::::rct}t}t}t}t}||t	|dz||t	|dz|t|t|z
|||hdSrF)rrrrrr])rWrtrRrSrTafters      rtest_sequential_idsz ChannelTests.test_sequential_idss..00))++))++))++--//c#hhl+++c#hhl+++Uc&kk1Cc?CCCCCrct}t|td}t	|}t}t|td}t	|}||t	|dzdS)Nz
            import _xxsubinterpreters as _interpreters
            cid = _interpreters.channel_create()
            print(cid)
            r)rrSr#rrrr)rWrRrr
rSrs      rtest_ids_globalzChannelTests.test_ids_globals!!###v'  
399;;!!###v'  
399;;s4yy1}-----rc	t}t|d}t|d}||g||gdS)NTroF)rrchannel_list_interpretersr)rWrsend_interpsrecv_interpss    r#test_channel_list_interpreters_nonez0ChannelTests.test_channel_list_interpreters_nonesxK))++#==c=MM#==c=NNr***r*****rc	t}t}t|dt|d}t|d}|||g||gt}t|td|dt|d}t|d}|||g|||gdS)NroTrFe
            import _xxsubinterpreters as _interpreters
            obj = _interpreters.channel_recv(r)	rrArrrrrSr#r)rWinterp0rrrinterp1s      r$test_channel_list_interpreters_basicz1ChannelTests.test_channel_list_interpreters_basicsK6''))))++!!#v...#==c=MM#==c=NNy111r***%%''GV%.1%%%			
$==c=MM#==c=NNy111y11111rc	t}t}t}t}t}t|dt|t
d|dt|t
d|dt|t
d|dt|d}t|d}|t|||h|t|||hdS)	Nro_
            import _xxsubinterpreters as _interpreters
            _interpreters.channel_send(z, "send")
            r!rTrF)
rrArSrrr#rrrr])rWr"r#interp2interp3rrrs        r'test_channel_list_interpreters_multiplez4ChannelTests.test_channel_list_interpreters_multiplesM''))%%''%%''%%''))++!!#v...GV%(+%%%				GV%.1%%%				GV%.1%%%			$==c=MM#==c=NN\**Wg,>???\**Wg,>?????rc	t}t}t}t|dt|t
d|dt|d}t|d}|||g|||gt	|t|d}t|d}|||g||gdS)Nror!rTrF)
rrArSrrr#rrrrrWr"r#rrrs      r(test_channel_list_interpreters_destroyedz5ChannelTests.test_channel_list_interpreters_destroyeds_M''))%%''))++!!#v...GV%.1%%%			
$==c=MM#==c=NNy111y111W%%%#==c=MM#==c=NNy111r*****rc	t}t}t}t}t|dt|t
d|dt|dt|t
d|dt|d}t|d}|t|d|t|dt
|dt|d}t|d}|t|d	|t|dt|t
d
|dt|d}t|d}|t|d	|||gdS)Ndatar!rTrFrrrb
            import _xxsubinterpreters as _interpreters
            _interpreters.channel_release()rrArSrrr#rrrr_channel_release)rWr"r#r'rrrs       r'test_channel_list_interpreters_releasedz4ChannelTests.test_channel_list_interpreters_releasedsH''))%%''%%''))++!!#v...GV%.1%%%				!!#v...GV%.1%%%			
$==c=MM#==c=NN\**A...\**A...	$$St$444#==c=MM#==c=NN\**A...\**A...	GV%+.%%%			
$==c=MM#==c=NN\**A...y11111rcV	t}t}t}t|dt|d}t|d}|t|d|t|dt|d|	tj
5t|ddddn#1swxYwY|	tj
5t|dddddS#1swxYwYdS)NroTrFrrr)rrArSrrrrr_rrrar+s      r%test_channel_list_interpreters_closedz2ChannelTests.test_channel_list_interpreters_closed)sF''))%%''))++!!#v...$==c=MM#==c=NN\**A...\**A...	""3d"333


|>
?
?	C	C223T2BBB	C	C	C	C	C	C	C	C	C	C	C	C	C	C	C


|>
?
?	D	D223U2CCC	D	D	D	D	D	D	D	D	D	D	D	D	D	D	D	D	D	Ds$!E

EE4FF"%F"c	t}t}t}t|dt|d}t|d}|t|d|t|dt|d|	tj
5t|ddddn#1swxYwYt|d}|t|dt|td|d|	tj
5t|ddddn#1swxYwY|	tj
5t|dddddS#1swxYwYdS)	NroTrFrr`
            import _xxsubinterpreters as _interpreters
            _interpreters.channel_close(, force=True)
            )
rrArSrrrrr_rrrar#rr+s      r.test_channel_list_interpreters_closed_send_endz;ChannelTests.test_channel_list_interpreters_closed_send_end?sQ''))%%''))++!!#v...$==c=MM#==c=NN\**A...\**A...	""3T"222


|>
?
?	C	C223T2BBB	C	C	C	C	C	C	C	C	C	C	C	C	C	C	C$==c=NN\**A...	GV%),%%%			


|>
?
?	C	C223T2BBB	C	C	C	C	C	C	C	C	C	C	C	C	C	C	C


|>
?
?	D	D223U2CCC	D	D	D	D	D	D	D	D	D	D	D	D	D	D	D	D	D	Ds6!E

EEG==HH'IIIct}d}t||t|}||||||dSNr)rrrrrassertIsNot)rWrorigrs    rtest_send_recv_mainz ChannelTests.test_send_recv_maincss))++!!#t,,,'',,d###d#####rcrt}t|td}dS)Na6
            import _xxsubinterpreters as _interpreters
            cid = _interpreters.channel_create()
            orig = b'spam'
            _interpreters.channel_send(cid, orig)
            obj = _interpreters.channel_recv(cid)
            assert obj is not orig
            assert obj == orig
            )rrSr#r)rWrRrs   rtest_send_recv_same_interpreterz,ChannelTests.test_send_recv_same_interpreterls9!!###v'  rct}t}t|t	d|d}t|}||ddS)Nr&, b'spam')
            r)rrrSr#rrr)rWrrRrrs     r%test_send_recv_different_interpretersz2ChannelTests.test_send_recv_different_interpretersxs))++!!###v'(+'''  '',,g&&&&&rcTtfd}tj|}|td|t}||ddS)Nc		t}n*#tj$rtjdYnwxYwFt|dS)NTrN)rrrtimesleepr)rrs rrgz8ChannelTests.test_send_recv_different_threads.<locals>.fsu
$$&33C88C#5$$$JsOOOOO$	
$
%%c3/////s#AAr0r)	rrr3r4r5rr7rr)rWrgr8rrs    @r test_send_recv_different_threadsz-ChannelTests.test_send_recv_different_threadss))++	0	0	0	0	0
A&&&				!!#w///	'',,g&&&&&rcttdfd}tj|}|td|t}|	|ddS)Nc
PttddddS)Nz
                import time
                import _xxsubinterpreters as _interpreters
                while True:
                    try:
                        obj = _interpreters.channel_recv(z)
                        break
                    except _interpreters.ChannelEmptyError:
                        time.sleep(0.1)
                assert(obj == b'spam')
                _interpreters.channel_send(z, b'eggs')
                )r#r)rrRrsrrgzIChannelTests.test_send_recv_different_interpreters_and_threads.<locals>.fsLc6+
;>++-0+++$$CCCrr0reggs)
rrrSr3r4r5rr7rr)rWrgr8rrrRrs    @@@r1test_send_recv_different_interpreters_and_threadsz>ChannelTests.test_send_recv_different_interpreters_and_threadss))++!!##
	
	
	
	
	
	
	
A&&&				!!#w///	'',,g&&&&&rc|tj5tddddddS#1swxYwYdS)Nrr)rrrrrs rtest_send_not_foundz ChannelTests.test_send_not_founds


|@
A
A	3	3%%b'222	3	3	3	3	3	3	3	3	3	3	3	3	3	3	3	3	3	3sA		A
A
c|tj5tdddddS#1swxYwYdSr:)rrrrrs rtest_recv_not_foundz ChannelTests.test_recv_not_founds


|@
A
A	*	*%%b)))	*	*	*	*	*	*	*	*	*	*	*	*	*	*	*	*	*	*sAAAct}|tj5t|ddddS#1swxYwYdSr)rrrrrrs  rtest_recv_emptyzChannelTests.test_recv_emptys))++


|=
>
>	+	+%%c***	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+sA!!A%(A%cvt}t}t||}t|dt|dt|dt|dt||}t||}t|}t||}t||}|||||d||d||d||d|||dS)NrrrI)rrrrrrr)	rWdefaultrobj1obj2obj3obj4obj5obj6s	         rtest_recv_defaultzChannelTests.test_recv_defaultst(())++((g66!!#t,,,!!#q)))!!#w///!!#w///((g66((g66((--((g66((g66

dG$$$

dD!!!q!!!w'''w'''

dG$$$$$rc|t}t}t|t	dt|j}t|}||d||	ddS)Nz
            import _xxsubinterpreters as _interpreters
            print(cid.end)
            _interpreters.channel_send(cid, b'spam')
            rrro)
rrrSr#rdictrorrrrWrrrrs     rtest_run_string_arg_unresolvedz+ChannelTests.test_run_string_arg_unresolveds))++$$&&&&*##

SX  '',,g&&&f-----rz(disabled until high-level channels existct}t|d}t}t	|tdt
|j}t|}|	|d|	|
ddS)NT)_resolvez
            import _xxsubinterpreters as _interpreters
            print(chan.id.end)
            _interpreters.channel_send(chan.id, b'spam')
            )rrro)rrrrSr#rr[rorrrr\s     rtest_run_string_arg_resolvedz)ChannelTests.test_run_string_arg_resolveds))++&&sT&::$$&&&&*##

ch!!'',,g&&&f-----rct}t|dt|t||tj5t|ddddn#1swxYwY|tj5t|ddddS#1swxYwYdSNrrIrrrrrrrars  rtest_close_single_userz#ChannelTests.test_close_single_usersb))++!!#w///!!#&&&""3'''


|>
?
?	4	4%%c7333	4	4	4	4	4	4	4	4	4	4	4	4	4	4	4


|>
?
?	+	+%%c***	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+$B00B47B4DD	Dc	t}t}t}t|t	d|dt|t	d|dt||tj5}t|t	d|ddddn#1swxYwY|dt|j
|tj5}t|t	d|ddddn#1swxYwY|dt|j
dS)Nr&r@z_
            import _xxsubinterpreters as _interpreters
            _interpreters.channel_recv(rz,
                _interpreters.channel_send(z, b'spam')
                ra)rrrSrrrrrrYrJr)rWrrRrScms     rtest_close_multiple_usersz&ChannelTests.test_close_multiple_userss[))++!!##!!##V-(+---&&				V-(+---&&				""3'''


|:
;
;	r##C1,/111**


																


*C,=,=>>>


|:
;
;	r##C1,/111**


																


*C,=,=>>>>>s$-DDD(-F!!F%(F%czt}t|dt|t||tj5t|ddddS#1swxYwYdSr9rcrs  rtest_close_multiple_timesz&ChannelTests.test_close_multiple_timess))++!!#w///!!#&&&""3'''


|>
?
?	,	,&&s+++	,	,	,	,	,	,	,	,	,	,	,	,	,	,	,	,	,	,sB00B47B4cgd}|D]C\}}|||f5t}t|dt|t||||tj5t|ddddn#1swxYwY|tj5t|dddn#1swxYwYdddn#1swxYwYEdS)N))FFTF)FT)TTrrrI)rrrrrrrra)rWtestsrorprs     rtest_close_emptyzChannelTests.test_close_empty&s 
	3
	3JD$tTl++	
3	
3"1133))#w777))#...**3T*EEE&&|'FGG<< --c7;;;<<<<<<<<<<<<<<<&&|'FGG33 --c222333333333333333	
3	
3	
3	
3	
3	
3	
3	
3	
3	
3	
3	
3	
3	
3	
3
	3
	3sZBD?/CD?CD?C"D?D(D?(D,,D?/D,0D??E	E	ct}t|dt|d|tj5t|dddn#1swxYwYt|t|ddS)NrrrIrrrrChannelNotEmptyErrorrrrs  r%test_close_defaults_with_unused_itemsz2ChannelTests.test_close_defaults_with_unused_items9s))++!!#w///!!#v...


|@
A
A	,	,&&s+++	,	,	,	,	,	,	,	,	,	,	,	,	,	,	,!!#&&&!!#w/////s/BBBcTt}t|dt|d|tj5t|ddddn#1swxYwYt|t|dt|t|t|ddS)NrrTrprIrprs  r*test_close_recv_with_unused_items_unforcedz7ChannelTests.test_close_recv_with_unused_items_unforcedCs5))++!!#w///!!#v...


|@
A
A	7	7&&s&666	7	7	7	7	7	7	7	7	7	7	7	7	7	7	7!!#&&&!!#w///!!#&&&!!#&&&""3T"22222s/BBBct}t|dt|dt|d|tj5t|ddddn#1swxYwYt|t||tj5t|ddddS#1swxYwYdS)NrrTrrIrrrrrrarrs  r*test_close_send_with_unused_items_unforcedz7ChannelTests.test_close_send_with_unused_items_unforcedPs))++!!#w///!!#v...""3T"222


|>
?
?	4	4%%c7333	4	4	4	4	4	4	4	4	4	4	4	4	4	4	4!!#&&&!!#&&&


|>
?
?	+	+%%c***	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+s$B33B7:B7D99D=D=cVt}t|dt|d|tj5t|dddddn#1swxYwYt|t|dt|t|t|ddS)NrrTrrIrtrprs  r*test_close_both_with_unused_items_unforcedz7ChannelTests.test_close_both_with_unused_items_unforced]sH))++!!#w///!!#v...


|@
A
A	B	B&&sD&AAA	B	B	B	B	B	B	B	B	B	B	B	B	B	B	B!!#&&&!!#w///!!#&&&!!#&&&""3T"22222s/BB Bc&t}t|dt|dt|dd|tj5t|ddddn#1swxYwY|tj5t|ddddS#1swxYwYdS)NrrTrrIrwrs  r(test_close_recv_with_unused_items_forcedz5ChannelTests.test_close_recv_with_unused_items_forcedjk))++!!#w///!!#v...""3T">>>


|>
?
?	4	4%%c7333	4	4	4	4	4	4	4	4	4	4	4	4	4	4	4


|>
?
?	+	+%%c***	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+$B44B8;B8DD

D
c&t}t|dt|dt|dd|tj5t|ddddn#1swxYwY|tj5t|ddddS#1swxYwYdS)NrrTrrIrwrs  r(test_close_send_with_unused_items_forcedz5ChannelTests.test_close_send_with_unused_items_forcedur}r~c(t}t|dt|dt|ddd|tj5t|ddddn#1swxYwY|tj5t|ddddS#1swxYwYdS)NrrTrrIrwrs  r(test_close_both_with_unused_items_forcedz5ChannelTests.test_close_both_with_unused_items_forcedsm))++!!#w///!!#v...""3TD"III


|>
?
?	4	4%%c7333	4	4	4	4	4	4	4	4	4	4	4	4	4	4	4


|>
?
?	+	+%%c***	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+s$
B55B9<B9DDDct}t||tj5t|ddddn#1swxYwY|tj5t|ddddS#1swxYwYdSr9)rrrrrarrrs  rtest_close_never_usedz"ChannelTests.test_close_never_useds8))++""3'''


|>
?
?	4	4%%c7333	4	4	4	4	4	4	4	4	4	4	4	4	4	4	4


|>
?
?	+	+%%c***	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+$A;;A?A?%C

CCc>t}t|dt}t|td|d|tj5t|dddn#1swxYwY|tj5t	|ddddS#1swxYwYdS)Nrr5r6)
rrrrSrrrrarrrWrrs   r!test_close_by_unassociated_interpz.ChannelTests.test_close_by_unassociated_interps))++!!#w///$$&&0),000))			

|>
?
?	+	+%%c***	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+


|>
?
?	,	,&&s+++	,	,	,	,	,	,	,	,	,	,	,	,	,	,	,	,	,	,s$CCC*DDDct}t|dt|dt|dt|t|d|tj5t|ddddn#1swxYwY|tj5t|ddddS#1swxYwYdS)NrTrrIrcrs  r-test_close_used_multiple_times_by_single_userz:ChannelTests.test_close_used_multiple_times_by_single_users))++!!#w///!!#w///!!#w///!!#&&&""3d"333


|>
?
?	4	4%%c7333	4	4	4	4	4	4	4	4	4	4	4	4	4	4	4


|>
?
?	+	+%%c***	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+s$C((C,/C,D::D>D>ct}|tj5tdddddn#1swxYwYt||tj5t|dddddS#1swxYwYdS)NrTr)rrrrrrrars  r.test_channel_list_interpreters_invalid_channelz;ChannelTests.test_channel_list_interpreters_invalid_channelsg))++


|@
A
A	D	D224d2CCC	D	D	D	D	D	D	D	D	D	D	D	D	D	D	D	""3'''


|>
?
?	C	C223T2BBB	C	C	C	C	C	C	C	C	C	C	C	C	C	C	C	C	C	Cs#A""A&)A&&CCCct}|t5t|ddddS#1swxYwYdSr)rrrrDrrs  r+test_channel_list_interpreters_invalid_argsz8ChannelTests.test_channel_list_interpreters_invalid_argss))++


y
)
)	8	8223777	8	8	8	8	8	8	8	8	8	8	8	8	8	8	8	8	8	8sAA #A N)*rZr[r\rrrrr$r)r,r1r3r7r<r>rArFrJrLrNrPrYr]r/r0r`rdrhrjrnrrrurxrzr|rrrrrrrrbrrrrsj;;;	D	D	D...&+++222,@@@4+++.)2)2)2VDDD, D D DH$$$


	'	'	''''('''8333***+++
%%%*
.
.
.$X]=>>..?>.$	+	+	+???0,,,333&000333+++333	+	+	+	+	+	+	+	+	++++,,,+++	C	C	C88888rrcPeZdZ			dZdZdZdZdZdZdZ	dZ
d	Zd
ZdS)ChannelReleaseTestsc$t}t|dt|t|dd|tj5t|ddddn#1swxYwY|tj5t|ddddS#1swxYwYdSNrTrrIrrrrr0rrars  rtest_single_userz$ChannelReleaseTests.test_single_usersi))++!!#w///!!#&&&$$St$$???


|>
?
?	4	4%%c7333	4	4	4	4	4	4	4	4	4	4	4	4	4	4	4


|>
?
?	+	+%%c***	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+s$B33B7:B7DD	D	c
t}t}t}t|t	d|dt|t	d|d|d}t|t	d|d||ddS)	Nr&r@r!z,)
            _interpreters.channel_release(z+)
            print(repr(obj))
            z+
            _interpreters.channel_release(rzb'spam')rrrSrrr#rr)rWrrRrSrs     rtest_multiple_usersz'ChannelReleaseTests.test_multiple_userss))++!!##!!##V-(+---&&			#v'.1'',/'''  	V-+.---&&				
i00000rct}t|dt|t||tj5t|ddddn#1swxYwY|tj5t|ddddS#1swxYwYdSrbrrs  rtest_no_kwargsz"ChannelReleaseTests.test_no_kwargs
sb))++!!#w///!!#&&&$$S)))


|>
?
?	4	4%%c7333	4	4	4	4	4	4	4	4	4	4	4	4	4	4	4


|>
?
?	+	+%%c***	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+rect}t|dt|t|dd|tj5t|ddddddS#1swxYwYdS)NrTrrrs  rtest_multiple_timesz'ChannelReleaseTests.test_multiple_timess))++!!#w///!!#&&&$$St$$???


|>
?
?	D	D((4d(CCC	D	D	D	D	D	D	D	D	D	D	D	D	D	D	D	D	D	DsB66B:=B:ct}t|dt|dt|dd|tj5t|ddddS#1swxYwYdS)NrrTr)rrrr0rrarrs  rtest_with_unused_itemsz*ChannelReleaseTests.test_with_unused_itemss))++!!#w///!!#v...$$St$$???


|>
?
?	+	+%%c***	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+sB44B8;B8ct}t||tj5t|ddddn#1swxYwY|tj5t|ddddS#1swxYwYdSr9)rrr0rrarrrs  rtest_never_usedz#ChannelReleaseTests.test_never_used's8))++$$S)))


|>
?
?	4	4%%c7333	4	4	4	4	4	4	4	4	4	4	4	4	4	4	4


|>
?
?	+	+%%c***	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+rc0t}t|dt}t|td|dt|}t||tj	5t|ddddn#1swxYwY|
|ddS)Nrr/rrI)rrrrSrrrr0rrar)rWrrrs    rtest_by_unassociated_interpz/ChannelReleaseTests.test_by_unassociated_interp0s>))++!!#w///$$&&0+.000))			'',,$$S)))


|>
?
?	4	4%%c7333	4	4	4	4	4	4	4	4	4	4	4	4	4	4	4g&&&&&s
C55C9<C9c
lt}t}t|t	d|d|d|tj5t|ddddS#1swxYwYdS)Nze
            import _xxsubinterpreters as _interpreters
            obj = _interpreters.channel_send(z5, b'spam')
            _interpreters.channel_release(r)rrrSrrrrarrs   rtest_close_if_unassociatedz.ChannelReleaseTests.test_close_if_unassociated?s))++$$&&0.100,/000))			

|>
?
?	+	+%%c***	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+sB))B-0B-cpt}t|dt|t|dt|dt|}||ddS)NrTr)rrrrr0r)rWrrs   rtest_partiallyz"ChannelReleaseTests.test_partiallyLs))++!!#t,,,!!#&&&!!#w///$$St$444'',,g&&&&&rct}t|dt|dt|dt|t|dd|tj5t|ddddn#1swxYwY|tj5t|ddddS#1swxYwYdSrrrs  r'test_used_multiple_times_by_single_userz;ChannelReleaseTests.test_used_multiple_times_by_single_userWs))++!!#w///!!#w///!!#w///!!#&&&$$St$$???


|>
?
?	4	4%%c7333	4	4	4	4	4	4	4	4	4	4	4	4	4	4	4


|>
?
?	+	+%%c***	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+s$C))C-0C-D;;D?D?N)
rZr[r\rrrrrrrrrrrbrrrrs"	+	+	+111(	+	+	+DDD++++++
'
'
'+++	'	'	'+++++rrceZdZdZfdZedZedZdZddZ	dZ
d	Zd
ZdZ
dZd
ZxZS)ChannelCloseFixtureFc|jri}net|}t|}t|}|j||j||j|i}|sd}t	||||||}t
|_t|_	||_
|S)Nrm)QUICKrGrNrVrTrUr]_preppedr_state_known)	rLrjrrtrucreatorknownrWrXs	        rrUzChannelCloseFixture.__new__ls9
	EE ))&11F((//E((//EV
E
EE
	GwwsCwGG
"nnrc|jSrrrs rrzChannelCloseFixture.states
{rc	|jS#t$r>||j}|||_|jcYSwxYwr)_cidAttributeError_get_interpreterr_new_channel)rWrs  rrzChannelCloseFixture.cidsb	9			++DL99G))'22DI9	s	AAAcZ||}|||Sr)r_prep_interpreterr"s  rget_interpreterz#ChannelCloseFixture.get_interpreters.&&v..v&&&
rNcv||j}|dkr|jjdkrdSt|jjS)NrproF)rjrrboolr{s  rexpect_closed_errorz'ChannelCloseFixture.expect_closed_errors>;(C&==TZ.&885DJ%&&&rc0||dSr)rr"s  rprep_interpreterz$ChannelCloseFixture.prep_interpretersv&&&&&rc||_dSrr)rWrirs   r
record_actionz!ChannelCloseFixture.record_actions
rc>ttdSrrrs rclean_upzChannelCloseFixture.clean_uprrc|jdkrtSt}t|jd|dt||_|jS)NrEa
                import _xxsubinterpreters
                cid = _xxsubinterpreters.channel_create()
                # We purposefully send back an int to avoid tying the
                # channel to the other interpreter.
                _xxsubinterpreters.channel_send(zC, int(cid))
                del _xxsubinterpreters
                )rVrrr?r=rr)rWrchs   rrz ChannelCloseFixture._new_channels<6!!..000,,..Bwz$
24$$$


%11"55DIyrc|dvr|jS|dkr|jS|dkr|jS|}	|j|}n)#t$rt|x}|j|<YnwxYw|S)N)rmrrtru)rrtrurKeyErrorrG)rWrrVs   rrz$ChannelCloseFixture._get_interpreters''';
w

:
w

:D
?T*
?
?
?-8->->>T***
?Ms
7#AAc|j|jvrdS|j|j|jdkrdSt	|jd|jddS)NrEa
            import _xxsubinterpreters as interpreters
            import test.test__xxsubinterpreters as helpers
            ChannelState = helpers.ChannelState
            try:
                cid
            except NameError:
                cid = interpreters._channel_id(r)r=rr^rVr?rr"s  rrz%ChannelCloseFixture._prep_interpreters{9
%%F
&)$$$;&  F6915					rr)rZr[r\rrUpropertyrrrrrrrrrrr^r_s@rrres

E*XX
''''''' 


rrzend interp other extra creatorz%these tests take several hours to runcreZdZ			dZdZdZdZdZdddZd	Z	d
Z
ddZd
ZddZ
dZdZdZdS)ExhaustiveChannelTestsc#rKgV|ddD]$}|V|D]	}||zV
%|ddD]$}|V|D]	}||zV
%|ddD]}|V|ddD])}||z}|V|D]	}||zV
*|ddD])}||z}|V|D]	}||zV
*|ddD]}|V|ddD])}||z}|V|D]	}||zV
*|ddD])}||z}|V|D]	}||zV
*dS)Nrmrtru)_iter_close_action_sets_iter_post_close_action_sets_iter_use_action_sets)rWcloseactionspostactions
useactionsactionss     riter_action_setsz'ExhaustiveChannelTests.iter_action_setss!88II	1	1L#@@BB
1
1"[00000
1 88'JJ	1	1L#@@BB
1
1"[00000
144VWEE	0	0J $ < <VW M M
0
0$|3


#'#D#D#F#F00K!K/////0 $ < <Wg N N
0
0$|3


#'#D#D#F#F00K!K/////0
0
44WgFF	0	0J $ < <VW M M
0
0$|3


#'#D#D#F#F00K!K/////0 $ < <Wg N N
0
0$|3


#'#D#D#F#F00K!K/////0
0	0	0rc#xK||f}tdd|gVtdd|gVtdd|tdd|gVtdd|gVtdd|gVtdd|tdd|gV|D]@}|D];}|D]6}tdd|tdd|tdd|gV7<A|D]U}|D]P}|D]K}|D]F}tdd|tdd|tdd|tdd|gVGLQVdS)Nrlrprore)rWr#r'interpsr(interp4s      rrz,ExhaustiveChannelTests._iter_use_action_sets.s7G$
%11			
%11			
%11%11			
%11			
%11			
%11%11					G"

&G%eVW==%eVW==%eVW==
				G"

&G#*)%AA)%AA)%AA)%AA	
				rc
#Kd}||f}dD]&}|rdnd}|D]}|D]}t|||gV'dD]5}	dD]0}
|D]+}|D]&}t|	d|t|
d|gV',16dS)Nrrlrsrrrqrpror)
rWr#r'endsrroprrjrecvopsendoprpros
             rrz.ExhaustiveChannelTests._iter_close_action_sets_sG$"		E"'4WB!

C%b#v66

/		F2

#D ')&&$??)&&$??
		rc#dKdD]*}tdd|gVtdd|gV+dS)N)rmrurtrlrprorr"s  rrz3ExhaustiveChannelTests._iter_post_close_action_setsrsl0		FeVV44


eVV44



			rc<|D]}|||dSr)r)rWfixrris    rrun_actionsz"ExhaustiveChannelTests.run_actions{s2	)	)FOOC((((	)	)rTrc*||j}||j|j|j}|||jdkr;t|j	|j
||j|}|||dSt}t|jd|j	dt#|j
dt#|dt#|jd|d|d|dt%t&t|d	t-t|
}|||dS)NrErzB
                result = helpers.run_action(
                    z,
                    z!,
                    hideclosed=zB,
                    )
                interpreters.channel_send(zR, result.pending.to_bytes(1, 'little'))
                interpreters.channel_send(z2, b'X' if result.closed else b'')
                r)rr)r|rjr~rrtrurrVrrrirrrrr?r=rrr
from_bytesrr)rWrrirrjrrrs        rrz!ExhaustiveChannelTests.run_actions  ))&&sz39ciHHV$$$;&  
	%F
ff-----..00Dvy
#W
#
#&-((
#
##YY	
#
#
#)__
#
#!+
#
#,0
#
#,0
#
#
#





"|'@'@'F'FQQL55d;;<<F
ff-----rc
#bKgd}|D]%\}}}dD]}dD]}t|||||V&dS)N))rErru)rrEru)r#r'ru)r#r'rE)rmrtrr)r)rWrrrtrurrjs       r
iter_fixturesz$ExhaustiveChannelTests.iter_fixturess


%1	R	R FE57
R
R+RRC-c65%QQQQQQR
R	R	Rrc:|rdnd}t||jd}|s|||ddS|t
j5|||dddddS#1swxYwYdS)NrsrrrmFr)rerjrrrrra)rWrrrrrs     r_closezExhaustiveChannelTests._closes#
0]]b#'622&&((	>OOC5O99999""<#BCC
>
>Uu===
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>s*BBBNc||jdkr^|tj5t|jdddn#1swxYwY|tj5t|jddddn#1swxYwY|tj5t|jdddn#1swxYwY|tj5t|jdddddS#1swxYwYdSt|j	dt|j	dt|j	dt|j	ddS)	NrErTrzz
                with helpers.expect_channel_closed():
                    interpreters.channel_recv(cid)
                z
                with helpers.expect_channel_closed():
                    interpreters.channel_send(cid, b'spam')
                z{
                with helpers.expect_channel_closed():
                    interpreters.channel_close(cid)
                z
                with helpers.expect_channel_closed():
                    interpreters.channel_close(cid, force=True)
                )
rVrrrarrrrr?r=)rWrrs   r_assert_closed_in_interpz/ExhaustiveChannelTests._assert_closed_in_interps>V[F22""<#BCC
3
3))#'222
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3""<#BCC
<
<))#'7;;;
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<""<#BCC
4
4**37333
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4""<#BCC
@
@**37$*???
@
@
@
@
@
@
@
@
@
@
@
@
@
@
@
@
@
@
vy#



vy#



vy#



vy#




sG AA!A!B11B58B5 DDD1"E  E$'E$c||jjt|jjD]!}t
|j"||dD]9}|	|}|j
dkr#|||:|	d}|||dS)N)rmrtrEfresh)rrrrrrrrrrrV)rWrr+rs    r_assert_closedz%ExhaustiveChannelTests._assert_closeds	()))sy())	/	/A%%cg....%%c***'	7	7F((00F{f$$))#v6666$$W--%%c622222rFc#$Kd}|D]}t|D]}|dz
}|dkrdS|rL|dz
dzdkrtt||dt	|nL|dz
dzdkrtddtd	dt
j|||fV|rtd
tdS)Nrrrz({} actions) rrz.z---)rprintrrQr_rstdoutr)rWverboserrrs     r_iter_close_testsz(ExhaustiveChannelTests._iter_close_testss4
,,..		GGGG))++
&
&Qt88FFF;A{a''!S."7"7G"E"EFFFFA{a''cr****#2&&&&
(8(8(:(:(:go%%%%
e
rcTdt_|D]\}}}dS)NT)rrrrWrrrs    r_skim_close_testsz(ExhaustiveChannelTests._skim_close_testss9$(!#5577		OAsG		rc|D]\}}}|d|||5||j|||||d||dddn#1swxYwY|dS)N	{} {}  {}Fr	rrrQrrrrrrrs    r
test_closez!ExhaustiveChannelTests.test_closes
#5577				OAsGk00CAABB
)
)$$SZ000  g...Cu---##C(((

)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
LLNNNN				AB..B2	5B2	c|D]\}}}|d|||5||j|||||d||dddn#1swxYwY|dS)NrTrrrs    rtest_force_closez'ExhaustiveChannelTests.test_force_close	s
#5577				OAsGk00CAABB
)
)$$SZ000  g...Ct,,,##C(((

)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
LLNNNN				rr)F)rZr[r\rrrrrrrrrrrrrrrbrrrrs  +0+0+0Z///b&)))59.....@RRR>>>8333 ,








rrrr)6collectionsrrrrrrtextwraprr3rDr/testrtest.supportrr
import_modulerrr#r,rr:r?r<rGrcrerrrrrTestCaserrrrrrrr2rWryrrrrrr0rrZrErbrr<module>rs""""""				







&&&&&&&&&&&&+}*+?@@	.	.	.
4
4
4
4


<$$$-/	4	4	4	4!!!!!**]I66!!!L+++/#/#/#/#/#JJ0CDD/#/#/#fEEEEE::n.>??EEE&7;*!!!!!!Hx /4/4/4/4/4x(/4/4/4d9;9;9;9;9;*9;9;9;~.....8....'''''h'''.)))))8)))*&(&(&(&(&(X&(&(&(R8$8$8$8$8$8$8$8$vZKZKZKZKZK(ZKZKZKz_=_=_=_=_=8_=_=_=Dc%c%c%c%c%Xc%c%c%R	V&V&V&V&V&XV&V&V&rs8s8s8s8s88s8s8s8lb+b+b+b+b+(b+b+b+Jnnnnn**%:%EGGnnnb677{{{{{X{{87{|	zHMOOOOOr