python (3.12.0)

(root)/
lib/
python3.12/
test/
__pycache__/
_test_multiprocessing.cpython-312.pyc

͑e.TddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlmZddlmZddlmZddlmZddlm Z ddlm!Z!ddlm"Z"dd	lm#Z#ejHd
Z%ejLddl'Z'ddl(Z)ddl*Z)ddl+Z)ddl,Z)ddl-Z)ddl.Z)ddl(m/Z/m0Z0ddl)m1Z1	dd
l)m2Z2e2jfZ4	ddl6m7Z7m8Z8dZ9	ddl)m:Z:dZ;	ddl<Z<ejzdrej|ddZ?dZ@dZAe	jdk(r	ddl)mCZCdZDe1jZFdZGdZHeHrd\ZIZJZKnd\ZIZJZKejZMdZNeOe%ddZPejdk(ZRd ZS	e	jd!ZUd#d$gZV	dd%lWmXZXmYZYmZZZm[Z[d&Z]d'Z^Gd(d)ejZ`Gd*d+e\ZaGd,d-e\Zbd.ZcGd/d0ZdGd1d2ebZeGd3d4e)jZgGd5d6ebZhd7Zid8ZjGd9d:ebZkGd;d<ebZlGd=d>ebZmGd?d@ebZnGdAdBebZoGdCdDe\ZpdEZqGdFdGe\ZrGdHdIe\ZsGdJdKebZtGdLdMebZuGdNdOebZvGdPdQebZwddRZxdSZydTZzdUZ{GdVdWe\Z|GdXdYe}Z~dZZGd[d\ebZd]Zd^ZGd_d`ebZGdadbebZddcl,mZmZmZGdddee\ZdfZGdgdheZGdidjeZejdkelejdmednoejdpeeqGdrdsebZejZdtZGdudveZejdwelGdxdyeZejdwdzZGd{d|ebZej*d}Gd~debZe?dZGddebZGddebZGddebZGddebZej8e4dej*d}GddebZGddebZGddeXZGddebZej8e;dej*d}GddebZGddebZGddejZGddebZGddebZGddejZej*d}GddejZej*dej*d}GddejZdZej*d}GddejZdZdZdZdZGdde\ZGddejZGddejZGddejZGddejZGddejZGddejZGddejZGddejZGddejZGddejZejtejdk(dGd„dejZGdĄdejZGdƄdejZej*d}GdȄdejZGdʄdejZGd̄dejZGd΄de\ZGdЄdeZGd҄deZGdԄdeZ	ddքZejtee%d׫dثejtejdk7dګGdۄdejZy#e5$rdZ4YwxYw#e5$rdZ9YwxYw#e5$rdZ;YwxYw#e5$rdZ<YwxYw#d"ZUY^xYw#e5$re\ZXdxZYxZZZ[Y`wxYw)N)support)hashlib_helper)
import_helper)	os_helper)
script_helper)
socket_helper)threading_helper)warnings_helper_multiprocessing)waitAuthenticationError)util)	reductionF)ValuecopyT)
shared_memory)addressz(libasan has a pthread_create() dead lockc$|jdS)Nlatin)encode)ss N/BuggyBox/python/3.12.0/bootstrap/lib/python3.12/test/_test_multiprocessing.pyrrWs88Gct|tjjr!|j	|jyyN)
isinstancemultiprocessingqueuesQueueclosejoin_thread)queues rclose_queuer#[s2%//556


7rc.tj|yr)r	r!)processs rjoin_processr&as  )rposix)resource_trackerc4tj||yr)r(_CLEANUP_FUNCS)namertypes  r_resource_unlinkr-js''.t4r皙?)g=
ףp=?gffffff?gffffff?)r.r.r.@HAVE_BROKEN_SEM_GETVALUEwin32c.||dkrd}t|g|S)Nr)handletimeouts  rwait_for_handler7s"w}'""rSC_OPEN_MAX__main__z$test.test_multiprocessing_forkserver)	Structurec_intc_double
c_longlongcd}	tjd}|dk(s||k\ryt	j
d|z#ttf$rYywxYw)zACheck that the system supports enough semaphores to run the test.r9SC_SEM_NSEMS_MAXNzHThe OS doesn't support enough semaphores to run the test (required: %d).)ossysconfAttributeError
ValueErrorunittestSkipTest)	nsems_minnsemss  rcheck_enough_semaphoresrJslI

-.
{ey(


>@IJKK
J's<A
Acfd}|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.
    cFtjfd}|S)Nc|tjx}dk7rtjd|d|i|S)Nspawn
start_method=z, not 'spawn'; )rget_start_methodrFrG)argskwargsstart_methodreason	test_items   rspawn_check_wrapperzKonly_run_in_spawn_testsuite.<locals>.decorator.<locals>.spawn_check_wrappersG / @ @ BBwN''=</(QRRd-f--r)	functoolswraps)rUrVrTs` r	decoratorz.only_run_in_spawn_testsuite.<locals>.decorators&		#	.
$	.
#"r)rTrYs` ronly_run_in_spawn_testsuiter[s#rc\eZdZdZej
ejdk(ddZy)TestInternalDecoratorszBLogic within a test suite that could errantly skip tests? Test it!r1ztest requires that fork exists.ctjdk7rtjd	t	dd}tjd}	tjdd|jd	tjd
d|jtj5}|ddd|jdtj|jdt|jtj|dy#t
$r}|j
d|Yd}~d}~wwxYw#1swYxYw#tj|dwxYw)NrNz'only run in test_multiprocessing_spawn.ztesting this decoratorcyNrZrZrrreturn_four_if_spawnzUTestInternalDecorators.test_only_run_in_spawn_testsuite.<locals>.return_four_if_spawnsrz.expected decorated `def` not to raise; caught T
allow_noneforceraforkrO)
rrPrFrGr[	Exceptionfailset_start_methodassertEqualassertRaisesassertInstr	exception)selfrberrorig_start_methodctxs     r test_only_run_in_spawn_testsuitez7TestInternalDecorators.test_only_run_in_spawn_testsuitesA++-8##$MNN	N
()A
B
C

,<<M		L,,WDA13Q7,,V4@""8#4#45
'$&
'MM2C

4FGMM/3s}}+=>,,->dK	NIIFseLMM	N
'
'

,,->dKs=D,A$E#:EAE#,	E5EEE E##E<N)	__name__
__module____qualname____doc__rFskipIfsysplatformrtrZrrr]r]s1LX__S\\W,.OPLQLrr]ceZdZdZdZy)
TimingWrapperc ||_d|_yr)funcelapsed)rprs  r__init__zTimingWrapper.__init__s	rctj}	|j|i|tj|z
|_S#tj|z
|_wxYwr)time	monotonicrr)rprQkwdsts    r__call__zTimingWrapper.__call__sMNN	0499d+d+>>+a/DL4>>+a/DLsAA"NrurvrwrrrZrrr}r}s0rr}c&eZdZdZdZdZdZeZy)BaseTestCase)	processesmanagerthreadsc8tr|j||dyyN)
CHECK_TIMINGSassertAlmostEqualrpabs   rassertTimingAlmostEqualz$BaseTestCase.assertTimingAlmostEquals""1a+rcP	||}|j||S#t$rYywxYwr)rkNotImplementedError)rpvaluerrQress     rassertReturnsIfImplementedz'BaseTestCase.assertReturnsIfImplementeds9	0+C##E3//#		s	%%ctd)Nz#shouldn't try to pickle a test case)r)rprQs  r
__reduce__zBaseTestCase.__reduce__s!"GHHrN)rurvrw
ALLOWED_TYPESrrr
__reduce_ex__rZrrrrs7M,0IMrrc	|jS#t$rA	|jcYS#t$r%	|jcYcYS#t$rtwxYwwxYwwxYwr)	get_valuerD_Semaphore__value_valuerrps rrrsg	*~~*	*)))	*
*{{"!
*))
*	**s9	A*A	AAAAAAAceZdZdZy)
DummyCallablecJt|tsJ|jdyN)rrput)rpqcs   rrzDummyCallable.__call__&s!]++	arN)rurvrwrrZrrrr%srrc2eZdZdZdZdZejddZe	dZ
dZe	dZd	Z
e	d
ZdZe	dZe	d
ZdZej(ej,ddZe	dZe	dZe	dZdZdZdZdZdZe	dZ dZ!e	dZ"dZ#e	d.dZ$dZ%ejd d!Z&d"Z'e	d#Z(d$Z)e	d%Z*d&Z+e	ifd'Z,d(Z-d)Z.e	d/d*Z/d+Z0d,Z1d-Z2y)0_TestProcessrrc|jdk(r*|jdj|j|j}|j}|j|j
|j|j|j|t|jt|dkD|j|jtj|j|jdy)Nrtest not appropriate for {}r)TYPEskipTestformatcurrent_processauthkey
assertTrueis_alivedaemonassertIsInstancebyteslenrkidentrBgetpidexitcode)rpcurrentrs   rtest_currentz_TestProcess.test_current/s99	!MM7>>tyyIJ&&(//((*+GNN*+gu-Gq()		4))40rc|jdk(r|jd|jtjtjj	tjtjg}|D]_}|j||j}|j|j|j|jday)Nrztest not appropriate for r)
rrrz
executablerpathlibPathset_executableProcessstartjoinrkr)rppathspathps    rtest_set_executablez _TestProcess.test_set_executable=s99	!MM5dii[ABNNNN!!#LL(

	,D%A
GGI
FFHQZZ+	,rcpuc	dddgdf}ttf}tj||}|D]\}}|j	||5|jd}|j
|j|||f}d|_|j|j}|j|||jt|dddy#1swYxYw)Nrrnr)rQ	args_typetargetrQT)listtuple	itertoolsproductsubTestrr
_test_argsrrgetrkrr#)	rp
args_cases
args_types
test_casesrQrrr
child_argss	         rtest_args_argumentz_TestProcess.test_args_argumentLsT*
E]
&&z:>
)
	OD)49=	
JJqMLLiD	>RLS	UUW
  T2A	
	

		
	
s
BCC$	c&|j|yrr)clsrargs   rrz_TestProcess._test_argsas
	c
rc|jdk(r*|jdj|j|j|j}|j|j|jj|j|jd}|j|j|j|jd}|j|jy)NrrrTrrF)
rrrr_testrkrrrassertFalse)rpproc0proc1proc2s    rtest_daemon_argumentz!_TestProcess.test_daemon_argumentes99	!MM7>>tyyIJDJJ/t';';'='D'DEDJJt<%DJJu=&rc<|j}|j||j||j|j|jdk7r@|jt	|j
|j|jyy)Nr)rrr+rrrpid)rrrQrrs     rrz_TestProcess._testqsl%%'	d	d	gll88y 
EE%()
EE'++!rcp|jdk(r*|jdj|j|j|j	|jd\}}|j
|j|f}|j|j|j\}}|j||jj|j|tj|j||jj y)NrrFduplexr)rrrassertIsNoneparent_processPiper_test_send_parent_processrrrecvrkrrrBrr+)rprconnwconnr
parent_pidparent_names      rtest_parent_process_attributesz+_TestProcess.test_parent_process_attributes{s99	!MM7>>tyyIJ$--/0yyy.uLL > >eXLN			"'**,
KT%9%9%;%?%?@RYY[1d&:&:&<&A&ABrcrddlm}|j|j|jgy)Nrr)multiprocessing.processrsendrr+rrrs   rrz&_TestProcess._test_send_parent_processs(:

N$((.*:*?*?@Arcp|jdk(r*|jdj|j|jd\}}|j	|j
|f}|j
|jtjstd|j}|j|d|j|j|jtjstd|j}|j|d	y)
NrrFrrr6z(Could not communicate with child processalive	not alive)rrrrr_test_create_grandchild_processrpollrLONG_TIMEOUTAssertionErrorrrk	terminater)rprrrparent_process_statuss     rtest_parent_processz _TestProcess.test_parent_processs99	!MM7>>tyyIJ
yyy.uLL77ui

I		zz'"6"6z7 !KLL %

.8	
	zz'"6"6z7 !KLL %

.<rc|j|j|f}|jtjdy)Nri,)r_test_report_parent_statusrrsleep)rrrs   rrz,_TestProcess._test_create_grandchild_processs0KKs==UIKN		

3rcddlm}|j|jrdnd|j	t
j|j|jrdydy)Nrrrrr)rrrrrr
SHORT_TIMEOUTrs   rr
z'_TestProcess._test_report_parent_statussZ:

n.7797{Kg&;&;<

n.7797K{Krc|jd}|j}|ddf}ddd}d}|j|j|||}d|_|j}|jd	k7r&|j|j|j|j|jd
|j|jd|j||j|jt|jtu|j|jd|j!|j|jd|j|jd|j#||j|j|j%|dd|j|j%||j|j%|j&|jd	k7rT|j|j%|j|j|j%|j(|j+|j|jd|j|jd
|j||jt-|y)NrgRQ@)hellobyeSomeProcess)rrQrRr+TrFr)rEventrrrrrrkrrassertNotInactive_childrenrtyperrrrmrr+rrr#)rprerQrRr+rrs        rtest_processz_TestProcess.test_processs.JJqMJJL1ayD)LL::Dd

&&(99	!QYY8u-4(D0023T1134<=T*		T*t,

a--/0$qr(+&)!&&)99	!QUUWgoo6QUUWaee,	Q'u-D0023Arzneeds native_idc|jdk(r*|jdj|jtjj
}|j
d}|j|j|f}|j|j}|jt||j||y)Nrrrr)rrr	threadingmain_thread	native_idrr"_test_process_mainthread_native_idrrrr#assertNotEqual)rpcurrent_mainthread_native_idrrchild_mainthread_native_ids     r!test_process_mainthread_native_idz._TestProcess.test_process_mainthread_native_ids99	!MM7>>tyyIJ'0'<'<'>'H'H$JJqMLL G GqdLS		%&UUW"	A8:TUrcbtjj}|j|yr)rrr r)rrmainthread_native_ids   rr!z/_TestProcess._test_process_mainthread_native_ids$(446@@	"#rc.tjdy)Ndrrrs r_sleep_somez_TestProcess._sleep_somes


3rc.tj|yrr*)rdelays  r_test_sleepz_TestProcess._test_sleeps

5rc"|jdk(r*|jdj|j|j|jd_j
|jjd|j|j|jjdtj}|j|dd|j|jd|jjd|j|dd|j|jd|jjdt!j"d|t%t&d	rfd
}t'j&t&j(|}	t'j*d|j|dt'j*dt'j&t&j(|n|j|d|j|jd|jjd|j-|jjjS#t'j*dt'j&t&j(|wxYw)
NrrrTrr3rAralarmc tdz)Nzjoin took too long: %sRuntimeError)rQrs rhandlerz+_TestProcess._kill_process.<locals>.handlers"#;a#?@@r
F)rrrrr,rrrkrrmrrr}rrrrrhasattrsignalSIGALRMr1r)rpmethrr5old_handlerrs     @r
_kill_processz_TestProcess._kill_processs99	!MM7>>tyyIJLL 0 0L1		t,

a--/0T*QVV$a$'$$T\\37t,b4($$T\\37t,	

1
Q67#
A --@K
;R   .Q

fnnk:TVT*$$T\\37u-D0023	zzQ

fnnk:s,K;Lc|jtjj}tj
dk7r"|j
|tjyyNnt)	r<rrr	rBr+rkr8SIGTERMrprs  rtest_terminatez_TestProcess.test_terminate.sD%%o&=&=&G&GH
77d?X7rc|jtjj}tj
dk7r"|j
|tjyyr>)	r<rrkillrBr+rkr8SIGKILLrAs  r	test_killz_TestProcess.test_kill3sD%%o&=&=&B&BC
77d?X7rc	tj}|jt	|t
u|j|dk\y#t$rd}YBwxYwr)r	cpu_countrrrint)rpcpuss  rtest_cpu_countz_TestProcess.test_cpu_count8sR	",,.D	
T
c)*	"#	D	sAAAc|jt|jt|j	t
jtf}|j||jd|_	|j|j||j|j|j||jyNrT)
rkrrrrrrDELTArrrrmrrprs  rtest_active_childrenz!_TestProcess.test_active_children@sd2245t<LL

%L:D0023		

a--/0	D0023rc|j|t|dkrTtdD]E}|j|j|||gzf}|j|j
GyyNrr)rrranger_test_recursionrr)rridirs     rrTz_TestProcess._test_recursionMsl

2r7Q;1X
KK..eRV_ 	
rcR|jd\}}|j|gtjtg}|jr0|j
|j|jr0gdgddgddgdgddgddgg}|j||y)NFrrr)	rrTrrrNrappendrrk)rprrresultexpecteds     rtest_recursionz_TestProcess.test_recursionXsyyy.uUB'

5jjlMM%**,'jjl
cAAcAA	
*rc&|jdy)N$@r4revents  r_test_sentinelz_TestProcess._test_sentinells

4rc|jdk(r*|jdj|j|j}|j	|j
|f}|j
t5|jddd|j|j|j|j}|j|t|jt|d|j!|j|j#t|dy#1swYxYw)Nrrrr3rr)rrrrrr`rlrEsentinelr
addCleanuprrrIrr7setr)rpr_rrbs    r
test_sentinelz_TestProcess.test_sentinelps99	!MM7>>tyyIJ

LL 3 35(LC


z
*	
JJ			::h,3?@
			!<=		s=
D88ENcR||jtj|yr)rrzexit)rrcrs   r_test_closez_TestProcess._test_closes=
EEGrc|jdk(r*|jdj|j|j}|j	|j
d|i}d|_|j|j|jd|jt5|jddd|jd|j|j|jd|j|jd|j|jt5|jddd|jt5|jddd|jt5|j!ddd|jt#j$|}~t'j(|j+|dt-|y#1swY^xYw#1swYxYw#1swYxYw#1swYxYw)Nrrr)rrRTFr)rrrrrrirrrkrrlrEr rrrr	weakrefrefgccollectassertIsr#)rprrwrs    r
test_closez_TestProcess.test_closes99	!MM7>>tyyIJJJLLL 0 0#qLB		t,


z
*	
GGI		
d	u-Q'		


z
*	
JJL	


z
*	
FFH	


z
*	
KKM			
[[^





bdD!A+								s05H"H/>H;,I"H,/H8;IIwalltimec|jdk(r*|jdj|jtj}|dk(rdnd}t|Dcgc]}|j
|jd!}}|D]}|j|D]
}t||D]}|j|jd t|Dcgc]}|j
|j	 }}|D]}|jtjd
|D]}|j|D]
}t|t j"dk7rit$j&g}t(j*dk(r |j-t$j.|D]}|j1|j| yycc}wcc}w)
NrrrNrr)){Gz?rrrMbP?r?darwin)rrrrrPrSrr/rr&rkrr,rrr	rBr+r8r@rzr{rXrErm)rpsmNrVprocsr	exitcodess       rtest_many_processesz _TestProcess.test_many_processess99	!MM7>>tyyIJ

-
-
/wAC ($T%5%5GD$$	A
GGI		AO		,AQZZ+	, ($T%5%56$$	A
GGI	

5	A
KKM		AO	
77d? ..)I||x'  &..1
5

ajj)4
5
%$$s$$G##Gczt}tj|}|j}|j	|||f}~|j|j
tj|j|d|j|jdt|y)Nrr)
rrkrlrrrrrmrnrorkrr#)rprrprrs     rtest_lose_target_refz!_TestProcess.test_lose_target_refsO
[[^JJLLLAL/
			




bdD!!$Arcj|jtj|jyr)rrfd_countr)rpevtrs   r_test_child_fd_inflationz%_TestProcess._test_child_fd_inflations 	i  "#
rcB|jdk(r*|jdj|jtj}|dk(r |jdj|d}|j}|j
}t|Dcgc]!}|j|j||f#}}|D]}|j	t|Dcgc]}|j}}|jtt|d||j|D]}|jt!|ycc}wcc}w#|j|D]}|jt!|wxYw)Nrrrgrrr)rrrrrPrrrSrrrrrkrrdrr#)	rprwrxrrrVryr	fd_countss	         rtest_child_fd_inflationz$_TestProcess.test_child_fd_inflationse99	!MM7>>tyyIJ

-
-
/
<
MM7>>rBC
jjlJJL ($T%B%B#qR$$	A
GGI		*/(3Q3I3SY0!Y?
GGI

N$4
GGI

Ns$"&E "
E*/E%'E*%E**4Fcfd}fd}tj|jtj|djy)NcPtjdjy)N?rrrdrsrfunc1z2_TestProcess._test_wait_for_threads.<locals>.func1sJJsOGGIrcPtjdjy)N)rrclearrsrfunc2z2_TestProcess._test_wait_for_threads.<locals>.func2sJJrNIIKrrTr)rThreadr)rprrrs `  r_test_wait_for_threadsz#_TestProcess._test_wait_for_threadss?			&,,.d399;rcP|jdk(r*|jdj|j|j}|j	|j
|f}|j
|j|j|jy)Nrrr)
rrrrrrrrris_set)rprprocs   rtest_wait_for_threadsz"_TestProcess.test_wait_for_threadssu99	!MM7>>tyyIJjjl||4#>#>cV|L

		

