python (3.11.7)

(root)/
lib/
python3.11/
test/
__pycache__/
_test_multiprocessing.cpython-311.opt-1.pyc

eU'RddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlmZddlmZddlmZddlmZddlm Z ddlm!Z!ddlm"Z"dd	lm#Z#ej$d
Z%ej&ddl'Z'ddl(Z)ddl*Z)ddl+Z)ddl,Z)ddl-Z)ddl.Z)ddl)m/Z/	ddl)m0Z0e0j1Z2n
#e3$rd
Z2YnwxYw	ddl4m5Z5m6Z6dZ7n
#e3$rd
Z7YnwxYw	ddl)m8Z8dZ9n
#e3$rd
Z9YnwxYw	ddl:Z:n
#e3$rdZ:YnwxYwej;rej<ddZ=dZ>dZ?dZ@e	jAdkr	ddl)mBZBdZCe/jDZEdZFd
ZGeGrd\ZHZIZJnd\ZHZIZJejKZLeMe%dd
ZNejOdkZPddl(mQZQdZR	e	jSdZTn	#d ZTYnxYwd!d"gZU	dd#lVmWZWmXZXmYZYmZZZn#e3$re[ZWdxZXxZYZZYnwxYwd$Z\d%Z]Gd&d'ej^Z_Gd(d)e[Z`Gd*d+e[Zad,ZbGd-d.ZcGd/d0eaZdGd1d2e)jeZfGd3d4eaZgd5Zhd6ZiGd7d8eaZjGd9d:eaZkGd;d<eaZlGd=d>eaZmGd?d@eaZnGdAdBe[ZodCZpGdDdEe[ZqGdFdGe[ZrGdHdIeaZsGdJdKeaZtGdLdMeaZuGdNdOeaZvddQZwdRZxdSZydTZzGdUdVe[Z{GdWdXe|Z}dYZ~GdZd[eaZd\Zd]ZGd^d_eaZGd`daeaZddbl,mZmZmZGdcdde[ZdeZGdfdgeZGdhdieZedjekedledmnedoeepGdqdreaZejZdsZGdtdueZedvekGdwdxeZedvdyZGdzd{eaZejd|Gd}d~eaZe>dZGddeaZGddeaZGddeaZGddeaZeje2dejd|GddeaZGddeaZGddeWZGddeaZeje9dejd|GddeaZGddeaZGddej^ZGddeaZGddeaZGddej^Zejd|Gddej^ZdZejd|Gddej^ZdZdZdZdZGdde[ZGddej^ZGddej^ZGddej^ZGddej^ZGddej^ZGddej^ZGddej^ZGddej^ZGddej^ZGddej^ZejejOdkdGddej^ZGddej^ZGd„dej^Zejd|GdĄdej^ZGdƄdej^ZGdȄdej^ZGdʄde[ZGd̄deZGd΄deZGdЄdeZ	dd҄Zejee%dӦdԦejejOdkd֦Gdׄdej^ZdS)N)support)hashlib_helper)
import_helper)	os_helper)
script_helper)
socket_helper)threading_helper)warnings_helper_multiprocessing)util)	reductionF)ValuecopyT)
shared_memoryz?libasan has a pthread_create() dead lock related to thread+fork皙?c,|dS)Nlatin)encode)ss N/BuggyBox/python/3.11.7/bootstrap/lib/python3.11/test/_test_multiprocessing.pyrr[s88Gct|tjjr*||dSdSN)
isinstancemultiprocessingqueuesQueueclosejoin_thread)queues rclose_queuer!_sI%/566




rc.tj|dSr)r	r)processs rjoin_processr$es )))))rposix)resource_trackerc:tj||dSr)r&_CLEANUP_FUNCS)namertypes  r_resource_unlinkr+ns'.t44444r)g=
ףp=?gffffff?gffffff?)rrrHAVE_BROKEN_SEM_GETVALUEwin32waitc8||dkrd}t|g|S)Nr.)handletimeouts  rwait_for_handler4s'w}}'"""rSC_OPEN_MAX__main__z$test.test_multiprocessing_forkserver)	Structurec_intc_double
c_longlongcd}	tjd}n#ttf$rYdSwxYw|dks||krdSt	jd|z)zACheck that the system supports enough semaphores to run the test.r6SC_SEM_NSEMS_MAXNzHThe OS doesn't support enough semaphores to run the test (required: %d).)ossysconfAttributeError
ValueErrorunittestSkipTest)	nsems_minnsemss  rcheck_enough_semaphoresrGsI
-..J'
{{ey((

>@IJKKKs..cfd}|S)aReturns a decorator: raises SkipTest when SM != spawn at test time.

    This can be useful to save overall Python test suite execution time.
    "spawn" is the universal mode available on all platforms so this limits the
    decorated test to only execute within test_multiprocessing_spawn.

    This would not be necessary if we refactored our test suite to split things
    into other test files when they are not start method specific to be rerun
    under all start methods.
    cJtjfd}|S)Ncztjx}dkrtjd|d|i|S)Nspawn
start_method=z, not 'spawn'; )rget_start_methodrCrD)argskwargsstart_methodreason	test_items   rspawn_check_wrapperzKonly_run_in_spawn_testsuite.<locals>.decorator.<locals>.spawn_check_wrappersS / @ B BBwNN'(Q<(Q(Q(Q(QRRR9d-f---r)	functoolswraps)rRrSrQs` r	decoratorz.only_run_in_spawn_testsuite.<locals>.decorators?		#	#	.	.	.	.	.
$	#	.
#"r)rQrVs` ronly_run_in_spawn_testsuiterXs$#####rcXeZdZdZejejdkddZdS)TestInternalDecoratorszBLogic within a test suite that could errantly skip tests? Test it!r-ztest requires that fork exists.c2tjdkrtjd	t	dd}n/#t
$r"}|d|Yd}~nd}~wwxYwtjd}	tjdd||d	tjd
d|	tj5}|dddn#1swxYwY|
dt|j|
dt|jtj|ddS#tj|dwxYw)NrKz'only run in test_multiprocessing_spawn.ztesting this decoratorcdSNrWrWrrreturn_four_if_spawnzUTestInternalDecorators.test_only_run_in_spawn_testsuite.<locals>.return_four_if_spawnsqrz.expected decorated `def` not to raise; caught T
allow_noneforcer^forkrL)
rrMrCrDrX	Exceptionfailset_start_methodassertEqualassertRaisesassertInstr	exception)selfr_errorig_start_methodctxs     r test_only_run_in_spawn_testsuitez7TestInternalDecorators.test_only_run_in_spawn_testsuites+--88#$MNNN	N
()A
B
B

C
B

	N	N	NIILsLLMMMMMMMM	N,<MMM		L,WDAAAA1133Q777,V4@@@@""8#455
'$$&&&
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'MM2C
4F4FGGGMM/3s}+=+=>>>,->dKKKKKKO,->dKKKKKsIA
A2A--A2A)E>4D?E>DE>DAE>>FN)	__name__
__module____qualname____doc__rCskipIfsysplatformrqrWrrrZrZsPLLX_S\W,.OPPLLQPLLLrrZceZdZdZdZdS)
TimingWrapperc"||_d|_dSr)funcelapsed)rmr|s  r__init__zTimingWrapper.__init__s	rctj}	|j|i|tj|z
|_S#tj|z
|_wxYwr)time	monotonicr|r})rmrNkwdsts    r__call__zTimingWrapper.__call__s^N	049d+d++>++a/DLL4>++a/DL////s	=ANrrrsrtr~rrWrrrzrzs200000rrzc(eZdZdZdZdZdZeZdS)BaseTestCase)	processesmanagerthreadscFtr|||ddSdSN)
CHECK_TIMINGSassertAlmostEqualrmabs   rassertTimingAlmostEqualz$BaseTestCase.assertTimingAlmostEquals2	,""1a+++++	,	,rc\	||}|||S#t$rYdSwxYwr)rhNotImplementedError)rmvaluer|rNress     rassertReturnsIfImplementedz'BaseTestCase.assertReturnsIfImplementedsN	0$+C##E3///#			DD	s
++c td)Nz#shouldn't try to pickle a test case)r)rmrNs  r
__reduce__zBaseTestCase.__reduce__s!"GHHHrN)rrrsrt
ALLOWED_TYPESrrr
__reduce_ex__rWrrrrsJ7M,,,000IIIMMMrrc	|S#t$r:	|jcYS#t$r"	|jcYcYS#t$rtwxYwwxYwwxYwr)	get_valuerA_Semaphore__value_valuerrms rrrs	*~~***	*))))	*	*	*
*{"""""!
*
*
*))
*	**s8
A*A
AAAAAAAceZdZdZdS)
DummyCallablec0|ddSNput)rmqcs   rrzDummyCallable.__call__*s	arN)rrrsrtrrWrrrr)s#rrceZdZdZdZdZejddZe	dZ
dZe	dZd	Z
e	d
ZdZe	dZe	d
ZdZejejddZe	dZe	dZe	dZdZdZdZdZdZe	dZ dZ!e	dZ"dZ#e	d0dZ$d Z%ejd!d"Z&d#Z'e	d$Z(d%Z)e	d&Z*d'Z+e	ifd(Z,d)Z-d*Z.e	d1d,Z/d-Z0d.Z1d/Z2dS)2_TestProcessrrc@|jdkr-|d|j|}|j}||||j||t|t|dk||jtj||jddS)Nrtest not appropriate for {}r)TYPEskipTestformatcurrent_processauthkey
assertTrueis_alivedaemonassertIsInstancebyteslenrhidentr?getpidexitcode)rmcurrentrs   rtest_currentz_TestProcess.test_current3s9	!!MM7>>tyIIJJJ&&((/((**+++GN*+++gu---Gq()))	444)400000rc|jdkr|d|jtjtjtjtjg}|D]n}|||}|	|
||jdodS)Nrztest not appropriate for r)
rrrw
executablerpathlibPathset_executableProcessstartjoinrhr)rmpathspathps    rtest_set_executablez _TestProcess.test_set_executableAs9	!!MMAdiAABBBNN!!##L((

	,	,D%%%A
GGIII
FFHHHQZ++++	,	,rcpuc	dddgdf}ttf}tj||}|D]\}}|||5|d}||j|||f}d|_|	|
}||||t|dddn#1swxYwYdS)Nrrkr)rN	args_typetargetrNT)listtuple	itertoolsproductsubTestrr
_test_argsrrgetrhrr!)	rm
args_cases
args_types
test_casesrNrrr
child_argss	         rtest_args_argumentz_TestProcess.test_args_argumentPs;T*
E]
&z:>>
)
	
	OD)49==	
	
JJqMMLLiiD	>R>RLSS			UUWW
  T222A	
	
	
	
	
	
	
	
	
	
	
	
	
	
	

	
	s	B%C::C>	C>	c0||dSrr)clsrargs   rrz_TestProcess._test_argses	c




rc|jdkr-|d|j||j}||j|j||jd}||j||jd}|	|jdS)NrrrTrrF)
rrrr_testrhrrrassertFalse)rmproc0proc1proc2s    rtest_daemon_argumentz!_TestProcess.test_daemon_argumentis9	!!MM7>>tyIIJJJDJ//t';';'='='DEEEDJt<<%%%DJu==&&&&&rcR|}||||||j|jdkrC|t	|j||jdSdS)Nr)rrr)rrrpid)rrrNrrs     rrz_TestProcess._testus%%''	d	d	gl8y  
EE%(()))
EE'+! rc|jdkr-|d|j|||d\}}||j|f}||	|
\}}|||j
||tj|||jdS)NrrFduplexr)rrrassertIsNoneparent_processPiper_test_send_parent_processrrrecvrhrrr?rr))rmrconnwconnr
parent_pidparent_names      rtest_parent_process_attributesz+_TestProcess.test_parent_process_attributess9	!!MM7>>tyIIJJJ$--//000yyy..uLL >eXLNN					"'**,,
KT%9%9%;%;%?@@@RY[[111d&:&:&<&<&ABBBBBrctddlm}||j|jgdS)Nrr)multiprocessing.processrsendrr)rrrs   rrz&_TestProcess._test_send_parent_processsG::::::

NN$$(..*:*:*?@AAAAArc|jdkr-|d|j|d\}}||j|f}||tj	std|}||d|
||tj	std|}||d	dS)
NrrFrrr3z(Could not communicate with child processalive	not alive)rrrrr_test_create_grandchild_processrpollrLONG_TIMEOUTAssertionErrorrrh	terminater)rmrrrparent_process_statuss     rtest_parent_processz _TestProcess.test_parent_processs89	!!MM7>>tyIIJJJ
yyy..uLL7ui

I
I				zz'"6z77	M !KLLL %

.888	


	zz'"6z77	M !KLLL %

.<<<<<rc||j|f}|tjddS)Nri,)r_test_report_parent_statusrrsleep)rrrs   rrz,_TestProcess._test_create_grandchild_processs:KKs=UIKNN				
3rc.ddlm}||rdnd|t
j||rdnddS)Nrrrrr)rrrrrr
SHORT_TIMEOUTrs   rr
z'_TestProcess._test_report_parent_statuss::::::

nn..7799J77{KKKg&;<<<

nn..7799J77{KKKKKrc|d}|}|ddf}ddd}d}||j|||}d|_|}|jd	kr ||j|j||	d
||jd|
|||t|tu||jd|||jd||	d||||||dd||||||j|jd	krZ|||j|||j|||jd||	d
|
||t-|dS)NrgRQ@)hellobyeSomeProcess)rrNrOr)TrFr)rEventrrrrrrhrrassertNotInactive_childrenrtyperrrrjrr)rrr!)rmrerNrOr)rrs        rtest_processz_TestProcess.test_processsJJqMMJJLL1ayD))LL:Dd


&&((9	!!QY888u---4(((D0022333T113344<===T***				T***t,,,

a--//000$qrr(+++&)))!&)))9	!!QUUWWgo666QUUWWae,,,	Q'''u---D0022333Arzneeds native_idc|jdkr-|d|jtjj}|d}||j|f}|	|
}|t||
||dS)Nrrrr)rrr	threadingmain_thread	native_idrr"_test_process_mainthread_native_idrrrr!assertNotEqual)rmcurrent_mainthread_native_idrrchild_mainthread_native_ids     r!test_process_mainthread_native_idz._TestProcess.test_process_mainthread_native_ids9	!!MM7>>tyIIJJJ'0'<'>'>'H$JJqMMLL GqdLSS				%&UUWW"	A8:TUUUUUrc`tjj}||dSr)rrrr)rrmainthread_native_ids   rrz/_TestProcess._test_process_mainthread_native_ids-(466@	"#####rc.tjddS)Ndrrrs r_sleep_somez_TestProcess._sleep_somes
3rc.tj|dSrr')rdelays  r_test_sleepz_TestProcess._test_sleeps
5rc|jdkr-|d|j||jd_|d|	|
|jdtj
}||dd||jd|d||dd||jd|dt!jd|t%t&d	rÈfd
}t'jt&j|}	t'jd||dt'jdt'jt&j|nV#t'jdt'jt&j|wxYw||d||jd|d||

jS)
NrrrTrr1r>ralarmc(tdz)Nzjoin took too long: %sRuntimeError)rNrs rhandlerz+_TestProcess._kill_process.<locals>.handlers"#;a#?@@@r
F)rrrrr)rrrhrrjrrrzrrr}rrhasattrsignalSIGALRMr.r)rmmethrr2old_handlerrs     @r
_kill_processz_TestProcess._kill_processs9	!!MM7>>tyIIJJJLL 0L11				t,,,

a--//000T***QV$$a$'''$$T\3777t,,,b4((($$T\3777t,,,	
1


Q67##
	+
A
A
A
A
A -@@K
;R     ...Q
fnk::::Q
fnk::::TTVVT***$$T\3777u---D0022333	zs2I225J'c|tjj}||t
jdSr)r9rrrrhr5SIGTERMrmrs  rtest_terminatez_TestProcess.test_terminate2s;%%o&=&GHHFN?33333rc|tjj}tjdkr#||tjdS||tj	dSNnt)
r9rrkillr?r)rhr5SIGKILLr;r<s  r	test_killz_TestProcess.test_kill6sf%%o&=&BCC
7d??X77777X77777rc	tj}n#t$rd}YnwxYw|t	|t
u||dkdSr)r	cpu_countrrrint)rmcpuss  rtest_cpu_countz_TestProcess.test_cpu_count=st	",..DD"			DDD	T

c)***	"""""s%%c|t|t|t
jtf}|||d|_	|
|||||||dSNrT)
rhrrrrrrDELTArrrrjrrmrs  rtest_active_childrenz!_TestProcess.test_active_childrenEsd224455t<<<LL
%L::D0022333				

a--//000	D002233333rc||t|dkr\tdD]N}||j|||gzf}||MdSdSNrr)rrranger_test_recursionrr)rridirs     rrQz_TestProcess._test_recursionRs

2r77Q;;1XX

KK.eRV_ 			
;

rc|d\}}||gtjtg}|r;|||;gdgddgddgdgddgddgg}|||dS)NFrrr)	rrQrrrKrappendrrh)rmrrresultexpecteds     rtest_recursionz_TestProcess.test_recursion]syyy..uUB'''
5jjll	(MM%**,,'''jjll	(
cAAcAA	
*****rc0|ddS)Ng$@r.revents  r_test_sentinelz_TestProcess._test_sentinelqs

4rc|jdkr-|d|j|}||j|f}|t5|jdddn#1swxYwY|	|
|j|j}||t|t|d|||t|ddS)Nrrrr1rr)rrrrrr\rirBsentinelr
addCleanuprrrFrr4setr)rmr[rr^s    r
test_sentinelz_TestProcess.test_sentinelusg9	!!MM7>>tyIIJJJ

LL 35(LCC


z
*
*		
JJ																			:h,,,3???@@@
			!<<<=====sBBBrNcZ||tj|dSr)rrwexit)rrcrs   r_test_closez_TestProcess._test_closes%=
EEGGGrcb|jdkr-|d|j|}||jd|i}d|_|||	d|
t5|dddn#1swxYwY|
d|||	d||jd||
t5|	dddn#1swxYwY|
t5|dddn#1swxYwY|
t5|dddn#1swxYwY|t#j|}~t'j||dt-|dS)Nrrr)rrOTFr)rrrrrrerrrhrrirBrrrrrweakrefrefgccollectassertIsr!)rmrrwrs    r
test_closez_TestProcess.test_closes9	!!MM7>>tyIIJJJJJLLLL 0#qLBB				t,,,


z
*
*		
GGIII																
d	u---Q'''				


z
*
*		
JJLLL															


z
*
*		
FFHHH															


z
*
*		
KKMMM																			
[^^




bbddD!!!AsHC))C-0C-F//F36F3G55G9<G9H;;H?H?walltimecLjdkr-djtj}|dkrdnd}fdt|D}|D]}||D]}t||D]}|j	dfdt|D}|D]}|tjd	|D]}||D]}t|tjd
kr^tjg}t"jdkr |tj|D]}|j	|dSdS)NrrrKrr&cHg|]}jdS)){Gz?r)rr,.0rSrms  r
<listcomp>z4_TestProcess.test_many_processes.<locals>.<listcomp>s<$$$T%5GDD$$$rrcFg|]}jS)r)rr)rrs  rrtz4_TestProcess.test_many_processes.<locals>.<listcomp>s:$$$T%566$$$rMbP?r@darwin)rrrrrMrPrr$rhrrrrr?r)r5r;rwrxrUrBrj)rmsmNprocsr	exitcodess`     rtest_many_processesz _TestProcess.test_many_processess9	!!MM7>>tyIIJJJ

-
/
/wAAC$$$$(($$$		A
GGIIII		AOOOO	,	,AQZ++++$$$$(($$$		A
GGIIII
5		A
KKMMMM		AOOOO
7d?? .)I|x''  &.111
5
5

aj)4444?
5
5rct}tj|}|}||||f}~||tj|	|d|
|dt|dS)Nrr)
rrgrhrrrrrirjrkrhrr!)rmrrlrrs     rtest_lose_target_refz!_TestProcess.test_lose_target_refsOO
[^^JJLLLLAL//
					



bbddD!!!!$$$Arcz|tj|dSr)rrfd_countr/)rmevtrs   r_test_child_fd_inflationz%_TestProcess._test_child_fd_inflations.	i ""###




rcRjdkr-djtj}|dkr(d|d}fdt|D}|D]}|	fdt|D}	tt|d||D]}|tdS#|D]}|twxYw)NrrrdrcLg|] }jf!Sr)rr)rsrSrrrms  rrtz8_TestProcess.test_child_fd_inflation.<locals>.<listcomp>s@$$$T%B#qRR$$$rc8g|]}SrWr)rsrSrs  rrtz8_TestProcess.test_child_fd_inflation.<locals>.<listcomp>s!333Q333rr)rrrrrMrrrPrrhrr`rr!)rmrxryrzr	fd_countsrrs`     @@rtest_child_fd_inflationz$_TestProcess.test_child_fd_inflations9	!!MM7>>tyIIJJJ