%rc|jD]I\}}|dk(r%tj}|jn	|dk(sJd}t	t
|dK|j
y)Nr remove)itemsioStringIOr setattrrzrd)rprbreak_std_streamsstream_nameactionstreams      r_test_error_on_stdio_flushz'_TestProcess._test_error_on_stdio_flushsb#4#:#:#<	,K ))Cd+	,		rc	tjdg}|djdD]}|D]}tt|}tt||	|j
}|j|j|f}|j|j|j|j|j|jdtt||y#tt||wxYw)Nrstdoutstderrr)rrr getattrrzrrrrrrrrrkr)rpstreamsrr
old_streamrrs       rtest_error_on_stdio_flush_1z(_TestProcess.test_error_on_stdio_flush_1 s;;=$'
/
	:K!
:$S+6
[&1	:**,C<<t/N/N.1V(5DJJLIIKOOCJJL1$$T]]A6Cj9
:
	:Cj9s
B	C55Dc	dD]}dD]}tt|}	|j}|j|j|||if}|j|j
|j|j|j|jdtt||y#tt||wxYw)Nr)r rrr)rrzrrrrrrrrkrr)rprrrrrs      rtest_error_on_stdio_flush_2z(_TestProcess.test_error_on_stdio_flush_23s0	:K-
:$S+6
	:**,C<<t/N/N.1K3H-I(KDJJLIIKOOCJJL1$$T]]A6Cj9
:	:Cj9sBB>>CcNtj||jyrr)rprr.s   r_sleep_and_set_eventz!_TestProcess._sleep_and_set_eventDs

5	rc|jdk(r*|jdj|jtj}|dk7r |jdj|ddlm}|jd}|j}|j|j||f}|j|j}tj||tj |dz|j}|j|j|f}	|	j|	j#|j%|j'|j)|	j*d|j#|j%|j'|j-|j*d	y)
Nrr
forkserverr)_forkserverrr@)r)rrrrrPmultiprocessing.forkserverrensure_runningrrrr_forkserver_pidrBrDrrrrrrkrrm)
rpsignumrwrr.rrrevt2rs
          rcheck_forkserver_deathz#_TestProcess.check_forkserver_deathIsU99	!MM7>>tyyIJ

-
-
/

MM7>>rBC:""$jjl||4#<#<C<|P

))
V

53;zz|D$=$=TGL




&+		

%

dmmX.rcB|jtjyr)rr8SIGINTrs rtest_forkserver_sigintz#_TestProcess.test_forkserver_sigintos##FMM2rcjtjdk7r |jtjyyr>)rBr+rr8rErs rtest_forkserver_sigkillz$_TestProcess.test_forkserver_sigkillss$
77d?''7r)rNr3)3rurvrwrrrrrequires_resourcerclassmethodrrrrrrrr
rrF
skipUnlessr_HAVE_THREAD_NATIVE_IDr%r!r,r/r<rBrFrKrPrTr[r`rerirqr{r}rrrrrrrrrrrrZrrrr+s,M1
,Wu%&(
'
CBB=2
LL&PX99;LMVNV $$1f8
8
#4+(> 
@Wz*!5+!5F>
<
<
&@B		:&:"$/L38rrc$eZdZdZdZdZdZy)_UpperCaserctjj|tj\|_|_yr)rrrr
child_connparent_connrs rrz_UpperCaser.__init__s.((.,;,@,@,B))rc|jjt|jjdD]+}|jj|j
-|jjyr)rr iterrrrupperrprs  rrunz_UpperCaser.runs\ doo**D1	,AOO  +	,rct|tusJ|jj||jj	Sr)rrnrrrrs  rsubmitz_UpperCaser.submits9Aw#~a $$&&rc|jjd|jj|jjyr)rrr rrs rstopz_UpperCaser.stops8d# rN)rurvrwrrrrrZrrrr}sC '
 rrcBeZdZdZdZdZedZedZdZ	y)_TestSubclassingProcessrc
t}d|_|j|j|j	dd|j|j	dd|j|j
y)NTrHELLOworldWORLD)rrrrkrrr)rp
uppercasers  rtest_subclassingz(_TestSubclassingProcess.test_subclassingsg ]
 
**73W=**73W=rc"|jdk(r*|jdj|jtj}|jtj||j|j|f}|j|jt|d5}|j}|jd||jd||jd|dddy#1swYyxYw)	Nrrrutf-8encodingZeroDivisionErrorztest_multiprocessing.pyz1/0 # MARKER)rrrrTESTFNrcunlinkr_test_stderr_flushrropenreadrm)rptestfnrfrqs     rtest_stderr_flushz)_TestSubclassingProcess.test_stderr_flushs99	!MM7>>tyyIJ!!	((&1||4#:#:&|K

		
&7
+	/q&&(CMM-s3MM3S9MM.#.	/	/	/s
5ADDctj|tjtjztjz}t|dddt
_ddzy)NwrFrclosefdrr)rBrO_WRONLYO_CREATO_EXCLrzr)rrfds   rrz*_TestSubclassingProcess._test_stderr_flushsA
WWVR[[2::5		A
B"cGUC
	!rctj|tjtjztjz}t|dddt
_tj|y)NrrFr)rBrrrrrzrrg)rrTrrs    r_test_sys_exitz&_TestSubclassingProcess._test_sys_exitsF
WWVR[[2::5		A
B"cGUC
rc|jdk(r*|jdj|jtj}|jtj|gddfD]}|j|j||f}d|_	|jt||j|jdt|d	5}|j}ddd|jj!t#|t%j|gd
}|D]\}}|j'|5|jt(j*|}d|_	|jt||j|j|dddy#1swYxYw#1swYxYw)Nrrrrzignore thisrTrrr)))Tr)Fr))r)rr)rZrrQ)rrrrrrcrrrrrr&rkrrrrstriprnrBrrzrg)	rprrTrrcontentcasesrQrZs	         r
test_sys_exitz%_TestSubclassingProcess.test_sys_exits99	!MM7>>tyyIJ!!	((&1

	FD$7$7vv>NOAAH
GGIOQZZ+fw/
#1&&(
#W^^-s6{;IIf	 $	7ND(4(
7LLtL<	Q  X6
7
7	7
#
#
7
7sF?A G?G	G	N)
rurvrwrrrrrrrrZrrrrs>"M/"
&7rrc`t|dr|jS|jdk(S)Nemptyr)r7rqsize)rs rqueue_emptyrs(q'wwywwyA~rc`t|dr|jS|j|k(S)Nfull)r7rr)rmaxsizes  r
queue_fullrs(q&vvxwwyG##rceZdZedZdZedZdZedZdZ	dZ
edZd	Zd
Z
dZdZd
ZdZy)
_TestQueuec|jtdD]}|j|jy)N)rrSrrd)rr"child_can_startparent_can_continuerVs     r	_test_putz_TestQueue._test_puts6q	AIIK	!rcd}|j|}|j}|j}|j|j|||f}d|_|j|j
t|d|j
t||d|jd|jdd|jddd|jd	d|jd
dd|jdtjt|j
t|d|j
t||dt|j}t|j}|jt j"|dd|j%|j&d|jt j"|ddd|j%|j&d|jt j"|d|j%|j&d|jt j"|ddt(|j%|j&t(|jt j"|ddt*|j%|j&d|jt j"|ddt,
|j%|j&t,|j/|j1|j
t|d|j
t||d|j3t5|y)NrrrTFrrrrarrr)rrrrrrrkrrr
put_nowaitrrrNr}rlpyqueueFullrrTIMEOUT1TIMEOUT2TIMEOUT3rdrrr#)rpMAXSIZEr"rrrrrs        rtest_putz_TestQueue.test_puts

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

U+T2E73U;
		!
		!T
		!T4 
		!U
		!UD!
	

5U+U3E73T:EII&"5#3#34
',,Q6$$S[[!4',,Qt<$$S[[!4',,
A6$$Z%7%7;',,Qh?$$S[[(;',,Qx@$$S[[!4',,QhG$$S[[(;  "U+T2E73U;		Erc|j|jd|jd|jd|jd|jy)Nrrrar)rrrdrr"rrs    r	_test_getz_TestQueue._test_get<sF
		!
		!
		!
		!!rc|j}|j}|j}|j|j|||f}d|_|j|j
t|d|j|jtjt|j
t|d|j
|jddd|j
|jdd|j
|jdd|j
|jd	|j
t|dt|j}t|j}|j!t"j$|d|j'|j(d
|j!t"j$|dd|j'|j(d
|j!t"j$||j'|j(d
|j!t"j$|dt*|j'|j(t*|j!t"j$|dt,|j'|j(d
|j!t"j$|t.|j'|j(t.|j1t3|y)NrTFrrrrrarr)rrrrrrrkrrdrrrrNr
get_nowaitr}rlrEmptyrrrrrrr#)rpr"rrrrrs       rtest_getz_TestQueue.test_getFs[

**,"jjl||>>*=>

U+T2  "

5U+U3	
4.24!,1-q1))+Q/U+T2EII&"5#3#34
'--e4$$S[[!4'--eT:$$S[[!4'--4$$Z%7%7;'--dH=$$S[[(;'--eX>$$S[[!4'--h?$$S[[(;		ErcHtddD]}|j|y)Nr6r)rSr)rr"rVs   r
_test_forkz_TestQueue._test_fork{s"r2	AIIaL	rc|j}tdD]}|j|tjt
|j
|j|f}d|_|jtdD]"}|j|j|$|jtj|jd|jt!|y)Nr6rTrF)rrSrrrrNrrrrrkrrlrrrr#)rpr"rVrs    r	test_forkz_TestQueue.test_forks

r	AIIaL		

5
LLuhL?		r	-AUYY[!,	-'--E:	Erc@|j}	|j|jd|jd|j|jd|jd|j|jd|j
|j|jd|j
|j|jdt|y#t$r|j	dYwxYw)Nrzqsize method not implementedrrr)rrkrrrrrr#rprs  r
test_qsizez_TestQueue.test_qsizesJJL	:QWWY*	
aA&	aA&	A&	A&A#	:MM89	:s DDDct|jdD]+}tjt|j-yr)rrrrrN	task_done)rrobjs   r_test_task_donez_TestQueue._test_task_dones1t$	CJJu
KKM	rc|j}tdDcgc] }|j|j|f"}}|D]}d|_|jtdD]}|j
||j|D]}|j
d|D]}|jt|ycc}w)NrarTr6)	
JoinableQueuerSrr$rrrrr#)rpr"rVworkersrs     rtest_task_donez_TestQueue.test_task_dones""$"!H&<<t';';5(<K&&	AAH
GGI	r	AIIaL		

	AIIdO		A
FFH	E#&s%Cctj5d}t|dzdd5}|jddddt	j
t
j5	t|ddddddy#1swYNxYw#tj$r|jdYCwxYw#1swYHxYw#1swYyxYw)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
DirsOnSysPathrBgetcwd
__import__rrri)rpmodule_namers   rtest_no_import_lock_contentionz)_TestQueue.test_no_import_lock_contentions



!	3:KkE)3A	
Q	
,,RYY[9
33{+
3	3	3	
	
}}3II233
3
3	3	3sWC
B/C
*B>,B7C
B	
C
$B;8B>:B;;B>>C	C

Cctj}tj}|j	t
j|jddtj|z
}|j|dt|y)NTg?r.)
rrrrrlrrrassertGreaterEqualr#)rprrdeltas    rtest_timeoutz_TestQueue.test_timeoutsb!!# '--e< 5(	
u-Arc|jdk7r*|jdj|jGddt}tj
j
5|j}|j||jd|j|jt
jt|dddtj
j
5|jd}|j||jd	|j|jd|j|jt
j|j|j!t|dddy#1swYxYw#t$rYywxYw#1swYyxYw)	NrrceZdZdZy)F_TestQueue.test_queue_feeder_donot_stop_onexc.<locals>.NotSerializablectr)rDrs rrzQ_TestQueue.test_queue_feeder_donot_stop_onexc.<locals>.NotSerializable.__reduce__s$$rNrurvrwrrZrrNotSerializabler8s
%rr;Trrr	)rrrobjecttestrcaptured_stderrrrrrrr#rkrrr)rpr;rs   r"test_queue_feeder_donot_stop_onexcz-_TestQueue.test_queue_feeder_donot_stop_onexcsf99#MM7>>tyyIJ	%f	%\\
)
)
+	

A
EE/#$
EE$KOOAEE'*?*?E@AN	\\
)
)
+	

1
%A
EE/#$
EE$K
  A.

OOAEE'*?*?E@AOOAGGI&N				'

		s>'A2F<?:G: GAG<G	GGGGG c|jdk7r*|jdj|jGddtGfddtj
j}}tjj5|t	j}|j||jd|j|jtj	ddd|j|j|j|j y#1swY@xYw)
NrrceZdZdZdZdZy)K_TestQueue.test_queue_feeder_on_queue_feeder_error.<locals>.NotSerializablezMock unserializable objectc d|_d|_yNF)reduce_was_called on_queue_feeder_error_was_calledrs rrzT_TestQueue.test_queue_feeder_on_queue_feeder_error.<locals>.NotSerializable.__init__s).&8=5rcd|_tNT)rErDrs rrzV_TestQueue.test_queue_feeder_on_queue_feeder_error.<locals>.NotSerializable.__reduce__s)-&$$rN)rurvrwrxrrrZrrr;rBs,
>
%rr;c&eZdZdZefdZy)E_TestQueue.test_queue_feeder_on_queue_feeder_error.<locals>.SafeQueuez1Queue with overloaded _on_queue_feeder_error hookcPt|trt|rd|_yyyrH)rrDrF)rr#r;s  r_on_queue_feeder_errorz\_TestQueue.test_queue_feeder_on_queue_feeder_error.<locals>.SafeQueue._on_queue_feeder_errors)q.1"38;?C892rN)rurvrwrxstaticmethodrL)r;sr	SafeQueuerJsC

@
@rrN)rsTr)rrrr<rrrr=rr>get_contextrrrrrErF)rprNnot_serializable_objrr;s    @r'test_queue_feeder_on_queue_feeder_errorz2_TestQueue.test_queue_feeder_on_queue_feeder_errors99#MM7>>tyyIJ	%f	%	@..44	@ /0
\\
)
)
+	Bo99;<A
EE&'
EE$KOOAEE'*?*?E@A
	B	
,>>?,MMN	B	Bs
A-EE	cltjtjfD]q}|j|j	t
d5|j
dddd|j	t
d5|jdddsy#1swY;xYw#1swYxYw)Nz	is closedfoo)rrr&r assertRaisesRegexrErrrs  r$test_closed_queue_put_get_exceptionsz/_TestQueue.test_closed_queue_put_get_exceptions1s &&(/*G*G*II	A
GGI''
K@
e
''
K@


		



sBB*B'	*B3	N)rurvrwrrrrrrrr r$r(r1r5r?rQrUrZrrrrs""9v""3j8 
,3*	@$OLrrceZdZdZdZdZy)	_TestLockcF|j}|j|jd|j|jdd|j|jd|j	t
tjf|jyNTF)LockrkacquirereleaserlrErThreadErrorrplocks  r	test_lockz_TestLock.test_lock>sqyy{.e,e4.:y'<'<=t||Lrc|j}|j|jd|j|jd|j|jd|j|jd|j|jd|j|jd|j	t
tf|jyrH)RLockrkr[r\rlrr4r^s  r
test_rlockz_TestLock.test_rlockEszz|......><8$,,GrcP|j5	dddy#1swYyxYwrrZrs rtest_lock_contextz_TestLock.test_lock_contextOs#
YY[				s%N)rurvrwr`rcrfrZrrrWrW<sMHrrWc$eZdZdZdZdZdZy)_TestSemaphorecZ|jdt||j|jd|jdt||j|jd|jdt||j|jdd|jdt||j|j	d|jdt||j|j	d|jdt|y)NrTrrF)rrrkr[r\rpsems  r_test_semaphorez_TestSemaphore._test_semaphoreVs''9c:-''9c:-''9c:U+U3''9c:-''9c:-''9c:rc$|jd}|j||j|jd|j	dt
||j|jd|j	dt
|y)Nrrra)	Semaphorerlrkr\rrrjs  rtest_semaphorez_TestSemaphore.test_semaphorecsnnnQS!-''9c:-''9c:rcH|jd}|j|yNr)BoundedSemaphorerlrjs  rtest_bounded_semaphorez%_TestSemaphore.test_bounded_semaphoreks ##A&S!rc|jdk7r*|jdj|j|jd}t	|j
}|j
|dd|j|jd|j
|ddd|j|jd|j
|dtd|j|jd|j
|dtd|j|jt|j
|td|j|jty)NrrrFr3Tr)rrrrnr}r[rkrrrrr)rprkr[s   rr5z_TestSemaphore.test_timeoutss99#MM7>>tyyIJnnQ,/$$W__c:-u5$$W__c:159$$W__a8x0%8$$W__h?2E:$$W__h?rN)rurvrwrlrorsr5rZrrrhrhTs;;"@rrhceZdZeddZdZdZdZdZdZ	dZ
ed	Zejed
dZedZejed
d
ZedZdZy)_TestConditionNc|j|j|j||j|jyr)r[r\r)rcondsleepingwokenr6s     rrz_TestCondition.fs5		'


rctdD])}	||k(rn	tjt+tjt|j||y#t$rY8wxYwNr6)rSrrrrNr)rprrrVs    rassertReachesEventuallyz&_TestCondition.assertReachesEventuallyskr	A
6U?#
JJu
		

5''t4	'

s
A$$	A10A1c&|jdk(rs	|jj|jjz
}|j	|d|j	|j
jdyy#t$rYywxYw)Nrr)r_sleeping_countr_woken_countrk_wait_semaphorer)rprxsleeperss   rcheck_invariantz_TestCondition.check_invariants99#
 00::< --779:  1-  !5!5!?!?!A1E$'

sA1B	BBc|j}|jd}|jd}|j|j|||f}d|_|j|j
|jtj|j|||f}d|_|j|j
|j|j|jtjt|jdt||j|j!|j#tjt|jdt||j|j!|j#tjt|jdt||j%||jy)NrrTrr)	Conditionrnrrrrrcrrrr[rrrNrrnotifyr\r)rprxryrzrs     rtest_notifyz_TestCondition.test_notifysq~~>>!$q!LLdHe-DLE		DFF$%1HI				

5''9e<	

	

5''9e<	

	

5''9e<	
T"	rcz|j}|jd}|jdtdD]}|j|j||t
f}d|_|j|j|jtj|j||t
f}d|_|j|j|jtdD]}|jtdD]}j|jdt|j|tdD]}|j|j||f}d|_|j|j|jtj|j||f}d|_|j|j|jtdD]}|jt!j"t$|jdt|j|j'|j)|j+fdd|j|y)NrrrTrctSrrrzsr<lambda>z0_TestCondition.test_notify_all.<locals>.<lambda>Yu-=r)rrnrSrrrrrrcrrrr[rrrrrrN
notify_allr\r}rprxryrVrrrzs      @rtest_notify_allz_TestCondition.test_notify_alls;~~>>!$q!q	$ADFF#'5("CEAAH
GGIOOAFF#  '+Xuh&GIAAH
GGIOOAFF#	$q	A	q	AMMO	''9e<	
T"q		$ADFF$%1HIAAH
GGIOOAFF#  dHe5LMAAH
GGIOOAFF#		$q	A		

5''9e<	
	
$$%=qA	
T"rcJ|j}|jd}|jdtdD]}|j|j||f}d|_|j
|j|jtj|j||f}d|_|j
|j|jtdD]}|jtjt|jdt |j|j#d|j%|j'fdd|j|j#d	|j%|j'fd
d|j|j#d|j%|jdt |j)|y)NrrrTrr)nctSrrrsrrz._TestCondition.test_notify_n.<locals>.<lambda>4rrractSrrrsrrz._TestCondition.test_notify_n.<locals>.<lambda>;rr)rrnrSrrrrrcrrrr[rrrNrrrr\r}rrs      @r
test_notify_nz_TestCondition.test_notify_ns~~>>!$q!q		$ADFF$%1HIAAH
GGIOOAFF#  dHe5LMAAH
GGIOOAFF#		$q	A		

5''9e<	
a	
$$%=qA	
a$$%=qA	
a''9e<	
T"rc
|j}t|j}|j|t}|j|j
|d|j|jtyrD)	rr}rr[rr\rkrr)rprxrrs    rr5z_TestCondition.test_timeoutGs[~~TYY'8ne$$$T\\8<rc|5d_|j|jfd}|rjdk7rtjddddy#1swYyxYw)Nrc"jdk(Sr`rstatesrrz0_TestCondition._test_waitfor_f.<locals>.<lambda>UEKKNrrar)rrwait_forrzrg)rrxrrYs  ` r_test_waitfor_fz_TestCondition._test_waitfor_fPsS
	EKKKM]]#:;FU[[A-			sAAA(zneeds sharedctypescv|j}|jdd|j|j|f}d|_|j|5|j
fd}|j||jjddddtdD]G}tjd|5xjd	z
c_	|jdddIt||j|jdy#1swYxYw#1swYxYw)
NrVrArTc"jdk(SNrrrsrrz-_TestCondition.test_waitfor.<locals>.<lambda>drrrrartr)rrrrrrrrrkrrSrrrr&r)rprxrrYrVrs     @rtest_waitforz_TestCondition.test_waitforYs~~

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


		QQ'	-	-

sAD#&D/#D,/D8	c|j|5d}tj}|jfd|}tj|z
}|s|dz|cxkr|dzkr
nnd|_dddy#1swYyxYw)Nr.c"jdk(Sr`rrsrrz8_TestCondition._test_waitfor_timeout_f.<locals>.<lambda>wrrrg333333?r]T)r\rrrr)rrxrsuccessrkrZdtrYs  `     r_test_waitfor_timeout_fz&_TestCondition._test_waitfor_timeout_fqsw

	%H!B]]#:H]MF!B&BhnrCHtOC $
	%	%	%sA!A>>Bcj|j}|jdd}|jdd}|jd}|j|j||||f}d|_|j
|j|jtjtdD]G}tjd|5|xjd	z
c_|jdddIt!||j|jy#1swYzxYw)
NrVrFrTrrrtr)rrrnrrrrrr[rrrSrrrrr&)rprxrrrkrrVs       rtest_waitfor_timeoutz#_TestCondition.test_waitfor_timeout}s~~

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

;		G,@,@ABq	AJJt
q 


		Q

&

s&D))D2	c|5|jdddtjd|%tj|t
jyy#1swYFxYwr)rrrrBrDr8r)rrrs   r_test_wait_resultz _TestCondition._test_wait_resultsJ
	
HHJ	

1
?GGC'		sAA"cJt|tr(tjdk7rt	j
}nd}|j
}|5|j|jd|j|jd|j|j||f}|j|j|jd|!|jt|jd|jdddy#1swYyxYw)Nr1rr.r<)rProcessesMixinrzr{rBrrrrrrrrrlKeyboardInterruptr)rprrrs    rtest_wait_resultz_TestCondition.test_wait_resultsdN+0G))+CCNN
	QVVAY'QVVC[)D$:$:!SJA
GGIOOAFF2J'!!"3QVVR@
FFH			s

CDD"r)rurvrwrrr}rrrrr5rrFrHAS_SHAREDCTYPESrrrrrrZrrrvrvs	5	+Z<#|0#d=X)+?@(A(.	%	%X)+?@'A'.((rrvc*eZdZedZdZddZy)
_TestEventcVtjt|jyr)rrrrdr^s  r_test_eventz_TestEvent._test_events

8
		rc||j}t|j}|j|j	d|j|dd|j|jd|j|td|j|jt|j|j|j	d|j|d|j|jd|j|td|j|jd|j|j|j|f}d|_|j|j|d|jy)NFr3Tr)rr}rrkrrrrrdrrrrrr)rpr_rrs    r
test_eventz_TestEvent.test_eventsF

UZZ(	
/	
cE*$$T\\37h/$$T\\8<
			
.&$$T\\37h.$$T\\37	

LL 0 0xL@		&	rNc|j}|jdk(rr|jt|d|j	|jt|d|j|jt|dy|jdk(rG|jt|d|j	|jt|dyy)Nrz<Event at .* unset>z<Event at .* set>rz(<EventProxy object, typeid 'Event' at .*)rrassertRegexreprrdr)rpr_s  r	test_reprz_TestEvent.test_reprs

99#T%[*@AIIKT%[*>?KKMT%[*@A
YY)
#T%[*UVIIKT%[*UV$r)returnN)rurvrwrrrrrZrrrrs !FWrrc*eZdZdZdZdZdZdZy)
_DummyListctjjtjd}tj
}|j
||fd|jd<y)NrVr)rheap
BufferWrapperstructcalcsizerZ__setstate__
_lengthbuf)rpwrapperr_s   rrz_DummyList.__init__sO!&&44V__S5IJ##%7D/*rc~|\|_|_|jjjd|_y)NrV)_wrapper_lockcreate_memoryviewcastr)rprs  rrz_DummyList.__setstate__s/&+#
--99;@@Erc2|j|jfSr)rrrs r__getstate__z_DummyList.__getstate__s

tzz**rct|j5|jdxxdz
cc<dddy#1swYyxYwNrrrr)rp_s  rrXz_DummyList.appends2
ZZ	$OOA!#	$	$	$s.7cd|j5|jdcdddS#1swYyxYwrrrs r__len__z_DummyList.__len__s*
ZZ	&??1%	&	&	&s&/N)rurvrwrrrrXrrZrrrrsF+$&rrc.tjdy)Nrtr*rZrr_waitr	sJJtrc6eZdZdZd	dZdZdZdZdZdZ	y)
Bunchz
    A bunch of threads.
    c||_||_||_|j|_|j|_|j
|_|s|jjg}t|D]F}|j|j}d|_|j|j|Hd}	tj ||	||_y)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.
        rTc2|D]}|jyr)r)rrs  rfinalizez Bunch.__init__.<locals>.finalize(s

rN)rrQr	DummyListstartedfinishedr	_can_exitrdrSrtaskrrrXrkr
_finalizer)
rp	namespacerrQrwait_before_exitrrVrrs
          rrzBunch.__init__s	 **,!++-
"*NN q	A!!!3AAH
GGINN1			"**47Crctj}|jj|	|j|j
|jj||jjd|jjsJy#|jj||jjd|jjsJwxYw)N)
rBrrrXrrQrrrrrprs  rrz
Bunch.task.siikC 	+DFFDIIMM  %NN#>>((***
MM  %NN#>>((***sBAC1ct|j|jkr.tt|j|jkr-yyr)rrrrrs rwait_for_startedzBunch.wait_for_started8s3$,,$&&(G$,,$&&(rct|j|jkr.tt|j|jkr-yyr)rrrrrs rwait_for_finishedzBunch.wait_for_finished<s3$-- 466)G$-- 466)rc8|jjyr)rrdrs r	do_finishzBunch.do_finish@src$|jyr)rrs rr zBunch.closeCsrNr)
rurvrwrxrrrrrr rZrrrrs&D8+rrceZdZdZdZy)
AppendTruec||_yr)r#)rpr#s  rrzAppendTrue.__init__Hs	rc:|jjdyrH)r#rXrs rrzAppendTrue.__call__JsrNrrZrrrrGsrrceZdZdZdZdZdZdZdZdZ	e
dZdd	Zd
Z
e
dZdZe
d
ZdZe
dZdZe
dZdZe
dZdZe
dZdZe
dZdZdZe
dZdZy)_TestBarrierz$
    Tests for Barrier objects.
    rg>@c\|j|j|j|_y)Nr)BarrierrxdefaultTimeoutbarrierrs rsetUpz_TestBarrier.setUpUs ||DFFD4G4G|HrcF|jjd|_yr)rabortrs rtearDownz_TestBarrier.tearDownXsrc|jdk(rgS|jdk(r|jjStS)Nrr)rrrrrs rrz_TestBarrier.DummyList\s:99	!I
YY)
#<<$$&&<rct||||jdz
}	|||j|jy#|jwxYwr)rrxrr )rprrQrs    rrun_threadsz_TestBarrier.run_threadsdsE$4*	
tH
!
GGIAGGIsAAc|j}||jk(sJt|D]y}|djdt	|d||zk(sJ|j|djdt	|d|dz|zk(sJ|j{	|jdk(sJ	|jrJy#t$rYwxYw)NrTr)	partiesrxrSrXrr	n_waitingrbroken)rrresultsrmrVs      r	multipassz_TestBarrier.multipasslsOOCEEzq	AAJd#wqz?a!e++LLNAJd#wqz?q1uk11LLN
		$$)))>>!>#		s&C	CCc|j|jg}|j|j|j||fy)z;
        Test that a barrier is passed in lockstep
        N)rrrr)rppassesrs   rtest_barrierz_TestBarrier.test_barrier}s;>>#T^^%56$,,)HIrc$|jdS)zC
        Test that a barrier works for 10 consecutive runs
        r6)rrs rtest_barrier_10z_TestBarrier.test_barrier_10s  $$rcF|j}|j|yr)rr)rrr"rs    r_test_wait_return_fz _TestBarrier._test_wait_return_fslln
		#rc6|j}|j|j|j|ft	|j
Dcgc]}|j
}}|j|jddt|ycc}w)z9
        test the return value from barrier.wait
        rrN)
rrrrrSrxrrkcountr#)rpr"rVrs    rtest_wait_returnz_TestBarrier.test_wait_returnsu

11DLL%3HI(-dff
61599;66q)1-E7sBcL|jt|dk7rtyr)rrr4)rrrs   r_test_action_fz_TestBarrier._test_action_fs"w<1rc|j}|j|jt|}|j	|j
||f|j
t|dy)z,
        Test the 'action' callback
        )rrN)rrrxrrrrkr)rprrs   rtest_actionz_TestBarrier.test_actionsZ..",,tvvj.A,B,,w.@AWq)rc 	|j}||jdzk(rt|j|jdy#tj
$r|jdYyt$r|j
YywxYwNrT)rrxr4rXrBrokenBarrierErrorr)rrresults1results2rVs     r
_test_abort_fz_TestBarrier._test_abort_fsn		ACEE1H}""LLNOOD!++	"OOD!	MMO	sA	A$B
2B
B
cf|j}|j}|j|j|j||f|j	t|d|j	t||jdz
|j|jjy)zK
        Test that an abort will put the barrier in a broken state
        rrN)	rrrrrkrrxrr)rprrs   r
test_abortz_TestBarrier.test_aborts>>#>>#++,,(;	=X*Xq1++,rc|j}||jdzk(r_|j|jdz
kr2tjd|j|jdz
kr2|jn"	|j|j
d|j|j
dy#tj$r|j
dYHwxYw)NrrruT)	rrxrrrresetrXrr)rrrrresults3rVs      r
_test_reset_fz_TestBarrier._test_reset_fsLLNq=##ceeAg-

5!##ceeAg-MMO
&%		//
&%
&s!C$C-,C-c|j}|j}|j}|j|j|j|||f|j	t|d|j	t||jdz
|j	t||jy)zL
        Test that a 'reset' on a barrier frees the waiting threads
        rrN)rrrrrkrrx)rprrrs    r
test_resetz_TestBarrier.test_resets>>#>>#>>#++,,(HE	GX*Xq1X/rc	|j}||jdzk(rt|j|jd|j|jdzk(r|j|j|j|jdy#tj
$r|jdYt$r|j
YwxYwr)rrxr4rXrrrr)rrbarrier2rrrrVs       r_test_abort_and_reset_fz$_TestBarrier._test_abort_and_reset_fs		ACEE1H}""LLNOOD!==?ceeQh&MMO

++	"OOD!	MMO	sA	B--$C.C.-C.c|j}|j}|j}|j|j}|j|j|j
||||f|j
t|d|j
t||jdz
|j
t||jy)zF
        Test that a barrier can be reset after being broken.
        rrN)rrrxrr#rrkr)rprrrr"s     rtest_abort_and_resetz!_TestBarrier.test_abort_and_resets>>#>>#>>#<<'55,,(HhO	QX*Xq1X/rc|j}||jdzk(rtjd	|jdy#tj
$r|j
dYywxYw)Nr?rT)rrxrrrrrXrrrrVs    r_test_timeout_fz_TestBarrier._test_timeout_fsYLLNq=JJsO	!LL++	!NN4 	!sA$A21A2c|j}|j|j|j|f|j	t||jjy)z$
        Test wait(timeout)
        N)rrr)rrkrr)rprs  rr5z_TestBarrier.test_timeoutsM.."--g/FGWt||';';<rc|j|j}||jdzk(rtjd	|jy#t
j$r|jdYywxYw)Nrr'T)rrrxrrrrrXr(s    r_test_default_timeout_fz$_TestBarrier._test_default_timeout_fs_LL++,q=JJsO	!LLN++	!NN4 	!sA$A<;A<c|j|jd}|j}|j|j||f|jt
||jy)z4
        Test the barrier's default timeout
        rrN)rrxrrr,rkrr)rprrs   rtest_default_timeoutz!_TestBarrier.test_default_timeout#sY,,tvvs,3.."557IJWw7rcf|jd}|j|jyr)rr)rprs  rtest_single_threadz_TestBarrier.test_single_thread,s!LLO		rct|D].}|j|5|j|ddd0y#1swY;xYwr)rSrr)rrrconnr_rVs      r_test_thousand_fz_TestBarrier._test_thousand_f1sFv	ALLN
		!

	

s	>A	c6|jdk(r*|jdj|jd}|j}|j	d\}}t|jD]X}|j|j|j|||f}|j|j|jZt|D]<}t|jD]"}|j|j|$>y)NrrFr)rrrrZrrSrxrr3rrrcrrkr)rprr_r2rjrrVs        r
test_thousandz_TestBarrier.test_thousand8s99	!MM7>>tyyIJyy{99U+jtvv	$AD$9$9!%vz4 HJA
GGIOOAFF#		$v	1A466]
1  a0
1	1rNr)rurvrwrxrxrrrrrrrrr	rrrrrrrr r#r%r)r5r,r.r0r3r7rZrrrrNs	
ANI "" J%
*


-"0*
0!!=!!8
1rrc	feZdZdZdddddededfgZd	Zed
ZddZ	dZ
d
Zy)
_TestValuer)rVii^)dg
@g)hi)rrxyc4ts|jdyyNz%requires multiprocessing.sharedctypesrrrs rrz_TestValue.setUpXMMAB rcTt||jD]\}}|d|_yrq)zipcodes_valuesr)rvaluessvcvs    rrz_TestValue._test\s-&#"2"23	FB!uBH	rc	h|r2|jDcgc]\}}}|j||}}}}n1|jDcgc]\}}}|j||}}}}t||jD]$\}}|j	|j
|d&|j
|j|f}d|_|j|jt||jD]$\}}|j	|j
|d&ycc}}}wcc}}}w)NrrTr)rGRawValuerrFrkrrrrrr)	rprawcoderrrHrIrJrs	         r
test_valuez_TestValue.test_valuebs(,0,=,=??($qmmD%0?F?-1,=,=??($qjju-?F?&$"3"34	.FBRXXr!u-	.||4::VI|>

		&$"3"34	.FBRXXr!u-	.??sD&D-c(|jdyNT)rM)rOrs r
test_rawvaluez_TestValue.test_rawvalueusD!rc|jdd}|j}|j}|jddd}|j}|j}|j}|jdd|}|j}	|j}
|j	||	|jddd}|jt
|d|jt
|d|jt|jddd|jdd}|jt
|d|jt
|dy)NrVrr_Fget_lockget_objnavalue)
rrUrVrZrkrr7rlrDrL)
rpval1lock1obj1val2lock2obj2r_val3lock3obj3arr4arr5s
             rtest_getobj_getlockz_TestValue.test_getobj_getlockxs,zz#q!

||~zz#qtz,

||~yy{zz#qtz,

||~u%zz#quz-z23y12.$**c19M}}S!$z23y12rNr)rurvrwrrrGrrrrOrRrcrZrrr9r9LsW"M		eCj%*%
LC
.&"3rr9ceZdZdZedZejedudd	dZ	ejeduddZ
ejeduddZejeduddZy)

_TestArrayrc^tdt|D]}||xx||dz
z
cc<yr)rSr)rseqrVs   rrz_TestArray.fs2q#c(#	AFc!A#hF	rNzrequires _ctypescgd}|r|jd|}n|jd|}|jt|t||j|d|d|jt	|ddt	|ddtj
dgdx|dd|dd|jt	|dd||j
||j|j|f	}d
|_|j|j|jt	|dd|y)N)
iirii5i$iii?rVrrr
)rrrrararrT)RawArrayArrayrkrrarrayrrrrr)rprMrgarrrs     r
test_arrayz_TestArray.test_arrays@--S)C**S#&CS3s8,QQ(c!Ahc!Ah8#kk#|<<Aa3q8c!fs+sLLcVL4			c!fs+rc	8d}tdD]}|jd|}|jt|||jt	|dg|ztd|dd|jt	|t	td~y)Nr6rrVr)rSrlrkrr)rpsizerrns    rtest_array_from_sizez_TestArray.test_array_from_sizes
q	A**S$'CSXt,T#Yd
32YCFT#YU2Y8
	rc(|jdyrQ)rors r
test_rawarrayz_TestArray.test_rawarraysD!rc|jdttd}|j}|j	}|jdttdd}|j}|j	}|j}|jdttd|}|j}	|j	}
|j
||	|jdtdd}|jt|d|jt|d|jt|jdtdd|jdtd}|jt|d|jt|dy)NrVr6rTFrUrVnotalock)rlrrSrUrVrZrkrr7rlrDrk)
rparr1rYrZarr2r\r]r_arr3r_r`rarbs
             rtest_getobj_getlock_objz"_TestArray.test_getobj_getlock_objsXzz#tE"I/

||~zz#tE"ITz:

||~yy{zz#tE"ITz:

||~u%zz#uRyuz5z23y12.**c59:		G}}S%),z23y12rr)
rurvrwrrrrFryr<rorrrtrzrZrrreres"MX__Ud]$67,8,0X__Ud]$678X__Ud]$67"8"X__Ud]$67383rrec@eZdZdZdZdZdZdZdZdZ	dZ
d	Zy
)_TestContainersrc|jttd}|j|ddttd|j}|j|ddg|jttd|j|ddttd|j|dd|j|ddgd|dz}|j|ddgd|j|ddgzgd|j|ddttd||g}|j|}|j|Dcgc]}|dd	c}gdgdg|j|g}|j	d	|j|d
ddgdycc}w)Nr6rr)rrra)
rrrrrarrrrrar)rrrrrarrrrrarr)
rrrrrarrr
r	rr)rrrrrarrr
rrr)rrSrkextendrX)rprrr:relementrs       r	test_listz_TestContainers.test_listszIId59o&1tE"I/IIK1r"	eAh 1tE!H~.1q!1R'*	Q1=>aV%IJ1tE"I/
FIIaL'()GWQZ)
+-KL	

IIqcN	1a"IJ

*s&F>cF|jttd}t|}|jt|ttd|jt|gt|}d|d<|jt	|dy)Nr6r)r)rrSrrknext)rprits   rtest_list_iterz_TestContainers.test_list_iter	swIId59o&
!Wb4b	?3b2&
!W!b3'rc
|jtdDcgc]}|jtdc}}|j|Dcgc]}|dd	c}gdgdzd|dd<|j|dddgdtddD]}|j||ddgd|j|djd|jt	|ddtdddD] }|jt	||d"~|j}|j|~ycc}wcc}w)	Nr)rrr7rrA)rrrrr)rrSrkpoprrX)rp_irinnerrVrs      rtest_list_proxy_in_listz'_TestContainers.test_list_proxy_in_list	s,IIU1X>rtyyq*>?2u%(2YK!OD!R1a*-q!	1AQqT!Wi0	1	
1Q'QqTA&q!Q	+AS1Y*	+
IIK	
#?2s!EEc
B|j}ttdd}|D]}t|||<|j	|jtd|D|j	t
|j||j	t
|j|Dcgc]
}t|c}|j	t
|j|Dcgc]}|t|fc}ycc}wcc}w)NAFc36K|]}|t|fywr)chr.0rVs  r	<genexpr>z,_TestContainers.test_dict.<locals>.<genexpr>+	s'ECF'Es)
dictrrSrrkrsortedkeysrHr)rpr:indicesrVs    r	test_dictz_TestContainers.test_dict&	sIIKuR}%	Aq6AaD	4'EW'E#EF)73
+g-Fc!f-FG	*',JQaQ[,JK.G,Js;D
;D
cf|j}ttdd}|D]}t|||<t	|}|jt|||jt|gt	|}|j
|jtt|y)Nrr)
rrrSrrrkrrlr4r)rpr:rrVrs     rtest_dict_iterz_TestContainers.test_dict_iter0	sIIKuR}%	Aq6AaD	
!Wb7+b2&
!W		,b1rc|jdd}|jdd}|j||}|j|dd|j|d	ddd
|d	d<|j|dd
|j|d	dd
d|d	d<|j|dd|j|d	dd~~|j|d
ddd|d	d<|j|d	dd|d
}|d	}d|d<|j|dd|j|d	dd|j|jt|d|j|dd|j|dd|j	||g}d|dd<|j|dd|j|ddd~~|j|ddd|j	ddg|g}|j|dt|j|ddddy)Nrra)ferretshamstersr6r)waterfeed)petssuppliesrrrblanketsr
rrrrrmarmotsXcrAr)rrkrrrr)rprrr:louters      rtest_dict_proxy_nestedz&_TestContainers.test_dict_proxy_nested=	sfyyQy/992A9.II4(I3'*B/:w/4$%*
j!*-q1:z2A6!"*
g'*A.:w/369-q1$&*
j!:z2B7yZ='*A.:w/3		Q#'*A.j)1-IItX&'!Yi!,1i!,1i!,		B8Q-(eAh-r2v.2rc|j}|j|j|djd|j	|djd|j
}|j|d<|djd|j	|djdy)Nr{)rrXrrrkrrrs   rtest_nested_queuez!_TestContainers.test_nested_queuek	sIIK		!
1S)IIKzz|!	!
1S)rcF|j}d|_d|_d|_|j	|j|jfd|`|j	t|d|j
t|d|j
t|dy)NBobBuilderhidden)rrzNamespace(name='Bob')r+job)	Namespacer+r_hiddenrkrnrr7)rprs  rtest_namespacez_TestContainers.test_namespaceu	sNN	!&&!%%*<=
EQ!896*+GAu--.rN)rurvrwrrrrrrrrrrZrrr|r|s2 MK>((L2,3\*	/rr|c6tj|||zSrr*)r?rs  rsqrr	sJJtQ3Jrc||zSrrZ)r?r@s  rmulr	Q3JrcHtj|tddz)Nr?i)rrrEr4s rraise_large_valuerrorr	sJJt
S7]
##rc|SrrZr?s ridentityr	sHrceZdZdZdZdZy)
CountedObjectrcV|xjdz
c_tj|Sr)n_instancesr<__new__r+s rrzCountedObject.__new__	s1~~c""rc@t|xjdzc_yr)rrrs r__del__zCountedObject.__del__	sT
!#rN)rurvrwrrrrZrrrr	sK#$rrceZdZy)SayWhenErrorNrurvrwrZrrrr	srrc#tK|dk(rtdt|D]}||k(rtd|yw)NrAzSomebody said when)rrS)totalwhenrVs   rexception_throwing_generatorr	sDrz/00
5\9344s68ceZdZefdZefdZdZdZdZdZ	dZ
dZd	Zd
Z
dZdZd
ZdZdZdZdZdZdZdZdZedZdZedZdZdZdZdZdZ xZ!S)	_TestPoolcNt||jd|_yr`)super
setUpClassPoolpoolr	__class__s rrz_TestPool.setUpClass	s
88A;rc|jj|jjd|_t|yr)rr	rr
tearDownClassrs rrz_TestPool.tearDownClass	s2