-
/
/
<<
MM7>>rBBCCC
jjllJJLL$$$$$$(($$$		A
GGIIII	3333%((333ISY00!Y???
GGIII

NNNNN
GGIII

NNNNs
AE((>F&cfd}fd}tj|tj|ddS)NcXtjddS)N?rrr`rsrfunc1z2_TestProcess._test_wait_for_threads.<locals>.func1s!JsOOOGGIIIIIrcXtjddS)N)rrclearrsrfunc2z2_TestProcess._test_wait_for_threads.<locals>.func2s!JrNNNIIKKKKKrrTr)rThreadr)rmrrrs `  r_test_wait_for_threadsz#_TestProcess._test_wait_for_threadss											&&&,,...d33399;;;;;rcv|jdkr-|d|j|}||j|f}||||	dS)Nrrr)
rrrrrrrrris_set)rmrprocs   rtest_wait_for_threadsz"_TestProcess.test_wait_for_threads
s9	!!MM7>>tyIIJJJjjll||4#>cV|LL

		

%%%%%rc|D]K\}}|dkr(tj}|nd}t	t
|dL|dS)Nr)itemsioStringIOrsetattrrwr`)rmrbreak_std_streamsstream_nameactionstreams      r_test_error_on_stdio_flushz'_TestProcess._test_error_on_stdio_flushst#4#:#:#<#<	,	,K  Cd++++					rc	ltjdg}|ddD]}|D]}tt|}tt||	|}||j|f}|	|
|||
|jdtt||#tt||wxYwdS)Nrstdoutstderrr)rrrgetattrrwrrrrrrrrrhr)rmstreamsrr
old_streamrrs       rtest_error_on_stdio_flush_1z(_TestProcess.test_error_on_stdio_flush_1%s#;==$'
/
	:
	:K!
:
:$S+66
[&111	:**,,C<<t/N.1V(55DJJLLLIIKKKOOCJJLL111$$T]A666Cj9999GCj9999
:
	:
	:s
%BDD/c	dD]}dD]}tt|}	|}||j|||if}|||||	|j
dtt||#tt||wxYwdS)Nr)rremoverr)rrwrrrrrrrrhrr)rmrrrrrs      rtest_error_on_stdio_flush_2z(_TestProcess.test_error_on_stdio_flush_28s0	:	:K-
:
:$S+66
	:**,,C<<t/N.1K3H-I(KKDJJLLLIIKKKOOCJJLL111$$T]A666Cj9999GCj9999
:	:	:sBCC,r1cVtj||dSrr)rmrr+s   r_sleep_and_set_eventz!_TestProcess._sleep_and_set_eventIs#
5					rc|jdkr-|d|jtj}|dkr(|d|ddlm}|d}|}|	|j
||f}||j}tj||tj|dz|}|	|j
|f}	|	|	||||	jd|||||jd	dS)
Nrr
forkserverr)_forkserverrrg@)r)rrrrrMmultiprocessing.forkserverrensure_runningrrrr_forkserver_pidr?rArrrrrrhrrj)
rmsignumrxrr+rrrevt2rs
          rcheck_forkserver_deathz#_TestProcess.check_forkserver_deathNs9	!!MM7>>tyIIJJJ

-
/
/

MM7>>rBBCCC::::::""$$$jjll||4#<C<|PP

)
V
53;zz||D$=TGLL







&&&+++		

%%%

dmX.....rcD|tjdSr)rr5SIGINTrs rtest_forkserver_sigintz#_TestProcess.test_forkserver_sigintts##FM22222rchtjdkr!|tjdSdSr?)r?r)rr5rBrs rtest_forkserver_sigkillz$_TestProcess.test_forkserver_sigkillxs0
7d??''77777?r)rN)r1)3rrrsrtrrrrrequires_resourcerclassmethodrrrrrrrr
rrC
skipUnlessr_HAVE_THREAD_NATIVE_IDr"rr)r,r9r=rCrHrMrQrXr\rarermr|r~rrrrrrrrrrrrWrrrr/s,M111
,
,
,Wu%%&%([
'
'
'[
C
C
CBB[B===2[
LL[L&&&PX9;LMMVVNMV $$[$[[111f444888###444[+++([>>> [
@Wz**!5!5+*!5F[>
<
<[
<
&
&
&@B			[	:::&:::"[$/$/$/L33388888rrc&eZdZdZdZdZdZdS)_UpperCaserctj|tj\|_|_dSr)rrr~r
child_connparent_connrs rr~z_UpperCaser.__init__s7((...,;,@,B,B))))rc|jt|jjdD].}|j|/|jdSr)rriterrrrupperrmrs  rrunz_UpperCaser.runsp   do*D11	,	,AO  ++++rch|j||jSr)rrrrs  rsubmitz_UpperCaser.submits.a   $$&&&rc|jd|j|jdSr)rrrrrs rstopz_UpperCaser.stopsHd###   rN)rrrsrtr~rrrrWrrrrsSCCC   '''
     rrcPeZdZdZdZdZedZedZdZ	dS)_TestSubclassingProcessrcLt}d|_|||dd||dd||dS)NTrHELLOworldWORLD)rrrrhrrr)rm
uppercasers  rtest_subclassingz(_TestSubclassingProcess.test_subclassings ]]
 
**733W===**733W===rcX|jdkr-|d|jtj}|tj|||j|f}|	|
t|d5}|}|
d||
d||
d|ddddS#1swxYwYdS)	Nrrrutf-8encodingZeroDivisionErrorztest_multiprocessing.pyz1/0 # MARKER)rrrrTESTFNr_unlinkr_test_stderr_flushrropenreadrj)rmtestfnrfrns     rtest_stderr_flushz)_TestSubclassingProcess.test_stderr_flushsD9	!!MM7>>tyIIJJJ!	(&111||4#:&|KK

		
&7
+
+
+	/q&&((CMM-s333MM3S999MM.#...	/	/	/	/	/	/	/	/	/	/	/	/	/	/	/	/	/	/s;ADD#&D#ctj|tjtjztjz}t|dddt
_ddzdS)NwrFrclosefdrr)r?rO_WRONLYO_CREATO_EXCLrwr)rrfds   rrz*_TestSubclassingProcess._test_stderr_flushsH
WVR[2:5	A
B
B"cGUCCC
	!rctj|tjtjztjz}t|dddt
_tj|dS)NrrFr)r?rrrrrwrrc)rrQrrs    r_test_sys_exitz&_TestSubclassingProcess._test_sys_exitsQ
WVR[2:5	A
B
B"cGUCCC
rc|jdkr-|d|jtj}|tj|gddfD]}||j||f}d|_	|
t|||j
dt|d	5}|}dddn#1swxYwY||t#|t%j|gd
}|D]\}}||5|t(j|}d|_	|
t|||j
|dddn#1swxYwYdS)Nrrrrzignore thisrTrrr)))Tr)Fr))r)rr)rWrrN)rrrrrr_rrrrrr$rhrrrrstriprkr?rrwrc)	rmrrQrrcontentcasesrNrWs	         r
test_sys_exitz%_TestSubclassingProcess.test_sys_exitsW9	!!MM7>>tyIIJJJ!	(&111
II
		FD$7vv>NOOAAH
GGIIIOOOQZ+++fw///
#1&&((
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#W^^--s6{{;;;If$	7	7ND(4((
7
7LLtL<<			Q  X666
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7	7	7s%!DD		D	8A'G++G/	2G/	N)
rrrsrtrrrrrrrrWrrrrs|"M///"[[
&7&7&7&7&7rrczt|dr|S|dkS)Nemptyr)r4rqsize)rs rqueue_emptyrs4q'wwyywwyyA~rczt|dr|S||kS)Nfull)r4rr)rmaxsizes  r
queue_fullrs4q&$vvxxwwyyG##rceZdZedZdZedZdZedZdZ	dZ
edZd	Zd
Z
dZdZd
ZdZdS)
_TestQueuec|tdD]}||dS)N)r/rPrr`)rr child_can_startparent_can_continuerSs     r	_test_putz_TestQueue._test_putsPq		AIIKKKK!!!!!rcd}||}|}|}||j|||f}d|_||t|d|t||d|	d|	dd|	ddd|	d	d|	d
dd|
dtjt|t|d|t||dt|j	}t|j
}|t j|dd||jd|t j|ddd||jd|t j|d||jd|t j|ddt(||jt(|t j|ddt*||jd|t j|ddt,
||jt,|||t|d|t||d|t5|dS)NrrrTFrrrr^rrr)rrrr
rrrhrrr
put_nowaitrrrKrzripyqueueFullrr}TIMEOUT1TIMEOUT2TIMEOUT3r`r/rr!)rmMAXSIZEr rr	rrrs        rtest_putz_TestQueue.test_puts\

7
++**,,"jjll||>*=>

U++T222E733U;;;
		!
		!T
		!T4   
		!U
		!UD!!!
	
5U++U333E733T:::EI&&"5#344
',Q666$$S[!444',Qt<<<$$S[!444',
A666$$Z%7;;;',Qh???$$S[(;;;',Qx@@@$$S[!444',QhGGG$$S[(;;;  """U++T222E733U;;;		Erc||d|d|d|d|dS)Nrrr^r)r/rr`rr rr	s    r	_test_getz_TestQueue._test_getAsh
		!
		!
		!
		!!!!!!rc.|}|}|}||j|||f}d|_||t|d||	tjt|t|d||
ddd||
dd||
dd||d	|t|dt|j
}t|j}|t"j|d||jd
|t"j|dd||jd
|t"j|||jd
|t"j|dt*||jt*|t"j|dt,||jd
|t"j|t.||jt.|t3|dS)NrTFrrrrr^rr)rrrrrrrhrr`r/rrrKr
get_nowaitrzrirEmptyrr}rrrrr!)rmr rr	rrrs       rtest_getz_TestQueue.test_getKs

**,,"jjll||>*=>

U++T222  """
5U++U333	
4..2224!,,,1--q111))++Q///U++T222EI&&"5#344
'-e444$$S[!444'-eT:::$$S[!444'-444$$Z%7;;;'-dH===$$S[(;;;'-eX>>>$$S[!444'-h???$$S[(;;;		ErcVtddD]}||dS)Nr3r)rPr)rr rSs   r
_test_forkz_TestQueue._test_forks4r2		AIIaLLLL		rc$|}tdD]}||tjt
||j|f}d|_|	tdD]*}|
||+|tj|jd|t!|dS)Nr3rTrF)rrPrrrrKrrrrrhrrirrrr!)rmr rSrs    r	test_forkz_TestQueue.test_forks

r		AIIaLLLL	
5
LLuhL??				r	-	-AUYY[[!,,,,'-E:::	Erc|}	||dn%#t$r|dYnwxYw|d||d|d||d|||d|||dt|dS)Nrzqsize method not implementedrrr)rrhrrrrrr!rmrs  r
test_qsizez_TestQueue.test_qsizes(JJLL	:QWWYY****"	:	:	:MM899999	:	aA&&&	aA&&&	A&&&	A&&&As(?A! A!ct|jdD]/}tjt|0dSr)rrrrrK	task_done)rrobjs   r_test_task_donez_TestQueue._test_task_donesFt$$		CJu
KKMMMM		rcfdtdD}|D]}d|_|tdD]}||D]}d|D]}|t
dS)NcJg|]}jf Sr)rr')rsrSr rms  rrtz-_TestQueue.test_task_done.<locals>.<listcomp>s>&&&<<t';5(<KK&&&rr^Tr3)
JoinableQueuerPrrrrr!)rmworkersrrSr s`   @rtest_task_donez_TestQueue.test_task_dones""$$&&&&&!!HH&&&		AAH
GGIIIIr		AIIaLLLL

		AIIdOOOO		A
FFHHHHErctj5d}t|dzdd5}|ddddn#1swxYwYt	jt
j5	t|n*#tj
$r|dYnwxYwdddn#1swxYwYddddS#1swxYwYdS)Nimported_by_an_imported_modulez.pyrrrzif 1:
                    import multiprocessing

                    q = multiprocessing.Queue()
                    q.put('knock knock')
                    q.get(timeout=3)
                    q.close()
                    del q
                z?Probable regression on import lock contention; see Issue #22853)rtemp_cwdrwriter
DirsOnSysPathr?getcwd
__import__rrrf)rmmodule_namers   rtest_no_import_lock_contentionz)_TestQueue.test_no_import_lock_contentions


!
!	3	3:KkE)3AAA	
Q	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
,RY[[99
3
33{++++}333II2333333
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3	3	3	3	3	3	3	3	3	3	3	3	3	3	3	3	3	3	3s|CACA	CA	(C>CBC$B74C6B77C:CC
	
C
C
	CC"%C"ctj}tj}|t
j|jddtj|z
}||dt|dS)NTg?r)
rrrrrirrrassertGreaterEqualr!)rmrrdeltas    rtest_timeoutz_TestQueue.test_timeoutst!##  '-e<<<  5(	
u---Arc\|jdkr-|d|jGddt}tj5|}|||d|	|
t
jt|dddn#1swxYwYtj5|d}|||d	|
|dn#t$rYnwxYw|	|
t
j|	|t|ddddS#1swxYwYdS)	NrrceZdZdZdS)F_TestQueue.test_queue_feeder_donot_stop_onexc.<locals>.NotSerializablectr)rArs rrzQ_TestQueue.test_queue_feeder_donot_stop_onexc.<locals>.NotSerializable.__reduce__s$$rNrrrsrtrrWrrNotSerializabler<s#
%
%
%
%
%rr?Trrr)rrrobjecttestrcaptured_stderrrrrrr
r!rhrrr)rmr?rs   r"test_queue_feeder_donot_stop_onexcz-_TestQueue.test_queue_feeder_donot_stop_onexcsu9##MM7>>tyIIJJJ	%	%	%	%	%f	%	%	%\
)
)
+
+		

A
EE//##$$$
EE$KKKOOAEE'*?E@@AAANNN															\
)
)
+
+		

1
%%A
EE//##$$$
EE$KKK
  A....&




OOAEE'*?E@@AAAOOAGGII&&&NNN																		sK*B	C??DD(A	H!2(FH!
F(%H!'F((A,H!!H%(H%c|jdkr-|d|jGddtGfddtjj}}tj	5|t	j
}|||d||
tj	dddn#1swxYwY||j||jdS)
NrrceZdZdZdZdZdS)K_TestQueue.test_queue_feeder_on_queue_feeder_error.<locals>.NotSerializablezMock unserializable objectc"d|_d|_dSNF)reduce_was_called on_queue_feeder_error_was_calledrs rr~zT_TestQueue.test_queue_feeder_on_queue_feeder_error.<locals>.NotSerializable.__init__s).&8=555rcd|_tNT)rIrArs rrzV_TestQueue.test_queue_feeder_on_queue_feeder_error.<locals>.NotSerializable.__reduce__s)-&$$rN)rrrsrtrur~rrWrrr?rFs8,,
>
>
>
%
%
%
%
%rr?c.eZdZdZefdZdS)E_TestQueue.test_queue_feeder_on_queue_feeder_error.<locals>.SafeQueuez1Queue with overloaded _on_queue_feeder_error hookcht|trt|rd|_dSdSdSrL)rrArJ)rr&r?s  r_on_queue_feeder_errorz\_TestQueue.test_queue_feeder_on_queue_feeder_error.<locals>.SafeQueue._on_queue_feeder_error"sOq.11@"388@;?C888@@@@rN)rrrsrtrustaticmethodrP)r?sr	SafeQueuerN sECC

@
@
@
@\
@
@
@rrR)rpTr)rrrr@rrrrArrBget_contextrrrr
rIrJ)rmrRnot_serializable_objrr?s    @r'test_queue_feeder_on_queue_feeder_errorz2_TestQueue.test_queue_feeder_on_queue_feeder_errors9##MM7>>tyIIJJJ	%	%	%	%	%f	%	%	%	@	@	@	@	@	@	@.4	@	@	@ /00
\
)
)
+
+	B	B	o9;;<<<A
EE&'''
EE$KKKOOAEE'*?E@@AAA
	B	B	B	B	B	B	B	B	B	B	B	B	B	B	B	
,>???,MNNNNNsA;DD"DctjtjfD]}||t
d5|ddddn#1swxYwY|t
d5|dddn#1swxYwYdS)Nz	is closedfoo)rrr*rassertRaisesRegexrBrrr"s  r$test_closed_queue_put_get_exceptionsz/_TestQueue.test_closed_queue_put_get_exceptions6s2 &((/*G*I*II		A
GGIII''
K@@

e














''
K@@
















			s$A::A>	A>	 CC	C	N)rrrsrtrr
rrrrr r#r'r,r5r9rCrUrYrWrrrrs""["999v""["333j[8 [
,333*			@$O$O$OLrrc eZdZdZdZdZdS)	_TestLockcx|}||d||dd||d|t
tjf|jdSNTF)LockrhacquirereleaserirBrThreadErrorrmlocks  r	test_lockz_TestLock.test_lockCsyy{{...e,,e444...:y'<=t|LLLLLrc\|}||d||d||d||d||d||d|t
tf|jdSrL)RLockrhr_r`rirr1rbs  r
test_rlockz_TestLock.test_rlockJszz||..................><8$,GGGGGrcb|5	ddddS#1swxYwYdSrr^rs rtest_lock_contextz_TestLock.test_lock_contextTsw
YY[[																				s$((N)rrrsrtrdrgrjrWrrr[r[AsGMMMHHHrr[c&eZdZdZdZdZdZdS)_TestSemaphorec|dt|||d|dt|||d|dt|||dd|dt|||d|dt|||d|dt|dS)NrTrrF)rrrhr_r`rmsems  r_test_semaphorez_TestSemaphore._test_semaphore[s2''9c:::---''9c:::---''9c:::U++U333''9c:::---''9c:::---''9c:::::rcj|d}||||d|dt
|||d|dt
|dS)Nrrr^)	Semaphorerprhr`rrrns  rtest_semaphorez_TestSemaphore.test_semaphorehsnnQS!!!---''9c:::---''9c:::::rcZ|d}||dSNr)BoundedSemaphorerprns  rtest_bounded_semaphorez%_TestSemaphore.test_bounded_semaphoreps/##A&&S!!!!!rcF|jdkr-|d|j|d}t	|j}||dd||jd||ddd||jd||dtd||jd||dtd||jt||td||jtdS)NrrrFr1Tr)rrrrrrzr_rhrr}rrr)rmror_s   rr9z_TestSemaphore.test_timeoutxsw9##MM7>>tyIIJJJnnQ,,///$$W_c:::--u555$$W_c:::115999$$W_a888x00%888$$W_h???222E:::$$W_h?????rN)rrrsrtrprsrwr9rWrrrlrlYsU;;;;;;"""@@@@@rrlceZdZeddZdZdZdZdZdZ	dZ
ed	Zej
ed
dZedZej
ed
d
ZedZdZdS)_TestConditionNc||||||dSr)r_r`r/)rcondsleepingwokenr3s     rrz_TestCondition.fsQ		'


rctdD]>}	||krn,n#t$rYnwxYwtjt?tjt|||dSNr3)rPrrrrKr)rmr|rrSs    rassertReachesEventuallyz&_TestCondition.assertReachesEventuallysr		A
466U??E#&



Ju
5''t44444s$
22c0|jdkr	|j|jz
}||d||jddS#t$rYdSwxYwdS)Nrr)r_sleeping_countr_woken_countrh_wait_semaphorer)rmr|sleeperss   rcheck_invariantz_TestCondition.check_invariants9##
 0::<< -7799:  1---  !5!?!?!A!A1EEEEE&




$#sA6B
BBc|}|d}|d}||j|||f}d|_|||jtj	|j|||f}d|_|||j|
|
tjt|dt||
||tjt|dt||
||tjt|dt||||dS)NrrTrr)	Conditionrrrrrrr_rrrr_rrrKrrnotifyr`r)rmr|r}r~rs     rtest_notifyz_TestCondition.test_notifys~~>>!$$q!!LLdHe-DLEE				DF$%1HIII						
5''9e<<<	



	
5''9e<<<	



	
5''9e<<<	
T"""	rc|}|d}|dtdD]}||j||t
f}d|_|||j	tj|j||t
f}d|_|||j	tdD]}|tdD]}|
dt||tdD]}||j||f}d|_|||j	tj|j||f}d|_|||j	tdD]}|t!jt$|
dt||||fdd||dS)NrrrTrc"tSrrr~sr<lambda>z0_TestCondition.test_notify_all.<locals>.<lambda>Yu-=-=r)rrrrPrrrrrr_rrrr_rrrrrrK
notify_allr`rrmr|r}rSrrr~s      @rtest_notify_allz_TestCondition.test_notify_alls~~>>!$$q!!q	$	$ADF#'5("CEEAAH
GGIIIOOAF### '+Xuh&GIIIAAH
GGIIIOOAF####q		Aq		AMMOOOO''9e<<<	
T"""q		$		$ADF$%1HIIAAH
GGIIIOOAF### dHe5LMMMAAH
GGIIIOOAF####q		A	
5''9e<<<	
	
$$%=%=%=%=qAAA	
T"""""rc|}|d}|dtdD]}||j||f}d|_|||jtj
|j||f}d|_|||jtdD]}|tj
t|dt ||d||fdd||d	||fd
d||d||dt ||dS)NrrrTrr)nc"tSrrrsrrz._TestCondition.test_notify_n.<locals>.<lambda>9rrr^c"tSrrrsrrz._TestCondition.test_notify_n.<locals>.<lambda>@rr)rrrrPrrrrr_rrrr_rrrKrrrr`rrrs      @r
test_notify_nz_TestCondition.test_notify_ns6~~>>!$$q!!q		$		$ADF$%1HIIAAH
GGIIIOOAF### dHe5LMMMAAH
GGIIIOOAF####q		A	
5''9e<<<	
a	
$$%=%=%=%=qAAA	
a$$%=%=%=%=qAAA	
a''9e<<<	
T"""""rc2|}t|j}||t}|||d||jtdSrH)	rrzr/r_rr`rhrr})rmr|r/rs    rr9z_TestCondition.test_timeoutLs{~~TY''d8nne$$$$$T\8<<<<<rc|5d_||fd}|rjdkrtjdddddS#1swxYwYdS)NrcjdkSr]rstatesrrz0_TestCondition._test_waitfor_f.<locals>.<lambda>Z
EKNrr^r)rrwait_forrwrc)rr|rrVs  ` r_test_waitfor_fz_TestCondition._test_waitfor_fUs
		EKKKMMM]]#:#:#:#:;;F
U[A--																		sAA&&A*-A*zneeds sharedctypesc|}|dd||j|f}d|_||5|fd}|||j	ddddn#1swxYwYtdD]T}tjd|5xj	d	z
c_	|
dddn#1swxYwYUt|||jddS)
NrSr>rTcjdkSNrrrsrrz-_TestCondition.test_waitfor.<locals>.<lambda>irrrr^rqr)rrrrrrrrrhrrPrrrr$r)rmr|rrVrSrs     @rtest_waitforz_TestCondition.test_waitfor^s~~

3##LL 4D%=LII				
	-	-]]#:#:#:#:;;FOOF###U[!,,,	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-
q		AJt

q 

















	QQ'''''s%'A	B<<CC.%DD#	&D#	c||5d}tj}|fd|}tj|z
}|s|tz
|krd|_ddddS#1swxYwYdS)NrcjdkSr]rrsrrz8_TestCondition._test_waitfor_timeout_f.<locals>.<lambda>|rrrT)r`rrr	CLOCK_RESr)rr|rsuccessrorWdtrVs  `     r_test_waitfor_timeout_fz&_TestCondition._test_waitfor_timeout_fvs



	%	%H!!B]]#:#:#:#:H]MMF!!B&B
%x)3:: $

	%	%	%	%	%	%	%	%	%	%	%	%	%	%	%	%	%	%sABB	Bc|}|dd}|dd}|d}||j||||f}d|_|||tj
tdD]T}tj
d|5|xjd	z
c_|dddn#1swxYwYUt!|||jdS)
NrSrFrTrrrqr)rrrrrrrrrr_rrrPrrrrr$)rmr|rrrorrSs       rtest_waitfor_timeoutz#_TestCondition.test_waitfor_timeoutsq~~

3""**S%((nnQLL <#UGS9

;
;				G,@AABBBq		AJu

q 

















	Q
&&&&&s+%DD 	#D 	c|5|dddn#1swxYwYtjd|!tj|t
jdSdSr)rrrr?rAr5r)rrrs   r_test_wait_resultz _TestCondition._test_wait_results
		
HHJJJ															
1


?GC'''''?s$((ct|tr$tjdkrt	j}nd}|}|5||d||d|	|j
||f}|||d|!|
t|jd|ddddS#1swxYwYdS)Nr-rrr<)rProcessesMixinrwrxr?rrrr/rrrrriKeyboardInterruptr)rmrrrs    rtest_wait_resultz_TestCondition.test_wait_resultsYdN++	0G0G)++CCCNN
		QVVAYY'''QVVC[[)))D$:!SJJA
GGIIIOOAFF2JJ'''!!"3QVR@@@
FFHHH																		sC"EEEr)rrrsrtrrrrrrrr9rrCrHAS_SHAREDCTYPESrrrrrrWrrrzrzsK[	5	5	5			+++Z<#<#<#|0#0#0#d===[X)+?@@((A@(.%%[%X)+?@@''A@'.(([(rrzc2eZdZedZdZddZdS)
_TestEventc`tjt|dSr)rrrr`rZs  r_test_eventz_TestEvent._test_events#
8
		rc|}t|j}||d||dd||jd||td||jt|||d||d||jd||td||jd|	|
|j|f}d|_|
||d|dS)NFr1Tr)rrzr/rhrrr}rr`rrrrrr)rmr[r/rs    r
test_eventz_TestEvent.test_events

UZ((	
///	
cE***$$T\3777h///$$T\8<<<
			
...&&&$$T\3777h...$$T\3777	



LL 0xL@@				&&&	rreturnNc8|}|jdkr|t|d||t|d||t|ddS|jdkr\|t|d||t|ddSdS)Nrz<Event at .* unset>z<Event at .* set>rz(<EventProxy object, typeid 'Event' at .*)rrassertRegexreprr`r)rmr[s  r	test_reprz_TestEvent.test_reprs

9##T%[[*@AAAIIKKKT%[[*>???KKMMMT%[[*@AAAAA
Y)
#
#T%[[*UVVVIIKKKT%[[*UVVVVV$
#r)rN)rrrsrtrrrrrWrrrrsW[!!!FWWWWWWrrc,eZdZdZdZdZdZdZdS)
_DummyListctjtjd}tj}|||fd|jd<dS)NrSr)rheap
BufferWrapperstructcalcsizer^__setstate__
_lengthbuf)rmwrapperrcs   rr~z_DummyList.__init__sZ!&44V_S5I5IJJ#%%7D/***rc|\|_|_|jd|_dS)NrS)_wrapper_lockcreate_memoryviewcastr)rmrs  rrz_DummyList.__setstate__s7&+#
-99;;@@EErc|j|jfSr)rrrs r__getstate__z_DummyList.__getstate__s
tz**rcp|j5|jdxxdz
cc<ddddS#1swxYwYdSNrrrr)rm_s  rrUz_DummyList.appends
Z	$	$OA!#	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$s+//c^|j5|jdcdddS#1swxYwYdSrrrs r__len__z_DummyList.__len__	sx
Z	&	&?1%	&	&	&	&	&	&	&	&	&	&	&	&	&	&	&	&	&	&s
"&&N)rrrsrtr~rrrUrrWrrrrsbFFF+++$$$&&&&&rrc.tjddS)Nrqr'rWrr_waitr
sJtrc8eZdZdZd
dZdZdZdZdZdZ	d	S)Bunchz
    A bunch of threads.
    Fc||_||_||_||_||_||_|s|jg}t|D]M}|
|j}d|_|
||Nd}	tj||	||_dS)z
        Construct a bunch of `n` threads running the same function `f`.
        If `wait_before_exit` is True, the threads won't terminate until
        do_finish() is called.
        rTc8|D]}|dSr)r)rrs  rfinalizez Bunch.__init__.<locals>.finalize,s*



rN)rrNr	DummyListstartedfinishedr	_can_exitr`rPrtaskrrrUrgr
_finalizer)
rm	namespacerrNrwait_before_exitrrSrrs
          rr~zBunch.__init__s	 **,,!++--
"**	!N   q		A!!!33AAH
GGIIINN1			"*47CCrcZtj}|j|	|j|j|j||jddS#|j||jdwxYw)N)	r?rrrUrrNrrr/rmrs  rrz
Bunch.task2sikkC   	+DFDIM  %%%N#####
M  %%%N###****sA446B*ct|j|jkr-tt|j|jk+dSdSr)rrrrrs rwait_for_startedzBunch.wait_for_started<sG$,$&((GGG$,$&((((((rct|j|jkr-tt|j|jk+dSdSr)rrrrrs rwait_for_finishedzBunch.wait_for_finished@sG$-  46))GGG$-  46))))))rc8|jdSr)rr`rs r	do_finishzBunch.do_finishDsrc.|dSr)rrs rrzBunch.closeGsrNr)
rrrsrtrur~rrrrrrWrrrrsDDDD8+++rrceZdZdZdZdS)
AppendTruec||_dSr)r&)rmr&s  rr~zAppendTrue.__init__Ls
rc:|jddSrL)r&rUrs rrzAppendTrue.__call__NsrNrrWrrrrKs2rrc<eZdZdZdZdZdZdZdZdZ	e
dZdd
ZdZ
e
dZd
Ze
dZdZe
dZdZe
dZdZe
dZdZe
dZdZe
dZdZdZe
dZdZdS)_TestBarrierz$
    Tests for Barrier objects.
    rg>@cR||j|j|_dS)Nr)BarrierrydefaultTimeoutbarrierrs rsetUpz_TestBarrier.setUpYs"||DFD4G|HHrcF|jd|_dSr)rabortrs rtearDownz_TestBarrier.tearDown\s!rc|jdkrgS|jdkr|jStS)Nrr)rrrrrs rrz_TestBarrier.DummyList`s?9	!!I
Y)
#
#<$$&&&<<rct||||jdz
}	||||dS#|wxYwr)rryrr)rmrrNrs    rrun_threadsz_TestBarrier.run_threadshs`$4**	
AtHH
!!!
GGIIIIIAGGIIIIsAA!c|j}t|D]`}|dd||dd|adS#t$rYdSwxYw)NrTr)partiesrPrUr/r)rrresultsrmrSs      r	multipassz_TestBarrier.multipasspsOq		AAJd###LLNNNAJd###LLNNNN		"			DD	s:
BBrc||g}||j|j||fdS)z;
        Test that a barrier is passed in lockstep
        N)rrrr)rmpassesrs   rtest_barrierz_TestBarrier.test_barriersI>>##T^^%5%56$,)HIIIIIrc,|dS)zC
        Test that a barrier works for 10 consecutive runs
        r3)r
rs rtest_barrier_10z_TestBarrier.test_barrier_10s  $$$rcX|}||dSr)r/r)rrr rs    r_test_wait_return_fz _TestBarrier._test_wait_return_fs"llnn
		#rc$|||j|jffdt	|jD}||ddtdS)z9
        test the return value from barrier.wait
        c8g|]}SrWr)rsrSr s  rrtz1_TestBarrier.test_wait_return.<locals>.<listcomp>s!6661599;;666rrrN)	rrrrrPryrhcountr!)rmrr s  @rtest_wait_returnz_TestBarrier.test_wait_returns

1DL%3HIII6666df

666q))1---Ercb|t|dkrtdSr)r/rr1)rrrs   r_test_action_fz_TestBarrier._test_action_fs.w<<1rc|}||jt|}||j||f|t|ddS)z,
        Test the 'action' callback
        )rrN)rrryrrrrhr)rmrrs   rtest_actionz_TestBarrier.test_actionsr.."",,tvj.A.A,BB,w.@AAAWq)))))rcB	|}||jdzkrt||ddS#tj$r|dYdSt$r|YdSwxYwNrT)r/ryr1rUrBrokenBarrierErrorr)rrresults1results2rSs     r
_test_abort_fz_TestBarrier._test_abort_fs		ACE1H}}""LLNNNOOD!!!!!+	"	"	"OOD!!!!!!			MMOOOOOO	sAA$B=BBcv|}|}||j|j||f|t|d|t||jdz
||jjdS)zK
        Test that an abort will put the barrier in a broken state
        rrN)	rrrrrhrryrbroken)rmrrs   r
test_abortz_TestBarrier.test_aborts>>##>>##+,(;	=	=	=X***Xq111+,,,,,rc|}||jdzkrO|j|jdz
kr'tjd|j|jdz
k'|nU	||dn*#tj$r|dYnwxYw||ddS)NrrrvT)	r/ry	n_waitingrrresetrUrr)rrrrresults3rSs      r
_test_reset_fz_TestBarrier._test_reset_fsLLNNq==#ceAg--
5!!!#ceAg--MMOOOO
&%%%%/
&
&
&%%%%%
&	s3)B$CCc|}|}|}||j|j|||f|t|d|t||jdz
|t||jdS)zL
        Test that a 'reset' on a barrier frees the waiting threads
        rrN)rrr$rrhrry)rmrrr#s    r
test_resetz_TestBarrier.test_resets>>##>>##>>##+,(HE	G	G	GX***Xq111X/////rc"	|}||jdzkrt||dnI#tj$r|dYn#t$r|YnwxYw||jdzkr||||ddSr)r/ryr1rUrrrr")rrbarrier2rrr#rSs       r_test_abort_and_reset_fz$_TestBarrier._test_abort_and_reset_fs		ACE1H}}""LLNNNOOD!!!!+	"	"	"OOD!!!!!			MMOOOOO	
==??ceQh&&MMOOO

sAA$B;BBc|}|}|}||j}||j|j||||f|t|d|t||jdz
|t||jdS)zF
        Test that a barrier can be reset after being broken.
        rrN)rrryrr)rrhr)rmrrr#r(s     rtest_abort_and_resetz!_TestBarrier.test_abort_and_resets>>##>>##>>##<<''5,(HhO	Q	Q	QX***Xq111X/////rc|}||jdzkrtjd	|ddS#tj$r|dYdSwxYw)Nr?rT)r/ryrrrrrUrrrrSs    r_test_timeout_fz_TestBarrier._test_timeout_f	sLLNNq==JsOOO	!LL+	!	!	!NN4      	!sA$A76A7c|}||j|j|f|t||jjdS)z$
        Test wait(timeout)
        N)rrr/rrhrr)rmrs  rr9z_TestBarrier.test_timeoutsZ..""-g/FGGGWt|';<<<<<rc||j}||jdzkrtjd	|dS#t
j$r|dYdSwxYw)Nrr-T)r/rryrrrrrUr.s    r_test_default_timeout_fz$_TestBarrier._test_default_timeout_fsLL+,,q==JsOOO	!LLNNNNN+	!	!	!NN4      	!sA$A<;A<c||jd}|}||j||f|t
||jdS)z4
        Test the barrier's default timeout
        rrN)rryrrr2rhrr)rmrrs   rtest_default_timeoutz!_TestBarrier.test_default_timeout'sl,,tvs,33..""57IJJJWw77777rc|d}||dSr)rr/)rmrs  rtest_single_threadz_TestBarrier.test_single_thread0s/LLOO		rct|D]E}||5||dddn#1swxYwYFdSr)rPr/r)rrr	connrcrSs      r_test_thousand_fz_TestBarrier._test_thousand_f5sv		ALLNNN

		!














		sA

A	A	cH|jdkr-|d|jd}|}|d\}}t|jD]U}||j|j	|||f}|
||jVt|D]A}t|jD]*}|
||+BdS)NrrFr)rrrr^rrPryrr9rrr_rrhr)rmr	rcr8rjrrSs        r
test_thousandz_TestBarrier.test_thousand<s9	!!MM7>>tyIIJJJyy{{99U++jtv	$	$AD$9!%vz4 HJJA
GGIIIOOAF####v	1	1A46]]
1
1  a0000
1	1	1rNr)rrrsrtruryrrrrrrrr
rrrrrrrr$r&r)r+r/r9r2r4r6r9r=rWrrrrRs
	
ANIII   ""[" JJJJ%%%[[
***

[

-
-
-["000[*
0
0
0!![!===!![!888
[11111rrc	zeZdZdZdddddededfgZd	Zed
ZddZ	d
Z
dZdS)
_TestValuer)rSii^)dg
@g)hi)rrxycBts|ddSdSNz%requires multiprocessing.sharedctypesrrrs rrz_TestValue.setUp\0	CMMABBBBB	C	CrcVt||jD]\}}|d|_dSru)zipcodes_valuesr)rvaluessvcvs    rrz_TestValue._test`s9&#"233		FB!uBHH		rFc|rfdjD}nfdjD}t|jD]&\}}|j|d'j|f}d|_||t|jD]&\}}|j|d'dS)NcDg|]\}}}||SrW)RawValuerscoderrrms    rrtz)_TestValue.test_value.<locals>.<listcomp>hs=???($qmmD%00???rcDg|]\}}}||SrW)rrTs    rrtz)_TestValue.test_value.<locals>.<listcomp>ks=???($qjju--???rrrTr)	rMrLrhrrrrrr)rmrawrNrOrPrs`     r
test_valuez_TestValue.test_valuefs'	?????,0,=???FF????,0,=???F&$"344	.	.FBRXr!u----||4:VI|>>

		&$"344	.	.FBRXr!u----	.	.rc2|ddSNT)rW)rXrs r
test_rawvaluez_TestValue.test_rawvalueysD!!!!!rc|dd}|}|}|ddd}|}|}|}|dd|}|}	|}
|||	|ddd}|t
|d|t
|d|t|jddd|	dd}|t
|d|t
|ddS)NrSrrcFget_lockget_objnavalue)
rr^r_r^rhrr4rirArS)
rmval1lock1obj1val2lock2obj2rcval3lock3obj3arr4arr5s
             rtest_getobj_getlockz_TestValue.test_getobj_getlock|s}zz#q!!

||~~zz#qtz,,