rc|jj}|j|tdtd|j|tddditdy)N)rrrZr?rr)rapplyrkr)rppapplys  r
test_applyz_TestPool.test_apply	sKT*CF3R#a138<rc
|jj}|j|tt	tdt	ttt	td|j|tt	tddt	ttt	tdy)Nr6r)r	chunksize)rmaprkrrrS)rppmaps  rtest_mapz_TestPool.test_map	s|yy}}c4b	?3T#c4b	?:S5TUc4c
#3rBc#tE#J'789	;rc
|jj}ttt	dt	ddd}|j|t|ttjt|ttt	dt	ddd}|j|t|dttjt|y)Nr6rrAr)rrr)rstarmaprrFrSrkrr)rppsmaptupless   rtest_starmapz_TestPool.test_starmap	s		!!c%)U1R_56sF+i//V<=	?c%*eBr2&678sFb9i//V<=	?rc
tttdtddd}|j|jjt|jttjt|y)Nr)rrA)
rrFrSrkr
starmap_asyncrrrr)rprs  rtest_starmap_asyncz_TestPool.test_starmap_async	s_c%*eBr2&67800f=AACi//V<=	?rc
|j|jjtt	tdj
t	ttt	tdyr|)rkr	map_asyncrrrSrrrs rtest_map_asyncz_TestPool.test_map_async	sK,,S$uRy/BFFHc#tE"I78	:rc<|jdk(r|jjng}|jj	t
dg|j|jj|jdt||jdg|d|jj	t
dg|j|jj|jdt||j|dty)Nr1)callbackerror_callbackrrrr)rrrrrrIrXrrkrrrE)rp	call_argss  rtest_map_async_callbacksz"_TestPool.test_map_async_callbacks	s+/99	+ADLL%%'r			C#%.%5%5+4+;+;		==ATVC	N+!il+		C#%.%5%5+4+;+;		==ATVC	N+ilJ7rc:|jdk(r*|jdj|jGddt}|j	t
5|jjt|gdzdddy#1swYyxYw)NrrceZdZdZy)*_TestPool.test_map_unplicklable.<locals>.Actd)Nz
cannot pickler3rs rrz5_TestPool.test_map_unplicklable.<locals>.A.__reduce__	s
"?33rNr:rZrrAr	s
4rrr6)	rrrr<rlr4rrr)rprs  rtest_map_unplicklablez_TestPool.test_map_unplicklable	su99	!MM7>>tyyIJ	4	4

|
,	)IIMM#uRx(	)	)	)s*BBc	|jjtgdjty#t
j$r|jdYywxYw)Nrrrz2pool.map_async with chunksize stalled on null list)rrrrrrTimeoutErrorrirs rtest_map_chunksizez_TestPool.test_map_chunksize	sS	LIIR1599(9K++	LIIJK	Ls69$A A c|jdk(r*|jdj|j|jt5|j
j
ttdddddd|jt5|j
j
ttdddddd|jt5|j
j
ttddddddGdd}|jt5|j
j
t|dddd|jt5|j
j
t|ddddy#1swY/xYw#1swYxYw#1swYxYw#1swYsxYw#1swYyxYw)	NrrrrAr6rceZdZdZdZdZy)E_TestPool.test_map_handle_iterable_exception.<locals>.SpecialIterablec|SrrZrs 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""rcyrrZrs rrzM_TestPool.test_map_handle_iterable_exception.<locals>.SpecialIterable.__len__
srN)rurvrwrrrrZrrSpecialIterabler	s

#
rr)	rrrrlrrrrr)rprs  r"test_map_handle_iterable_exceptionz,_TestPool.test_map_handle_iterable_exception	s~99	!MM7>>tyyIJ

|
,	GIIMM#;ArBAF	G

|
,	GIIMM#;ArBAF	G

|
,	GIIMM#;BBAF	G		

|
,	5IIMM#0!4	5


|
,	5IIMM#0!4	5	5%	G	G	G	G	G	G	5	5	5	5s<,F(,F5!,G4'G
8'G(F25F>G

GG"c|jjtdtf}t	|j
}|j
|d|j|jty)Nr
1)	rapply_asyncrrr}rrkrrrprrs   r
test_asyncz_TestPool.test_async	
sPii##C!X8CGG$#$$S[[(;rc|jjtdtdzf}t	|j
}|j
tj|t|j|jty)Nrr'r)rr
rrr}rrlrrrrrs   rtest_async_timeoutz_TestPool.test_async_timeout
s^ii##C!X^)<=CGG$/66XN$$S[[(;rc
|jjttt	d}|jt|tt
ttt	d|jjttt	d}t	dD] }|jt|||z"|jt|j|jjttt	dd}t	dD] }|jt|||z"|jt|jyNr6r5r)r)rimaprrrSrkrrrl
StopIterationrrprrVs   r	test_imapz_TestPool.test_imap
s
YY^^CeBi
1b4CeBi(A#BC
YY^^CeBi
1r	,AT"Xqs+	,-5
YY^^CeDk!2c^
Bt	,AT"Xqs+	,-5rcx|jdk(r*|jdj|j|jj	t
t
ddd}|jt|j|jj	t
t
ddd}|jt|j|jj	t
t
ddd}tdD] }|jt|||z"|jt|j|jj	t
t
ddd	}td
D] }|jt|||z"|jt|j|jj	t
t
ddd}tdD] }|jt|||z"|jt|jy)NrrrrAr6rrr
rrra)
rrrrrrrrlrrrSrkrrs   r#test_imap_handle_iterable_exceptionz-_TestPool.test_imap_handle_iterable_exception#
s99	!MM7>>tyyIJYY^^C!=a!Da
H,4
YY^^C!=a!Da
H,4
YY^^C!=b!!Da
Hq	,AT"Xqs+	,,4YY^^C!=b!!Da
Hq	,AT"Xqs+	,,4
YY^^C!=b!!Da
Hq	,AT"Xqs+	,,4rc
|jjttt	d}|jt
|ttttt	d|jjttt	dd}|jt
|ttttt	dyr)rimap_unorderedrrrSrkrr)rprs  rtest_imap_unorderedz_TestPool.test_imap_unordered=
s
YY
%
%c4b	?
;T#c4b	?*C%DE
YY
%
%c4d+<
%
LT#c4d3D*E%FGrc
|jdk(r*|jdj|j|jj	t
t
ddd}|jt|j|jj	t
t
ddd}|jt|j|jj	t
t
ddd}ttt
ttd}|jt5tdD]0}t|}|j|||j|2	ddd|jj	t
t
ddd	}ttt
ttd}|jt5tdD]0}t|}|j|||j|2	dddy#1swYxYw#1swYyxYw)
NrrrrAr6rrr
r)rrrrrrrrlrrrrrSrrmr)rprexpected_valuesrVrs     r-test_imap_unordered_handle_iterable_exceptionz7_TestPool.test_imap_unordered_handle_iterable_exceptionD
s99	!MM7>>tyyIJYY
%
%c&B1b&I&')	
,4
YY
%
%c&B1b&I&')	
,4
YY
%
%c&B2q&I&')s3U2Y89


|
,	.2Y
.R

e_5&&u-
.	.YY
%
%c&B2q&I&')s3U2Y89


|
,	.2Y
.R

e_5&&u-
.	.	.	.	.	.	.s;?H7.?I7IIc|jdk(rtnt}|j||jd|j||jd|jdk7rX|j	d}	|jdt
|j|j|jyy#|j|jwxYw)NrrArr)
rRemoteErrorrErlrrkr_poolr r)rpexpected_errorrs   rtest_make_poolz_TestPool.test_make_poolh
s)-i)?+)		
.$))R8.$))Q799	!		!A
  CL1	
"
	s7%B>>"C cL|jjtjt	dDcgc]}dc}d}|jjt
|jj}||j|jdycc}w)Ni'r.rrr)
rrrrrSr	r}r
assertLessr)rprVrYrs    rrBz_TestPool.test_terminatew
su$$JJeEl33q%	
		TYY^^,c*
4s	B!
c|jd}|j|jtgg|jt	|jtgg|jt	|j
tgg|j|jtgjg|j|jyr)rrkrrrrrrrr rrOs  rtest_empty_iterablez_TestPool.test_empty_iterable
sIIaLsB,affS"o.3a..sB78"=S"-113R8			rc|jdk(rttd}|Dcgc]
}t|}}|j	d5}|jt|}|j
|j|dddj|jt|j
t|yycc}w#1swYFxYw)Nrr6r)rrrSrrrrkrrrlrE)rpLrVrZrrs      rtest_contextz_TestPool.test_context
s99#U2YA()*1A*H*1
4KKQ'  (3
4
FFHj!++sA>$*
4
4sC
7C		Cctd)Nrr3r+s r_test_tracebackz_TestPool._test_traceback
s
3rc|jdk(r|jd5}	|j|j|j	ddddj
|jtt|j|jd|j}|jt|tjj|j!d|j"t$j&j)5}	|yy#t
$r}|}Yd}~d}~wwxYw#1swYxYw#t$r't+j,t+j.YnwxYw	dddn#1swYnxYw|j!dj1|jd5}	|j3t4t7ddd|j	dn#t
$r}|}Yd}~nd}~wwxYw|jt|t8|j|jddddn#1swYnxYw|j
O)Nrrzexpected RuntimeError)rz&raise RuntimeError(123) # some commentrAzexpected SayWhenError)rrrr+rirhrrorr4rkrQ	__cause__rrRemoteTracebackrmtbr=rr>rz
excepthookexc_infogetvaluerrrr)rprrexccausef1s      rtest_tracebackz_TestPool.test_traceback
s99#1
77GGD001II56

7
FFHMM$s)\2SXXv.MMEMM$u+';';'K'KLMMBEHHM--/
424I#$!C
7
7"$4NNCLLN343	
4
4
4

MMB++-
)1
37EE#;ArBAFII56!C

d3i6

cmmT2
3
3
3
FFHsD:D"D:FE"	D7+D2-D:2D77D::E-E63F5E66FFI!G5#I5	H
>HIH

>IIctd)NrSr3r+s r_test_wrapped_exceptionz!_TestPool._test_wrapped_exception
s
5!!rc|jd5}|jt5|j|jddddddjy#1swY"xYw#1swY&xYwr)rrlr4rr8rrOs  rtest_wrapped_exceptionz _TestPool.test_wrapped_exception
sd
YYq\	6Q""<0
6445
6	6	

6
6	6	6s"A1A%A1%A.	*A11A:c,tj}|jt5|j	d5}	|jtddgtjd|j|j	dddddd|jtj|z
dy#tjd|j|jwxYw#1swYsxYw#1swYwxYw)Nrrrrg?)rrrlrErrrrr r
assertGreater)rpt_startrs   rtest_map_no_failfastz_TestPool.test_map_no_failfast
s.."


z
*	1
EE/!Q8JJsOGGIFFH

		
4>>+g5s;JJsOGGIFFH


		s9D
C>C5C>D
7C;;C>>D	D

DctdDcgc]}t}}|Dcgc]}tj|}}|jjt|~tjtjt|jtd|Ddh|jtjdycc}wcc}w)Nr6c3*K|]}|
ywrrZ)rrps  rrz3_TestPool.test_release_task_refs.<locals>.<genexpr>
s1bRT1sr)rSrrkrlrrrrmrnrrrNrkrdr)rprVobjsorefss     rtest_release_task_refsz _TestPool.test_release_task_refs
s*/r3A
33(,-1A--		

h%




51D11D6:	
22A64-s
CCc:|jdk(r|jd|jd}|5	ddd|jt5|5	dddddd|jy#1swYDxYw#1swY.xYw#1swY2xYw)Nrtest not applicable to managerr)rrrrlrErrprs  r
test_enterz_TestPool.test_enter
s99	!MM:;yy|
		


z
*	

		
				

		s/A9BBB9BB	
BBcp|jdk(r|jd|jd}|j|j	t
jj|_tjdtf5d}tjdddy#1swYyxYw)NrrFrz%unclosed running multiprocessing pool)rrrr	rrrRUN_stater
check_warningsResourceWarningr
gc_collectrGs  rtest_resource_warningz_TestPool.test_resource_warning
s99	!MM:;yy|		&**..