||~~yy{{zz#qtz,,

||~~u%%%zz#quz--z22333y11222.$*c19MMM}}S!$$z22333y1122222rNr)rrrsrtrrrMrrrrXr[rlrWrrr?r?Ps"M		eeCjj%%**%
LCCC[
....&"""33333rr?c
eZdZdZedZejedudd
dZ	ejeduddZ
ejeduddZejedudd	ZdS)
_TestArrayrcxtdt|D]}||xx||dz
z
cc<dSr)rPr)rseqrSs   rrz_TestArray.fsKq#c((##		AFFFc!A#hFFFF		rNzrequires _ctypesFcDgd}|r|d|}n|d|}|t|t|||d|d|t	|ddt	|ddtjdgdx|dd<|dd<|t	|dd|||||j|f	}d
|_|	|
|t	|dd|dS)N)
iirii5i$iii?rSrrr
)rrrr^r^rrT)RawArrayArrayrhrrarrayrrrrr)rmrWrparrrs     r
test_arrayz_TestArray.test_arraysp@@@	'--S))CC**S#&&CS3s88,,,QQ(((c!A#hc!A#h888#k#|||<<<AaC3qs8c!!!fs+++sLLcVL44					c!!!fs+++++rc	d}tdD]}|d|}|t|||t	|dg|ztd|dd<|t	|t	td~dS)Nr3rrSr)rPrurhrr)rmsizerrws    rtest_array_from_sizez_TestArray.test_array_from_sizes
q		A**S$''CSXXt,,,T#YYd
3332YYCFT#YYU2YY888
		rc2|ddSrZ)rxrs r
test_rawarrayz_TestArray.test_rawarraysD!!!!!rc||dttd}|}|}|dttdd}|}|}|}|dttd|}|}	|}
|||	|dtdd}|t|d|t|d|	t|jdtdd|dtd}|t|d|t|ddS)NrSr3r]Fr^r_notalock)rurrPr^r_r^rhrr4rirArt)
rmarr1rbrcarr2rerfrcarr3rhrirjrks
             rtest_getobj_getlock_objz"_TestArray.test_getobj_getlock_objszz#tE"II//

||~~zz#tE"IITz::

||~~yy{{zz#tE"IITz::

||~~u%%%zz#uRyyuz55z22333y11222.*c599:		G	G	G}}S%)),,z22333y1122222rr)
rrrsrtrrrrCrvr9rxr{r}rrWrrrnrns"M[X_Ud]$677,,,87,0X_Ud]$67787X_Ud]$677""87"X_Ud]$6773387333rrncBeZdZdZdZdZdZdZdZdZ	dZ
d	Zd
S)_TestContainersrc|ttd}||ddttd|}||ddg|ttd||ddttd||dd||ddgd|dz}||ddgd||ddgzgd||ddttd||g}||}|d|Dgd	gdg||g}|d
||dddgddS)
Nr3rr)rrr^)
rrrrr^rrrrr^r)rrrrr^rrrrr^rrc"g|]}|dd
SrrW)rselements  rrtz-_TestContainers.test_list.<locals>.<listcomp>	s )))GWQQQZ)))r)
rrrrr^rrr
r	rr)rrrrr^rrr
rrr)rrPrhextendrU)rmrrr@rrs      r	test_listz_TestContainers.test_listsIId599oo&&111tE"II///IIKK111r"""	eAhh   111tE!HH~~...1q!!!1R4'''***	Q111===>>>aV%I%I%IJJJ111tE"II///
FIIaLL))q)))
+
+
+-K-K-KL			

IIqcNN	1aaa"I"I"IJJJJJrc|ttd}t|}|t|ttd|t|gt|}d|d<|t	|ddS)Nr3r&r)rrPrrhnext)rmrits   rtest_list_iterz_TestContainers.test_list_iter	sIId599oo&&
!WWb4b		??333b2&&&
!WW!b3'''''rcfdtdD}d|Dgdgdzd|dd<|dddgdtd	dD](}||ddgd)|d	d
t	|d	d
tddd
D]+}t	||d,~}||~dS)NcTg|]$}td%S)r)rrP)rs_irms  rrtz;_TestContainers.test_list_proxy_in_list.<locals>.<listcomp>	s+>>>rtyyq**>>>rrc"g|]}|dd
SrrW)rsinners  rrtz;_TestContainers.test_list_proxy_in_list.<locals>.<listcomp>	s 222u%(222r)rrr7rr>)rrrrr)rrPrhpoprrU)rmrrSrs`   rtest_list_proxy_in_listz'_TestContainers.test_list_proxy_in_list	suII>>>>U1XX>>>??22222YYYK!ODDD!R1aaa***---q!	1	1AQqT!!!Wiii00001Q'''QqTA&&&q!Q	+	+AS1YY****
IIKK	
AArcz|}ttdd}|D]}t|||<||td|D|t
|||t
|d|D|t
|	d|DdS)NAFc38K|]}|t|fVdSrchrrsrSs  r	<genexpr>z,_TestContainers.test_dict.<locals>.<genexpr>/	s,'E'ECFF'E'E'E'E'E'Erc,g|]}t|SrWrrs  rrtz-_TestContainers.test_dict.<locals>.<listcomp>1	s-F-F-Fc!ff-F-F-Frc0g|]}|t|fSrWrrs  rrtz-_TestContainers.test_dict.<locals>.<listcomp>2	s",J,J,JQaQ[,J,J,Jr)
dictrrPrrhrsortedkeysrNr)rmr@indicesrSs    r	test_dictz_TestContainers.test_dict*	sIIKKuR}}%%		Aq66AaDD4'E'EW'E'E'E#E#EFFF))7333

++-F-Fg-F-F-FGGG		**,J,J',J,J,JKKKKKrc|}ttdd}|D]}t|||<t	|}|t|||t|gt	|}||tt|dS)Nrr)
rrrPrrrhrrir1r)rmr@rrSrs     rtest_dict_iterz_TestContainers.test_dict_iter4	sIIKKuR}}%%		Aq66AaDD
!WWb7+++b2&&&
!WW				,b11111rc"|dd}|dd}|||}||dd||d	ddd
|d	d<||dd
||d	dd
d|d	d<||dd||d	dd~~||d
ddd|d	d<||d	dd|d
}|d	}d|d<||dd||d	dd||t|d||dd||dd|||g}d|dd<||dd||ddd~~||ddd|ddg|g}||dt||dddddS)Nrr^)ferretshamstersr3r)waterfeed)petssuppliesrrrblanketsr
rrrrrmarmotsXcr>r)rrhrrrr)rmrrr@louters      rtest_dict_proxy_nestedz&_TestContainers.test_dict_proxy_nestedA	syyQy//992A9..II4(I33'*B///:w/444$%*
j!*-q111:z2A666!"*
g'*A...:w/33369-q111$&*
j!:z2B777yZ='*A...:w/333				Q###'*A...j)1---IItX&''!Yi!,,,1i!,,,1i!,,,		B8Q-((eAh---r2v.22222rc|}|||dd||dd|}||d<|dd||dddS)Nr{)rrUrrrhrrrs   rtest_nested_queuez!_TestContainers.test_nested_queueo	sIIKK		!


1S)))IIKKzz||!	!


1S)))))rct|}d|_d|_d|_||j|jfd|`|t|d|t|d|t|ddS)NBobBuilderhidden)rrzNamespace(name='Bob')r)job)	Namespacer)r_hiddenrhrkrr4)rmrs  rtest_namespacez_TestContainers.test_namespacey	sNN	!&!%*<===
EQ!89996**+++GAu---.....rN)rrrsrtrrrrrrrrrrWrrrrs MKKK>((((LLL222,3,3,3\***	/	/	/	/	/rrr1cd|tj|n||||zSr)rrr/)rEr/r[s   rsqrr	s5}
4

4Q3Jrc||zSrrW)rErFs  rmulr	Q3JrcNtj|tddz)NrEi)rrrBr.s rraise_large_valuerrorr	s$Jt
S7]
#
##rc|SrrWrEs ridentityr	sHrceZdZdZdZdZdS)
CountedObjectrcV|xjdz
c_t|Sr)n_instancesr@__new__r(s rrzCountedObject.__new__	s$1~~c"""rc@t|xjdzc_dSr)rrrs r__del__zCountedObject.__del__	s"T

!#rN)rrrsrtrrrrWrrrr	s7K###$$$$$rrceZdZdS)SayWhenErrorNrrrsrtrWrrrr	srrc#K|dkrtdt|D]}||krtd|VdS)Nr>zSomebody said when)rrP)totalwhenrSs   rexception_throwing_generatorr	s`rzz/000
5\\993444rc
eZdZefdZefdZdZdZdZdZ	dZ
dZd	Zd
Z
dZdZd
ZdZdZdZdZdZdZdZdZedZdZedZdZdZdZdZdZ xZ!S)	_TestPoolc|t|d|_dSr])super
setUpClassPoolpoolr	__class__s rrz_TestPool.setUpClass	s.
88A;;rc|j|jd|_tdSr)rrrr
tearDownClassrs rrz_TestPool.tearDownClass	sI


rc|jj}||tdtd||tddditddS)N)rrrWrErr)rapplyrhr)rmpapplys  r
test_applyz_TestPool.test_apply	siT**CFF333R#a113888<<<<<rc
|jj}||tt	tdt	ttt	td||tt	tddt	ttt	tddS)Nr3r&r	chunksize)rmaprhrrrP)rmpmaps  rtest_mapz_TestPool.test_map	sy}c4b		??33T#c4b		??:S:S5T5TUUUc4c

#3#3rBBBc#tE#JJ'7'78899	;	;	;	;	;rc
.|jj}ttt	dt	ddd}||t|ttjt|ttt	dt	ddd}||t|dttjt|dS)Nr3rr>r&rrr)rstarmaprrLrPrhrr)rmpsmaptupless   rtest_starmapz_TestPool.test_starmap	s	!c%))U1R__5566sF++i/V<<==	?	?	?c%**eBr2&6&67788sFb999i/V<<==	?	?	?	?	?rc
Ntttdtddd}||jt|ttj	t|dS)Nr&rr>)
rrLrPrhr
starmap_asyncrrrr)rmrs  rtest_starmap_asyncz_TestPool.test_starmap_async	sc%**eBr2&6&6778800f==AACCi/V<<==	?	?	?	?	?rc
:||jtt	tdt	ttt	tddSr)rhr	map_asyncrrrPrrrs rtest_map_asyncz_TestPool.test_map_async	sq,,S$uRyy//BBFFHHc#tE"II7788	:	:	:	:	:rcZ|jdkr|jng}|jt
dg|j|j|dt||dg|d|jt
dg|j|j|dt||
|dtdS)Nr1)callbackerror_callbackrrrr)rrrrrrFrUr/rhrrrB)rm	call_argss  rtest_map_async_callbacksz"_TestPool.test_map_async_callbacks	s+/9	+A+ADL%%'''r		C#%.%5+4+;		=	==ATVVVC	NN+++!il+++	C#%.%5+4+;		=	==ATVVVC	NN+++ilJ77777rcZ|jdkr-|d|jGddt}|t
5|jt|gdzddddS#1swxYwYdS)NrrceZdZdZdS)*_TestPool.test_map_unplicklable.<locals>.Ac td)Nz
cannot pickler0rs rrz5_TestPool.test_map_unplicklable.<locals>.A.__reduce__	s"?333rNr>rWrrAr	s#
4
4
4
4
4rrr3)	rrrr@rir1rrr)rmrs  rtest_map_unplicklablez_TestPool.test_map_unplicklable	s9	!!MM7>>tyIIJJJ	4	4	4	4	4	4	4	4

|
,
,	)	)IMM#uRx(((	)	)	)	)	)	)	)	)	)	)	)	)	)	)	)	)	)	)s&-B  B$'B$c	|jtgdtdS#t
j$r|dYdSwxYw)Nrrrz2pool.map_async with chunksize stalled on null list)rrrrrrTimeoutErrorrfrs rtest_map_chunksizez_TestPool.test_map_chunksize	sz	LIR15599(9KKKKK+	L	L	LIIJKKKKKK	Ls;?$A'&A'cD|jdkr-|d|j|t5|jttddddddn#1swxYwY|t5|jttddddddn#1swxYwY|t5|jttddddddn#1swxYwYGdd}|t5|jt|ddddn#1swxYwY|t5|jt|dddddS#1swxYwYdS)	Nrrrr>r3rc eZdZdZdZdZdS)E_TestPool.test_map_handle_iterable_exception.<locals>.SpecialIterablec|SrrWrs r__iter__zN_TestPool.test_map_handle_iterable_exception.<locals>.SpecialIterable.__iter__
srctr)rrs r__next__zN_TestPool.test_map_handle_iterable_exception.<locals>.SpecialIterable.__next__
s""rcdSrrWrs rrzM_TestPool.test_map_handle_iterable_exception.<locals>.SpecialIterable.__len__	
sqrN)rrrsrtrrrrWrrSpecialIterabler
sA



#
#
#




rr)	rrrrirrrrr)rmrs  r"test_map_handle_iterable_exceptionz,_TestPool.test_map_handle_iterable_exception	sZ9	!!MM7>>tyIIJJJ

|
,
,	G	GIMM#;ArBBAFFF	G	G	G	G	G	G	G	G	G	G	G	G	G	G	G

|
,
,	G	GIMM#;ArBBAFFF	G	G	G	G	G	G	G	G	G	G	G	G	G	G	G

|
,
,	G	GIMM#;BBBAFFF	G	G	G	G	G	G	G	G	G	G	G	G	G	G	G								

|
,
,	5	5IMM#00!444	5	5	5	5	5	5	5	5	5	5	5	5	5	5	5


|
,
,	5	5IMM#00!444	5	5	5	5	5	5	5	5	5	5	5	5	5	5	5	5	5	5sZ0BBB40C00C47C40EEE*F99F=F=*HHHc|jtdtf}t	|j}||d||jtdS)Nr
1)	rapply_asyncrrrzrrhrr})rmrrs   r
test_asyncz_TestPool.test_async
sfi##C!X88CG$$###$$S[(;;;;;rc|d}	|jdkrtjnd}|t
dttjz|f}t|j
}|tj
|t||jt||||dS#||||wxYw)Nrrrr)rrrrrrrrr
rzrrirr
rr}r`rr)rmrr[rrs     rtest_async_timeoutz_TestPool.test_async_timeout
sIIaLL
	)-i)?)?IO%%%TE--aG4I)I5%QRRC((Co:CRRR((h??? 		
KKMMM
FFHHHHH 		
KKMMM
FFHHHHs
B+DAEc
|jttt	d}|t|tt
ttt	d|jttt	d}t	dD](}|t|||z)|t|j
|jttt	dd}t	dD](}|t|||z)|t|j
dSNr3r;r&r)rimaprrrPrhrrri
StopIterationrrmrrSs   r	test_imapz_TestPool.test_imap$
sK
Y^^CeBii
1
1b4CeBii(A(A#B#BCCC
Y^^CeBii
1
1r	,	,AT"XXqs++++-555
Y^^CeDkk!2!2c^
B
Bt	,	,AT"XXqs++++-55555rc|jdkr-|d|j|jt
t
ddd}|t|j	|jt
t
ddd}|t|j	|jt
t
ddd}tdD](}|t|||z)|t|j	|jt
t
ddd	}td
D](}|t|||z)|t|j	|jt
t
ddd}tdD](}|t|||z)|t|j	dS)Nrrrr>r3rrr
rrr^)
rrrrrrrrirrrPrhrr s   r#test_imap_handle_iterable_exceptionz-_TestPool.test_imap_handle_iterable_exception2
s9	!!MM7>>tyIIJJJY^^C!=a!D!Da
H
H,444
Y^^C!=a!D!Da
H
H,444
Y^^C!=b!!D!Da
H
Hq	,	,AT"XXqs++++,444Y^^C!=b!!D!Da
H
Hq	,	,AT"XXqs++++,444
Y^^C!=b!!D!Da
H
Hq	,	,AT"XXqs++++,44444rc
f|jttt	d}|t
|ttttt	d|jttt	dd}|t
|ttttt	ddSr)rimap_unorderedrrrPrhrr)rmrs  rtest_imap_unorderedz_TestPool.test_imap_unorderedL
s
Y
%
%c4b		??
;
;T#c4b		??*C*C%D%DEEE
Y
%
%c4d+<+<
%
L
LT#c4d3D3D*E*E%F%FGGGGGrc
\|jdkr-|d|j|jt
t
ddd}|t|j	|jt
t
ddd}|t|j	|jt
t
ddd}ttt
ttd}|t5tdD]<}t|}|||||=	dddn#1swxYwY|jt
t
ddd	}ttt
ttd}|t5tdD]<}t|}|||||=	ddddS#1swxYwYdS)
Nrrrr>r3rrr
r)rrrrr%rrrirrrrrPrrjr)rmrexpected_valuesrSrs     r-test_imap_unordered_handle_iterable_exceptionz7_TestPool.test_imap_unordered_handle_iterable_exceptionS
s9	!!MM7>>tyIIJJJY
%
%c&B1b&I&I&'))	
,444
Y
%
%c&B1b&I&I&'))	
,444
Y
%
%c&B2q&I&I&'))s3U2YY8899


|
,
,	.	.2YY
.
.R

e_555&&u----
.	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.Y
%
%c&B2q&I&I&'))s3U2YY8899


|
,
,	.	.2YY
.
.R

e_555&&u----
.	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.s&A
F66F:=F:A
J!!J%(J%c|jdkrtnt}|||jd|||jd|jdkr|d}	|dt
|j||	dS#||	wxYwdS)Nrr>rr)
rRemoteErrorrBrirrhr_poolrr)rmexpected_errorrs   rtest_make_poolz_TestPool.test_make_poolw
s)-i)?)?++)		
.$)R888.$)Q7779	!!		!A
  CLL111						
"!s3(C*C/c|d}dtdD}|tj|d}||dS)Nrc&g|]}tjSrW)rrrs  rrtz,_TestPool.test_terminate.<locals>.<listcomp>
s<<<$<<<ri'rr)rrPrrrrr)rmrrNrVs    rr=z_TestPool.test_terminate
saIIaLL<<eFmm<<<TZ;;	


	rcP|d}||tgg|t	|tgg|t	|tgg||tgg|	|
dSr)rrhrrrrr%rrrrrLs  rtest_empty_iterablez_TestPool.test_empty_iterable
sIIaLLsB,,,affS"oo..333a..sB7788"===S"--1133R888					rc|jdkrttd}d|D}|d5}|t
|}|||dddn#1swxYwY||	t|jt
|dSdS)Nrr3c,g|]}t|SrW)rrs  rrtz*_TestPool.test_context.<locals>.<listcomp>
s***1A***rr)rrrPrrrrhrrrirB)rmLrWrrs     rtest_contextz_TestPool.test_context
s9##U2YYA*****H1
4KKQ''  (333
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
FFHHHj!+sA>>>>>$#s	ABB Bc td)Nrr0r(s r_test_tracebackz_TestPool._test_traceback
s3rcD|jdkr|d5}	||j|dn#t
$r}|}Yd}~nd}~wwxYwdddn#1swxYwY||t|t|
|jd|j}|t|tjj|d|jt$j5}	|#t$r"t+jt+jYnwxYw	dddn#1swxYwY|d||d5}	|t4t7ddd|dn#t
$r}|}Yd}~nd}~wwxYw|t|t8||jddddn#1swxYwY|dSdS)Nrrzexpected RuntimeError)rz&raise RuntimeError(123) # some commentr>zexpected SayWhenError)rrrr9rfrerrkrr1rhrN	__cause__rrRemoteTracebackrjtbrArrBrw
excepthookexc_infogetvaluerrrr)rmrrexccausef1s      rtest_tracebackz_TestPool.test_traceback
sA9##1
77GGD0111II56666!CCCCCC
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
FFHHHMM$s))\222SXv...MEMM$u++';'KLLLMMBEHMMM--//
424I#444NCLNN333343	
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4

MMB++--
)
)
)1
37EE#;ArBBAFFFII56666!CCCCCC

d3ii666

cmT222
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
FFHHHHHC$#sA9AA9
A*A% A9%A**A99A=A=
F
E)E=:F
<E==F

FFI?*HI?
H-!H(#I?(H--AI??JJc td)NrWr0r(s r_test_wrapped_exceptionz!_TestPool._test_wrapped_exception
s5!!!rc |d5}|t5||jdddn#1swxYwYdddn#1swxYwY|dSr)rrir1rrFrrLs  rtest_wrapped_exceptionz _TestPool.test_wrapped_exception
s
YYq\\	6Q""<00
6
64555
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6	6	6	6	6	6	6	6	6	6	6	6	6	6	6	6	
s4A/AA/A	A/A	 A//A36A3cxtj}|t5|d5}	|tddgtjd||	nA#tjd||	wxYw	dddn#1swxYwYdddn#1swxYwY|
tj|z
ddS)Nrrrrg?)rrrirBrrrrrr
assertGreater)rmt_startrs   rtest_map_no_failfastz_TestPool.test_map_no_failfast
s.""


z
*
*		1
EE/!Q888JsOOOGGIIIFFHHHHJsOOOGGIIIFFHHHHH















																
4>++g5s;;;;;sMDC.B #=C. >CC."D.C2	2D5C2	6DD	D	cdtdD}d|D}|jt|~t	jt
jt|	td|Ddh|	tjddS)Nc*g|]}tSrW)rrs  rrtz4_TestPool.test_release_task_refs.<locals>.<listcomp>
s333A
333rr3c6g|]}tj|SrW)rgrh)rsos  rrtz4_TestPool.test_release_task_refs.<locals>.<listcomp>
s ---1A---rc3*K|]}|VdSrrW)rsrls  rrz3_TestPool.test_release_task_refs.<locals>.<genexpr>
s(11bRRTT111111rr)
rPrrrrirjrrrKrhr`rr)rmobjsrefss   rtest_release_task_refsz _TestPool.test_release_task_refs
s43r333-----	

h%%%


511D11111D6:::	
2A66666rch|jdkr|d|d}|5	dddn#1swxYwY|t5|5	dddn#1swxYwYdddn#1swxYwY|dS)Nrtest not applicable to managerr)rrrrirBrrmrs  r
test_enterz_TestPool.test_enter
sk9	!!MM:;;;yy||
																	


z
*
*		
















																
		sGAA

A
+B.A<0B<B	BB	BBBc~|jdkr|d|d}||t
jj|_tj
dtf5d}tj
ddddS#1swxYwYdS)NrrVrz%unclosed running multiprocessing pool)rrrrrrrRUN_stater
check_warningsResourceWarningr
gc_collectrWs  rtest_resource_warningz_TestPool.test_resource_warnings9	!!MM:;;;yy||		&*.

+8/JLL	!	!D   	!	!	!	!	!	!	!	!	!	!	!	!	!	!	!	!	!	!sB22B69B6)"rrrsrtrrrrrrrrrrrrrrr!r#r&r)r.r=r2r7r9rDrFrHrLrTrXr_
__classcell__rs@rrr	s[    [ ===
;;;??????
:::888)))LLL5554<<<6665554HHH".".".H





???  [ $$$L""["<<<(
7
7
7 !!!!!!!rrc td)Nkey)KeyErrorrWrrraisingres
5//rcdS)NcdS)N*rWrWrrrz%unpickleable_result.<locals>.<lambda> s2rrWrWrrunpickleable_resultris
:rceZdZdZdZdZdS)_TestPoolWorkerErrorsrctjd}dgfd}|t|}|t
|j|d|dt
|	|
dS)Nrc|d<dSrrWrA
scratchpads rerrbackz@_TestPoolWorkerErrors.test_async_error_callback.<locals>.errback)sJqMMMrrr)rrrrerirdrrrrr)rmrrprros    @rtest_async_error_callbackz/_TestPoolWorkerErrors.test_async_error_callback%s ##V
	 	 	 	 	 mmGGm<<(CG,,,
1
&&&jmX666					rcddlm}tjd}t	dD]}dgfd}|t|}|||jd}|	||
d|||j||j
||dS)Nr)MaybeEncodingErrorrrc|d<dSrrWrns rrpz?_TestPoolWorkerErrors.test_unpickleable_result.<locals>.errback<s #
1


rrq)multiprocessing.poolrtrrrPrririrrrassertIsNotNonerArrr)rmrtr	iterationrprwrappedros       @rtest_unpickleable_resultz._TestPoolWorkerErrors.test_unpickleable_result4s;;;;;; ##r	0	0IJ
$
$
$
$
$-- 3G-LLC0#'::: mGOOG$$$!!*Q-1CDDD  ---  ////					rN)rrrsrtrrrrzrWrrrkrk"s7#M


rrkc*eZdZdZdZdZdZdZdS)_TestPoolWorkerLifetimerctjdd}|dt|jd|jD}g}tdD]1}||t|f2t|D]:\}}||
t|;|d}|r\td|jDs>|dz}tjt|rtd|jD>d	|jD}|d||d||t%|t%|||dS)
Nrr3maxtasksperchildcg|]	}|j
SrWrrsrs  rrtzE_TestPoolWorkerLifetime.test_pool_worker_lifetime.<locals>.<listcomp>Ps111A!%111rr&2c3>K|]}|VdSrrrs  rrzD_TestPoolWorkerLifetime.test_pool_worker_lifetime.<locals>.<genexpr>^s*#B#BQAJJLL#B#B#B#B#B#Brrcg|]	}|j
SrWrrs  rrtzE_TestPoolWorkerLifetime.test_pool_worker_lifetime.<locals>.<listcomp>as222Q15222r)rrrhrr,rPrUrr	enumerater_repopulate_poolallrrrKrrrrr)	rmrorigworkerpidsrrSr<r	countdownfinalworkerpidss	         rtest_pool_worker_lifetimez1_TestPoolWorkerLifetime.test_pool_worker_lifetimeMs R888CLL)))11111s	6	6ANN1==qe445555"'**	0	0HQSWWYYA////			#B#B!'#B#B#B B B	NIJu	#B#B!'#B#B#B B B	32!'222~...///F>22F?4K4KLLL					rctjdd}g}tdD]2}||t
|df3||t|D]:\}}|	|
t|;dS)Nrrr~rg333333?)rrrPrUrrrrrrhr)rmrrrSr<rs      r%test_pool_worker_lifetime_early_closez=_TestPoolWorkerLifetime.test_pool_worker_lifetime_early_closejs
 Q777q	9	9ANN1==q#h778888					!'**	0	0HQSWWYYA////	0	0rcdD]J}|t5tjd|dddn#1swxYwYKdS)N)rr>r12rr~)rirBrr)rmrs  r"test_pool_maxtasksperchild_invalidz:_TestPoolWorkerLifetime.test_pool_maxtasksperchild_invalidws'	@	@E"":..
@
@$Q????
@
@
@
@
@
@
@
@
@
@
@
@
@
@
@	@	@sAA		A	cd}tjjd|\}}}||ddS)Naif 1:
            from multiprocessing import Pool
            problem = None
            class A:
                def __init__(self):
                    self.pool = Pool(processes=1)
            def test():
                global problem
                problem = A()
                problem.pool.map(float, tuple(range(10)))
            if __name__ == "__main__":
                test()
        -cr)rArrassert_python_okrhrmcmdrdoutrns     r>test_worker_finalization_via_atexit_handler_of_multiprocessingzV_TestPoolWorkerLifetime.test_worker_finalization_via_atexit_handler_of_multiprocessing|sG|1BB4MMCQrN)rrrsrtrrrrrrWrrr|r|JsX#M:000@@@
     rr|)BaseManager	BaseProxyr+c eZdZdZdZdZdS)FooBarcdS)Nf()rWrs rrzFooBar.fsurctr)rBrs rgzFooBar.gsrcdS)N_h()rWrs r_hz	FooBar._hsvrN)rrrsrtrrrrWrrrrsArrc#<KtdD]	}||zV
dSr)rP)rSs rbazrs4
2YYc				rceZdZdZdZdZdS)
IteratorProxy)rc|SrrWrs rrzIteratorProxy.__iter__src,|dS)Nr)_callmethodrs rrzIteratorProxy.__next__s
+++rN)rrrsrt	_exposed_rrrWrrrrs7I,,,,,rrceZdZdS)	MyManagerNrrWrrrrsDrrFoo)callableBar)rr)rexposedr)r	proxytypec*eZdZdZdZdZdZdZdS)_TestMyManagerrctt}||||||jjdtj	fdSN)shutdown_timeoutr)
rSHUTDOWN_TIMEOUTrcommonshutdownrj_processrr5r;rmrs  rtest_mymanagerz_TestMyManager.test_mymanagerso-=>>>

G
	


g&/!fn_1EFFFFFrctt}|5||dddn#1swxYwY||jjdtjfdSr)rrrrjrrr5r;rs  rtest_mymanager_contextz%_TestMyManager.test_mymanager_contexts-=>>>
	!	!KK   	!	!	!	!	!	!	!	!	!	!	!	!	!	!	!
	


g&/!fn_1EFFFFFs
:>>ctt}||5||dddn#1swxYwY||jjddSr)rrrrrhrrrs  r!test_mymanager_context_prestartedz0_TestMyManager.test_mymanager_context_prestarteds-=>>>


	!	!KK   	!	!	!	!	!	!	!	!	!	!	!	!	!	!	!)2A66666sAAAc|||}fddD}fddD}||ddg||ddg|d|tj|dd|tjd|d|
d|dd|dd|t|d	td
DdS)Nc4g|]}t||SrWr4)rsr)rWs  rrtz)_TestMyManager.common.<locals>.<listcomp>(OOOGC<N<NOtOOOr)rrrc4g|]}t||SrWr)rsr)bars  rrtz)_TestMyManager.common.<locals>.<listcomp>rrrrrrrcg|]}||zSrWrWrs  rrtz)_TestMyManager.common.<locals>.<listcomp>s$<$<$<QQqS$<$<$<rr3)
rrrrhrrirBrrr+rrrP)rmrrfoo_methodsbar_methodsrrWs     @@rrz_TestMyManager.commonskkmmkkmmkkmmOOOO(8OOOOOOO(8OOOsCj111sDk222%(((*ce,,,--u555+s===%(((6***--u555..777c$<$<%))$<$<$<=====rN)rrrsrtrrrrrrWrrrrs[ M	G	G	GGGG777>>>>>rrctSr)_queuerWrr	get_queuersMrceZdZdZdS)QueueManagerz$manager class used by server processNrrrsrtrurWrrrrs....rrrceZdZdZdS)
QueueManager2z@manager class which specifies the same interface as QueueManagerNrrWrrrrsJJJJrr	xmlrpclibcJeZdZdZgdZeddZedZdZdS)_TestRemoteManagerr)hello worldNT@uhallå världenuпривіт світs
hall vrldenNct||tt}||}|t
|jdS)Naddressr
serializerr)r
SERIALIZERrconnectrrrrNrrrrr s     r_putterz_TestRemoteManager._putterseW-///	!!##
		%
##$$$$$rctjd}ttjdf|t
t}|||j	|
|j|j|f}d|_
|t|j|t
t}||}|||j|t*|jt.j~dS)N rrrT)r?urandomrrHOSTrrrr_rrrrrrrrrhrrVrirerrr)rmrrrmanager2r s      rtest_remotez_TestRemoteManager.test_remote
s*R.."'+W-///	

()))LLGOW3MLNN				 OW-///	""$$dk222	
)UY
;;;
EEr)	rrrsrtrrNrVrrrrWrrrrsa MF
AAAYF%%[%rrmd5c*eZdZedZdZdS)_TestManagerRestartct||tt}||}|ddS)Nrr)rrrrrrrs     rrz_TestManagerRestart._putter-s[W-///	!!##
		-     rcvtjd}ttjdf|t
t}	|}|j}|j	
|||j
|j|f}|||}||d~t%|dr|n*#t%|dr|wwxYwt||t
t}	|||jdS#t*$r}|jt,jkrt1jdt||t
t}t%|dr ||jYd}~dSYd}~dSd}~wwxYw)Nrrrrrrr-)r?rrrrrr
get_serverrlistenerrrrrrrrhrr4rr_OSErrorerrno
EADDRINUSErr)rmrrsrvraddrrr rs        rtest_rapid_restartz&_TestManagerRestart.test_rapid_restart6s?*R.."'+W!4DFFF	#%%''D<D
M!!!MMOOODL7QRRA
GGIII
FFHHH%%''EUYY[[-888w
++
#  """w
++
#  """"
#'j-///
	2MMOOOOOG,-----
	2
	2
	2w%***
JsOOO"g*!1333Gw
++
2 0111111111
2
2
2
2
2
2
	2s%CD44'E<.F,,
H86A1H33H8N)rrrsrtrrrrWrrrr*s>!![!'2'2'2'2'2rrc	eZdZdZedZdZdZdZdZ	edZ
edd	Zej
ed
dZej
ed
ejejdkd
ejedkdej
eedddZedZej
ed
ejejdkddZdZdS)_TestConnectionrct|jtD]}|||dSr)r
recv_bytesSENTINEL
send_bytesr)rr8msgs   r_echoz_TestConnection._echoisC22	!	!COOC    