+
+8/JL	!D 	!	!	!sB,,B5)"rurvrwrrrrrrrrrrrrrrrrrrr!rBr%r)r+r6r8r:r>rDrHrO
__classcell__rs@rrr	s  =
;??
:8)L54<<654H".H
+
?  $L""<(
7 !rrctd)Nkey)KeyErrorrZrrraisingrUs
5/rcdS)Ncy)N*rZrZrrrz%unpickleable_result.<locals>.<lambda>srrZrZrrunpickleable_resultrYsrceZdZdZdZdZy)_TestPoolWorkerErrorsrcHtjd}dgfd}|jt|}|j	t
|j|jd|jdt
|j|jy)Nrc|d<yrrZr3
scratchpads rerrbackz@_TestPoolWorkerErrors.test_async_error_callback.<locals>.errbacksJqMrrr)rrr
rUrlrTrrrr r)rprr`rr_s    @rtest_async_error_callbackz/_TestPoolWorkerErrors.test_async_error_callbacks}  #V
	 mmGGm<(CGG,
1
&jmX6			rcddlm}tjd}t	dD]}dgfd}|jt|}|j||jd}|j||jd||j|j|j|j|j|jy)Nr)MaybeEncodingErrorrrc|d<yrrZr^s rr`z?_TestPoolWorkerErrors.test_unpickleable_result.<locals>.errback/s #
1
rra)multiprocessing.poolrdrrrSr
rYrlrrrassertIsNotNoner3rr r)rprdr	iterationr`rwrappedr_s       @rtest_unpickleable_resultz._TestPoolWorkerErrors.test_unpickleable_result's;  #r	0IJ
$-- 3G-LC0#'': mGOOG$!!*Q-1CD  -  /	0	
		rN)rurvrwrrbrjrZrrr[r[s#M
rr[c(eZdZdZdZdZdZdZy)_TestPoolWorkerLifetimerctjdd}|jdt|j|jDcgc]}|j
}}g}t
dD](}|j|jt|f*t|D].\}}|j|jt|0|jd}|rYtd|jDs=|dz}tjt |rtd|jDs=|jDcgc]}|j
}	}|j#d||j#d|	|j%t'|t'|	|j)|j+ycc}wcc}w)Nrr6maxtasksperchildr)2c3<K|]}|jywrr)rrs  rrzD_TestPoolWorkerLifetime.test_pool_worker_lifetime.<locals>.<genexpr>Qs#BQAJJL#Br)rrrkrrrrSrXr
r	enumerater_repopulate_poolallrrrNrr"rr r)
rprrorigworkerpidsrrVr6r	countdownfinalworkerpidss
          rtest_pool_worker_lifetimez1_TestPoolWorkerLifetime.test_pool_worker_lifetime@ss  R8CL))*1A!%%11s	6ANN1==qe45	6"'*	0HQSWWYA/	0	
	#B!''#B BNIJJu#B!''#B B+,''2Q15522~./F>2F?4KL			12"3sG
Gc\tjdd}g}tdD])}|j|j	t
|df+|j
|jt|D].\}}|j|jt|0y)Nrrrnrg333333?)rrrSrXr
rr rrtrkr)rprrrVr6rs      r%test_pool_worker_lifetime_early_closez=_TestPoolWorkerLifetime.test_pool_worker_lifetime_early_close]s
  Q7q	9ANN1==q#h78	9			!'*	0HQSWWYA/	0rcdD]7}|jt5tjd|ddd9y#1swYDxYw)N)rrAr12rrn)rlrErr)rprs  r"test_pool_maxtasksperchild_invalidz:_TestPoolWorkerLifetime.test_pool_maxtasksperchild_invalidjsP'	@E"":.
@$$Q?
@
@	@
@
@s	>A	cd}tjjjd|\}}}|j	|dy)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)r=rrassert_python_okrkrpcmdrhoutrqs     r>test_worker_finalization_via_atexit_handler_of_multiprocessingzV_TestPoolWorkerLifetime.test_worker_finalization_via_atexit_handler_of_multiprocessingos=||11BB4MCQrN)rurvrwrrzr|rrrZrrrlrl=s#M:0@
 rrl)BaseManager	BaseProxyrceZdZdZdZdZy)FooBarcy)Nf()rZrs rrzFooBar.fsrctr)rErs rgzFooBar.gsrcy)N_h()rZrs r_hz	FooBar._hsrN)rurvrwrrrrZrrrrsrrc#:KtdD]	}||zywr|)rS)rVs rbazrs"
2Yc	sceZdZdZdZdZy)
IteratorProxy)rc|SrrZrs rrzIteratorProxy.__iter__src$|jdS)Nr)_callmethodrs rrzIteratorProxy.__next__s
++rN)rurvrw	_exposed_rrrZrrrrsI,rrceZdZy)	MyManagerNrrZrrrrsrrFoo)callableBar)rr)rexposedr)r	proxytypec(eZdZdZdZdZdZdZy)_TestMyManagerr}ctt}|j|j||j	|j|jjdtjfyN)shutdown_timeoutr)
rSHUTDOWN_TIMEOUTrcommonshutdownrm_processrr8r@rprs  rtest_mymanagerz_TestMyManager.test_mymanagersU-=>

G
	


g&&//!fnn_1EFrctt}|5|j|ddd|j|jj
dtjfy#1swYAxYwr)rrrrmrrr8r@rs  rtest_mymanager_contextz%_TestMyManager.test_mymanager_contextsX-=>
	!KK 	!
	


g&&//!fnn_1EF	!	!sA%%A.ctt}|j|5|j|ddd|j	|j
jdy#1swY0xYwr)rrrrrkrrrs  r!test_mymanager_context_prestartedz0_TestMyManager.test_mymanager_context_prestartedsV-=>


	!KK 	!))22A6	!	!sA$$A-c|j}|j}|j}dDcgc]}t||s|}}dDcgc]}t||s|}}|j	|ddg|j	|ddg|j	|jd|j
t|j|j	|jdd|j
t|jd|j	|jd|j	|jd|j	|jdd|j	|jdd|j	t|tdDcgc]}||z	c}ycc}wcc}wcc}w)N)rrrrrrrrr6)rrrr7rkrrlrErrrrrrS)	rprrSbarrr+foo_methodsbar_methodsrVs	         rrz_TestMyManager.commonsokkmkkmkkm(8OGC<NtOO(8OGC<NtOOsCj1sDk2%(*cee,-u5+s=%(6*-u5.7c%)$<QQqS$<=!PO%=sGGG#G7G
N)rurvrwrrrrrrZrrrrs M	GG7>rrctSr)_queuerZrr	get_queuersMrceZdZdZy)QueueManagerz$manager class used by server processNrurvrwrxrZrrrrs.rrrceZdZdZy)
QueueManager2z@manager class which specifies the same interface as QueueManagerNrrZrrrrsJrr	xmlrpclibc8eZdZdZgdZeddZedZdZy)_TestRemoteManagerr})hello worldNT@uhallå världenuпривіт світs
hall vrldenNct||tt}|j|j	}|jt
|jy)Nrr
serializerr)r
SERIALIZERrconnectrrrrHrrrrr"s     r_putterz_TestRemoteManager._puttersEW-/	!!#
		%

#$rctjd}ttjdf|t
t}|j|j|j|j|j|j|f}d|_
|jt|j|t
t}|j|j!}|j#|j%|j&|j)t*|j,t.j0~y)N rrrT)rBurandomrrHOSTrrrrcrrrrrrrrrkrrYrlrhrrr)rprrrmanager2r"s      rtest_remotez_TestRemoteManager.test_remotes**R."''+W-/	

(()LLGOOW3MLN		 OOW-/	""$dkk2	
)UYY

;
r)	rurvrwrrHrYrrrrZrrrrs0 MF
AYF%%rrsha256c"eZdZedZdZy)_TestManagerRestartct||tt}|j|j	}|jdy)Nrr)rrrrrrrs     rrz_TestManagerRestart._putter s<W-/	!!#
		- rctjd}ttjdf|t
t}	|j}|j}|jj|j|j|j|j|f}|j|j|j}|j!|j#d~t%|dr|j'	t||t
t}	|j|j)|j&y#t%|dr|j'wwxYw#t*$r}|j,t,j.k7rt1j2dt||t
t}t%|dr |j)|j&Yd}~yYd}~yd}~wwxYw)Nrrrrrrr')rBrrrrrr
get_serverrlistenerr rrrrrrkrr7rrcOSErrorerrno
EADDRINUSErr)rprrsrvraddrrr"rs        rtest_rapid_restartz&_TestManagerRestart.test_rapid_restart)s**R."''+W!4DF	#%%'D<<D
MM!MMODLL7QRA
GGI
FFH%%'EUYY[-8w
+  "'j-/
	2MMOOOG,,-w
+  ",
	2ww%***
JJsO"g*!13Gw
+ 0 011,
	2s%CE3+FE>	H

A1HH
N)rurvrwrrrrZrrrrs!!'2rrc	eZdZdZedZdZdZdZdZ	edZ
eddZejed	d
Zejed	ej ej$dk(dej ed
kdejeedddZedZejed	ej ej$dk(ddZdZy)_TestConnectionrct|jtD]}|j||j	yr)r
recv_bytesSENTINEL
send_bytesr )rr2msgs   r_echoz_TestConnection._echo\s12	!COOC 	!

rc|j\}}|j|j|f}d|_|j	gd}td}|dz}t
jdttd}|jdk(r-|jt|jt|j|j|d|j|j||j|j!|d|j|j#||jdk(rt
jdd	gdz}t|d	gdt%|z
zz}	|j|j!|d|j|j'|t%||j(z|jt||	t
jdd	gdz}d	gd
zt|zd	gdt%|z
zz}	|j|j!|d|j|j'|d
|j(zt%||j(z|jt||	t+td}|j|j!|d	|j'|}
|j-d
|
zt5|j6}|j|d|j9|j:d	|j|dd|j9|j:d	|j|t<d|j9|j:t<|jdt?j@d|j|t<d|j9|j:d	|j|jdtddz}
|j!|
|j|j#|
|j!tB|jE|jdk(rx|j|jFd|j|jHd|jKtL|j|jKtL|j"|jOy#t.j0$r(}|j|j2|fYd}~hd}~wwxYw)NrT)rrNrr6rVrarrrr
z(                                        zexpected BufferTooShort, got %sFrAr.Xi)(rrrrrrrmrrSrrkrfilenorIrrrrrrecv_bytes_intoitemsize	bytearrayrirBufferTooShortrQr}rrrrrrrr readablewritablerlEOFErrorr)rpr2rrrgrlongmsgrnbufferrZrrrreally_big_msgs              rtest_connectionz_TestConnection.test_connectionbs299;jLL

*L?		M"(kk#tE!H~.99#T$++-0#63.c*-t4*C099#[[qc"f-FCyA3"s3x-#88HT__S148T11&9 X7
9T&\84[[qc"f-FsQwc*aSFSX4E-FFHT__S148T11&!foo:MN X7
9T&\84uX/FT__W5t<
C**62		;cABTYY''$$T\\15b5)$$T\\15h/$$T\\8<		$

2h.$$T\\15d+s'78'*N;!99#T]]D1T]]D1h		2h8	K#11
5  '44
5s4UVVVcr|jd\}}|j|jdd|j|jd|jdk(r|j|j
d|j|jd|j|j
d|j|jd|jt|jd|jt|j|jt|jyy)NFrrrTr)
rrkrrrrrrlrr)rpreaderwriters   rtest_duplex_falsez!_TestConnection.test_duplex_falses%0Q.*99#V__d3V__e4V__e4V__d3gv{{A6gv{{3gv{{3$rc|j\}}|j|j|f}d|_|j	|jt
d}|j||j|j||jt|j|jy)NrTr)rrrrrr rrrkrrr)rpr2rrrs     rtest_spawn_closez _TestConnection.test_spawn_closes 99;jLL

*L?		Gn*C0!

	rc2|jdk7r*|jdj|jtd}|j	\}}|j||j
|j||j|d|j
|j|dd|j|dd|j
|j|dd|j|d|j
|jtd	|j|dd
|j
|jtd	|jt|j
|d|jt|j
|dd|jt|j
|dd
|jt|j
|d|jt|j
|ddy)Nrrabcdefghijklmnopqrstuvwxyzrr
rrrrrAra)
rrrrrrrkrrlrE)rprrrs    rtest_sendbytesz_TestConnection.test_sendbytess99#MM7>>tyyIJ01yy{1	S-	S!QR1	S!QQs4	S"r3	S"a r3*allC<*allCQ?*allCQ?*allC<*allCB?rc	tj|y#t$r(}|jtjk(rYd}~yd}~wwxYwrY)rBfstatrrEBADF)rrrs   r_is_fd_assignedz_TestConnection._is_fd_assigneds?	HHRL	ww%++%	s	A	AAA	cj|rGtddD]8}|j|rtj|j	|:tj|}tr$tj|tj}tj||tj|y)Nrr9)rSrrBdup2rrrecv_handlemsvcrtopen_osfhandlerr,r )rr2datacreate_dummy_fdsrVrs      r_writefdz_TestConnection._writefds1c]
.**1-GGDKKM1-
.
"
"4
(&&r2;;7B
T
r$test needs multiprocessing.reductionc|jdk7r|jd|jd\}}|j|j|df}d|_|j
|jtjtjttjd5}|j}trtj|}tj |||j"ddd|j%ttjd5}|j'|j)ddddy#1swY]xYw#1swYyxYw)	Nronly makes sense with processesTrsfoorwbrb)rrrrr
rrrcrrrrrr
get_osfhandlersend_handlerrrkr)rpr2rrrrs      rtest_fd_transferz _TestConnection.test_fd_transfer

s99#MM;<99D91jLL

Z4HLI			(()*:*:;
)""D
)	3QB))"-!!$AEE2		3
	

)""D
)	/QQVVXv.	/	/
	3	3	/	/s4A
E3!E)E&)E2r1*test semantics don't make sense on Windowsr9z)largest assignable fd number is too smallrztest needs os.dup2()c|jdk7r|jd|jd\}}|j|j|ddf}d|_|j
|jtjtjttjd5}|j}tdtD]}|j|rn|j!d	t#j$|	t'j(|||j*t#j,|	ddd|j/ttjd
5}|j1|j3ddddy#t#j,|wxYw#1swYwxYw#1swYyxYw)Nrr
Trsbarrrr9z2could not find an unassigned large file descriptorr)rrrrr
rrrcrrrrrrSMAXFDrrirBrrrrr rrkr)rpr2rrrrnewfds       rtest_large_fd_transferz&_TestConnection.test_large_fd_transfer
ss99#MM;<99D91jLL

Z4NLO			(()*:*:;
)""D
)	 QBsE*
P++E2
P		NOGGB
 %%dE1559	 	

)""D
)	/QQVVXv.	/	/	 	 	/	/s655G+*G!F)7G?!G)GGGGcLtj|jdy)N)rBr,rrpr2s  r_send_data_without_fdz%_TestConnection._send_data_without_fd>
s
&rzdoesn't make sense on WindowscB|jdk7r|jd|jd\}}|j|j|f}d|_|j
|jttj||jy)Nrr
Trr)rrrrrrrrlr4rrrrpr2rrs    rtest_missing_fd_transferz(_TestConnection.test_missing_fd_transferB
s}
99#MM;<99D91jLL : :*LO		,	(=(=tD	rc~|j\}}|5|5|jd|j|jd|jdk(r6|j|j|j|jdddddd|jdk(rw|j|j|j|j|jt|j|jt|jyy#1swYxYw#1swYxYwNr)
rrrkrrrclosedrrlrrs   rr)z_TestConnection.test_contextQ
syy{1
	+	+
FF4LQVVXt,yyK'  *  *	+	+99#OOAHH%OOAHH%gqvv.gqvv.	$	+	+	+	+s#D3A7D'D3'D0	,D33D<Nr)rurvrwrrrrrrrrr
rFr
HAS_REDUCTIONrryrzr{rr7rBrrrr)rZrrrrXsc,M
M^4*@@		X(NO/P/$X(NOX__S\\W,ACX__Uc\@BXV,/1/1BCP/4''X(NOX__S\\W,.MNOP/rrcbeZdZdZdZdZejejddZ
y)
_TestListenerrc|jjD]o}|jj|}|j|j|jt|jj|j|qy)Nfamily)
connectionfamiliesListenerrcr rlrr)rpr(rs   rtest_multiple_bindz _TestListener.test_multiple_binde
sgoo..	1F(((7AOOAGG$gt'?'?ii
1	1rc|jj5}|jj|j5}|j	5}|jd|j
|jdddddddddd|jdk(r!|jtjyy#1swYJxYw#1swYNxYw#1swYRxYwr r)r+Clientracceptrrkrrrlr)rprrr:s    rr)z_TestListener.test_contextl
s
__
%
%
'	51''		2
5aXXZ51FF4L$$QVVXt45
5	599#gqxx0$	55
5
5	5	5s;&C%C2C
CC%
CCC"	C%%C.z"test needs abstract socket supportc|jjd5}|jj|j5}|j	5}|jd|j
|jdddddddddd|jdk(r!|jtjyy#1swYJxYw#1swYNxYw#1swYRxYw)Nz
somethingr!rr.)rprclientr:s    rtest_abstract_socketz"_TestListener.test_abstract_socketv
s__
%
%m
4	5''(8(89
5V__&5!KK%$$QVVXt45
5	599#gx7$	55
5
5	5	5s;&C&C2CC
C&CCC#	C&&C/N)rurvrwrr,r)rFrrabstract_sockets_supportedr3rZrrr%r%a
s="M11X88=?8?8rr%c2eZdZdZedZdZdZdZy)_TestListenerClientrc||jj|}|jd|jy)Nr)r)r/rr )rrr2s   rrz_TestListenerClient._test
s+~~$$W-		'

rc|jjD]}|jj|}|j|j|j
f}d|_|j|j}|j|jd|j|jy)Nr'rTr)
r)r*r+rrrrrr0rkrrr )rpr(rrr2s     rtest_listener_clientz(_TestListenerClient.test_listener_client
soo..	F(((7ADJJaii\BAAH
GGI88:DTYY['2
FFH
GGI	rc|jj}|j|j|jf}d|_|j
tjd|j}|j|jd|j|j|jy)NrTrr)r)r+rrrrrrrr0rkrr r)rprrr2s    rtest_issue14725z#_TestListenerClient.test_issue14725
sOO$$&LL

!))L>		

1
xxzg.

			rc|jjD]}|jj|}|jj|j}|j}|j
d|j|jd|j|j|jy)Nr'hellor)
r)r*r+r/rr0rrrr )rpfamrrrs     rtest_issue16955z#_TestListenerClient.test_issue16955
s??++	C(((4A&&qyy1A
A
LL"OOAFF1I&
GGI
GGI
GGI	rN)	rurvrwrrrr9r;r?rZrrr6r6
s(,M
	 	rr6cXeZdZdZdZedZdZedZdZ	edZ
dZy	)
	_TestPollrc|j\}}|j|jd|jd|j|jd|j|jdy)NFrT)rrkrrrs   rtest_empty_stringz_TestPoll.test_empty_string
s_yy{15)	S4(4(rc~|D](}tjd|j|*|jyNr.)rrrr )rr2stringsrs    r_child_stringsz_TestPoll._child_strings
s3	AJJsOOOA		

rcDd}|j\}}|j|j||f}|j|D]G}t	dD]}|jdsn|j
}|j||I|jy)N)r=rabrsbyersloprrt)	rrrGrrSrrrkr)rprFrrrrrVr?s        rtest_stringsz_TestPoll.test_strings
sGyy{1LL 3 31g,LG			#A3Z
66$<
AQ"	#	
rc&|jdyr)r)rr(s  r_child_boundariesz_TestPoll._child_boundaries
s	
q	rcj|jd\}}|j|j|f}|jt	j
dddg}|D]}|j
||j|j|j|j|y)NFrrsfirstssecond)rrrNrrrrr rrmr)rpr(rrr'r#s      rtest_boundariesz_TestPoll.test_boundaries
syy1LL 6 6aTLB		

1

y!	C
LL				

allna(rcj|jd|jd|jdy)NrIrJcd)r)rrs  r_child_dont_mergez_TestPoll._child_dont_merge
s&	T	T	Urc4|j\}}|j|jdd|j|jdd|j|j|f}|j|j|j
d|j|jdd|j|jdd|j|j
d|j|jdd|j|jdd|j|jdd|j|j
d	|jy)
Nr3Fr.rrIr'TrJrR)rrkrrrSrrr)rprrrs    rtest_dont_mergez_TestPoll.test_dont_merge
s'yy{1e,e,LL 6 6aTLB		.d+d+.d+d+d+/	rN)rurvrwrrCrrGrLrNrPrSrUrZrrrArA
sW,M)

)
rrArc\eZdZdZedZedZedZdZedZ	dZ
y)	_TestPicklingConnectionsrcPddlm}|jtjy)Nr)resource_sharerr)rrYrrr)rrYs  rrz&_TestPicklingConnections.tearDownClasss3W%9%9:rc2|D]z}|jj|}|j|j|j	}|j||j|j|t
jtjdf}|j|j|j	\}}|j||j|j|jy)Nr'r)r)r+rrr0r socket
create_serverrrgetsocknamer)rr2r*r>rnew_connrs       r	_listenerz"_TestPicklingConnections._listeners	C''s'3AIIaii xxzHIIhNN
GGI
	
  -"4"4a!89		!--/"$		(				rct|jdD]O\}}|jj|}|j	|j|j
Q|j\}}tj}|j||j|j|j
|j
yr)
rrr)r/rrr r[rsendall)rr2rrr2s     r_remotez _TestPicklingConnections._remote#s"499d3	NWc^^**73FKK		$LLN	
yy{wsyy{#

rc|jj}|j\}}|j|j||f}d|_|j
|j|j\}}|j|j|f}d|_|j
|j|D]w}d|zjd}	|j}
|j|
|	f|j}|j|j|	jy|jdtd}	|j}
|j|
|	f|j}g}	|jd}
|
sn|j|
&dj!|}|j||	j|j|jd|j|j|j!|j!y)NrTzThis connection uses family %sasciiz$This connection uses a normal socketr)r)r)r*rrr_rrr rbrrrrkrrrXr)rpr*lconnlconn0lprrconn0rpr>rrr^bufrs              r
test_picklingz&_TestPicklingConnections.test_pickling2s??++		
v
\\vx6H\
I	

		
v
\\VI\
>	

	;C3c9AA'JCjjlGJJ~&zz|HX]]_ciik:	;	

4:;**,

GS>"::<

c"AJJqM	
hhsmciik*

4




	
	rc|j}|jd|j|j}|j}|j|dz|jy)Nall is wellr)rrr )rr2rr(rs     rchild_accessz%_TestPicklingConnections.child_access`sQIIK	}		IIKffh		#a%

rc|j\}}|j|j|f}d|_|j	|j|jd\}}|j
||j|j|jd|j|jd\}}|j
||j|j
d|j|j|jd|jy)NrTFrrmfoobarfoobarfoobar)
rrrnrrr rrkrr)rpr2rrr(rs      rtest_accessz$_TestPicklingConnections.test_accessls 99;jLL 1 1
LF		yyy&1		!		=1		yyy&1		!			x		j1	rN)rurvrwrrrr_rbrkrnrrrZrrrWrWsb#M;;$,\		rrWc8eZdZdZfdZfdZdZdZxZS)	_TestHeaprct|tjjj
|_tjjtjj_yr)rrrrr_heapold_heapHeaprprs rrz_TestHeap.setUpsH

',,::@@
3B3G3G3L3L3N**0rct|jtjj_t
|yr)rwrrrrvrrrys rrz_TestHeap.tearDowns&37==**0
rc
d}d}g}tjjj}d|_t|D]{}t
tjdddz}tjj|}|j|t||kDrtj|}||=~}|j5g}d}	d}
t|jjD]G}|D]@\}}
}|j|j j#||
|||
z
df|	||
z
z
}	BI|j$j'D]I\}}|D]?\}
}|j|j j#||
|||
z
df|
||
z
z
}
AK|j)|	|
zt+d|j D|j-tt|dz
D]p}||dd	\}}
}||dzdd	\}}}||k7r<|j)||j |j.|j)|d_|j)||r	dddtj0||r|j3|r|j)|j4|j6|j)t|j8d|j)t|j d|j)t|j$d|j$|j)t|jdy#1swYxYw)
Nrprrr5freeoccupiedc34K|]}|jywrrq)rarenas  rrz&_TestHeap.test_heap.<locals>.<genexpr>s F Fsr)rrrrv_DISCARD_FREE_SPACE_LARGER_THANrSrIrandomlognormvariaterXr	randrangerr_len_to_seqrH_arenasindex_allocated_blocksrrksumsortrqshuffler_n_frees
_n_mallocs_pending_free_blocks)rp
iterations	maxblocksblocksrrVrqrrvr}r~r'rrrarena_blocksnarenanstartnstops                   r	test_heapz_TestHeap.test_heaps9
	##1177/0,z"	Av,,Q2T9:D$$2248AMM!6{Y&$$Y/1I	ZZ	3CDH$**1134
)*+)&E5$JJ 2 25 95$ $U
F 45T%Z(D)
)(,'='='C'C'E
-#|#/-KE4JJ 2 25 95$ $U
J 89e,H-
-
TH_  F FF
H
HHJ3s8A:&	
3'*1vbqz$t*-ac(2A,'F?$$T4<<+>+C+CD$$VQ/$$T62	
3-	3D	vJJL	
8T667;T\\*A.T334a9O9OPT--.2U	3	3s
F#M##M,ctjs3tj|jtjtj
}|jtjg|tjdtdD]N}tjjd}tjjd}||_||_Py)Nr6r|r)rm	isenabledenablercdisable
get_threshold
set_thresholdrSrrrbuddy)rp
thresholdsrVrrs     rtest_free_from_gcz_TestHeap.test_free_from_gcs||~IIKOOBJJ'%%'
((6:6
t	A$$2215A$$2215AAGAG	r)	rurvrwrrrrrrPrQs@rrtrts"MO>3@rrtc"eZdZdefdefdefgZy)_Foor?r@zN)rurvrwr<r=r>_fields_rZrrrrs	e	h	j
Hrrc:eZdZdZdZedZddZdZdZ	y)	_TestSharedCTypesrc4ts|jdyyrBrCrs rrz_TestSharedCTypes.setUprDrcL|xjdzc_|xjdzc_|xjdzc_|xjdzc_|xjdzc_|xjdzc_tt	|D]}||xxdzcc<yrq)rr?r@rSr)rr?r@rrSrnstringrVs        r_doublez_TestSharedCTypes._doublesu	1	1	1

s3x	AFaKF	rc	htdd|}ttd|}ttd|}ttdd|}|j	dtt
d	|}|j	d
d|}td|_|j|j||||||f
}d|_|j|j|j|jd|j|jd|j|jd|j|j d|j|j"dt
d	D]}	|j||	|	dz|j|jtdy)NrVr
rTgUUUUUU?r=rrr:r6rrrrTgUUUUUU?r>r@
hellohello)rr=r>rrlrrSrrrrrrrrkrr?r@)
rpr_r?r@rrSrnrrrVs
          rtest_sharedctypesz#_TestSharedCTypes.test_sharedctypess[#qt$(G$/*gD1D!QT*jjd59oDj9C$/W~LLAq!S#v3NLO			"%qww0'*"suuc*r	0A""3q61Q3/	0u\':;rc(|jdy)NTrT)rrs rtest_synchronizez"_TestSharedCTypes.test_synchronize&sD)rctddd}t|}d|_d|_d|_|j|jd|j
|jd|j|jdy)Nrr/r=r)rrr?r@rrkr)rprSrs   r	test_copyz_TestSharedCTypes.test_copy)sj1c7#3i"suuc*(rNr)
rurvrwrrrrrrrrZrrrrs0"MC<.*)rrz&requires multiprocessing.shared_memoryceZdZdZedZdZdZdZdZ	dZ
dZd	Ze
jej d
k7ddZe
jej d
k7d
dZdZdZdZdZdZy)_TestSharedMemoryrct|trtj|}n|}||jdt||j
yr)rrnrSharedMemoryrjrr )shmem_name_or_objbinary_data	local_smss   r!_attach_existing_shmem_then_writez3_TestSharedMemory._attach_existing_shmem_then_write:sC'-%223DEI)I+6	

's;'(rcB|ttjzSr)rnrBr)rpprefixs  r
_new_shm_namez_TestSharedMemory._new_shm_nameCsBIIK(((rc
|jd}tj|dd}|j|j|j|j||j|jd|jt|j|j|j|jt||jt|jt|d|jd<|j|jddtj|}|j|jdd|jtj|d|jz}|j|jd|jz|j|jt 5tjdd	ddd|jt 5tjd
dddt"j$j'd5}tj(}|jd
|jdg}|Dcgc]}||z	}}||_tjdd}	|j|	j|j|	j,|d||_tjdd}
|j|
j|j|
j,|ddddtj.r|jd}tj|dd}|jt05	|j|jdtj|}
|
j	|
j|j|j		ddd|jt25tj|dd}dddtj.rWGddtj}||}|j|j|j|j|jt05tjd}|j	ddd|jy#1swYxYw#1swYxYwcc}w#1swYxYw#|j	wxYw#1swY<xYw#1swYxYw#1swYuxYw)Ntest01_tsmbTcreaterqrXrrrFr,multiprocessing.shared_memory._make_filename	test01_fn	test02_fnrtest01_dblunlinkr|c>eZdZejej
zZy)O_TestSharedMemory.test_shared_memory_basics.<locals>.OptionalAttachSharedMemoryN)rurvrwrBrO_RDWR_flagsrZrrOptionalAttachSharedMemoryrsbii/rrtest01_notthere)rrrrcrrkr+r3rqrrjrmrnr r#rlrErFmockpatch_SHM_NAME_PREFIXside_effect_name
_USE_POSIXFileNotFoundErrorFileExistsError)rp	name_tsmbsmsalso_smssame_smsmock_make_filenameNAME_PREFIXnamesr+shm1shm2name_dblunlinksms_unosms_duothere_can_only_be_one_smsrok_if_exists_smsnonexisting_smss                  rtest_shared_memory_basicsz+_TestSharedMemory.test_shared_memory_basicsIsJ&&}5	((4cJ

#	
9-#.CGGchh7	


chhC)

c#((mSX.
R(!--i8a"-!--ibkJ

r#(({3

z
*	=&&d<	=

z
*	5&&e4	5
]]
 
 :<	3?Q'88K''4d6H6H6UVE5::D[4':E:-2* --TBDOODKK(TZZq2-2* --TBDOODKK(TZZq2#	3&##"//0BCN#00G
""#45

%	%++GLL$?+88HGNN$MMOMMONN$

%


/	)6(B(B)%	##
0]-G-G
09)D-22CHH=""$