rc|\}}||j|f}d|_|gd}td}|dz}t
jdttd}|j	dkr:|
t|t|
||d|
|||
||d|
|||j	dkrNt
jdd	gdz}t|d	gdt%|z
zz}	|
||d|
||t%||jz|
t||	t
jdd	gdz}d	gd
zt|zd	gdt%|z
zz}	|
||d|
||d
|jzt%||jz|
t||	t+td}|
||d	||}
|d
|
zn8#t.j$r&}|
|j|fYd}~nd}~wwxYwt5|j}|
|d||jd	|
|dd||jd	|
|t<d||jt<|dt?j d|
|t<d||jd	|
|dtddz}
||
|
||
|tB|"|j	dkrv|
|j#d|
|j$d|%tL|j|%tL|j|'dS)NrT)rrNrr3rSr^rrrr
z(                                        zexpected BufferTooShort, got %sFr>rXi)(rrrrrrrvrrPrrhrfilenorFrrrrrrecv_bytes_intoitemsize	bytearrayrfrBufferTooShortrNrzrrr}rrrrrreadablewritableriEOFErrorr)rmr8rrrprlongmsgrwbufferrWrrrreally_big_msgs              rtest_connectionz_TestConnection.test_connectionosl99;;jLL
*L??				ooM""(k#tE!HH~~..9##T$++--00#6663...c***--t444**C0009##[qc"f--FCyyA3"s3xx-#88HT__S114888T11&99 XX7
9
9
9T&\\8444[qc"f--FsQwc*aSFSXX4E-FFHT__S114888T11&!fo:MNN XX7
9
9
9T&\\8444uX//FT__W55t<<<
C**622		;cABBBB#1
5
5
5  '44444444
5
TY'''''$$T\1555b5)))$$T\1555h///$$T\8<<<		$
2h...$$T\1555d+++s'78'''**N;;;!!!9##T]D111T]D111h	222h888	s2N  O/OOc|d\}}||dd||d|jdkr||jd||jd||jd||jd|t|jd|t|j|t|j	dSdS)NFrrrTr)
rrhrrrrrrirr)rmreaderwriters   rtest_duplex_falsez!_TestConnection.test_duplex_falses%00Q...***9##V_d333V_e444V_e444V_d333gv{A666gv{333gv{33333$#rc|\}}||j|f}d|_||t
d}||||	||t||dS)NrTr)rrrrrrrrrhrrr)rmr8rrrs     rtest_spawn_closez _TestConnection.test_spawn_closes 99;;jLL
*L??				Gnn**C000!!!

	rc|jdkr-|d|jtd}|\}}|||||||d|||dd||dd|||dd||d||td	||dd
||td	|t|j|d|t|j|dd|t|j|dd
|t|j|d|t|j|dddS)Nrrabcdefghijklmnopqrstuvwxyzrr
rrrrr>r^)
rrrrrrrhrrirB)rmrrrs    rtest_sendbytesz_TestConnection.test_sendbytess9##MM7>>tyIIJJJ011yy{{1	S---	S!QRR111	S!QQsU444	S"r333	S"a   r333*alC<<<*alCQ???*alCQ???*alC<<<*alCB?????rc	tj|dS#t$r!}|jtjkrYd}~dSd}~wwxYwr])r?fstatrrEBADF)rrrs   r_is_fd_assignedz_TestConnection._is_fd_assigned
s[	HRLLL4			w%+%%uuuuu	s
A>>AFcn|rOtddD]>}||s'tj||?tj|}trtj|tj	}tj
||tj|dS)Nrr6)rPrr?dup2rr
recv_handlemsvcrtopen_osfhandlerr0r)rr8datacreate_dummy_fdsrSrs      r_writefdz_TestConnection._writefd
s	.1c]]
.
.**1--.GDKKMM1---

"4
(
(	8&r2;77B
T
r$test needs multiprocessing.reductionc|jdkr|d|d\}}||j|df}d|_||tj	tj
ttj
d5}|}trtj|}tj|||jdddn#1swxYwY|ttj
d5}||dddddS#1swxYwYdS)	Nronly makes sense with processesTrsfoorwbrb)rrrrr#rrr_rrrrrr
get_osfhandler
send_handlerrrhr)rmr8rrrrs      rtest_fd_transferz _TestConnection.test_fd_transfer
s9##MM;<<<99D911jLL
Z4HLII					()*:;;;
)"D
)
)	3QB
.)"--!$AE222		3	3	3	3	3	3	3	3	3	3	3	3	3	3	3
	

)"D
)
)	/QQVVXXv...	/	/	/	/	/	/	/	/	/	/	/	/	/	/	/	/	/	/s%7ADDD)E==FFr-*test semantics don't make sense on Windowsr6z)largest assignable fd number is too smallrztest needs os.dup2()c|jdkr|d|d\}}||j|ddf}d|_||tj	tj
ttj
d5}|}tdtD]}||sn|d	t#j||	t'j|||jt#j|n#t#j|wxYw	dddn#1swxYwY|ttj
d
5}||dddddS#1swxYwYdS)Nrr&Trsbarrr'r6z2could not find an unassigned large file descriptorr()rrrrr#rrr_rrrrrrPMAXFDrrfr?rr
r*rrrrhr)rmr8rrrrnewfds       rtest_large_fd_transferz&_TestConnection.test_large_fd_transfer*
s<9##MM;<<<99D911jLL
Z4NLOO					()*:;;;
)"D
)
)	 QBsE**
P
P++E22E		NOOOGB
 %dE15999	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	

)"D
)
)	/QQVVXXv...	/	/	/	/	/	/	/	/	/	/	/	/	/	/	/	/	/	/s=8A.E='EE=E--E==FF6)G,,G03G0cTtj|ddS)N)r?r0rrmr8s  r_send_data_without_fdz%_TestConnection._send_data_without_fdK
s"
&&&&&rzdoesn't make sense on Windowsc\|jdkr|d|d\}}||j|f}d|_||ttj
||dS)Nrr&Trr)rrrrr4rrrir1r
rrrmr8rrs    rtest_missing_fd_transferz(_TestConnection.test_missing_fd_transferO
s
9##MM;<<<99D911jLL :*LOO				,	(=tDDD	rc|\}}|5|5|d||d|jdkr4||j||jdddn#1swxYwYdddn#1swxYwY|jdkrv||j||j|t|j|t|jdSdSNr)
rrrhrrrclosedrrirrs   rr7z_TestConnection.test_context^
syy{{1
	+	+	+	+
FF4LLLQVVXXt,,,yK''  ***  ***	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+9##OOAH%%%OOAH%%%gqv...gqv.....	$#s5B=A=B&B=&B*	*B=-B*	.B==CCNr)rrrsrtrrrr
rrrrr#rCr
HAS_REDUCTIONr+rvrwrxr.r4r?r0r4r7r7rWrrrres,M[
MMM^444*@@@@[			[	X(NOO//PO/$X(NOOX_S\W,ACCX_Uc\@BBXV,,/11//11BBCCPO/4''['X(NOOX_S\W,.MNNONPO/////rrc\eZdZdZdZdZejej	ddZ
dS)
_TestListenerrc|jjD]c}|j|}||j|t|jj|j|ddS)Nfamily)
connectionfamiliesListenerr_rrirr)rmrArs   rtest_multiple_bindz _TestListener.test_multiple_bindr
syo.	1	1F(((77AOOAG$$$gt'?i
1
1
1
1	1	1rc|j5}|j|j5}|5}|d||ddddn#1swxYwYdddn#1swxYwYdddn#1swxYwY|jdkr"|	t|jdSdSr9rBrDClientracceptrrhrrrir)rmrrr@s    rr7z_TestListener.test_contexty
s
_
%
%
'
'	51''	22
5aXXZZ51FF4LLL$$QVVXXt444555555555555555
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5	5	5	5	5	5	5	5	5	5	5	5	5	5	5	59##gqx00000$#sX CB0>B
B0BB0 B!B0$C0B4	4C7B4	8CCCz"test needs abstract socket supportc|jd5}|j|j5}|5}|d||ddddn#1swxYwYdddn#1swxYwYdddn#1swxYwY|jdkr"|	t|jdSdS)Nz
somethingr:rrG)rmrclientr@s    rtest_abstract_socketz"_TestListener.test_abstract_socket
s_
%
%m
4
4	5''(899
5V__&&5!KK%%%$$QVVXXt444555555555555555
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5	5	5	5	5	5	5	5	5	5	5	5	5	5	5	59##gx77777$#sX CB1>BB1BB1!B"B1%C1B5	5C8B5	9CCCN)rrrsrtrrEr7rCrrabstract_sockets_supportedrLrWrrr>r>n
sl"M111111X8=??88??888rr>c:eZdZdZedZdZdZdZdS)_TestListenerClientrc|j|}|d|dS)Nr)rBrHrr)rrr8s   rrz_TestListenerClient._test
s:~$$W--		'

rc|jjD]}|j|}||j|jf}d|_||}|	|
d||dS)Nr@rTr)
rBrCrDrrrrrrIrhrrr)rmrArrr8s     rtest_listener_clientz(_TestListenerClient.test_listener_client
so.		F(((77ADJai\BBAAH
GGIII88::DTYY[['222
FFHHH
GGIIII		rc|j}||j|jf}d|_|tjd|	}|
|d||
|dS)NrTrr)rBrDrrrrrrrrIrhrrr)rmrrr8s    rtest_issue14725z#_TestListenerClient.test_issue14725
sO$$&&LL
!)L>>				
1


xxzzg...

							rc|jjD]}|j|}|j|j}|}|d||d|	|	|	dS)Nr@hellor)
rBrCrDrHrrIrrrr)rmfamrrrs     rtest_issue16955z#_TestListenerClient.test_issue16955
s?+		C(((44A&&qy11A

A
LL"""OOAFF1II&&&
GGIII
GGIII
GGIIII		rN)	rrrsrtrrrrRrTrXrWrrrOrO
s_,M[
			 					rrOcleZdZdZdZedZdZedZdZ	edZ
dZd	S)
	_TestPollrcN|\}}||d|d||d||ddS)NFrT)rrhrrrs   rtest_empty_stringz_TestPoll.test_empty_string
syy{{15)))	S4(((4(((((rc|D]+}tjd||,|dSNr)rrrr)rr8stringsrs    r_child_stringsz_TestPoll._child_strings
sD		AJsOOOOOA

rctd}|\}}||j||f}||D]U}t	dD]}|drn|}|||V|dS)N)rVrabrsbyersloprrq)	rrr`rrPrrrhr)rmr_rrrrrSrEs        rtest_stringsz_TestPoll.test_strings
sGyy{{1LL 31g,LGG					#	#A3ZZ

66$<<EAQ""""	rc0|ddSr)r)rr6s  r_child_boundariesz_TestPoll._child_boundaries
s	
q					rc|d\}}||j|f}|t	jdddg}|D]}|||||	|
|dS)NFrrsfirstssecond)rrrgrrrrrrrjr)rmr6rrr5r&s      rtest_boundariesz_TestPoll.test_boundaries
syy1LL 6aTLBB				
1



y!		C
LL					

allnna(((((rc|d|d|ddS)Nrbrccd)r)rrs  r_child_dont_mergez_TestPoll._child_dont_merge
s>	T	T	Urc|\}}||dd||dd||j|f}|||d||dd||dd||d||dd||dd||dd||d	|dS)
Nr1Frrrbr-Trcrk)rrhrrrlrrr)rmrrrs    rtest_dont_mergez_TestPoll.test_dont_merge
syy{{1e,,,e,,,LL 6aTLBB				...d+++d+++...d+++d+++d+++///	rN)rrrsrtrr\rr`rergrirlrnrWrrrZrZ
s,M)))[


[
)
)
)[
rrZr$cveZdZdZedZedZedZdZedZ	dZ
dS)	_TestPicklingConnectionsrcRddlm}|tjdS)Nr)resource_sharerr)rrrrrr)rrrs  rrz&_TestPicklingConnections.tearDownClasss4333333W%9:::::rcz|D]}|j|}||j|}||||t
jtj	df}||
|\}}|||||dS)Nr@r)rBrDrrrIrsocket
create_serverrrgetsocknamer)rr8rCrWrnew_connrs       r	_listenerz"_TestPicklingConnections._listeners		C''s'33AIIai   xxzzHIIhNN
GGIIII -"4a!899		!--//"""$		(						rct|jdD]Z\}}|j|}|||[|\}}tj}|||	|||dSr)
rrrBrHrrrrtrsendall)rr8rrrKs     r_remotez _TestPicklingConnections._remote0s"49d33		NWc^**733FKK		$$$LLNNNNyy{{wsyy{{###

rcl|jj}|\}}||j||f}d|_|||\}}||j|f}d|_|||D]}d|z	d}	|
}
||
|	f|
}||
|	
|dtd}	|
}
||
|	f|
}g}	|
d}
|
sn||
.d|}|||	
||d||||dS)NrTzThis connection uses family %sasciiz$This connection uses a normal socketr&r)rBrCrrrxrrrr{rrrrhrrrUr)rmrClconnlconn0lprrconn0rprWrrrwbufrs              r
test_picklingz&_TestPicklingConnections.test_pickling?s8?+		
v
\\vx6H\
I
I	



		
v
\\VI\
>
>	



	;	;C3c9AA'JJCjjllGJJ~&&&zz||HX]]__ciikk::::

4:;;**,,

GS>"""::<<	

c""A
JJqMMM		
hhsmmciikk***

4








			
					rc(|}|d||}|}||dz|dS)Nall is wellr)rrr)rr8rr6rs     rchild_accessz%_TestPicklingConnections.child_accessmsoIIKK	}				IIKKffhh		#a%

rc|\}}||j|f}d|_|||d\}}|||||d||d\}}||||d|||d|	dS)NrTFrrfoobarfoobarfoobar)
rrrrrrrrhrr)rmr8rrr6rs      rtest_accessz$_TestPicklingConnections.test_accessys5 99;;jLL 1
LFF				yyy&&1		!				=111				yyy&&1		!					x				j111	rN)rrrsrtrrrrxr{rrrrWrrrprps#M;;[;[$[,,,\		[	rrpc8eZdZdZfdZfdZdZdZxZS)	_TestHeaprcttjjj|_tjtjj_dSr)rrrrr_heapold_heapHeaprmrs rrz_TestHeap.setUpsG


',:@
3B3G3L3L3N3N*000rc~|jtjj_tdSr)rrrrrrrrs rrz_TestHeap.tearDowns/37=*0
rc
,d}d}g}tjjj}d|_t|D]}t
tjdddz}tj|}|	|t||krtj|}||=~|j5g}d}	d}
t|jD]H}|D]C\}}
}|	|j||
|||
z
df|	||
z
z
}	DI|jD]J\}}|D]B\}
}|	|j||
|||
z
df|
||
z
z
}
CK||	|
zt+d|jD|tt|dz
D]}||dd	\}}
}||dzdd	\}}}||kr=|||j|j||dp|||	dddn#1swxYwYtj||r||||j|j|t|jd|t|jd|t|jd|j|t|jddS)
Nrrrr;freeoccupiedc3$K|]}|jVdSrrz)rsarenas  rrz&_TestHeap.test_heap.<locals>.<genexpr>s$ F F F F F F F Frr)rrrr_DISCARD_FREE_SPACE_LARGER_THANrPrFrandomlognormvariaterUr	randrangerr_len_to_seqrN_arenasindex_allocated_blocksrrhsumsortrzshuffler_n_frees
_n_mallocs_pending_free_blocks)rm
iterations	maxblocksblocksrrSrzrrrrr5rrrarena_blocksnarenanstartnstops                   r	test_heapz_TestHeap.test_heaps
	#17/0,z""		Av,Q22T9::D$22488AMM!6{{Y&&$Y//1IZ	3	3CDH$*113344
)
)*+))&E5$JJ 2 25 9 95$ $U
F 4555T%Z(DD)(,'='C'C'E'E
-
-#|#/--KE4JJ 2 25 9 95$ $U
J 8999e,HH-

TH_  F F F F FFF
H
H
H
HHJJJ3s88A:&&	
3	
3'*1vbqbz$t*-ac(2A2,'F??$$T4<+>+CDDD$$VQ////$$T62222	
3-	3	3	3	3	3	3	3	3	3	3	3	3	3	3	3D	v	JJLLL		
888T677;;;T\**A...T344a9OPPPT-..22222sG	JJJctjs2tj|tjtj}|jtjg|RtjdtdD]N}tj	
d}tj	
d}||_||_OdS)Nr3rr)ri	isenabledenabler_disable
get_threshold
set_thresholdrPrrrbuddy)rm
thresholdsrSrrs     rtest_free_from_gcz_TestHeap.test_free_from_gcs|~~	(IKKKOOBJ'''%''
(6:6666
t		A$22155A$22155AAGAGG		r)	rrrsrtrrrrrr`ras@rrrsz"MOOOOO>3>3>3@rrc$eZdZdefdefdefgZdS)_FoorErFzN)rrrsrtr9r:r;_fields_rWrrrrs+	e	h	j
HHHrrcBeZdZdZdZedZd	dZdZdZ	dS)
_TestSharedCTypesrcBts|ddSdSrHrIrs rrz_TestSharedCTypes.setUp
rJrc$|xjdzc_|xjdzc_|xjdzc_|xjdzc_|xjdzc_|xjdzc_tt	|D]}||xxdzcc<dSru)rrErFrPr)rrErFrrWrwstringrSs        r_doublez_TestSharedCTypes._doubles	1	1	1

s3xx		AFFFaKFFFF		rFc	tdd|}ttd|}ttd|}ttdd|}|dtt
d	|}|d
d|}td|_|	|j
||||||f
}d|_||
||jd||jd||jd||jd||jdt
d	D]!}	|||	|	dz"||jtddS)NrSr
r]gUUUUUU?rCrrr@r3rrrrTgUUUUUU?rDr@
hellohello)rr:r;rrurrPrrrrrrrrhrrErF)
rmrcrErFrrWrwrrrSs
          rtest_sharedctypesz#_TestSharedCTypes.test_sharedctypess#qt$$$(G$///*gD111D!QT***jjd599ooDj99C$//W~~LLAq!S#v3NLOO					"%%%qw000'***"""suc***r	0	0A""3q61Q3////u\':':;;;;;rc2|ddS)NTr])rrs rtest_synchronizez"_TestSharedCTypes.test_synchronize3sD)))))rctddd}t|}d|_d|_d|_||jd||jd||jddS)Nr@rCr)rrrErFrrhr)rmrWrs   r	test_copyz_TestSharedCTypes.test_copy6s1c7##3ii"""suc***(((((rNr)
rrrsrtrrrrrrrrWrrrr	sx"MCCC[<<<<.***)))))rrz&requires multiprocessing.shared_memoryceZdZdZedZdZdZdZdZ	dZ
dZd	Ze
jejd
kddZe
jejd
kd
dZdZdZdZdZdZdS)_TestSharedMemoryrct|trtj|}n|}||jdt|<|dSr)rrkrSharedMemoryrrr)shmem_name_or_objbinary_data	local_smss   r!_attach_existing_shmem_then_writez3_TestSharedMemory._attach_existing_shmem_then_writeGs]'--	*%23DEEII)I+6	
's;'''(rcH|ttjzSr)rkr?r)rmprefixs  r
_new_shm_namez_TestSharedMemory._new_shm_namePsBIKK((((rcX|d}tj|dd}||j||j|||jd|t|j
|j||jt||t|jt|d|j
d<||j
ddtj|}||j
dd|
tj|d|jz}||jd|jz|
|t 5tjdd	dddn#1swxYwY|t 5tjd
dddn#1swxYwYt"jd5}tj|d
|dg}fd|D}||_tjdd}||j||j|d||_tjdd}||j||j|ddddn#1swxYwYtjr|d}	tj|	dd}
|t05	||
jdtj|	}||
|

|
n#|
wxYw	dddn#1swxYwY|t25tj|dd}dddn#1swxYwYtjrWGddtj}
|
|}||j|j|
|t05tjd}|dddn#1swxYwY|
dS)Ntest01_tsmbTcreaterzrhrrrFr,multiprocessing.shared_memory._make_filename	test01_fn	test02_fncg|]}|zSrWrWrsr)NAME_PREFIXs  rrtz?_TestSharedMemory.test_shared_memory_basics.<locals>.<listcomp>:::D[4':::rrtest01_dblunlinkrc,eZdZejejzZdS)O_TestSharedMemory.test_shared_memory_basics.<locals>.OptionalAttachSharedMemoryN)rrrsrtr?rO_RDWR_flagsrWrrOptionalAttachSharedMemoryrsbi/rrtest01_notthere)rrrr_rrhr)r7rzrrrjrkr
assertLessrirBrCmockpatch_SHM_NAME_PREFIXside_effect_name
_USE_POSIXFileNotFoundErrorFileExistsError)rm	name_tsmbsmsalso_smssame_smsmock_make_filenamenamesshm1shm2name_dblunlinksms_unosms_duothere_can_only_be_one_smsrok_if_exists_smsnonexisting_smsrs                @rtest_shared_memory_basicsz+_TestSharedMemory.test_shared_memory_basicsVs&&}55	(4cJJJ
###	
9---#...CGch777	


chC)))

c#(mmSXX...
R(((!-i88a"---!-ibkJJJ
r#({333

z
*
*	=	=&d<<<<	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=

z
*
*	5	5&e4444	5	5	5	5	5	5	5	5	5	5	5	5	5	5	5
]
 
 :<<	3?Q'8K''44d6H6H6U6UVE;:::E:::E-2* -TBBBDOODK(((TZq222-2* -TBBBDOODK(((TZq222#	3	3	3	3	3	3	3	3	3	3	3	3	3	3	3&#	%"//0BCCN#0G
""#455

%

%	%++GL$???+8HHGNN$$$MMOOOMMOOONN$$$$GNN$$$$$

%

%

%

%

%

%

%

%

%

%

%

%

%

%

%


/
/		)6(B)))%															#	%
0
0
0
0
0]-G
0
0
099)DD-2CH===""$$$

0
1
1	%	%+89JKKO""$$$	%	%	%	%	%	%	%	%	%	%	%	%	%	%	%			s+HHH3III?C5NNNRA+Q
RQ55RR	R	*SSS)VVVc`tjd5}tj|d|dg}fd|D}||_tjdd}||j	|
|j|d||_tjdd}||j	|
|j|dddddS#1swxYwYdS)	Nr	test03_fn	test04_fncg|]}|zSrWrWrs  rrtzA_TestSharedMemory.test_shared_memory_recreate.<locals>.<listcomp>rrTrrr)rCrrrrrrrr_rrhr)rmrrrrrs     @rtest_shared_memory_recreatez-_TestSharedMemory.test_shared_memory_recreatesg]
 
 :<<	3?Q'8K''44d6H6H6U6UVE;:::E:::E-2* -TBBBDOODK(((TZq222-2* -TBBBDOODK(((TZq222#	3	3	3	3	3	3	3	3	3	3	3	3	3	3	3	3	3	3sC5D##D'*D'c|t5tjdd}dddn#1swxYwY|t5tjdd}dddn#1swxYwY|t5tjd}ddddS#1swxYwYdS)NTr>rrr)rirBrr)rmsms_invalids  r"test_invalid_shared_memory_crationz4_TestSharedMemory.test_invalid_shared_memory_crations


z
*
*	K	K'4DrJJJK	K	K	K	K	K	K	K	K	K	K	K	K	K	K	K

z
*
*	J	J'4DqIIIK	J	J	J	J	J	J	J	J	J	J	J	J	J	J	J

z
*
*	B	B'4DAAAK	B	B	B	B	B	B	B	B	B	B	B	B	B	B	B	B	B	Bs3>AA#BB

B
+CCCc	`ttjdzD]}||5t	jdd}||jd|jdd<tj	||	}tj
|}||tj||j
|j
|t|jddd|t|jdddd
|jdd<|t|jddd
|t|jddd
d|jdd<|t|jddd|t|jddddddn#1swxYwYdS)NrprotoTrrpicklerrprotocolsnewvalsoldval)rPpickleHIGHEST_PROTOCOLrrrr_rrdumpsloadsrrhr)r)rmrrpickled_smssms2s     r"test_shared_memory_pickle_unpicklez4_TestSharedMemory.test_shared_memory_pickle_unpicklesL62Q677	B	BEE**
B
B#03GGG
+++(!%l3???|K00%%dM,FGGG  49555  swqs|!4!4i@@@  tx!}!5!5yAAA )!  swqs|!4!4i@@@  tx!}!5!5yAAA )1
  swqs|!4!4i@@@  tx!}!5!5yAAA-
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B	B	BsGH!!H%	(H%	cttjdzD]}||5t	jdd}d|jdd<tj||	}||	|
t5tj|dddn#1swxYwYdddn#1swxYwYdS)
NrrTrrrrrr)
rPrrrrrrrrrrirr)rmrrrs    r.test_shared_memory_pickle_unpickle_dead_objectz@_TestSharedMemory.test_shared_memory_pickle_unpickle_dead_objectsc62Q677	.	.EE**
.
.#03GGG(!$l3???		

&&'899..L---...............
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.	.	.s6A;C(0CC(CC(CC((C,	/C,	ctjdd}||j||j|jdf}d|_||	|
t|jddd||j|df}d|_||	|
t|jddd|
dS)NTrrshowdyrrsHELLO)rrr_rrrr)rrrrhrrr)rmrrs   r#test_shared_memory_across_processesz5_TestSharedMemory.test_shared_memory_across_processess%(3???
###
LL9(H%


					swrr{++X666
LL9x


					swrr{++X666		rr%z#not feasible in non-posix platformsc0tj}||td}t
j|jj	tj|td}|t5t
jt
jtjdddn#1swxYwY|dSr)rmanagersSharedMemoryManagerr
ShareableListrPr?rArrr5rrirrr)rmsmmslsl2s    r4test_shared_memory_SharedMemoryServer_ignores_sigintzF_TestSharedMemory.test_shared_memory_SharedMemoryServer_ignores_sigint.s
&::<<		

uRyy
)
)
	 &-000b		**

0
1
1	0	0GBIKK///	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	s:1C77C;>C;zresource_tracker is posix onlycd}tjjd|\}}}||dS)Nzif 1:
            from multiprocessing.managers import SharedMemoryManager


            smm = SharedMemoryManager()
            smm.start()
            sl = smm.ShareableList(range(10))
            smm.shutdown()
        r)rArrrrrs     r>test_shared_memory_SharedMemoryManager_reuses_resource_trackerzP_TestSharedMemory.test_shared_memory_SharedMemoryManager_reuses_resource_trackerFsG|1BB4MMC	
rctj|t5ddddn#1swxYwYfdtddD}fdtddd	D}tj	|d
j
j}|t|dtj|d
j}|t|jd|d
j}t"jdkrG|t&5tj|}dddn#1swxYwYtj5}|	d
}|d}	|j
j}dddn#1swxYwYt"jdkrJ|t&5tj	|}
ddddS#1swxYwYdSdS)NrrcTg|]$}t|%SrW)r"rP)rsrSsmm1s  rrtzS_TestSharedMemory.test_shared_memory_SharedMemoryManager_basics.<locals>.<listcomp>`s-DDD""588,,DDDrrr3c<g|]}|S)r)r)rsr<r+s  rrtzS_TestSharedMemory.test_shared_memory_SharedMemoryManager_basics.<locals>.<listcomp>as*GGGa!!q!))GGGrrrr)r-howdy)rr r!rirBrrrPrr"shmr)rhrr7rrrwrxr)rmlollomdoppleganger_list0doppleganger_shm0	held_name
absent_shmsmm2r$r1	absent_slr+s           @r-test_shared_memory_SharedMemoryManager_basicsz?_TestSharedMemory.test_shared_memory_SharedMemoryManager_basics[sh';;==


z
*
*	&	&1%%%	&	&	&	&	&	&	&	&	&	&	&	&	&	&	&

DDDDeArllDDDGGGG5S"3E3EGGG*8c!fjoNNN/00!444)6CFKHHH$5$9 : :B???FK	

<7""""#455
H
H*7YGGG

H
H
H
H
H
H
H
H
H
H
H
H
H
H
H
%
9
9
;
;	$t##G,,B###--CI	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$<7""""#455
H
H)7YGGG	
H
H
H
H
H
H
H
H
H
H
H
H
H
H
H
H
H
H#"sGAA!$A!F22F69F68HH#&H#I77I;>I;ctjgd}||jj||jjt||tt|t||	t5|ddddn#1swxYwY|	t5d|d<dddn#1swxYwY|d}d|d<|||d||j
d|t|dtj5tjd|	t$5|ddddn#1swxYwY||d	d
dddn#1swxYwY||dd||dd|t)|dd
|d
<||d
d
d|d<||dd||j
d|t$d5d|d<dddn#1swxYwY||ddd|d<||dd||dd|t$d5d|d<dddn#1swxYwY||dd|t$d5d|d<dddn#1swxYwY||ddtj5tjd||d
d||dd||dddddn#1swxYwY|d}tj||}	||jj|jj|||jj|t|t|||j
|j
d|d<||dd||dd|j|jn#|jwxYwtj|jj}||jj|jjd|d<||dd|j|jtj}	|t|d||j
d||dd|	t$5|ddddn#1swxYwY|j|jdS#|jwxYw) N)r0HoWdYgX9vqr&NTrhr
rrr0z8s8sdqxxxxxx?xxxxxxxx?qignore100r&rrTrhsomer^z8s8sdq8sxxxxxxx?qzexceeds available storagezfar too manyuencodésrr<u	encodéess	123456789sadiostest03_duplicater/Mr>iprany)rr"r_r1rrjr)rkrri
IndexError_get_packing_formatrhrrwarningscatch_warningssimplefilterrBrrrXrrrr)rmr$current_formatname_duplicatesl_copysl_tetheredempty_sls       r'test_shared_memory_ShareableList_basicsz9_TestSharedMemory.test_shared_memory_ShareableList_basicsys[	

(>>>

	

&&&	


bfk3r77+++

c$r((mmSWW---

z
*
*		qEE															

z
*
*		BqE															//221)?)?)B)BCCC	
$=>>>	
R!$$$
$
&
&	/	/!(+++"":..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 RXXc]]A...	/	/	/	/	/	/	/	/	/	/	/	/	/	/	/	
A(((B&&&	
"II>	
	
	
1A###1A'''$7888

#
#J$?AA	#	#"BqE	#	#	#	#	#	#	#	#	#	#	#	#	#	#	#	
A'''1A
+++A)))

#
#J$?AA	 	 BqE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
A)))

#
#J$?AA	!	! BqE	!	!	!	!	!	!	!	!	!	!	!	!	!	!	!	
A)))
$
&
&	4	4!(+++RXXb\\1---RXXh//333RXXh//333	4	4	4	4	4	4	4	4	4	4	4	4	4	4	4++,>??-b~FFF
	!W[-=>>>^W[-=>>>T"XXtG}}555RY777GBKWR["---2+++KK    GK    $1rv{CCCko&:;;;BB%%%
!.00	"S]]A...X_b111X^^E22A666"":..
%
%t$$$
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%L   L!!!!!HL!!!!s:	CCC4DD

D
%/H6G6*H66G:	:H6=G:	>,H66H:=H:L&&L*-L*%N77N;>N;9PPPBS!!S%(S%C0X""X=0B_1^_^_^__-cBttjdzD]}||5t	jtd}||jjtj	||}tj
|}||tj||dd|
||d|d<||ddd	|d
<||d
d	t	jtd}||jjtj	||}|t|t||j|j|jdddn#1swxYwYdS)Nrrr3rr>rchangedr^newvalueri)rPrrrrr"r_r1rrrrrhassertIsNotrr)rmrr$
serialized_sldeserialized_sl	larger_slserialized_larger_sls       r)test_shared_memory_ShareableList_picklingz;_TestSharedMemory.test_shared_memory_ShareableList_picklings!62Q677		EE**

"0r;;
... &R% @ @ @
"(,}"="=%%#]%@BBB  !4a888  _555%."  A	222"1  !3Z@@@)7c

CC		
 4555'-|I'N'N'N$  ]!3!3S9M5N5NOOO
##%%%#))+++/














		sGHH	H	cttjdzD]}||5t	jtd}tj||}|j|j	|
t5tj|dddn#1swxYwYdddn#1swxYwYdS)Nrrr3r)
rPrrrrr"rr1rrrirr)rmrr$rRs    r5test_shared_memory_ShareableList_pickling_dead_objectzG_TestSharedMemory.test_shared_memory_ShareableList_pickling_dead_objectsY62Q677	0	0EE**

0

0"0r;; &R% @ @ @


&&'89900L///000000000000000

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0	0	0s6BC19CC1CC1!C"C11C5	8C5	cd}tjtjdd|gtjtj5}|j}|	|
d}tjtj
|D]*}	tj|d}#t $rYnwxYwt"jdkrYt'jd	|d
|j}|d|ddddS#1swxYwYdS)NaXif 1:
            import os, time, sys
            from multiprocessing import shared_memory

            # Create a shared_memory segment, and send the segment name
            sm = shared_memory.SharedMemory(create=True, size=10)
            sys.stdout.write(sm.name + '\n')
            sys.stdout.flush()
            time.sleep(100)
        -ErrzIA SharedMemory segment was leaked after a process was abruptly terminatedFrr%/rz[resource_tracker: There appear to be 1 leaked shared_memory objects to clean up at shutdown)
subprocessPopenrwrPIPErreadlinestripdecoderr/rsleeping_retryrrrrr?r)r&
unregisterrrrj)rmrrr)err_msgrr#rns        r4test_shared_memory_cleaned_after_process_terminationzF_TestSharedMemory.test_shared_memory_cleaned_after_process_terminations	
s~tT3?%/_%/_666 	J9:8$$&&,,..5577D
KKMMM
FFHHH;G+G,@'JJ

'4T%HHHCC(EEw'!!!+JJJHHH
hmmoo,,..

DEHJJJ= 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	Js7B	E$CE$
C+'E$*C++A,E$$E(+E(N)rrrsrtrrQrrrr
r
rrrrCrvr?r)r&r(r:rMrVrXrerWrrrrAsd#M\)))nnn`333,BBBBBB4
.
.
.8X_RW')NOOPO.X_RW')IJJKJ(HHH<o"o"o"b6000+J+J+J+J+JrrcleZdZdZdZdZedZdZe	j
ddZdS)	
_TestFinalizerctj|_tjdSr)r_finalizer_registryrregistry_backuprrs rrz_TestFinalize.setUpHs4#7<<>> &&(((((rctj|tjtj|jdSr)rirjrrriupdaterjrs rrz_TestFinalize.tearDownLsD

1222 ''(<=====rcGddt}|}tj||jd~t	j|}tj||jd}||~t	j|}tj||jd|}tj||jdd	|}tj||jd
d	|}	tj|	|jdd	|}
tj|
|jd
d	tjd|jdd	tjd|jdd	tj|tj	ddS)NceZdZdS))_TestFinalize._test_finalize.<locals>.FooNrrWrrrroSDrr)rr)r)r)d10r)rNexitpriority)d01r)d02)d03)ri)STOPi)
r@rFinalizerrirj_exit_functionrr?_exit)rr8rrrclose_brrqrsrtrus           r_test_finalizez_TestFinalize._test_finalizeQs					&			
CEE
a0000


CEE-496:::						


CEE
a0000cee
c498!DDDDcee
c498!DDDDcee
c498!DDDDcee
c498!DDDD
dDIFEEEE
dDIIDIIII	



rc:|\}}||j|f}d|_||dt
|jdD}||gddS)NrTcg|]}|SrWrW)rsr&s  rrtz/_TestFinalize.test_finalize.<locals>.<listcomp>s999##999rrv)rrrqrurtrsr)	rrr{rrrrrrh)rmr8rrrVs     r
test_finalizez_TestFinalize.test_finalizeys99;;jLL 3:-LHH					99di!8!8999!L!L!LMMMMMrrc	dGfddtd	d	fd}	fd}tj}tj}	tjdtjdddtj|	tj|	g}tj
|5tjd
d	dddn#1swxYwY	tj|tj|tj
dS#tj|tj|tj
wxYw)NcdSrrWrWrrcbz,_TestFinalize.test_thread_safety.<locals>.cbDrceZdZfdZdS)-_TestFinalize.test_thread_safety.<locals>.Foocj||_tj|tjdddS)Nrr&)rr)rhrrwrrandint)rmrs rr~z6_TestFinalize.test_thread_safety.<locals>.Foo.__init__s3
dBV^As5K5KLLLLLLrN)rrrsrtr~)rsrrrs5
M
M
M
M
M
M
MrrFcsZtjtjdz	tjn#t
$r}|Yd}~nd}~wwxYwXdSdSr^)rrrr_run_finalizersre)rrAfinishs rrun_finalizersz8_TestFinalize.test_thread_safety.<locals>.run_finalizerss

6=??T1222(**** CCCCCC





sA
AAAci}sc	fdtdD|tjd<n-#t$r }||Yd}~nd}~wwxYwadSdS)Nc$h|]}
SrWrW)rsrSrs  r	<setcomp>zL_TestFinalize.test_thread_safety.<locals>.make_finalizers.<locals>.<setcomp>s/I/I/I!/I/I/Irr3r)rPrgetrandbitsrer)r@rrrArs  rmake_finalizersz9_TestFinalize.test_thread_safety.<locals>.make_finalizerssA
0J/I/I/IuRyy/I/I/IAf(++,, CGGIIIIIIII




s08
A"AA"gư>rrrT)r@rwgetswitchintervalrirsetswitchintervalrrrr	
start_threadsrrrj)
rmrrold_interval
old_thresholdrrrrArs
      @@@@rtest_thread_safetyz _TestFinalize.test_thread_safetys				M	M	M	M	M	M	M&	M	M	M												
	
	
	
	
	
	
	,..(**

	!$'''Q1%%% '~>>> '???AG!/88


3














	
!,///m,,JLLLLL
!,///m,,JLLLLs1A(D'=C D' C$$D''C$(D''7EN)rrrsrtrrrrr{r~rrrrWrrrgrgDs"M)))>>>
%%[%N	N	N	NWu%%44&%444rrgceZdZdZdZdS)_TestImportStarctddl}tjtj}tj||d}||}d|D}d|D}|d|	d|S)Nrz*.pycg|]J}tjtj|ddKS)rr)r?rsplitextsplit)rsrs  rrtz4_TestImportStar.get_module_names.<locals>.<listcomp>s@KKK27##BGMM!$4$4Q$788;KKKrcg|]}d|zS)zmultiprocessing.rW)rsrs  rrtz4_TestImportStar.get_module_names.<locals>.<listcomp>s;;;a%);;;rzmultiprocessing.__init__r)
globr?rdirnamer__file__rescaperrU)rmrfolderpatternfilesmoduless      rget_module_namesz _TestImportStar.get_module_namess!9::',,t{{622F;;		'""KKUKKK;;7;;;1222()))rcb|}tjdkr@|d|d|dn1|dts|dt
|d|D]z}t
|tj|}|t|d||j
D]+}|t|||d|,{dS)	Nr-zmultiprocessing.popen_forkz multiprocessing.popen_forkserverz!multiprocessing.popen_spawn_posixz!multiprocessing.popen_spawn_win32zmultiprocessing.sharedctypes__all__z does not have attribute )rrwrxrr<r9r3rrr4r)rmrr)modattrs     rtest_importz_TestImportStar.test_imports@''))<7""NN7888NN=>>>NN>????NN>??? 
CABBB=NN9:::				Dt+d#COOGC33T:::

C&&7:ssDDA
				rN)rrrsrtrrrWrrrrs2			rrc4eZdZdZdZedZdZdS)_TestLoggingrc tj}|tj||du|d|d|tdS)Nzthis will not be printedz