0
1	%+889JKO""$	%			c	=	=	5	5;	3	3TNN$

%

%		0	%	%st#TT7T-
T(B2T-!U#A!T:U2U&U)TT%(T--T7:UUUU&)U2c^tjjd5}tj}|jd|jdg}|Dcgc]}||z	}}||_tjdd}|j|j|j|j|d||_tjdd}|j|j|j|j|ddddycc}w#1swYyxYw)Nr	test03_fn	test04_fnTrrr)rFrrrrrrrrcrrkr)rprrrr+rrs       rtest_shared_memory_recreatez-_TestSharedMemory.test_shared_memory_recreates]]
 
 :<	3?Q'88K''4d6H6H6UVE5::D[4':E:-2* --TBDOODKK(TZZq2-2* --TBDOODKK(TZZq2#	3	3;	3	3s7D#D#B2D#D##D,c|jt5tjdd}ddd|jt5tjdd}ddd|jt5tjd}dddy#1swYsxYw#1swYJxYw#1swYyxYw)NTrArrr)rlrErr)rpsms_invalids  r"test_invalid_shared_memory_crationz4_TestSharedMemory.test_invalid_shared_memory_crations


z
*	K'44DrJK	K

z
*	J'44DqIK	J

z
*	B'44DAK	B	B	K	K	J	J	B	Bs#B B,B8 B),B58Cc	ttjdzD]}|j|5t	j
dd}|j
|jd|jddtj||	}tj|}|j|tj
|j|j|j|jt|jddd|jt|jdddd
|jdd|jt|jddd
|jt|jddd
d|jdd|jt|jddd|jt|jddddddy#1swYxYw)NrprotoTrrpicklerrprotocolsnewvalsoldval)rSpickleHIGHEST_PROTOCOLrrrrcrrjdumpsloadsrrkr+r)rprrpickled_smssms2s     r"test_shared_memory_pickle_unpicklez4_TestSharedMemory.test_shared_memory_pickle_unpickles622Q67	BEE*
B#003G

+(!%ll3?||K0%%dM,F,FG  4995  swwq|!4i@  txx!}!5yA )!  swwq|!4i@  txx!}!5yA )1
  swwq|!4i@  txx!}!5yA-
B
B	B
B
BsGHH	cttjdzD]}|j|5t	j
dd}d|jddtj||	}|j|j|jt5tj|ddddddy#1swYxYw#1swYxYw)
NrrTrrrrrr)
rSrrrrrrjrr rrlrr)rprrrs    r.test_shared_memory_pickle_unpickle_dead_objectz@_TestSharedMemory.test_shared_memory_pickle_unpickle_dead_objects622Q67	.EE*
.#003G(!$ll3?		

&&'89.LL-.
.
.	...
.
.s$A3C%C;CCCC#	cTtjdd}|j|j|j	|j
|jdf}d|_|j|j|jt|jddd|j	|j
|df}d|_|j|j|jt|jddd|jy)NTrrshowdyrrsHELLO)rrrcrrrr+rrrrkrrjr )rprrs   r#test_shared_memory_across_processesz5_TestSharedMemory.test_shared_memory_across_processess((3?

#
LL99((H%

			swwr{+X6
LL99x

			swwr{+X6		rr'z#not feasible in non-posix platformsctjj}|j|j	td}t
j|jjtj|j	td}|jt5t
jt
jtjddd|jy#1swYxYwr|)rmanagersSharedMemoryManagerr
ShareableListrSrBrDrrr8rrlrrr)rpsmmslsl2s    r4test_shared_memory_SharedMemoryServer_ignores_sigintzF_TestSharedMemory.test_shared_memory_SharedMemoryServer_ignores_sigint!s&&::<		

uRy
)
	  &--0b	*

0
1	0GGBIIK/	0		0	0s07DD	zresource_tracker is posix onlycd}tjjjd|\}}}|j	|y)Nzif 1:
            from multiprocessing.managers import SharedMemoryManager


            smm = SharedMemoryManager()
            smm.start()
            sl = smm.ShareableList(range(10))
            smm.shutdown()
        r)r=rrrrrs     r>test_shared_memory_SharedMemoryManager_reuses_resource_trackerzP_TestSharedMemory.test_shared_memory_SharedMemoryManager_reuses_resource_tracker9s=||11BB4MC	
rc(tjj}|jt5|jdddd|j
tddDcgc]}|jt|}}tdddDcgc]}|j|}}tj|djj	}|jt|dtj
|dj	}|jt|jd|dj}|j!t"j$d
k7r4|jt&5tj
|	}	dddtjj5}
|
jd}|
jd}|jj}dddt"j$d
k7r5|jt&5tj|	}
dddyy#1swYxYwcc}wcc}w#1swYxYw#1swYuxYw#1swYyxYw)Nrrrr6rrr+r1howdy)rrrrlrErrrSrrshmr+rkrr3rjrrzr{r)rpsmm1rVlolr6lomdoppleganger_list0doppleganger_shm0	held_name
absent_shmsmm2rr	absent_sls              r-test_shared_memory_SharedMemoryManager_basicsz?_TestSharedMemory.test_shared_memory_SharedMemoryManager_basicsNs'';;=


z
*	&1%	&

6;ArlD""58,DD38S"3EGa!!q!)GG*88c!fjjooN/0!4)66CFKKH$5$9$9 :B?FKK	

<<7"""#45
H*77YG

H
%
%
9
9
;	$t##G,B###-CI	$<<7"""#45
H)77YG	
H
H#-	&	&EG
H
H	$	$

H
Hs;I-!I&I+I0:I<8JI#0I9<JJc|tjgd}|j|jj|j|jjt||jtt|t||jt5|dddd|jt5d|d<ddd|jd}d|d<|j||jd|j|jd|jt|dtj 5tj"d|jt$5|j'dddd|j|j'd	d
ddd|j|dd|j|dd|jt)|dd
|d
<|j|d
d
d|d<|j|dd|j|jd|j+t$d5d|d<ddd|j|ddd|d<|j|dd|j|dd|j+t$d5d|d<ddd|j|dd|j+t$d5d|d<ddd|j|ddtj 5tj"d|j|j-d
d|j|j-dd|j|j-ddddd|j/d}tj||}	|j1|jj|jj|j||jj|jt|t||j|j|jd|d<|j|dd|j1|dd|jj3|jj	tj|jj}|j|jj|jjd|d<|j|dd|jj3|jj3tj}	|jt|d|j|jd|j|j-dd|jt$5|j'dddd|jj3|jj	y#1swYxYw#1swYxYw#1swY
xYw#1swYxYw#1swYBxYw#1swYxYw#1swYxYw#1swYxYw#|jj	wxYw#1swYxYw#|jj	wxYw) N)rHoWdYgX9vqr)NTrXr
rrrz8s8sdqxxxxxx?xxxxxxxx?qignore100r)rrTrXsomeraz8s8sdq8sxxxxxxx?qzexceeds available storagezfar too manyuencodésrru	encodéess	123456789sadiostest03_duplicater
MrAiprany)rrrcrrrmr+rnrrl
IndexError_get_packing_formatrkrrwarningscatch_warningssimplefilterrErrrTr
rr"r )rprcurrent_formatname_duplicatesl_copysl_tetheredempty_sls       r'test_shared_memory_ShareableList_basicsz9_TestSharedMemory.test_shared_memory_ShareableList_basicsls

(
(>
	


&	


bffkk3r7+

c$r(mSW-

z
*	qE	

z
*	BqE	//21)?)?)BC	
$=>	
R!$
$
$
&	/!!(+"":.
 
 RXXc]A.	/	
A(B&	
"I>	
1A#1A'$78

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

#
#J$?A	 BqE	 	
A)

#
#J$?A	! BqE	!	
A)
$
$
&	4!!(+RXXb\1-RXXh/3RXXh/3	4++,>?--b~F
	!W[[-=-=>^W[[-=-=>T"XtG}5RYY7GBKWR["-2+KKKK $11rvv{{Ckoo&:&:;BB%
!..0	"S]A.X__b1X^^E2A6"":.
%t$
%LL LL!I				$
 
 	/	/.	#	#	 	 	!	!	4	4(
KK "
%
%
LL!s.ZZ!+Z3Z&)Z3:["[
[A9['<C3[4A-\=\"\ZZ#&Z0	+Z33Z=[

[[$'[14\\\\;cttjdzD]}|j|5t	j
td}|j
|jjtj||}tj|}|j|tj
|j|dd|j||d|d<|j|ddd	|d
<|j|d
d	t	j
td}|j
|jjtj||}|jt|t||jj|jj|jjdddy#1swYxYw)Nrrr6rrArchangedranewvalueri)rSrrrrrrcrrrrrrkassertIsNotrr )rprr
serialized_sldeserialized_sl	larger_slserialized_larger_sls       r)test_shared_memory_ShareableList_picklingz;_TestSharedMemory.test_shared_memory_ShareableList_picklings622Q67	EE*
"00r;

. &R% @
"(,,}"=%%#]%@%@B  !4a8  _5%."  A	2"1  !3Z@)77c
C		

 4 45'-||I'N$  ]!3S9M5NO

##%##))+/

	

sF7G66H	cttjdzD]}|j|5t	j
td}tj||}|jj|jj|jt5tj|ddddddy#1swYxYw#1swYxYw)Nrrr6r)
rSrrrrrrrr rrlrr)rprrr1s    r5test_shared_memory_ShareableList_pickling_dead_objectzG_TestSharedMemory.test_shared_memory_ShareableList_pickling_dead_objects622Q67	0EE*

0"00r; &R% @


&&'890LL/0

0

0	000

0

0s$A?C&1CC&C#C&&C/	cd}tjtjdd|gtjtj5}|j
j
jj}|j|jd}tjtj|D]}	tj|d}t"j$dk(rSt'j(d	|d
|j*j-j}|j/d|dddy#t $rY{wxYw#1swYyxYw)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)
subprocessPopenrzrPIPErreadlinestripdecoder	rrsleeping_retryrrrrrBr+r(
unregisterrrrm)rprrr+err_msgrrrqs        r4test_shared_memory_cleaned_after_process_terminationzF_TestSharedMemory.test_shared_memory_cleaned_after_process_terminations:	

s~~tT3?%/__%/__6 	J9:88$$&,,.557D
KKM
FFH;G++G,@,@'J
'44T%HC
ww'!!++avJH
hhmmo,,.

DEHJ= 	J 	J) 	J 	Js2	BE"
E!A(E"	EE"EE""E+N)rurvrwrrMrrrrrrrrrFryrBr+rr	rr,r5r7rDrZrrrr4s#M)n`3,BB4
.8X__RWW')NOP.X__RWW')IJK(H<o"b60+JrrcbeZdZdZdZdZedZdZe	jddZy)	
_TestFinalizerctjj|_tjj	yr)r_finalizer_registryrregistry_backuprrs rrz_TestFinalize.setUp;s+#77<<>  &&(rctj|jtjtjj|jyr)rmrnrrrHupdaterIrs rrz_TestFinalize.tearDown?s9


112  ''(<(<=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|jtjdy)NceZdZy))_TestFinalize._test_finalize.<locals>.FooNrrZrrrrNFrr)rr)r)r)d10r)rQexitpriority)d01r)d02)d03)ri)STOPi)
r<rFinalizerrmrn_exit_functionr rB_exit)rr2rrrclose_brrPrRrSrTs           r_test_finalizez_TestFinalize._test_finalizeDsG	&	
E

a0



E--4996:		



E

a0e

c4998!De

c4998!De

c4998!De

c4998!D

dDIIFE

dDIIIDI	



rc,|j\}}|j|j|f}d|_|j	|jt
|jdDcgc]}|}}|j|gdycc}w)NrTrU)rrrPrTrSrRr)	rrrZrrrrrrk)rpr2rrr#rYs      r
test_finalizez_TestFinalize.test_finalizelsy99;jLL 3 3:-LH			!%dii!89##99!LM:s1	Brc	dGfddtd	d	fd}	fd}tj}tj}	tj
dtjdddtj|	tj|	g}tj|5tjd
d	ddd	tj
|tj|tjy#1swYJxYw#tj
|tj|tjwxYw)NcyrrZrZrrcbz,_TestFinalize.test_thread_safety.<locals>.cbzrceZdZfdZy)-_TestFinalize.test_thread_safety.<locals>.Foocl||_tj|tjddy)Nrr))rQ)rlrrVrrandint)rpr_s rrz6_TestFinalize.test_thread_safety.<locals>.Foo.__init__~s%

dBV^^As5KLrN)rurvrwr)r_srrrb}s	
MrrFcsCtjtjdz	tjsByy#t
$r}|Yd}~d}~wwxYwrE)rrrr_run_finalizersrh)rr3finishs rrun_finalizersz8_TestFinalize.test_thread_safety.<locals>.run_finalizerssL

6==?T12((*!CsA	AAAci}s9	tdDchc]	}c}|tjd<s8yycc}w#t$r}||j	Yd}~*d}~wwxYw)Nr6r)rSrgetrandbitsrhr)r:rVrrr3rgs   rmake_finalizersz9_TestFinalize.test_thread_safety.<locals>.make_finalizersseA@ERy/I!/IAf((+,	0J CGGIIs'
AAAA	A*A%%A*gư>rrrT)r<rzgetswitchintervalrmrsetswitchintervalrrrr	
start_threadsrrrn)
rprhrkold_interval
old_thresholdrrr_r3rgs
      @@@@rtest_thread_safetyz _TestFinalize.test_thread_safetyws&		M&	M		
	,,.((*

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


3
	
!!,/m,JJL


!!,/m,JJLs%A-D-D!D-!D*&D--=E*N)rurvrwrrrrrZr\rrrqrZrrrFrF7sM"M)>
%%N	NWu%4&4rrFceZdZdZdZy)_TestImportStarcddl}tjjtj
}tjj
|j|d}|j|}|Dcgc]D}tjjtjj|ddF}}|Dcgc]}d|z	}}|jd|jd|Scc}wcc}w)Nrz*.pyrzmultiprocessing.zmultiprocessing.__init__r)globrBrdirnamer__file__rescapesplitextsplitrrX)rprufolderpatternfilesrmodulesrs        rget_module_namesz _TestImportStar.get_module_namess!9!9:'',,t{{62F;		'"EJK277##BGGMM!$4Q$78;KK3:;a%);;12()	L;s
6A	C7C<c|j}tjdk(r4|jd|jd|jdn(|jdts|jdt
|jd|D]n}t
|tj|}|jt|d||jD]#}|jt|||d|%py)	Nr1zmultiprocessing.popen_forkz multiprocessing.popen_forkserverz!multiprocessing.popen_spawn_posixz!multiprocessing.popen_spawn_win32zmultiprocessing.sharedctypes__all__z does not have attribute )rrzr{rr#r<r/r~rr7r)rpr~r+modattrs     rtest_importz_TestImportStar.test_imports'')<<7"NN78NN=>NN>?NN>? AB=NN9:		Dt++d#COOGC3T:
C&7:DA
		rN)rurvrwrrrZrrrsrss	rrsc,eZdZdZdZedZdZy)_TestLoggingrctj}|jtj|j|du|j
d|jd|jty)Nzthis will not be printedz
nor will this)	r
get_loggersetLevelr
SUBWARNINGrdebuginfo	LOG_LEVEL)rploggers  rtest_enable_loggingz _TestLogging.test_enable_loggingsV ++-(d*+/0O$	"rcjtj}|j|jyr)rrrgetEffectiveLevel)rr2rs   r_test_levelz_TestLogging._test_levels% ++-		&**,-rc.d}d}tj}tj}|j}tj
d\}}|j
||j|j|f}|j|j||j|j|j|j
tj|j
||j|j|f}|j|j||j|j|j|j
||j
ty)Nr%Frr)level)rrlogging	getLoggerrrrrrrrkrrr NOTSETr)	rpLEVEL1LEVEL2rroot_logger
root_levelrrrs	         r
test_levelz_TestLogging.test_levels# ++-'') &&
(--U;LL 0 0yLA		/			'V$LL 0 0yLA		/			Z(i(rN)rurvrwrrrrrrZrrrrs%"M#..)rrc`eZdZdZedZejee	dddZ
y)_TestPollEintrrcvtjdtj|tj
yrE)rrrBrDr8SIGUSR1)rrs  r_killerz_TestPollEintr._killer's

3
V^^$rrrequires SIGUSR1cdgfd}tj}tjtj|}	|j	|j
|f}|j
	|j	tjd}|j
|j|j|jd|j|jdtjtj|y#|jwxYw#tjtj|wxYw)NFcdd<y)NTrrZ)rQ
got_signals rrecordz._TestPollEintr.test_poll_eintr.<locals>.record/s JqMrr)rr)
rBrr8rrrrrrrrrkr)rprr
oldhandlerkillerrrs      @rtest_poll_eintrz_TestPollEintr.test_poll_eintr,sW
	!iik]]6>>6:
	6\\SF\CFLLN
LL

L>	
OOJqM*QZZ+MM&..*5	

MM&..*5s&.D-2AD3AD-D**D--&EN)rurvrwrrrrFrr7r8rrZrrrr#sE"M%%X35GH6I6rrc>eZdZejeddZy)TestInvalidHandleskipped on Windowsctjjd}	|jd|_|jtt
ftjjdy#tt
f$rYNwxYw#d|_wxYw)NiMrA)rr)
ConnectionrrEr_handlerlrs  rtest_invalid_handlesz&TestInvalidHandle.test_invalid_handlesGsy))44X>	 IIK DL:w/)44??	E
G$		
 DLs#A..B=B?BB	BN)rurvrwrFryWIN32rrZrrrrEs$X__U01E2ErrceZdZdZdZy)	OtherTestcGddt}|jtjtjj
|dy)NceZdZdZdZy)FOtherTest.test_deliver_challenge_auth_failure.<locals>._FakeConnectioncy)Nsomething bogusrZrprqs  rrzQOtherTest.test_deliver_challenge_auth_failure.<locals>._FakeConnection.recv_bytes]s)rcyrrZrprs  rrzQOtherTest.test_deliver_challenge_auth_failure.<locals>._FakeConnection.send_bytes_rN)rurvrwrrrZrr_FakeConnectionr\s
*
rrabc)r<rlrr
r)deliver_challengerprs  r#test_deliver_challenge_auth_failurez-OtherTest.test_deliver_challenge_auth_failure[s=	f	
	
/==)44FF)+V	5rcGddt}|jtjtjj
|dy)NceZdZdZdZdZy)EOtherTest.test_answer_challenge_auth_failure.<locals>._FakeConnectioncd|_yr)r
rs rrzNOtherTest.test_answer_challenge_auth_failure.<locals>._FakeConnection.__init__gs	
rc|xjdz
c_|jdk(rtjjS|jdk(ryy)Nrrrr)r
rr)
_CHALLENGErs  rrzPOtherTest.test_answer_challenge_auth_failure.<locals>._FakeConnection.recv_bytesis=

a
::?*55@@@ZZ1_-rcyrrZrs  rrzPOtherTest.test_answer_challenge_auth_failure.<locals>._FakeConnection.send_bytesprrN)rurvrwrrrrZrrrrfs


rrr)r<rlrr
r)answer_challengers  r"test_answer_challenge_auth_failurez,OtherTest.test_answer_challenge_auth_failurees=	f		
/==)44EE)+V	5rN)rurvrwrrrZrrrrXs55rrmd5c"eZdZdZdZdZdZy)ChallengeResponseTestssupadupasecretkeycVtjj|j|Sr)rr)_create_responser)rpmessages  rcreate_responsez%ChallengeResponseTest.create_response|s$))::LL'
	
rcXtjj|j||Sr)rr)_verify_challenger)rprresponses   rverify_challengez&ChallengeResponseTest.verify_challenges&));;LL'8
	
rc.dD]}|jd|5d}|rd|jdz}nd}||z}|j|}|j|s|j	||j||dddy#1swYxYw)N)Nrrzalgo=sis-twenty-bytes-longs{%s}rdr)rrr
startswithrir)rpalgorrrs     rtest_challengeresponsez,ChallengeResponseTest.test_challengeresponses+	5Dj)

5-$t{{7';;F Fsl//4**62IIh'%%c84

5

5	5

5

5sA&BB	N)rurvrwrrrrrZrrrrws#G



5rrc.|xjdz
c_yr)r=)nss rinitializerrsGGqLGrc$eZdZdZdZdZdZy)TestInitializersctj|_|jj|_d|j_yr)rManagermgrrrr=rs rrzTestInitializers.setUps1"**,(($$&rcl|jj|jjyr)rrrrs rrzTestInitializers.tearDowns