nor will this)	r
get_loggersetLevelr
SUBWARNINGrdebuginfo	LOG_LEVEL)rmloggers  rtest_enable_loggingz _TestLogging.test_enable_loggingsx +--(((d*+++/000O$$$	"""""rcztj}||dSr)rrrgetEffectiveLevel)rr8rs   r_test_levelz_TestLogging._test_levels4 +--		&**,,-----rcd}d}tj}tj}|j}tjd\}}||||j|f}|	|
||||
|tj||||j|f}|	|
||||
|||tdS)Nr%Frr)level)rrlogging	getLoggerrrrrrrrhrrrNOTSETr)	rmLEVEL1LEVEL2rroot_logger
root_levelrr
rs	         r
test_levelz_TestLogging.test_levelsm +--')) &
(-U;;;LL 0yLAA				///					'''V$$$LL 0yLAA				///					Z(((i(((((rN)rrrsrtrrrrrrWrrrrsR"M###..[.)))))rrcpeZdZdZedZejee	dddZ
dS)_TestPollEintrrcltjdtj|tjdSr^)rrr?rAr5SIGUSR1)rrs  r_killerz_TestPollEintr._killer4s)
3
V^$$$$$rrrequires SIGUSR1cdgfd}tj}tjtj|}	||j|f}|	|tjd}||	|	n#|	wxYw|
d||jdtjtj|dS#tjtj|wxYw)NFcdd<dS)NTrrW)rN
got_signals rrecordz._TestPollEintr.test_poll_eintr.<locals>.record<s JqMMMrr)rr)
r?rr5rrrrrrrrrhr)rmrr
oldhandlerkillerrrs      @rtest_poll_eintrz_TestPollEintr.test_poll_eintr9s%W
	!	!	!	!	!ikk]6>6::
	6\\SF\CCFLLNNN
LL
L>>			







OOJqM***QZ+++M&.*55555FM&.*5555s$1D=/A	C
8D=
C##9D==!EN)rrrsrtrrrrCrr4r5rrWrrrr0sk"M%%[%X335GHH66IH666rrcBeZdZejeddZdS)TestInvalidHandleskipped on Windowsc*tjd}	|n#tt
f$rYnwxYwd|_n#d|_wxYw|tt
ftjjddS)NiMr>)rrB
ConnectionrrBr_handlerir3s  rtest_invalid_handlesz&TestInvalidHandle.test_invalid_handlesTs)44X>>	 IIKKKKG$			D	
 DLL4DL:w/)4?	E	E	E	E	Es&6AA
A	A

A	AN)rrrsrtrCrvWIN32rrWrrrrRsBX_U011EE21EEErrceZdZdZdZdS)	OtherTestcGddt}|tjtjj|ddS)NceZdZdZdZdS)FOtherTest.test_deliver_challenge_auth_failure.<locals>._FakeConnectioncdS)Nsomething bogusrWrmrzs  rrzQOtherTest.test_deliver_challenge_auth_failure.<locals>._FakeConnection.recv_bytesjs))rcdSrrWrmr!s  rrzQOtherTest.test_deliver_challenge_auth_failure.<locals>._FakeConnection.send_byteslrN)rrrsrtrrrWrr_FakeConnectionris2
*
*
*




rrabc)r@rirAuthenticationErrorrBdeliver_challengermrs  r#test_deliver_challenge_auth_failurez-OtherTest.test_deliver_challenge_auth_failurehsk					f			
	
/=)4F)/++V	5	5	5	5	5rcGddt}|tjtjj|ddS)Nc eZdZdZdZdZdS)EOtherTest.test_answer_challenge_auth_failure.<locals>._FakeConnectioncd|_dSr)rrs rr~zNOtherTest.test_answer_challenge_auth_failure.<locals>._FakeConnection.__init__ts



rcx|xjdz
c_|jdkrtjjS|jdkrdSdS)Nrrrr)rrrB	CHALLENGErs  rrzPOtherTest.test_answer_challenge_auth_failure.<locals>._FakeConnection.recv_bytesvs>

a

:??*5??Z1__--srcdSrrWrs  rrzPOtherTest.test_answer_challenge_auth_failure.<locals>._FakeConnection.send_bytes}rrN)rrrsrtr~rrrWrrrrssA










rrr)r@rirrrBanswer_challengers  r"test_answer_challenge_auth_failurez,OtherTest.test_answer_challenge_auth_failurersk					f				
/=)4E)/++V	5	5	5	5	5rN)rrrsrtrrrWrrrres255555555rrc&|xjdz
c_dSr)rA)nss rinitializerrsGGqLGGGGrc&eZdZdZdZdZdZdS)TestInitializersctj|_|j|_d|j_dSr)rManagermgrrrrArs rrzTestInitializers.setUps4"*,,($$&&rcj|j|jdSr)rrrrs rrzTestInitializers.tearDowns)

rcVtj}|t|jd|t|jf||jj	d|
|dSr)rr SyncManagerri	TypeErrorrrrrhrArr)rmrs  rtest_manager_initializerz)TestInitializers.test_manager_initializers$0022)QWa000	dgZ(((q)))	

	rc&|ttjdtjdt|jf}||||jj	ddS)Nr)r)
rirrrrrrrrhrArLs  rtest_pool_initializerz&TestInitializers.test_pool_initializersr)_%9qIII K$'<<					q)))))rN)rrrsrtrrrrrWrrrrsP
*****rrc`	|d}dS#tj$rYdSwxYw)NF)block)rrr)ritems  r_this_sub_processrsB
uu5u!!=



s--ctj}tjt|f}d|_||dSrJ)rrrrrrr)r subProcs  r
_test_processrsM!##E%->eXNNNGGNMMOOOLLNNNNNrc||zSrrWrs r_afuncr
rrctjd}|tgd}||dS)Nr^r)rrrr^rrr
)rrrr
rr)rrEs  rpool_in_processrsM!,,,D...//AJJLLLIIKKKKKrc6eZdZdZedZdZdZdS)
_file_likec"||_d|_dSr)	_delegate_pid)rmdelegates  rr~z_file_like.__init__s!			rchtj}||jkr||_g|_|jSr)r?rr_cachers  rcachez_file_like.caches0ikk$)DIDK{rc:|j|dSr)rrUrs  rr0z_file_like.writes
$rcx|jd|jg|_dS)Nr)rr0rrrrs rflushz_file_like.flushs1RWWTZ00111rN)rrrsrtr~propertyrr0rrWrrrrs\X   rrc eZdZdZdZdZdS)TestStdinBadfiledescriptorctjt}||dSNr)rrrrr)rmrs  rtest_queue_in_processz0TestStdinBadfiledescriptor.test_queue_in_processs3&m<<<

		rctjt}||dSr)rrrrrrLs  rtest_pool_in_processz/TestStdinBadfiledescriptor.test_pool_in_processs3#?;;;					rctj}t|dt	jfd}dS)NrWc,Sr)r)flikesrrz:TestStdinBadfiledescriptor.test_flushing.<locals>.<lambda>sekkmmrr)rrrr0rrr)rmsiorr#s   @r
test_flushingz(TestStdinBadfiledescriptor.test_flushingsYkmm3
E&.C.C.C.CDDD





rN)rrrsrtrr r%rWrrrrsA

'''''rrceZdZedZddZedZddZdZdZ	e
jdd	Zed
Z
e
jddZdZd
S)TestWaitctdD]T}|r(tjtjdz||tjfU|dS)Nr3r)rPrrrrr?rr)rrslowrSs    r_child_test_waitzTestWait._child_test_waitskr	%	%A
4
6=??U2333
FFAry{{#$$$$						rFc"ddlm}g}gg}tdD]}tjd\}}tj|j||f}d|_||	|
|
|||j|rs||D]e}	|
}	|
|	-#t$r,|||	YbwxYw|s|t#fdtd	D}
|||
dS)
Nrr.r^FrrTc34K|]}D]
}||jfVdSrr)rsrSrrzs   rrz%TestWait.test_wait.<locals>.<genexpr>s6GGGGA1ae*GGGGGGGrr3)multiprocessing.connectionr/rPrrrr*rrrrUr_rrrrrrrh)rmr)r/readersmessagesrSr6rrrrWrzs           @r	test_waitzTestWait.test_waits333333q	$	$A"'u555DAq't/DAt9UUUAAH
GGIII
GGIIINN1LLOOOOOAF####	)T']]
)
))&&((C
OOC((((	 NN1%%%GGIIIII		)	

GGGGeBiiGGGGG8,,,,,sD3D87D8cLtj}||tdD]W}|r(tjtjdz|d|zdX|dS)Nr3r%s
r})	rtrrPrrrrzrr)rrr)rrSs     r_child_test_wait_socketz TestWait._child_test_wait_socketsMOO			'r	4	4A
4
6=??U2333
IIvz))'223333						rcddlm}tjtjdf}|}g}g}i}tdD]i}tj	|j
||f}	d|	_|	|
|	||	jjtdD]3}|\}
}|
|
g||
<4||rl||D]^}
|
d}|s*||
|
C||

|_|lddtd	Dd
}
|D]+}|d||
,dS)Nrr.r^rTrrc3 K|]	}d|zV
dS)r2NrWrs  rrz,TestWait.test_wait_socket.<locals>.<genexpr>:s&99!6A:999999rr3r}r)r-r/rtrurrrvrPrrr3rrrUr_rrIrrrrrNrh)rmr)r/rrr.rzdicrSrr6rrrWvs               rtest_wait_socketzTestWait.test_wait_sockets333333 -"4a!899}}q	$	$A't/K.2D\;;;AAH
GGIIILLOOOOOAF####q		A88::DAqNN1CFF					'T']]
'
'ffRjj'NN1%%%GGIIIIFMM#&&&&	'7799uRyy99999@@II	4	4ASXXa[[(3333	4	4rc0|ddSrL)r0rs rtest_wait_slowzTestWait.test_wait_slow>strc0|ddSrL)r8rs rtest_wait_socket_slowzTestWait.test_wait_socket_slowAsd#####rrncddlm}d}tj\}}t	j}|||g|}t	j|z
}||g|||tz
|	d|||gd}|||gdS)Nrr.rr)
r-r/rrrrrhrJrr)rmr/r3rrrrr8s        rtest_wait_timeoutzTestWait.test_wait_timeoutDs333333#%%1  dAq67##  5(b!!!5'I"5666	tdAq62qc"""""rcV|tj|dSr)r`rr)rroperiods   rsignal_and_sleepzTestWait.signal_and_sleepVs%



6rc.ddlm}d}d}tjd}tj\}}tj|j||f}|||j	t||dtj}|||j	|g|dz}	tj|z
}
||	|j	g||
|dz||
|dz
|dtj}|||j	|gd}	tj|z
}
|||	||j	|g||
d	|dtj}|||j	|gd}	tj|z
}
|||	|||j	|g||
d	||dS)
Nrr.rc&t|dS)Nc t|Sr)rRrs rrz>TestWait.test_wait_integer.<locals>.<lambda>.<locals>.<lambda>`sBqEEr)rc)r)rs rrz,TestWait.test_wait_integer.<locals>.<lambda>`sF1//:::rrrrrg?)r-r/rrrrrrArrr^rFrr_rrrhrrJrrr)rmr/rWsorted_rorrrrrr8s           rtest_wait_integerzTestWait.test_wait_integer[sk333333::'**#%%1#4+@*-x
:
:
:	
			aj#...B//000  dAqz1%x"}55  5(qzl+++x!|,,,5(Q,///	t  dAqz1%r**  5(ww
A'?'?@@@s###	t  dAqz1%r**  5(ww1:q/A'B'BCCCs###	


	rcTddlm}tj\}}t	j}||gd}t	j|z
}||g||d||dS)Nrr.r>rr)	r-r/rrrrrhrr)rmr/rrrrs      rtest_neg_timeoutzTestWait.test_neg_timeouts333333#%%1NdA3###Nq b!!!1										rNr)rrrsrtrr*r0r3r8r:r<rrr>rArFrHrWrrr'r's[----<[!4!4!4!4F$$$Wz**##+*#"[Wz**))+*)V					rr'cveZdZejeddZejeddZdS)TestInvalidFamilyrc|t5tjdddddS#1swxYwYdS)Nz\\.\testrirBrrBrDrs rtest_invalid_familyz%TestInvalidFamily.test_invalid_familys


z
*
*	=	=&//<<<	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	= AAAz skipped on non-Windows platformsc|t5tjdddddS#1swxYwYdS)Nz/var/test.piperLrs rtest_invalid_family_win32z+TestInvalidFamily.test_invalid_family_win32s


z
*
*	B	B&//0@AAA	B	B	B	B	B	B	B	B	B	B	B	B	B	B	B	B	B	BrNN)	rrrsrtrCrvrrMrrPrWrrrJrJsoX_U011==21=X BCCBBDCBBBrrJc@eZdZedZedZdZdS)	TestFlagsc^|ttjdSr)rrrwflagsrr8s  rrun_in_grandchildzTestFlags.run_in_grandchilds$		%	""#####rcddl}tjd\}}tj|j|f}||}|||ttj|f}t|
|dS)NrFrr)jsonrrrrVrrrrrrwrTprintr)rrXr6rrgrandchild_flagsrTs       rrun_in_childzTestFlags.run_in_childs#51111#3+@tLLL				6688									sy!!#34
djj     rcddl}d}tjtjdddd|g}||d\}}|||dS)NrzJfrom test._test_multiprocessing import TestFlags; TestFlags.run_in_child()rZz-Sz-Orr})rXr\check_outputrwrrrarh)rmrXprogr!child_flagsrZs      r
test_flagszTestFlags.test_flagssv+&
^T4tT:<<(,

4;;w3G3G(H(H%%&677777rN)rrrsrtrrVr[r`rWrrrRrRsW$$[$
!
![
!88888rrRc*eZdZedZdZdS)TestTimeoutsctjd|d|tj|}|d|dS)Nrrr)rrrrrrBrH)rchildrr8s    r
_test_timeoutzTestTimeouts._test_timeoutsa
1




3



)0099		#

rctj}	tjdtjd\}}tjd}tj|j||j	f}|
|||
d||}||
d||t|tj|dS#tj|wxYw)	NrTrAF_INETr@rrr)rtgetdefaulttimeoutsetdefaulttimeoutrrrBrDrrerrrrhrrIr$)rmold_timeoutparentrdrrr8s       rr9zTestTimeouts.test_timeoutsB.00	2$S)))+0===MFE*3393EEA't/A.3QY-?AAAA
GGIIIKKMMMV[[]]C000LLNNN88::DTYY[[#...JJLLL
GGIIIOOO$[11111F$[1111sEE00FN)rrrsrtrrer9rWrrrbrbs<[22222rrbceZdZdZdS)TestNoForkBombc8tj}tjtjtd}|dkrWtjj	
||\}}}||d|d|dStjj	
||\}}}||d||ddS)Nzmp_fork_bomb.pyrdrsRuntimeErrors123)rrMr?rrrrrArrassert_python_failurerhrjrr)rmrxr)rdrrns      rtest_noforkbombzTestNoForkBomb.test_noforkbombs

-
/
/w||BGOOH557HII
<<<5KKDRTUULBSS#&&&MM/3/////<5FFtRPPLBSSZZ\\6222S#&&&&&rN)rrrsrtrprWrrrmrms#
'
'
'
'
'rrmc*eZdZedZdZdS)TestForkAwareThreadLockcB|dkrXtj|j|dz
|f}||t|n,|ttj	|dS)Nrr)
rrrdrrr$rrr_afterfork_registry)rrr8rs    rrdzTestForkAwareThreadLock.childsq55'sy!T{KKKA
GGIIIJJLLLOOOOIIc$233444

rctjd\}}tj}t	tj}tj|jd|f}||	|
}t||||dS)NFrr)
rrrForkAwareThreadLockrrtrrdrrrr$assertLessEqual)rmr6rrold_sizernew_sizes       rrdz!TestForkAwareThreadLock.test_lock	s#E**1$&&t/00#4:QFCCC								6688QXx00000rN)rrrsrtrrdrdrWrrrrrrs>
[	1	1	1	1	1rrrc6eZdZdZdZedZdZdS)TestCloseFdscHtr%tjStj}g}|dkr/||t	j|}|dk/|D]}t	j||S)Nr)rrtdetachrUr?dupr)rmrto_closerEs    rget_high_socket_fdzTestCloseFds.get_high_socket_fds	=??))+++''))BHr''###VBZZr''

Irctr?tjtjtj|dStj|dS)N)r)rrtrgSOCK_STREAMrr?)rmrs  rrzTestCloseFds.close,sI	M&.&*<RHHHNNPPPPPHRLLLLLrc	tj|tjtj}||ddS#t$r }||Yd}~dSd}~wwxYwr)rtfromfdrgrrrre)rr8rrrs     r_test_closefdszTestCloseFds._test_closefds2s}	
b&.&2DEEA
GGIIIIIdOOOOO				IIaLLLLLLLLL	s*A
B!A<<Bcbtstjdtj\}}|}	tj|j||f}||	|
}t||	||	|	nB#|	||	|	wxYwtjdkr|
|ddSd}||t||jt"jkp
|j|k|dS)Nzrequires fd picklingrrdi6')r<rCrDrrrrrrrrr$rMrkrrrrrwinerror)rmrr
rrrWSAENOTSOCKs       rtest_closefdzTestCloseFds.test_closefd<sz	<#$:;;;(-//

$
$
&
&
	't/B.4b\;;;A
GGIIILLNNN