rcPtjj}|jt|j
d|jt|jf|j|jjd|j|jyr)rrSyncManagerrl	TypeErrorrrrrkr=rr)rprs  rtest_manager_initializerz)TestInitializers.test_manager_initializersj$$002)QWWa0	dggZ(q)	

	rc(|jttjdtjdt|j
f}|j
|j|j|j
jdy)Nr)r)
rlrrrrrr rrkr=rOs  rtest_pool_initializerz&TestInitializers.test_pool_initializersa)_%9%9qI  K$''<			q)rN)rurvrwrrrrrZrrrrs
*rrc\	|jd}y#tj$rYywxYw)NF)block)rrr)ritems  r_this_sub_processrs-
uu5u!==

s++ctj}tjt|f}d|_|j|j
yrM)rrrrrrr)r"subProcs  r
_test_processrs>!!#E%%->eXNGGNMMOLLNrc||zSrrZrs r_afuncrrrctjd}|jtgd}|j	|jy)Nrar)rrrrarrr
)rrrrr r)rr?s  rpool_in_processrs5!,D./AJJLIIKrc.eZdZdZedZdZdZy)
_file_likec ||_d|_yr)	_delegate_pid)rpdelegates  rrz_file_like.__init__s!	rc|tj}||jk7r||_g|_|jSr)rBrr_cachers  rcachez_file_like.caches1iik$))DIDK{{rc:|jj|yr)rrXrs  rr,z_file_like.writes

$rcz|jjdj|jg|_y)Nr)rr,rrrrs rflushz_file_like.flushs(RWWTZZ01rN)rurvrwrpropertyrr,rrZrrrrs% rrceZdZdZdZdZy)TestStdinBadfiledescriptorcxtjt}|j|j	yNr)rrrrr)rprs  rtest_queue_in_processz0TestStdinBadfiledescriptor.test_queue_in_processs$&&m<

		rcxtjt}|j|j	yr)rrrrrrOs  rtest_pool_in_processz/TestStdinBadfiledescriptor.test_pool_in_processs$##?;			rctj}t|jdt	j
fd}j
|jdk(sJy)NrSc$jSr)r)flikesrrz:TestStdinBadfiledescriptor.test_flushing.<locals>.<lambda>s
ekkmrr)rrrr,rrrr2)rpsiorrs   @r
test_flushingz(TestStdinBadfiledescriptor.test_flushingsQkkm3
E&&.CD

||~&&&rN)rurvrwrrr
rZrrrrs

'rrceZdZedZd
dZedZd
dZdZdZ	e
jddZed	Z
e
jdd
ZdZy)TestWaitctdD]S}|r*tjtjdz|j	|tjfU|jy)Nr6r.)rSrrrrrBrr )rrslowrVs    r_child_test_waitzTestWait._child_test_waitsQr	%A

6==?3./
FFAryy{#$	%	
	rcddlm}g}gg}tdD]}tjd\}}tj
|j||f}d|_|j|j|j|j||j|j|r2||D]$}	|j}	|j|	&|r2|j!t#fdtd	D}
|j%||
y#t$r$|j||jYwxYw)
Nrr4raFrrTc3HK|]}D]}||jfywr)r)rrVrrys   rrz%TestWait.test_wait.<locals>.<genexpr>'s%GGA1aee*G*Gs"r6)multiprocessing.connectionrrSrrrrrrr rXrcrrrrrrrk)rprrreadersmessagesrVr(rrrrZrys           @r	test_waitzTestWait.test_waits(3q	$A"''u5DAq''t/D/DAt9UAAH
GGI
GGINN1LLOOOAFF#	$']
))&&(C
OOC(
)	

GeBiGG8, NN1%GGIsD22*EEc,tj}|j|tdD]Q}|r*tjtj
dz|j
d|zjdS|jy)Nr6r.%s
rd)	r[rrSrrrrarr )rrrrrVs     r_child_test_wait_socketz TestWait._child_test_wait_socket*slMMO			'r	4A

6==?3./
IIvz))'23	4	
	rcddlm}tjtj
df}|j
}g}g}i}tdD]h}tj|j||f}	d|	_|	j|j|	|j|	jjtdD]+}|j!\}
}|j|
g||
<-|j#|rY||D]K}
|
j%d}|s"|j'|
|
j#8||
j|M|rYdjdtd	Dj)d
}
|j+D]#}|j-dj||
%y)Nrr4rarTrrc3&K|]	}d|zyw)rNrZrs  rrz,TestWait.test_wait_socket.<locals>.<genexpr>Ss9!6A:9sr6rdr)rrr[r\rrr]rSrrrrrrXrcrr0r rrrrHrk)rprrrrrrydicrVrr(rrrZvs               rtest_wait_socketzTestWait.test_wait_socket4s}3  -"4"4a!89}}q	$A''t/K/K.2D\;AAH
GGILLOOOAFF#
	$q	A88:DAqNN1CF		
	']
'ffRjNN1%GGIFMM#&

'779uRy99@@I	4ASXXa[(3	4rc&|jdyrH)rrs rtest_wait_slowzTestWait.test_wait_slowWstrc&|jdyrH)r rs rtest_wait_socket_slowzTestWait.test_wait_socket_slowZsd#rrrcddlm}d}tj\}}t	j
}|||g|}t	j
|z
}|j
|g|j||dz|j||dz|jdt	j
}|||gd}t	j
|z
}|j
||g|j|dy)Nrr4rrrr皙?)
rrrrrrrkr#r<r)rprrZrrrrr4s        rtest_wait_timeoutzTestWait.test_wait_timeout]s3##%1 Aq68$ 5(b!x!|,5(S.1	t Aq62 5(qc"s#rcN|jtj|yr)r\rr)rrkperiods   rsignal_and_sleepzTestWait.signal_and_sleepus


6rcddlm}d}d}tjd}tj\}}tj
|j||f}|j|j|jt|j|jdtj}|||j|g|dz}	tj|z
}
|j|	|jg|j!|
|dz|j#|
|dz
|j%dtj}|||j|gd}	tj|z
}
|j||	||j|g|j!|
d	|j%dtj}|||j|gd}	tj|z
}
|j||	|||j|g|j!|
d	|j'|j)y)
Nrr4rct|dS)Nct|Sr)rUrs rrz>TestWait.test_wait_integer.<locals>.<lambda>.<locals>.<lambda>s
BqEr)rS)r)rs rrz,TestWait.test_wait_integer.<locals>.<lambda>s
F1/:rrrrrr&)rrrrnrrr*rrrbrIrr[rrrkr#r<rr	r)rprrZsorted_rkrrrrrr4s           rtest_wait_integerzTestWait.test_wait_integerzs3:''*##%1##4+@+@*-x
:	
	ajj#.B/0 Aqzz1%x"}5 5(qzzl+x!|,5(Q,/	t Aqzz1%r* 5(w

A'?@s#	t Aqzz1%r* 5(w1::q/A'BCs#	
	rc2ddlm}tj\}}t	j
}||gd}t	j
|z
}|j
|g|j|d|j|jy)Nrr4rArr)	rrrrrrrkr#r )rprrrrrs      rtest_neg_timeoutzTestWait.test_neg_timeoutsr3##%1NNA3#NNq b!1				rNr)rurvrwrrrrr r"r$rrr'r*r/r1rZrrrrs-<!4F$Wz*$+$.Wz*)+)V	rrcpeZdZejeddZejeddZy)TestInvalidFamilyrc|jt5tjj	ddddy#1swYyxYw)Nz\\.\testrlrErr)r+rs rtest_invalid_familyz%TestInvalidFamily.test_invalid_familys9


z
*	=&&//<	=	=	=	 ?Az skipped on non-Windows platformsc|jt5tjj	ddddy#1swYyxYw)Nz/var/test.piper5rs rtest_invalid_family_win32z+TestInvalidFamily.test_invalid_family_win32s>


z
*	B&&//0@A	B	B	Br7N)	rurvrwrFryrr6rr9rZrrr3r3sIX__U01=2=X BCBDBrr3c2eZdZedZedZdZy)	TestFlagscT|jttjyr)rrrzflagsrr2s  rrun_in_grandchildzTestFlags.run_in_grandchilds		%		"#rcddl}tj|}|jd\}}|j	|j
|f}t
jt5|jddd|j}|j|j|jttj|f}t!|j#|y#1swYxYw)NrFrr)category)jsonrrOrrr?r$r%DeprecationWarningrrrr rrzr=printr)	rrSrBmpr(rrgrandchild_flagsr=s	         rrun_in_childzTestFlags.run_in_childs

(
(
6wwew$1JJc331$J?

$
$.@
A	
GGI	668					syy!#34
djj 		s'C66C?cddl}dtjd}tjt
jdddd|g}|j|jd\}}|j||y)	NrzIfrom test._test_multiprocessing import TestFlags; TestFlags.run_in_child()r9z-Sz-Orrd)
rBrrPr;check_outputrzrrr@rk)rprBprogrchild_flagsrFs      r
test_flagszTestFlags.test_flagssz
&&5&F&F&H%K1
N	
&&
^^T4tT:<(,

4;;w3G(H%%&67rN)rurvrwrr?rGrMrZrrr;r;s-$$!!
8rr;c"eZdZedZdZy)TestTimeoutsctjd|jd|jtj
j
|}|jd|jy)Nrrr)rrrr rr)r/)rchildrr2s    r
_test_timeoutzTestTimeouts._test_timeoutsK

1


3

))009		#

rctj}	tjdtjd\}}tj
j
d}tj|j||jf}|j|j|j|jd|j|j}|j|jd|j|jt|tj|y#tj|wxYw)	Nr.TrAF_INETr'rrr)r[getdefaulttimeoutsetdefaulttimeoutrrr)r+rrRrrr rkrr0r&)rpold_timeoutparentrQrrr2s       rr5zTestTimeouts.test_timeouts..0	2$$S)+00=MFE**3393EA''t/A/A.3QYY-?AA
GGIKKMV[[]C0LLN88:DTYY[#.JJL
GGIO$$[1F$$[1sD&EE)N)rurvrwrrRr5rZrrrOrOs2rrOceZdZdZy)TestNoForkBombctj}tjj	tjjtd}|dk7rStjjj||\}}}|j|d|jd|ytjjj||\}}}|j|jd|j|dy)Nzmp_fork_bomb.pyrgrsRuntimeErrors123)rrPrBrrrvrwr=rrassert_python_failurerkrmrr)rprwr+rhrrqs      rtest_noforkbombzTestNoForkBomb.test_noforkbombs

-
-
/ww||BGGOOH57HI
<<<55KKDRTULBSS#&MM/3/<<55FFtRPLBSSZZ\62S#&rN)rurvrwr]rZrrrZrZs
'rrZc"eZdZedZdZy)TestForkAwareThreadLockc"|dkDrRtj|j|dz
|f}|j|j	t|n(|j
ttj|j	y)Nrr)
rrrQrr r&rrr_afterfork_registry)rrr2rs    rrQzTestForkAwareThreadLock.child!s`q5''syy!T{KA
GGIJJLOIIc$2234

rcntjd\}}tj}t	tj
}tj|jd|f}|j|j|j}t||j||y)NFrr)
rrrForkAwareThreadLockrrarrQrr rr&assertLessEqual)rpr(rrold_sizernew_sizes       rr`z!TestForkAwareThreadLock.test_lock,s##E*1$$&t//0##4::QFC				668QXx0rN)rurvrwrrQr`rZrrr_r_s
	1rr_c.eZdZdZdZedZdZy)TestCloseFdsc8tr"tjjStjj}g}|dkr,|j|t	j
|}|dkr,|D]}t	j||S)Nrp)rr[detachrXrBdupr )rprto_closer?s    rget_high_socket_fdzTestCloseFds.get_high_socket_fd=s==?))++'')BHr'#VVBZr'

IrctrCtjtjtj|j	ytj|y)N)r)rr[rTSOCK_STREAMr rB)rprs  rr zTestCloseFds.closeOs3MM&..&*<*<RHNNPHHRLrc	tj|tjtj}|j	|jdy#t$r}|j|Yd}~yd}~wwxYwr)r[fromfdrTror rrh)rr2rrrs     r_test_closefdszTestCloseFds._test_closefdsUsX	

b&..&2D2DEA
GGIIIdO		IIaLL	s3A	A; A66A;ctstjdtj\}}|j}	tj|j||f}|j|j|j}t||j||j|jtjdk(r|j|dyd}|j|t|j!|j"t"j$k(xs|j&|k(|y#|j||j|jwxYw)Nzrequires fd picklingrrgi6')r#rFrGrrrmrrrrr rr&rProrrrrrwinerror)rprrrrrWSAENOTSOCKs       rtest_closefdzTestCloseFds.test_closefd_s##$:;;(--/

$
$
&
	''t/B/B.4b\;A
GGILLN
AOJJrNLLNLLN++-7MM!T"K!!!W-OOAGGu{{26JJ+5q
:
JJrNLLNLLNs
AE3FN)rurvrwrmr rrrrvrZrrrhrh;s%$:rrhceZdZeej
ejZedZ	e
jee
dddZedZe
jee
dddZy)TestIgnoreEINTRcd}tjtj||jd|j}|j||j	d|j
zy)NcyrrZrframes  rr5z-TestIgnoreEINTR._test_ignore.<locals>.handlerr`rreadyx)r8rrrr
CONN_MAX_SIZE)rr2r5r?s    r_test_ignorezTestIgnoreEINTR._test_ignoresR	

fnng.		'IIK		!s0001rrrctj\}}	tj|j|f}d|_|j|j
|j|jdtjdtj|jtjtjd|j!d|j|jdtjdtj|jtj|j|j#d|j$ztjd|j'|j
y#|j
wxYw)NrTr}r.ir~)rrrrrrr rkrrrrBrDrr8rrrrrrs    rtest_ignorezTestIgnoreEINTR.test_ignores *//1j	''t/@/@.8]<AAH
GGITYY['2JJsOGGAEE6>>*JJsOIIdOTYY[$/JJsOGGAEE6>>*T__.t7I7I0IJJJsO
FFHJJLDJJLsFF11Gc0d}tjtj|tjj	5}|j|j|j}|jddddy#1swYyxYw)NcyrrZr{s  rr5z6TestIgnoreEINTR._test_ignore_listener.<locals>.handlerr`rwelcome)r8rrr)r+rrr0)rr2r5rrs     r_test_ignore_listenerz%TestIgnoreEINTR._test_ignore_listenersi	

fnng.

'
'
0
0
2	aIIaii 
A
FF9			s=BBc~tj\}}	tj|j|f}d|_|j|j
|j}tjdtj|jtjtjdtjj!|}|j#|jd|j%|j
y#|j
wxYw)NrTr.r)rrrrrrr rrrrBrDrr8rr)r/rkr)rpr2rrrr2s      rtest_ignore_listenerz$TestIgnoreEINTR.test_ignore_listeners*//1j	''t/I/I.8]<AAH
GGIiikGJJsOGGAEE6>>*JJsO$//66w?FV[[]I6
FFHJJLDJJLsDD**D<N)rurvrwmaxr
PIPE_MAX_SIZE
SOCK_MAX_SIZErrrrFrr7r8rrrrZrrrxrx}s--w/D/DEM22X35GHI,X35GHIrrxceZdZedZdZdZdZdZdZ	dZ
eje
jdk(d	ed
dZedZed
ZdZy)TestStartMethodcJ|jtjyr)rrrPr>s  r_check_contextzTestStartMethod._check_contexts		/2245rcJ|jd\}}|j|j|f}|j|j	|j}|j	|j
|j||jy)NFrr)	rrrrr rrrkrP)rprsr(rrchild_methods      r
check_contextzTestStartMethod.check_contextsxxxux%1KKt22!K>				vvx			s';';'=>rcdD]}	tj|}|j|j	||j|j||j
t|jd|j
t|jd|j|y#t$rYwxYw)NrgrNrrN)	rrOrErkrProrlrjr)rpmethodrss   rr)zTestStartMethod.test_contexts5		$F
%11&9
S113V<MM#//+S1j#*>*>Hj#*>*>Es#		$

sB22	B>=B>c	tjd}|jtd5|jgddddy#t$rtjdwxYw#1swYyxYw)Nrzforkserver should be availablez&module_names must be a list of stringsr)rrOrErFrGrTrset_forkserver_preload)rprss  rtest_context_check_module_typesz/TestStartMethod.test_context_check_module_typessx	F!--l;C
#
#I/W
X	2&&y1	2	2	F##$DEE	F	2	2sA
A,
A),A5c<tjtd}tj}	dD]}	tj|d|j
tj|tj}|j
|j||jt|jjj||j|jjjj||jt|dz
}	tj|d|j|dy#t
$rYKwxYw#tj|dwxYw)NrrTrer)rrPRELOADrPrjrErkrOrrrulowerrrrr3)rpr

old_methodrrss     rtest_set_getzTestStartMethod.test_set_getsG..w7$557
	E9
#44V4H  !A!A!CVL%113  !5!5!7@S	 2 2 8 8 : E Ef MNKK((..0;;FCE""?3


,,ZtDq)"
,,ZtDs/FE2C8F2	E?;F>E??FFctj}tjdk(r|j	|dgy|j|ddgk(xs|ddgk(xs|gdk(xs|gdk(y)Nr1rNrgr)rNrgr)rget_all_start_methodsrzr{rkr)rpmethodss  rtest_get_allzTestStartMethod.test_get_allsz!779<<7"Wwi0OOG'88G#'88G#'FFG$'FF
Hrctjdk7r|jdtjjtjj
td}tjjj|\}}}|j}|j}|jdk7s|dk7r(t|t||jdyy)Nrz*test only relevant for 'forkserver' methodz
mp_preload.pyokrz(failed spawning forkserver or grandchild)rrPrrBrrrvrwr=rrrr@rrDri)rpr+rhrrqs     rtest_preload_resourcesz&TestStartMethod.test_preload_resourcess++-=MMFGww||BGGOOH5G||11BB4HCjjljjl::<43"9#J#JII@A$-rr1z*Only Spawn on windows so no risk of mixingavoids redundant testing.cNdD]}tjdj}tj|}|jt|f}d}|jt|5|jddddD]}tjD]r}tj|j}tj|}|jt|f}|j|jty#1swY!xYw)N)rNrrgrzA SemLock created in a fork)
rrOrrr#rTr4rrr)rpprocess_methodr"process_ctxrrCqueue_methods       rtest_mixed_startmethodz&TestStartMethod.test_mixed_startmethods
6	N#//7==?E)55nEK##;eX#FA3G''g>
	

	4	L"1"G"G"I
'33LAGGI-99.I''{%'J	
		

s.DD$	c&|jdyrr)rr"s  r_put_one_in_queuez!TestStartMethod._put_one_in_queue%s

		!rc|jdtj|j|f}|j	|jyrR)rrrrrr)rr"r%s   r_put_two_and_nest_oncez&TestStartMethod._put_two_and_nest_once)s9
		!!))1F1FeXV

rc\tj}tj|j|f}|j	|jg}|j
s0|j|j|j
s0|j|ddgy)Nrrr)
rrrrrrrrXrrk)rpr"r%rs    rtest_nested_startmethodz'TestStartMethod.test_nested_startmethod0s %%'!))1L1LTYS[\

++-NN599;'++-	
1a&)rN)rurvrwrrrr)rrrrrFryrzr{r[rrrrrZrrrrs66?
$2*,H
BX__S\\W,AC !<=>C&
*rrrcFeZdZdZdZdZdZdZedZ	dZ
dZy	)
TestResourceTrackercd}tjD]}|j|5|dk(r
	ddd&tj\}}tjtjdd|j||g|gt
j}tj|t|dd	
5}|jjjd}|jjjd}dddt!||j#|j%d|d
}	t'j(t&j*|	D]}
	t!||j6j9jd}|j6jdj|}
|j;||
|j;|d|zdddy#1swYxYw#t,$rE}|j/|j0t0j2t0j4fYd}~d}~wwxYw#1swYcxYw)Naif 1:
            import time, os
            import multiprocessing as mp
            from multiprocessing import resource_tracker
            from multiprocessing.shared_memory import SharedMemory

            mp.set_start_method("spawn")


            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,noopr9r)rr,)pass_fdsrrT)rrdzA z< resource was leaked after a process was abruptly terminatedrz8resource_tracker: There appear to be 2 leaked {} objectszresource_tracker: %r: \[Errno)r(r*rrBpiper;r<rzrrr=r rr>rr@r-r	rrrArrrmrENOENTEINVALrrr)rprr,r(rrrname1name2rCrrrqrZs              rtest_resource_trackerz)TestResourceTracker.test_resource_trackerDs(:&44$	PEE*#
PF?#
P#
Pwwy1$$cnn%)4au1M&O/0c,6OO=!T40BAJJL//188AEJJL//188AEB!.
w'12 //0E0E29;A(6hhmmo,,W5 &&,f!'#  h/  &F&NOG#
P#
P$	PBB#