AOOOJJrNNNLLNNNLLNNNN
JJrNNNLLNNNLLNNNN+--77MM!T"""""K!!!W---OOAGu{26J+5q
:
:
:
:
:s
A(C--?D,N)rrrsrtrrrrrrWrrr{r{s\$[:::::rr{ceZdZeejejZedZ	e
jee
dddZedZe
jee
dddZdS)TestIgnoreEINTRcd}tjtj||d|}|||d|jzdS)NcdSrrWrframes  rr2z-TestIgnoreEINTR._test_ignore.<locals>.handlerarrreadyx)r5rrrr
CONN_MAX_SIZE)rr8r2rEs    r_test_ignorezTestIgnoreEINTR._test_ignore_ss			
fng...		'IIKK		!s0011111rrrctj\}}	tj|j|f}d|_||||dtj
dtj|j
tjtj
d|d||dtj
dtj|j
tj||d|jztj
d||dS#|wxYw)NrTrrir)rrrrrrrrhrrrr?rArr5rrrrrr6s    rtest_ignorezTestIgnoreEINTR.test_ignoreisd*/11j	't/@.8]<<<AAH
GGIIITYY[['222JsOOOGAE6>***JsOOOIIdOOOTYY[[$///JsOOOGAE6>***T__..t7I0IJJJJsOOO
FFHHHJJLLLLLDJJLLLLsFF::Gc>d}tjtj|tj5}||j|}|dddddS#1swxYwYdS)NcdSrrWrs  rr2z6TestIgnoreEINTR._test_ignore_listener.<locals>.handlerrrwelcome)r5rrrBrDrrrI)rr8r2rrs     r_test_ignore_listenerz%TestIgnoreEINTR._test_ignore_listeners			
fng...

'
0
0
2
2	aIIai   

A
FF9																		sABBBctj\}}	tj|j|f}d|_|||}tj	dtj|jtjtj	dtj|}||d||dS#|wxYw)NrTrr)rrrrrrrrrrr?rArr5rrBrHrhr)rmr8rrrrKs      rtest_ignore_listenerz$TestIgnoreEINTR.test_ignore_listeners*/11j	't/I.8]<<<AAH
GGIIIiikkGJsOOOGAE6>***JsOOO$/66w??FV[[]]I666
FFHHHJJLLLLLDJJLLLLsDD44E
N)rrrsrtmaxr
PIPE_MAX_SIZE
SOCK_MAX_SIZErrrrCrr4r5rrrrWrrrrZsC-w/DEEM22[2X335GHHIH,[X335GHHIHrrceZdZedZdZdZdZdZdZ	dZ
eje
jdkd	ed
dZedZed
ZdZdS)TestStartMethodcR|tjdSr)rrrMrUs  r_check_contextzTestStartMethod._check_contexts#		/24455555rc|d\}}||j|f}|||}|||||dS)NFrr)	rrrrrrrrhrM)rmrpr6rrchild_methods      r
check_contextzTestStartMethod.check_contextsxxux%%1KKt2!K>>								vvxx					s';';'='=>>>>>rcdD]}	tj|}n#t$rY$wxYw|||||||t|jd|t|jd||dS)NrdrKrrK)	rrSrBrhrMrkrirgr)rmmethodrps   rr7zTestStartMethod.test_contexts5		$		$F
%1&99



S1133V<<<MM#//++S111j#*>HHHj#*>EEEs####		$		$s
((c	tjd}n"#t$rtjdwxYw|td5|gdddddS#1swxYwYdS)Nrzforkserver should be availablez&module_names must be a list of stringsr)rrSrBrCrDrXrset_forkserver_preload)rmrps  rtest_context_check_module_typesz/TestStartMethod.test_context_check_module_typess	F!-l;;CC	F	F	F#$DEEE	F

#
#I/W
X
X	2	2&&yyy111	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2s6A99A=A=cvtjtd}tj}	dD]<}	tj|dn#t
$rY'wxYw|tj|tj}||||t|j
|||j
j
||t|dz
}>	tj|dn#tj|dwxYw||ddS)NrrTrbr)rrPRELOADrMrgrBrhrSrrrrlower
startswithrrr7)rmr
old_methodrrps     rtest_set_getzTestStartMethod.test_set_gets.w777$577
	E9

#4V4HHHHH!H  !A!C!CVLLL%133  !5!5!7!7@@@S		 2 8 8 : : E Ef M MNNNK(..00;;FCCEEE""?333


,ZtDDDDDO,ZtDDDDDq)))))s/FA
F
AFADFF ctj}tjdkr||dgdS||ddgkp|ddgkp|gdkp|gdkdS)Nr-rKrdr)rKrdr)rget_all_start_methodsrwrxrhr)rmmethodss  rtest_get_allzTestStartMethod.test_get_alls!799<7""Wwi00000OOG'88G#'88G#'F'F'FFG$'F'F'FF
H
H
H
H
Hrc(tjdkr|dtjtjtd}tj	j
|\}}}|}|}|
dks|dkr5t|t||ddSdS)Nrz*test only relevant for 'forkserver' methodz
mp_preload.pyokrz(failed spawning forkserver or grandchild)rrMrr?rrrrrArrrrarrYrf)rmr)rdrrns     rtest_preload_resourcesz&TestStartMethod.test_preload_resourcess+--==MMFGGGw||BGOOH55GG|1BB4HHCjjlljjll::<<43"99#JJJ#JJJII@AAAAA$-9rr-z*Only Spawn on windows so no risk of mixingavoids redundant testing.cdD]}tjd}tj|}|t|f}d}|t|5|dddn#1swxYwYdD]}tjD]}tj|}tj|}|t|f}||	dS)N)rKrrdrzA SemLock created in a fork)
rrSrrr!rXr1rrr)rmprocess_methodr process_ctxrrdqueue_methods       rtest_mixed_startmethodz&TestStartMethod.test_mixed_startmethodsq
6		N#/77==??E)5nEEK##;eX#FFA3G''g>>

			














4		L"1"G"I"I

'3LAAGGII-9.II''{%'JJ			
		s9BB	!B	c0|ddSrr)rr s  r_put_one_in_queuez!TestStartMethod._put_one_in_queues
		!rc|dtj|j|f}||dSrO)rrrrrr)rr r#s   r_put_two_and_nest_oncez&TestStartMethod._put_two_and_nest_oncesI
		!!)1FeXVVV

rctj}tj|j|f}||g}|s;|||;|	t|tddgdS)Nrrr)rrrrrrrrUrassertSetEqualr`)rmr r#rs    rtest_nested_startmethodz'TestStartMethod.test_nested_startmethod
s %''!)1LTYS[\\\

++--	(NN599;;'''++--	(
	
CLL#q!f++66666rN)rrrsrtrrrr7rrrrrCrvrwrxrXrrrrrWrrrrs%66[6???
$
$
$222***,HHH
B
B
BX_S\W,ACC  !<==>=CC&[[77777rrr,cNeZdZdZdZdZdZdZedZ	dZ
dZd	S)
TestResourceTrackercJd}tjD]}||5|dkr
	ddd-tj\}}tjtjdd|	||g|gt
j
}tj|t|dd	
5}|
d}|
d}dddn#1swxYwYt!||||d|d
}	t'jt&j|	D]\}
	t!||#t,$r<}||jt0jt0jfYd}~nd}~wwxYw|jd}|jd	|}
|||
||d|zdddn#1swxYwYdS)Na+if 1:
            import time, os, tempfile
            import multiprocessing as mp
            from multiprocessing import resource_tracker
            from multiprocessing.shared_memory import SharedMemory

            mp.set_start_method("spawn")
            rand = tempfile._RandomNameSequence()


            def create_and_register_resource(rtype):
                if rtype == "semaphore":
                    lock = mp.Lock()
                    return lock, lock._semlock.name
                elif rtype == "shared_memory":
                    sm = SharedMemory(create=True, size=10)
                    return sm, sm._name
                else:
                    raise ValueError(
                        "Resource type {{}} not understood".format(rtype))


            resource1, rname1 = create_and_register_resource("{rtype}")
            resource2, rname2 = create_and_register_resource("{rtype}")

            os.write({w}, rname1.encode("ascii") + b"\n")
            os.write({w}, rname2.encode("ascii") + b"\n")

            time.sleep(10)
        )r*nooprZr)rr*)pass_fdsrr(T)rr}zA z< resource was leaked after a process was abruptly terminatedrz8resource_tracker: There appear to be 2 leaked {} objectszresource_tracker: %r: \[Errno)r&r(rr?piper\r]rwrrr^rrr_rrar+rr/rrbr
rrjrENOENTEINVALrrr)rmrr*r6rrrname1name2rdrrrnrWs              rtest_resource_trackerz)TestResourceTracker.test_resource_tracker#sR<&4$	P$	PEE**#
P#
PF??#
P#
P#
P#
P#
P#
P#
Pwyy1$cn%)4au1M1M&O/0c,6O===!T4000BAJJLL//1188AAEJJLL//1188AAEBBBBBBBBBBBBBBB!...


2222 /0E29;;A(6666"

agel/KLLL	hmmoo,,W55   &&,f!'#'#  h///  &F&NOOOG#
P#
P#
P#
P#
P#
P#
P#
P#
P#
P#
P#
P#
P#
P#
P$	P$	PshJBJ=A3D<0J<EJEA"J'F87J8
G>	1G9	3J9G>	>BJJ	J	cddlm}|j}|@tj|t
jtj|t
jtj
5tjd|dddn#1swxYwY|j}tj||tjdtjd}tj
d5}tjd	|}||t)j|}~t-j|||r|t5|d
|d}	|t9|	jt<|dt?|	j vn#|t5|dddddS#1swxYwYdS)Nr_resource_tracker)rr=r-rKT)ralwaysrzresource_tracker: process died)! multiprocessing.resource_trackerrrr?rAr5rBrwait_processrErFrGrrrrrSrrr_r`rgrhrirjrrhrr
issubclasscategoryUserWarningrkmessage)
rmr
should_dierrrpall_warnrorlthe_warns
          rcheck_resource_tracker_deathz0TestResourceTracker.check_resource_tracker_deathks	GFFFFF$?GC((( ????

$
&
&	/	/!(+++,,...	/	/	/	/	/	/	/	/	/	/	/	/	/	/	/ $
V
3)'22

$D
1
1
1	3X!(+++--//CKKMMMKKMMMS!!BJLLLbbdd###
3  X222#A;
8+<k J JKKK @#&x'7#8#8!9::::  X222%	3	3	3	3	3	3	3	3	3	3	3	3	3	3	3	3	3	3s%#)BBB<D=II

I
cF|tjddSrH)rr5rrs rtest_resource_tracker_sigintz0TestResourceTracker.test_resource_tracker_sigints ))&-?????rcF|tjddSrH)rr5r;rs rtest_resource_tracker_sigtermz1TestResourceTracker.test_resource_tracker_sigterms ))&.%@@@@@rcF|tjddSrL)rr5rBrs rtest_resource_tracker_sigkillz1TestResourceTracker.test_resource_tracker_sigkills ))&.$?????rcddlm}||jd|fv}||z}||dS)Nrr)rrrr_check_aliver)r8rrreuseds    r_is_resource_tracker_reusedz/TestResourceTracker._is_resource_tracker_reusedshFFFFFF((***#'D#;6#00222		&rcddlm}||j}t	jd\}}t	j|j||f}||	}|
||||dS)NrrFrr)
rrrrrrrrrrrrr)rmrrr6rris_resource_tracker_reuseds       rtest_resource_tracker_reusedz0TestResourceTracker.test_resource_tracker_reusedsFFFFFF((***$#51111#4+K*+S
3
3
3				%&VVXX"	
								233333rcd}ddt|z
z}|t5tj||ddddS#1swxYwYdS)Nrrr)rrirBr&register)rmr*too_long_name_resources   rtest_too_long_name_resourcez/TestResourceTracker.test_too_long_name_resources !$c%jj(8!9


z
*
*	E	E%&<eDDD	E	E	E	E	E	E	E	E	E	E	E	E	E	E	E	E	E	EsAAAN)rrrsrtrrrrrrQrrrrWrrrrsFPFPFPP#3#3#3J@@@AAA@@@\444$EEEEErrcZeZdZedZdZdZejj	dZ
dS)TestSimpleQueuec&|	|||||dS#|wxYwr)r/rrr`rs    r_test_emptyzTestSimpleQueue._test_emptys~	&IIekkmm$$$IIekkmm$$$##%%%%%##%%%%sAA::Bctj}tj}tj}tj|j|||f}d|_||||	|
||||
d||
d|||dS)NrTF)rSimpleQueuerrrrrrrr`r/rrhrr)rmr rr	rs     r
test_emptyzTestSimpleQueue.test_emptys,+--)/11-355&#*=>






&&&  """'''d+++e,,,

&&&		rc|tj}||dSr)rrrrmr s  rrmzTestSimpleQueue.test_closes.+--









rctj}|||jj||jjdSr)rrrr_readerr;_writerrs  rtest_closedzTestSimpleQueue.test_closedsQ+--




,---
,-----rN)rrrsrtrrrrmrArcpython_onlyrrWrrrrsl&&[&0
\.....rrceZdZdZdS)TestPoolNotLeakOnFailurecdgGfdd}|td5tjdt
j|}||	dddn#1swxYwY|
tdDdS)	Nrc6eZdZfdZfdZdZdZdZdS)RTestPoolNotLeakOnFailure.test_release_unused_processes.<locals>.FailingForkProcessc\d|_d|_d|_|dS)NzFake Process)r)rrrU)rmrOforked_processess  rr~z[TestPoolNotLeakOnFailure.test_release_unused_processes.<locals>.FailingForkProcess.__init__s2*	 $
!
 ''-----rcJdkrtddzd|_dS)NrManually induced OSErrorrr)rr)rmwill_fail_ins rrzXTestPoolNotLeakOnFailure.test_release_unused_processes.<locals>.FailingForkProcess.starts21$$!"<===!&


rcd|_dS)Nstoppingrrs rrz\TestPoolNotLeakOnFailure.test_release_unused_processes.<locals>.FailingForkProcess.terminate
s
'


rc.|jdkr	d|_dSdS)Nr	stoppedrrs rrzWTestPoolNotLeakOnFailure.test_release_unused_processes.<locals>.FailingForkProcess.join
s":++!*DJJJ,+rc.|jdkp
|jdkS)Nrr	rrs rrz[TestPoolNotLeakOnFailure.test_release_unused_processes.<locals>.FailingForkProcess.is_aliveszY.J$*
2JJrN)rrrsrtr~rrrr)rrsrFailingForkProcessrsy
.
.
.
.
.
'
'
'
'
'
(
(
(
+
+
+
K
K
K
K
Krr
rr)r)contextc3>K|]}|VdSrr)rsr#s  rrzITestPoolNotLeakOnFailure.test_release_unused_processes.<locals>.<genexpr>s.CCw  ""CCCCCCr)rXrrrrrCr	MagicMockrrrrB)rmr
rrrs   @@rtest_release_unused_processesz6TestPoolNotLeakOnFailure.test_release_unused_processessY	K	K	K	K	K	K	K	K	K	K	K0
#
#G-G
H
H		$))!X]5L5L*6M6,6,)--A
GGIII
FFHHH																
	
CC2BCCCCC	E	E	E	E	EsA(B&&B*-B*N)rrrsrtrrWrrrrs($E$E$E$E$ErrceZdZdZejjZdZdZ	e
dZeZdZ
dZe
dZdZe
d	Zd'dZe
dZd'd
Ze
dZd(dZdZe
dZdZe
dZdZe
dZdZe
dZd)dZdZ e
dZ!dZ"e
dZ#dZ$e
d Z%d!Z&e
d"Z'd#Z(e
d$Z)d%Z*d&S)*TestSyncManagerTypesa}Test all the types which can be shared between a parent and a
    child process by using a manager which acts as an intermediary
    between them.

    In the following unit-tests the base type is created in the parent
    process, the @classmethod represents the worker process and the
    shared object is readable and editable between the two.

    # The child.
    @classmethod
    def _test_list(cls, obj):
        assert obj[0] == 5
        assert obj.append(6)

    # The parent.
    def test_list(self):
        o = self.manager.list()
        o.append(5)
        self.run_worker(self._test_list, o)
        assert o[1] == 6
    cx||_|jd|_dSr)
manager_classrrrrs rrzTestSyncManagerTypes.setUp6s4))++			rc|jK|jr2|j|j|jd|_d|_dSr)rrrrrrrs rrzTestSyncManagerTypes.tearDown;si9 TY%7%7%9%9 I!!!INN			rc,tjdSr)r
reap_childrenr(s rrzTestSyncManagerTypes.setUpClassCsrcrt|jtj}t	jddD])}t
tjdkrdS*tj|z
}dt_	t	j
dtjd|dd	dS)
NrFerrorrT"multiprocessing.Manager still has  active children after .1f seconds)r$rrrrrbrrrenvironment_altered
print_warning)rm
start_timerrs    rwait_proc_exitz#TestSyncManagerTypes.wait_proc_exitIs	TY^%%
'5999	M	MA?24455::;!!J.B*.G'!#L%4%D%F%F#L#L;="K#L#L#L
M
M
M
M
Mrctj||f|_d|j_|j|||jjddS)NrTr)rrrrrr#rhr)rmworkerr&s   r
run_workerzTestSyncManagerTypes.run_workerZsj#+6HHH			+Q/////rc|||ddSNrv)r/rrr&s  rrz TestSyncManagerTypes._test_eventas1	


		rc|j}|||j||ddSr()rrr`r&rr/rmrPs  rrzTestSyncManagerTypes.test_eventhsLL  	(!,,,	u




rc.|dSrr_r)s  r
_test_lockzTestSyncManagerTypes._test_locko




rr^ct|j|}||j|||t|jdSr)rrr&r.r`rir1rmlnamerPs   rrdzTestSyncManagerTypes.test_lockss\(GDL%((**+++			,	22222rcV||dSrr_r`r)s  r_test_rlockz TestSyncManagerTypes._test_rlocky 







rcvt|j|}||j|dSr)rrr&r5r1s   rrgzTestSyncManagerTypes.test_rlock~s8(GDL%((**(!,,,,,rc.|dSrr-r)s  rrpz$TestSyncManagerTypes._test_semaphorer/rrrct|j|}||j||dSr)rrr&rpr`)rmsnamerPs   rrsz#TestSyncManagerTypes.test_semaphoresC(GDL%((**,a000			rc2|ddS)Nrv)r:)rsrs rrwz+TestSyncManagerTypes.test_bounded_semaphores "455555rcV||dSrr4r)s  r_test_conditionz$TestSyncManagerTypes._test_conditionr6rcn|j}||j|dSr)rrr&r=r+s  rtest_conditionz#TestSyncManagerTypes.test_conditions2L""$$,a00000rc.|dSr)r"r)s  r
_test_barrierz"TestSyncManagerTypes._test_barriers			rcp|jd}||j|dSr)rrr&rAr+s  rr
z!TestSyncManagerTypes.test_barriers4L  ##*A.....rc>|5	ddddS#1swxYwYdSrrWr)s  r
_test_poolzTestSyncManagerTypes._test_poolsq																				scr|jd}||j|dS)Nr^r)rrr&rDr+s  r	test_poolzTestSyncManagerTypes.test_pools6L**+++++rcdSrrWr)s  r_test_queuez TestSyncManagerTypes._test_queuerrct|j|d}|d|d||j|dS)Nrrr)rrrr&rH)rmqnamerPs   r
test_queuezTestSyncManagerTypes.test_queuesX(GDL%((++	a	a(!,,,,,rc0|ddS)Nr*)rLrs rtest_joinable_queuez(TestSyncManagerTypes.test_joinable_queues(((((rc`|||D]}dSr)rreverse)rr&rEs   r
_test_listzTestSyncManagerTypes._test_lists:
	





		A		rc|j}|d||j||t
|ddS)Nrr)rrrUr&rQrhrr+s  rrzTestSyncManagerTypes.test_lists\L	+++Q#####rcdSrrWr)s  r
_test_dictzTestSyncManagerTypes._test_dictrIrc|j}d|d<||j||t|ddS)NrrWr)rrr&rTrhrr+s  rrzTestSyncManagerTypes.test_dictsVL%+++Q#####rc0|ddSru)r`r)s  r_test_valuez TestSyncManagerTypes._test_values	




rc|jdd}||j|||jd||ddS)NrSrr)rrr&rWrhrrr+s  rrXzTestSyncManagerTypes.test_valueslLsA&&(!,,,!$$$!$$$$$rcdSrrWr)s  r_test_arrayz TestSyncManagerTypes._test_arrayrIrcv|jdddg}||j|dS)NrSrr)rrur&rZr+s  rrxzTestSyncManagerTypes.test_arrays:LsQF++(!,,,,,rcdSrrWr)s  r_test_namespacez$TestSyncManagerTypes._test_namespacerIrc|j}d|_d|_||j|dSr)rrrErFr&r]r+s  rrz#TestSyncManagerTypes.test_namespaces@L""$$,a00000rNri)rr)r)+rrrsrtrurr rrrrrrrr#r&rrr.rdr5rgrprsrwr=r?rAr
rDrFrHrLrNrQrrTrrWrXrZrxr]rrWrrrrs*$,8M
  [ MMMM"000[[3333[----[
666[111[///[
,,,[)))		[	$$$++[+$$$[
%%%##[#---[11111rrc6eZdZeddZdS)TestNamedResourcezspawn specific test.ctj}|tj|t	|dd5}|t
jddddn#1swxYwYtj	|\}}}|
||ddS)NrrraW                import multiprocessing as mp
                ctx = mp.get_context('spawn')
                global_resource = ctx.Semaphore()
                def submain(): pass
                if __name__ == '__main__':
                    p = ctx.Process(target=submain)
                    p.start()
                    p.join()
            r)rrr_rrr0textwrapdedentrrrra)rmrrrdrrns      r test_global_named_resource_spawnz2TestNamedResource.test_global_named_resource_spawns!	(&111
&#
0
0
0
	A
GGHO	%			
	
	

	
	
	
	
	
	
	
	
	
	
	
	
	
	
	%5f==C	
#**W"5"566666s(A33A7:A7N)rrrsrtrXrerWrrr`r`s:  !7887798777rr`c<eZdZdZeddZdS)MiscTestCasecXtj|ttjddgdS)NSUBDEBUGr)extranot_exported)rcheck__all__rrrs rtest__all__zMiscTestCase.test__all__"s=T?/:Q+5|*D	F	F	F	F	F	Frrctjdd\}}}||d|||ddS)Nrzif 1:
            import sys
            sys.executable = None
            assert "multiprocessing" not in sys.modules, "already imported!"
            import multiprocessing
            import multiprocessing.spawn  # This should not fail
rrrb)rrrhrra)rmrdrrns    r,test_spawn_sys_executable_none_allows_importz9MiscTestCase.test_spawn_sys_executable_none_allows_import'sh%5
F

C	
Q#**W"5"566666rN)rrrsrtrmrXrorWrrrgrg!sNFFF
! !<==77>=777rrgc:eZdZedZedZdS)	BaseMixinctjjtjf|_dSr)rr#	_danglingrrdanglingr(s rrzBaseMixin.setUpClass?s6'/9>>@@!+00224rctjttjjt|jdz
}|r(dtj_tj	d|d}ttjt|jdz
}|r(dtj_tj	d|d}dS)NrTDangling processes: rDangling threads: )rArr^r`rr#rsrtr r!r)rrrs   rrzBaseMixin.tearDownClassDs	
!!!/9::Sa=Q=QQ		F/3DL,!"D"D"DEEE	i)**Sa-A-AA	B/3DL,!"@w"@"@AAArN)rrrsrtrrrrWrrrqrq>sH44[4[rrqceZdZdZejZejZeejZeej	Z	eej
Z
eejZeejZeej
Z
eejZeejZeejZeejZeejZeejZeejZeejZeejZeejZeejZeejZeejZdS)rrN)rrrsrtrrrrBrQrrrrrrrr*r^rfrrrvrrrrrurSrtrWrrrrWszD%G +J"l?#BCCO!\/"@AAN"l?#BCCO!\/"@AAN<,--D<,--DL.//E L!>??M<,--DL.//E_677I#|O$DEE_677IL.//El?233GL.//EL.//E|O455H|O455HHHrrc,eZdZdZejZeejdZ	eejdZ
eejdZeejdZeejdZ
eejdZeejdZeejd	Zeejd
ZeejdZeejdZeejd
ZeejdZeejdZedZefdZefdZxZS)ManagerMixinrz
manager.Queuezmanager.JoinableQueuezmanager.Lockz
manager.RLockzmanager.Semaphorezmanager.BoundedSemaphorezmanager.Conditionz
manager.Eventzmanager.Barrierz
manager.Valuez
manager.Arrayzmanager.listzmanager.dictzmanager.Namespacec&|jj|i|Sr)rr)rrNrs   rrzManagerMixin.Poolss{....rcxttj|_dSr)rrrrrrs rrzManagerMixin.setUpClasss-
%-//rctj}tjddD](}t	tjdkrnP)tj|z
}dt_tjdtjd|dd	tj
|jd
krPdtj_tjdtj|j|j|jd|_t#dS)NrFrrTrrrrrz5Shared objects which still exist at manager shutdown:)rrrrbrrrr r!rirjr_number_of_objectsrA_debug_inforrrr)rr"rrrs    rrzManagerMixin.tearDownClasssy
^%%
'5999	M	MA?24455::;!!J.B*.G'!#L%4%D%F%F#L#L;="K#L#L#L
M
M
M	
;))++q0004DL,!#9
:
:
:!#+"9"9";";<<<
r)rrrsrtrrrroperator
attrgetterrr*r^rfrrrvrrrrrurrrrrrrr`ras@rrzrzps,D%GH(X(99::EH0X01HIIJJM8'H'7788DH(X(99::E,,-@AABBIx 3 34N O OPP,,-@AABBIH(X(99::Eh*x*+<==>>GH(X(99::EH(X(99::E8'H'7788D8'H'7788D,,-@AABBI//[/0000[0    [     rrzceZdZdZejjZejjZeejj	Z	eejj
Z
eejjZeejjZeejj
Z
eejjZeejjZeejjZeejjZeejjZeejjZeejjZeejjZeejjZeejjZdS)ThreadsMixinrN)rrrsrtrrdummyrrBrQrrrrrr*r^rfrrrvrrrrrurWrrrrseD#+G &1J"l?#8#HIIO"l?#8#HIIO<-233D<-233DL.455E L!6!DEEM<-233DL.455E_2<==I#|O$9$JKK_2<==IL.455El?0899GL.455EL.455EEErrc	|d}t}hd}|D]4\}}t|tst	|t
r|t
ur;|jD]}	|r|	|kr|rd|	z|ddz}
||	dz}Gdd||tj	}|	dkrtjd	|}|
x|_|_
||_|||
<t	|tj	r2|rGd
d|t}|x|_|_
||_|||<6ddgdgfd}
fd}|
|d
<||d<dS)Nrr>rrrWithrMixinceZdZdS*install_tests_in_module_dict.<locals>.TempNrrWrrTemprsDrrrrceZdZdSrrrWrrrz*install_tests_in_module_dict.<locals>.Tempsrctjttjtjjd<tjd<tjdd<	tj	dn%#t$rtjdzwxYwtjdr7	tj}n"#t"$rtjdwxYwt%t'jtjt.dS)	NrrTr`rbz start method not supportedlinuxz1OSError raises on RLock creation, see issue 3111!)rrrr#_cleanuprsrrrMrgrBrCrDrwrxrrfrrGrget_temp_dirrrr)rcrtold_start_methodrPs rsetUpModulez1install_tests_in_module_dict.<locals>.setUpModulesz.w777((***%-7<<>>)..00->$OOO	C,\FFFFF	C	C	C#L$A%BCC
C	C<""7++	;
;&,..
;
;
;'):;;;
;	 !!!"$$--i88888sB00"C5D		D(cfd}tjtjddttjjtdz
}|r*d}dtj_tj	d|d}ttjtdz
}|r*d}dtj_tj	d|d}|rtjdtj
dS)	NFrTrbrvrrwr)rArr^rrgr`r#rsr r!rrrr_cleanup_tests)
need_sleeprrrtrs   rtearDownModulez4install_tests_in_module_dict.<locals>.tearDownModules
	
!!!()9!)<DIIII/9::S!=M=MM		FJ/3DL,!"D"D"DEEE	i)**S!-=-==	BJ/3DL,!"@w"@"@AAA	JsOOO++-----rrr)globalsrrrrrr
capitalizerCTestCaserrequires_hashdigestrrrtrsr@)remote_globsrP	only_type
exclude_typesrslocal_globs	ALL_TYPESr)basetype_newnamerrrrrtrs `             @@rinstall_tests_in_module_dictrsCj)J))K333I!''))&&
d$%%	dL))	&|##+

-

-)!3!3  5#3#3#5#55QRR@#E$4$4$6$6$@A4(9I%%D>=eDDTJJD4;;
 1",(,W%%

-h/
0
0	&





tV


044DMD-(DO!%Ld|Hv9999999,......:#.L%3L!"""rSemLockzSemLock not availablerz
Linux onlyceZdZdZdS)SemLockTestscGddtj}dtj}|ddd|d}t|dS)NceZdZdS)3SemLockTests.test_semlock_subclass.<locals>.SemLockNrrWrrrr'rprrztest_semlock_subclass-rrr3F)rrr?r
sem_unlink)rmrr)rs    rtest_semlock_subclassz"SemLockTests.test_semlock_subclass&st					&.			5	55GAq"dE**##D)))))rN)rrrsrtrrWrrrr"s#*****rr)r1NrH)rC
unittest.mockr rrcrrrrwr?rirrTr5rvrtrrr\rrrrrgrEtest.supportrAtest.support.script_helperrrrrrrr	r

import_moduler*skip_if_broken_multiprocessing_synchronizerr-rmultiprocessing.dummymultiprocessing.heapmultiprocessing.managersrvmultiprocessing.queuesrr
HAVE_SEND_HANDLEr<ImportErrormultiprocessing.sharedctypesrrrr	HAS_SHMEMrHAVE_ASAN_FORK_BUGrDrrr!r$r)r&r+rrrKrrrrr
rr
HAVE_GETVALUErxrr/r4r@r.rctypesr8r9r:r;r@rGrXrrZrzrrrrrrrrrrr[rlrzrrrrrrr?rnrrrrrrrBrrrrerirkr|rrr+rrrrrrrrrrrrrrrrrr>rOrZrrprrrrrgrrrrrrrrrr
rrrr'rJrRrbrmrrr{rrrvrrrrr`rgrqrrzrrr4rrWrr<module>rs
				



								



















!!!!''''''&&&&&&""""""&&&&&&&&&&&&))))))((((((/=./ABB22444!!!!      )))))).MMMMM88888888------IIIIIMMMM
FFF_(
]
^
^^

	***7g000000555
O		
1#2 Hh#0 Hh(G,6???


	 ++++++###
BJ}%%EEEEE=
>)=============)))I$((E(Hzzz)
KKK2LLLLLX.LLL@00000F000"66
*
*
* L	8L	8L	8L	8L	8<L	8L	8L	8f     /)   ,Q7Q7Q7Q7Q7lQ7Q7Q7n$$$@@@@@@@@J
03@3@3@3@3@\3@3@3@lddddd\dddN	5W5W5W5W5W5W5W5W@&&&&&&&&.
66666F666rx1x1x1x1x1<x1x1x1|C3C3C3C3C3C3C3C3LM3M3M3M3M3M3M3M3fY/Y/Y/Y/Y/lY/Y/Y/~$$$


$$$$$F$$$%$$$$:$$$l!l!l!l!l!l!l!l!\&&&&&L&&&PB B B B B lB B B PIHHHHHHHHHV,,,,,I,,,								
56***	56;???	53-@@@4>4>4>4>4>\4>4>4>v
/////;///kI666KKKKKKKKK
{###
........b$#E**2222222222,2222+*22p599G/G/G/G/G/lG/G/G/R88888L888D.....,...`LLLLLLLLd]$JKK##E**@@@@@|@@+*LK@LbbbbbbbbP




9


5)5)5)5)5)5)5)5)pY HII##E**{J{J{J{J{J{J{J+*JI{JBuuuuuLuuux%%%%%h'%%%V+)+)+)+)+)<+)+)+)J66666\666DEEEEE)EEE&$#E**55555!55+*5B$#E*******x(**+**<


*'''''!2'''*gggggx gggZ
B
B
B
B
B)
B
B
B 88888!888@222228$222D'''''X&'''"11111h/111><:<:<:<:<:8$<:<:<:DAAAAAh'AAAF77777h'777D(=??]E]E]E]E]E(+]E]E??]E@0.0.0.0.0.h'0.0.0.f&E&E&E&E&Ex0&E&E&ER$#E**f1f1f1f1f18,f1f1+*f1R77777)7774777778$777:266666Y66628 8 8 8 8 98 8 8 v6666696662@E\4\4\4\4~WW-y999;RSS(,77*****8$**87TS***sf
C))C32C37
DDDDD#"D#'D,,D65D63GG
G
G/.G/