aggell/KL	/#
P#
PsVI,BI,=AHA!I,:HA=I,HI,	I)	$:I$	I,$I)	)I,,I6	cpddlm}|j}|Jtj|t
jtj|t
jtj5tjd|jddd|j}tj||tjdtj d}tjd5}tjd	|j#}|j%|j't)j*|}~t-j.|j1||rp|j3t5|d
|d}	|j7t9|	j:t<|j7dt?|	j@vn|j3t5|ddddy#1swYxYw#1swYyxYw)Nr_resource_tracker)rrr'rNT)ralwaysrzresource_tracker: process died)! multiprocessing.resource_trackerrrrBrDr8rErwait_processr$r%r&rrrrrOrnr[r\rkrlrmrnrrkrr
issubclassrAUserWarningrnr)
rpr
should_dierrrsall_warnrkrpthe_warns
          rcheck_resource_tracker_deathz0TestResourceTracker.check_resource_tracker_deaths	G$$?GGC(  ?

$
$
&	/!!(+,,.	/ $$
V

3))'2

$
$D
1	3X!!(+--/CKKMKKMS!BJJLbd#  X2#A;
8+<+<k JK @#&x'7'7#8!9:  X2%	3	3	/	/	3	3s3&HDH,H),H5cD|jtjdyrD)rr8rrs rtest_resource_tracker_sigintz0TestResourceTracker.test_resource_tracker_sigints))&--?rcD|jtjdyrD)rr8r@rs rtest_resource_tracker_sigtermz1TestResourceTracker.test_resource_tracker_sigterms))&..%@rcD|jtjdyrH)rr8rErs rtest_resource_tracker_sigkillz1TestResourceTracker.test_resource_tracker_sigkills))&..$?rcddlm}|j|jd|fv}||j	z}|j|y)Nrr)rrrr_check_aliver)r2rrreuseds    r_is_resource_tracker_reusedz/TestResourceTracker._is_resource_tracker_reusedsGF((*#''D#;6#0022		&rcddlm}|j|j}t	j
d\}}t	j|j||f}|j|j}|j|j|j|j|y)NrrFrr)
rrrrrrrrrrrr r)rprrr(rris_resource_tracker_reuseds       rtest_resource_tracker_reusedz0TestResourceTracker.test_resource_tracker_reusedsF((*$$##511##4+K+K*+S
3		%&VVX"	
				23rcd}ddt|z
z}|jt5tj||dddy#1swYyxYw)Nrrr)rrlrEr(register)rpr,too_long_name_resources   rtest_too_long_name_resourcez/TestResourceTracker.test_too_long_name_resourcesU !$c%j(8!9


z
*	E%%&<eD	E	E	EsA		AN)rurvrwrrrrrrMrrrrZrrrr@sAEPN#3J@A@4$Errc`eZdZedZdZdZejjdZ
y)TestSimpleQueuec|j	|j|j|j|j|jy#|jwxYwr)rrrrdrs    r_test_emptyzTestSimpleQueue._test_emptysQ	&IIekkm$IIekkm$##%##%s>A!!A3ctj}tj}tj}tj|j|||f}d|_|j
|j|j|j|j|j|j|j|jd|j|jd|j|j|jy)NrTF)rSimpleQueuerrrrrrrrdrrrkrr)rpr"rrrs     r
test_emptyzTestSimpleQueue.test_emptys++-)//1-335&&##*=>



&  "'d+e,
&		rcltj}|j|jyr)rrr rpr"s  rrqzTestSimpleQueue.test_closes"++-



rctj}|j|j|jj
|j|jj
yr)rrr r_readerr"_writerrs  rtest_closedzTestSimpleQueue.test_closedsE++-



,,-

,,-rN)rurvrwrrrrqr=rcpython_onlyrrZrrrrs<&&0
\\..rrceZdZdZy)TestPoolNotLeakOnFailurecdgGfdd}|jtd5tjj	dt
jj|}|j|jddd|jtdDy#1swY+xYw)	Nrc4eZdZfdZfdZdZdZdZy)RTestPoolNotLeakOnFailure.test_release_unused_processes.<locals>.FailingForkProcesscRd|_d|_d|_j|y)NzFake Process)r+rrrX)rprRforked_processess  rrz[TestPoolNotLeakOnFailure.test_release_unused_processes.<locals>.FailingForkProcess.__init__s&*	 $
!
 ''-rc>dkrtddzd|_y)NrManually induced OSErrorrr)rr)rpwill_fail_ins rrzXTestPoolNotLeakOnFailure.test_release_unused_processes.<locals>.FailingForkProcess.start#s(1$!"<==!&
rcd|_y)Nstoppingrrs rr	z\TestPoolNotLeakOnFailure.test_release_unused_processes.<locals>.FailingForkProcess.terminate*s	'
rc2|jdk(rd|_yy)Nrstoppedrrs rrzWTestPoolNotLeakOnFailure.test_release_unused_processes.<locals>.FailingForkProcess.join-s::+!*DJ,rcB|jdk(xs|jdk(S)Nrrrrs rrz[TestPoolNotLeakOnFailure.test_release_unused_processes.<locals>.FailingForkProcess.is_alive1szzY.J$**
2JJrN)rurvrwrrr	rr)rrsrFailingForkProcessrs
.
'
(
+
Krrrr)r)contextc3<K|]}|jywrrr)rr%s  rrzITestPoolNotLeakOnFailure.test_release_unused_processes.<locals>.<genexpr>:sCw  "Crs)rTrrrrrFr	MagicMockr rrr!)rprrrrs   @@rtest_release_unused_processesz6TestPoolNotLeakOnFailure.test_release_unused_processess	K	K0
#
#G-G
H	$$))!X]]5L5L*6M6,)-A
GGI
FFH		
	
C2BCC	E		sA B44B=N)rurvrwrrZrrrrs$ErrceZdZdZej
jZdZdZ	e
dZeZdZ
dZe
dZdZe
d	Zd$d
Ze
dZd$dZe
d
Zd%dZdZe
dZdZe
dZdZe
dZdZe
dZd&dZdZ e
dZ!dZ"e
dZ#dZ$e
dZ%dZ&e
dZ'd Z(e
d!Z)d"Z*y#)'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
    cp|j|_|jjd|_yr)
manager_classrrrrs rrzTestSyncManagerTypes.setUpVs)))+	rc|jN|jjr4|jj|jj|jjd|_d|_yr)rrr	rrrrs rrzTestSyncManagerTypes.tearDown[sW99 TYY%7%7%9II!IINN	rc,tjyr)r
reap_childrenr+s rrzTestSyncManagerTypes.setUpClasscsrct|jt}tj}tj|dD]$}ttjdks$ytj|z
}dt
_
tjdtjd|ddy)	NFerrorrT"multiprocessing.Manager still has  active children after .1f seconds)r&rWAIT_ACTIVE_CHILDREN_TIMEOUTrrrrArrrenvironment_altered
print_warning)rpr6
start_timerrs     rwait_proc_exitz#TestSyncManagerTypes.wait_proc_exitis	TYY.^^%
''u=	MA?2245:	M!J.B*.G'!!$F%4%D%D%F$GH;;=c((#L
Mrctj||f|_d|j_|jj	|j|j
|jjdy)NrTr)rrrrrr
rkr)rpworkerr#s   r
run_workerzTestSyncManagerTypes.run_worker{sX#++6H					++Q/rc|jsJ|j|j|jdyNru)rrrrr#s  rrz TestSyncManagerTypes._test_events+zz|
		rc|jj}|j|j|j||jrJ|j
dyr)rrrdrrrrrprBs  rrzTestSyncManagerTypes.test_eventsHLL 	((!,88:	u
rc$|jyrr[rs  r
_test_lockzTestSyncManagerTypes._test_lock
rct|j|}|j|j||j	|jt|jyr)rrrrr\rlr4rplnamerBs   rr`zTestSyncManagerTypes.test_locksF(GDLL%(*+			,		2rcD|j|jyrr[r\rs  r_test_rlockz TestSyncManagerTypes._test_rlock

rcrt|j|}|j|j|yr)rrrrrs   rrczTestSyncManagerTypes.test_rlocks+(GDLL%(*((!,rc$|jyrrrs  rrlz$TestSyncManagerTypes._test_semaphorerrct|j|}|j|j||j	yr)rrrrlr\)rpsnamerBs   rroz#TestSyncManagerTypes.test_semaphores4(GDLL%(*,,a0			rc(|jdy)Nrr)r$)rors rrsz+TestSyncManagerTypes.test_bounded_semaphores"45rcD|j|jyrrrs  r_test_conditionz$TestSyncManagerTypes._test_conditionr rcp|jj}|j|j|yr)rrrr'rs  rtest_conditionz#TestSyncManagerTypes.test_conditions(LL""$,,a0rcF|jdk(sJ|jyr)rrrs  r
_test_barrierz"TestSyncManagerTypes._test_barriers{{a		rcr|jjd}|j|j|yr)rrrr+rs  rrz!TestSyncManagerTypes.test_barriers*LL  #**A.rc4|5	dddy#1swYyxYwrrZrs  r
_test_poolzTestSyncManagerTypes._test_pools				sct|jjd}|j|j|y)Nrar)rrrr.rs  r	test_poolzTestSyncManagerTypes.test_pools+LL*+rc|jdk(sJ|jsJ|jrJ|jdk(sJ|jrJ|jdk(sJ|jsJyNrrr)rrrrrs  r_test_queuez TestSyncManagerTypes._test_queueseyy{axxz99;wwyA~99;wwyA~yy{{rct|j|d}|jd|jd|j|j||jsJ|j
rJyr2)rrrrr3rr)rpqnamerBs   r
test_queuezTestSyncManagerTypes.test_queues](GDLL%(+	a	a((!,wwy6688rc&|jdy)Nr&)r6rs rtest_joinable_queuez(TestSyncManagerTypes.test_joinable_queues(rctj}|j|dd|j|jdd|j|j	dd|j|j
|D]}|jt|d|j|jddy)Nrrr)	rFTestCaserkr
rrreverserr)rr#caser?s    r
_test_listzTestSyncManagerTypes._test_lists  "Q#1q)1q)

	A	S1%Q'rc|jj}|jd|j|j||j||j
t|dy)Nrr)rrrXrr=rgrkrrs  rrzTestSyncManagerTypes.test_listsSLL	+QQ#rcNtj}|jt|d|j|dd|j|j	dd|jt
|jdg|jt
|jdg|jt
|jdg|j|jddi|j|jdy)NrrSr)rSr)rFr:rkrrassertListEqualrrrrHassertDictEqualrassertTupleEqualpopitemrr#r<s   r
_test_dictzTestSyncManagerTypes._test_dicts  "S1%UQ'+T#))+.=T#((*-w7T#**,/!5SXXZ%4ckkmZ8rc|jj}d|d<|j|j||j	||jt
|dy)NrrSr)rrrrErgrkrrs  rrzTestSyncManagerTypes.test_dictsQLL%+QQ#rctj}|j|jd|j|j	d|jdy)Nrr)rFr:rkrrrdrDs   r_test_valuez TestSyncManagerTypes._test_valuesE  "A&A&
rc|jjdd}|j|j||j	|j
d|j	|j
dy)NrVrr)rrrrHrkrrrs  rrOzTestSyncManagerTypes.test_valuesVLLsA&((!,!$!$rctj}|j|dd|j|dd|jt|d|j	t|ddgy)Nrrr)rFr:rkrr@rrDs   r_test_arrayz TestSyncManagerTypes._test_arraysd  "Q#Q#S1%T#YA/rcx|jjdddg}|j|j|y)NrVrr)rrlrrKrs  rrozTestSyncManagerTypes.test_arrays0LLsQF+((!,rctj}|j|jd|j|jdyr)rFr:rkr?r@rDs   r_test_namespacez$TestSyncManagerTypes._test_namespace s8  """rc|jj}d|_d|_|j	|j
|yr)rrr?r@rrNrs  rrz#TestSyncManagerTypes.test_namespace&s6LL""$,,a0rNre)rn)r)+rurvrwrxrrrrrrrrrr
rrrrr`rrcrlrorsr'r)r+rr.r0r3r6r8r=rrErrHrOrKrorNrrZrrrr=s*$,,88M
  MM$03-
61/
,)
(
($	9	9$%00-##
1rrc(eZdZeddZy)TestNamedResourcezspawn specific test.chtj}|jtj|t	|dd5}|jt
jddddtj|\}}}|j||jdy#1swYExYw)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)rrrcrrr,textwrapdedentrrrr@)rprrrhrrqs      r test_global_named_resource_spawnz2TestNamedResource.test_global_named_resource_spawn.s!!	((&1
&#
0
	A
GGHOO	%		

	%55f=C	
#**W"56
	
	s%B((B1N)rurvrwr[rVrZrrrQrQ-s !78797rrQc.eZdZdZeddZy)MiscTestCasec^tj|ttjddgy)NSUBDEBUGr)extranot_exported)rcheck__all__rrrs rtest__all__zMiscTestCase.test__all__Hs%T?/:Q:Q+5|*D	Frrctjdd\}}}|j|d|j||j	dy)Nrzif 1:
            import sys
            sys.executable = None
            assert "multiprocessing" not in sys.modules, "already imported!"
            import multiprocessing
            import multiprocessing.spawn  # This should not fail
rrrS)rrrkrr@)rprhrrqs    r,test_spawn_sys_executable_none_allows_importz9MiscTestCase.test_spawn_sys_executable_none_allows_importMsQ%55
F
C	
Q#**W"56rN)rurvrwr^r[r`rZrrrXrXGs"F
!!<=7>7rrXc,eZdZedZedZy)	BaseMixinctjjjtjjf|_yr)rr%	_danglingrrdanglingr+s rrzBaseMixin.setUpClasses5'//99>>@!++0024rctjjttj
jt|jdz
}|r-dtj_tjd|d}ttjt|jdz
}|r-dtj_tjd|d}y)NrTDangling processes: rDangling threads: )r=rrNrdrr%rdrer
rr)rrrs   rrzBaseMixin.tearDownClassjs	
!//99:Sa=QQ	/3DLL,!!$8"DE	i))*Sa-AA/3DLL,!!$6wi"@ArN)rurvrwrrrrZrrrbrbds(44rrbceZdZdZej
ZejZeejZeejZ	eejZ
eejZeejZeejZ
eejZeejZeej Zeej"Zeej$Zeej&Zeej(Zeej*Zeej,Zeej.Zeej0Zeej2Zeej4Zy)rrN)rurvrwrrrr)rMrrrrrrrr&rZrbrnrrrrrrrlrLrkrZrrrr}sND%%G ++J"?#B#BCO!/"@"@AN"?#B#BCO!/"@"@AN,,-D,,-D../E !>!>?M,,-D../E_667I#O$D$DE_667I../E?223G../E../EO445HO445HrrceZdZdZej
ZeejdZ	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)rrQrs   rrzManagerMixin.Poolss{{...rcTt|tj|_yr)rrrrrrs rrzManagerMixin.setUpClasss
%--/rct}tj}tj|dD]$}tt
jdks$nRtj|z
}dt_tjdt
jd|ddtj|jjd	k7rWdtj_tjd
tj|jj|jj!|jj#d|_t$|My)NFrrTrrrrrz5Shared objects which still exist at manager shutdown:)r	rrrrArrrr
rrmrnr_number_of_objectsr=_debug_inforrrr)rr6rrrrs     rrzManagerMixin.tearDownClasss,
/^^%
''u=	MA?2245:	M!J.B*.G'!!$F%4%D%D%F$GH;;=c((#L
M	

;;))+q004DLL,!!#9
:!!#++"9"9";<
r)rurvrwrrrroperator
attrgetterrr&rZrbrnrrrrrrrlrrrrrrrrPrQs@rrkrksD%%G(X((9:E0X001HIJM'H''78D(X((9:E,,,-@ABI 3 3 34N OP,,,-@ABI(X((9:E*x**+<=>G(X((9:E(X((9:E'H''78D'H''78D,,,-@ABI//00  rrkceZdZdZej
jZej
jZeej
jZ	eej
jZ
eej
jZeej
jZeej
jZ
eej
jZeej
jZeej
j Zeej
j"Zeej
j$Zeej
j&Zeej
j(Zeej
j*Zeej
j,Zeej
j.Zy)ThreadsMixinrN)rurvrwrrdummyrr)rMrrrrrr&rZrbrnrrrrrrrlrZrrrtrtstD##++G &&11J"?#8#8#H#HIO"?#8#8#H#HIO--223D--223D..445E !6!6!D!DEM--223D..445E_22<<=I#O$9$9$J$JK_22<<=I..445E?00889G..445E..445Errtc	|d}t}hd}|jD]D\}}t|tst	|t
r|t
ur1t
|j|ksJ|j|jD]}	|r|	|k7r|rd|	jz|ddz}
||	jdz}Gdd||tj}|	dk(rtjd	|}|
x|_
|_||_|||
<t	|tjs|rGd
d|t }|x|_
|_||_|||<Gddgdgfd}
fd}|
|d
<||d<y)Nru>rrrWithrMixinceZdZy*install_tests_in_module_dict.<locals>.TempNrrZrrTempr{srr|rrceZdZyrzrrZrrr|z*install_tests_in_module_dict.<locals>.Temp	srctjttjj	tjj
j
d<tj
j
d<tjdd<	tjdtjjdr	tj }t%t'j(tj*j-t.y#t$rtjdzwxYw#t"$rtjdwxYw)	NrrTrcrez start method not supportedlinuxz1OSError raises on RLock creation, see issue 3111!)rrrr%_cleanuprdrrrPrjrErFrGrzr{rrbrrJrget_temp_dirrrr)r_reold_start_methodrSs rsetUpModulez1install_tests_in_module_dict.<locals>.setUpModules2..w7((*%--77<<>))..0->>$O	C,,\F
<<""7+
;&,,.	 !""$--i8	C##L$A%BC
C	C
;''):;;
;sD0E0"EE4cdd}tjjtjddttjjtdz
}|r/d}dtj_tjd|d}ttjtdz
}|r/d}dtj_tjd|d}|rtjdtjjy)	NFrTrergrrhr)r=rrNrrjrdr%rdr
rrrrr_cleanup_tests)
need_sleeprrrers   rtearDownModulez4install_tests_in_module_dict.<locals>.tearDownModule(s
	
!(()9!)<DI//99:S!=MM	J/3DLL,!!$8"DE	i))*S!-==J/3DLL,!!$6wi"@AJJsO++-rrr)globalsrrrrrrdr
capitalizerFr:rrequires_hashdigestrurwrvr<)remote_globsrS	only_type
exclude_typesrvlocal_globs	ALL_TYPESr+basetype_newnamerxr|rrrers `             @@rinstall_tests_in_module_dictrsj)J)K3I!'')&
d$%dL)|#t))*i7K9K9KK++

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

-h//
0
tV
044DMD-(DO!%L;&>d|Hv9,.:#.L%3L!"rSemLockzSemLock not availablerz
Linux onlyceZdZdZy)SemLockTestscGddtj}dtj}|ddd|d}tj	|y)NceZdZy)3SemLockTests.test_semlock_subclass.<locals>.SemLockNrrZrrrrNrOrrztest_semlock_subclass-rrr6F)rrrBr
sem_unlink)rprr+rs    rtest_semlock_subclassz"SemLockTests.test_semlock_subclassMsG	&..	'		}5Aq"dE*##D)rN)rurvrwrrZrrrrIs*rrrrD)rF
unittest.mockr"rrTrrrrzrBrmrrWr8rmr[rrr;rrqrrrkr$test.supportr=test.support.script_helperrrrrrrr	r

import_moduler*skip_if_broken_multiprocessing_synchronizerrrmultiprocessing.dummymultiprocessing.heapmultiprocessing.managersrfmultiprocessing.queuesrr
rrHAVE_SEND_HANDLEr#ImportErrormultiprocessing.sharedctypesrrrr	HAS_SHMEMrcheck_sanitizerrGrr#r&r+r(r-rrrNrrrrrrr	r
HAVE_GETVALUEr{rr7rCrrctypesr;r<r=r>r<rJr[r:r]r}rrrrrrrrrrrWrhrvrrrrrrr9rer|rrrrrrErrrrUrYr[rlrrrrrrrrrrrrrrrrrrrrr%r6rArrWrtrrrrFrsrrrrrrrrrrrrrrr3r;rOrZr_rhrxrryrrrrrQrXrbrrkrtrr7rrZrr<module>rs	
	
		




!'&"&&)(/=../AB2224!@ )..M8-I
74((

F
GG*77g05
OO		
#2 Hh#0 Hh((",6??


	 #
BJJ}%E
=
>)==K2LX..L@0F0"66
* K	8<K	8d /)) ,Q7lQ7n$@@J
03@\3@le\eP	5W5W@&&.
6F6rx1<x1|C3C3LM3M3fY/lY/~$
$F$%:$f!f!P&L&PB lB PIHV,I,		
56*	56;?	53-@4>\4>v
/;/kI6KKK
{#
..b$##H-22,22.22p9G/lG/R8L8D.,.`LLd]$JK###H-@|@.L@LbbP
9
5)5)pY HI###H-{J{J.J{JBuLux%h''%V+)<+)J6\6DE))E&$##H-5!!5.5<$##E*###H-5H--5.+5N$##H-*x((*.*<
*'!2!2'*mx  mf
B))
B 8!!8H28$$2D'X&&'"1h//1><:8$$<:DAh''AF}*h''}*@(=?\E(++\E?\E~0.h''0.f&Ex00&ER$##H-l18,,l1.l1^7))7478$$7:26Y629 99 x6962@E\4~W-y99;RS(,7*8$$*8T*_@MI

FFE)I$((E(Hz)sf'_:
_"_0_>#`:`__"_-,_-0_;:_;>`	`	`
`'&`'