python (3.12.0)

(root)/
lib/
python3.12/
test/
__pycache__/
_test_multiprocessing.cpython-312.opt-2.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_longlongc	d}	tjd}|dk(s||k\ryt	j
d|z#ttf$rYywxYw)Nr9SC_SEM_NSEMS_MAXzHThe OS doesn't support enough semaphores to run the test (required: %d).)ossysconfAttributeError
ValueErrorunittestSkipTest)	nsems_minnsemss  rcheck_enough_semaphoresrJsmKI

-.
{ey(


>@IJKK
J's=AAc	fd}|S)NcFtjfd}|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	#rcZeZdZ	ejejdk(ddZy)TestInternalDecoratorsr1ztest 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__rFskipIfsysplatformrtrZrrr]r]s1LX__S\\W,.OPLQLrr]ceZdZdZdZy)
TimingWrapperc ||_d|_yr)funcelapsed)rpr~s  r__init__zTimingWrapper.__init__s	rctj}	|j|i|tj|z
|_S#tj|z
|_wxYwr)time	monotonicr~r)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)rpvaluer~rQress     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)
DummyCallablec&|jdyNput)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)
rrry
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)rrrr)rrmainthread_native_ids   rr z/_TestProcess._test_process_mainthread_native_ids$(446@@	"#rc.tjdy)Ndrr
rs 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|rrrrr
hasattrsignalSIGALRMr0r)rpmethrr4old_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;rrrrBr+rkr7SIGTERMrprs  rtest_terminatez_TestProcess.test_terminate.sD%%o&=&=&G&GH
77d?X7rc|jtjj}tj
dk7r"|j
|tjyyr=)	r;rrkillrBr+rkr7SIGKILLr@s  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)
rkrrrrrr
DELTArrrrmrrprs  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     rrSz_TestProcess._test_recursionMsl

2r7Q;1X
KK..eRV_ 	
rcR|jd\}}|j|gtjtg}|jr0|j
|j|jr0gdgddgddgdgddgddgg}|j||y)NFrrr)	rrSrr
rMrappendrrk)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
addCleanuprrrHrr7setr)rpr^rras    r
test_sentinelz_TestProcess.test_sentinelps99	!MM7>>tyyIJ

LL 3 35(LC


z
*	
JJ			::h,3?@
			!<=		s=
D88ENcR||jtj|yr)rryexit)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)rrrrrrhrrrkrrlrEr rrrrweakrefrefgccollectassertIsr#)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)rrrrrPrRrr.rr&rkrr+rr
rrBr+r7r?ryrzrWrDrm)rpsmNrUprocsr	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)
rrjrkrrrrrlrmrnrkrr#)rprrorrs     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)rrrrrPrrrRrrrrrkrrcrr#)	rprvrwrrrUrxr	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?rr
rcrsrfunc1z2_TestProcess._test_wait_for_threads.<locals>.func1sJJsOGGIrcPtjdjy)N)rr
clearrsrfunc2z2_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]B\}}|dk(r%tj}|jnd}t	t
|dD|j
y)Nr )itemsioStringIOr setattrryrc)rprbreak_std_streamsstream_nameactionstreams      r_test_error_on_stdio_flushz'_TestProcess._test_error_on_stdio_flushsY#4#:#:#<	,K Cd+	,		rc	tjdg}|djdD]}|D]}tt|}tt||	|j
}|j|j|f}|j|j|j|j|j|jdtt||y#tt||wxYw)Nrstdoutstderrr)rrr getattrryrrrrrrrrrkr)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 removerr)rryrrrrrrrrkrr)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_pidrBrCrr
rrrrkrrm)
rpsignumrvrr-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)rr7SIGINTrs rtest_forkserver_sigintz#_TestProcess.test_forkserver_sigintos##FMM2rcjtjdk7r |jtjyyr=)rBr+rr7rDrs rtest_forkserver_sigkillz$_TestProcess.test_forkserver_sigkillss$
77d?''7r)rNr3)3rurvrwrrrrrequires_resourcerclassmethodrrrrrr
rrrrF
skipUnlessr_HAVE_THREAD_NATIVE_IDr$r r+r.r;rArErJrOrSrZr_rdrhrprzr|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  +	,rcl|jj||jjSr)rrrrs  rsubmitz_UpperCaser.submits+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)rrrrTESTFNrbunlinkr_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_EXCLryr)rrfds   rrz*_TestSubclassingProcess._test_stderr_flushsA
WWVR[[2::5		A
B"cGUC
	!rctj|tjtjztjz}t|dddt
_tj|y)NrrFr)rBrrrrryrrf)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)rrrrrrbrrrrrr&rkrrrrstriprnrBrryrf)	rprrTrrcontentcasesrQrYs	         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)r6rqsize)rs rqueue_emptyrs(q'wwywwyA~rc`t|dr|jS|j|k(S)Nfull)r6rr)rmaxsizes  r
queue_fullrs(q&vvxwwyG##rceZdZedZdZedZdZedZdZ	dZ
edZd	Zd
Z
dZdZd
ZdZy)
_TestQueuec|jtdD]}|j|jy)N)rrRrrc)rr"child_can_startparent_can_continuerUs     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_nowaitrr
rMr|rlpyqueueFullrrTIMEOUT1TIMEOUT2TIMEOUT3rcrrr#)rpMAXSIZEr"rrrrr
s        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rrcrr"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)rrrrrrrkrrcrrr
rMr
get_nowaitr|rlrEmptyrrr
rrrr#)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)Nr5r)rRr)rr"rUs   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)Nr5rTrF)rrRrrr
rMrrrrrkrrlrrrr#)rpr"rUrs    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)rrrr
rM	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)NrarTr5)	
JoinableQueuerRrr#rrrrr#)rpr"rUworkersrs     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__rrri)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.)
rrrrrlrrrassertGreaterEqualr#)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$$rNrurvrwrrZrrNotSerializabler7s
%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)
NrrceZdZ	dZdZy)K_TestQueue.test_queue_feeder_on_queue_feeder_error.<locals>.NotSerializablec 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)rDrDrs rrzV_TestQueue.test_queue_feeder_on_queue_feeder_error.<locals>.NotSerializable.__reduce__s)-&$$rN)rurvrwrrrZrrr:rAs,
>
%rr:c$eZdZ	efdZy)E_TestQueue.test_queue_feeder_on_queue_feeder_error.<locals>.SafeQueuecPt|trt|rd|_yyyrG)rrDrE)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)rurvrwstaticmethodrK)r:sr	SafeQueuerIsC

@
@rrM)rsTr)rrrr;rrrr<rr=get_contextrrrrrDrE)rprMnot_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)rurvrwrrrrrrrrr#r'r0r4r>rPrTrZrrrrs""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|jyrG)RLockrkrZr[rlrr3r]s  r
test_rlockz_TestLock.test_rlockEszz|......><8$,,GrcP|j5	dddy#1swYyxYwrrYrs rtest_lock_contextz_TestLock.test_lock_contextOs#
YY[				s%N)rurvrwr_rbrerZrrrVrV<sMHrrVc$eZdZdZdZdZdZy)_TestSemaphorecZ|jdt||j|jd|jdt||j|jd|jdt||j|jdd|jdt||j|j	d|jdt||j|j	d|jdt|y)NrTrrF)rrrkrZr[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)	Semaphorerkrkr[rrris  rtest_semaphorez_TestSemaphore.test_semaphorecsnnnQS!-''9c:-''9c:rcH|jd}|j|yNr)BoundedSemaphorerkris  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)rrrrmr|rZrkrrr
rr)rprjrZs   rr4z_TestSemaphore.test_timeoutss99#MM7>>tyyIJnnQ,/$$W__c:-u5$$W__c:159$$W__a8x0%8$$W__h?2E:$$W__h?rN)rurvrwrkrnrrr4rZrrrgrgTs;;"@rrgceZdZeddZdZdZdZdZdZ	dZ
ed	Zejed
dZedZejed
d
ZedZdZy)_TestConditionNc|j|j|j||j|jyr)rZr[r)rcondsleepingwokenr6s     rrz_TestCondition.fs5		'


rctdD])}	||k(rn	tjt+tjt|j||y#t$rY8wxYwNr5)rRrrr
rMr)rpr~rrUs    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)rprwsleeperss   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)	ConditionrmrrrrrbrrrrZrr
rMrrnotifyr[r)rprwrxryrs     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)NrrrTrctSrrrysr<lambda>z0_TestCondition.test_notify_all.<locals>.<lambda>Yu-=r)rrmrRrrr
rrrbrrrrZrrrrr
rM
notify_allr[r|rprwrxrUrrrys      @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)rrmrRrrrrrbrrrrZrr
rMrrrr[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|jtyrC)	rr|rrZr
r[rkrr)rprwrrs    rr4z_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_forryrf)rrwrrXs  ` 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)
NrUrArTc"jdk(SNrrrsrrz-_TestCondition.test_waitfor.<locals>.<lambda>drrrrarsr)rrrrrrrrrkrrRrr
rr&r)rprwrrXrUrs     @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)rrwrsuccessrjrYdtrXs  `     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)
NrUrFrTrrrsr)rrrmrrrrrrZrrrRrr
rrr&)rprwrrrjrrUs       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)rrr
rBrCr7r)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<)rProcessesMixinryrzrBrrrr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|rrrrr4rrFrHAS_SHAREDCTYPESrrrrrrZrrrurus	5	+Z<#|0#d=X)+?@(A(.	%	%X)+?@'A'.((rruc*eZdZedZdZddZy)
_TestEventcVtjt|jyr)rr
rrcr]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rkrrrr
rcrrrrrr)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 .*)rrassertRegexreprrcr)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)NrUr)rheap
BufferWrapperstructcalcsizerY__setstate__
_lengthbuf)rpwrapperr^s   rrz_DummyList.__init__sO!&&44V__S5IJ##%7D/*rc~|\|_|_|jjjd|_y)NrU)_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  rrWz_DummyList.appends2
ZZ	$OOA!#	$	$	$s.7cd|j5|jdcdddS#1swYyxYwrrrs r__len__z_DummyList.__len__s*
ZZ	&??1%	&	&	&s&/N)rurvrwrrrrWrrZrrrrsF+$&rrc.tjdy)Nrsr)rZrr_waitr	sJJtrc4eZdZ	ddZdZdZdZdZdZy)	Bunchc	||_||_||_|j|_|j|_|j
|_|s|jjg}t|D]F}|j|j}d|_|j|j|Hd}	tj ||	||_y)NrTc2|D]}|jyr)r)rrs  rfinalizez Bunch.__init__.<locals>.finalize(s

r)rrQr	DummyListstartedfinishedr	_can_exitrcrRrtaskrrrWrjr
_finalizer)
rp	namespacerrQrwait_before_exitrrUrrs
          rrzBunch.__init__s	
	 **,!++-
"*NN q	A!!!3AAH
GGINN1			"**47Crcxtj}|jj|	|j|j
|jj||jjdy#|jj||jjdwxYw)N)	rBrrrWrrQrrrrprs  rrz
Bunch.task.siikC 	+DFFDIIMM  %NN#
MM  %NN#sB8B9ct|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)rrcrs r	do_finishzBunch.do_finish@src$|jyr)rrs rr zBunch.closeCsrNr)	rurvrwrrrrrr rZrrrrs&D8+rrceZdZdZdZy)
AppendTruec||_yr)r")rpr"s  rrzAppendTrue.__init__Hs	rc:|jjdyrG)r"rWrs rrzAppendTrue.__call__JsrNrrZrrrrGsrrceZdZ	dZdZdZdZdZdZe	dZ
ddZd	Ze	d
Z
dZe	dZd
Ze	dZdZe	dZdZe	dZdZe	dZdZe	dZdZdZe	dZdZy)_TestBarrierrg>@c\|j|j|j|_y)Nr)BarrierrwdefaultTimeoutbarrierrs 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)rrwrr )rprrQrs    rrun_threadsz_TestBarrier.run_threadsdsE$4*	
tH
!
GGIAGGIsAAc|j}t|D]J}|djd|j|djd|jLy#t$rYywxYw)NrTr)partiesrRrWrr)rrresultsrmrUs      r	multipassz_TestBarrier.multipasslskOOq	AAJd#LLNAJd#LLN
		"		s&	A21A2c	|j|jg}|j|j|j||fyr)rrrr)rppassesrs   rtest_barrierz_TestBarrier.test_barrier}s@	>>#T^^%56$,,)HIrc&	|jdSr{)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
		#rc8	|j}|j|j|j|ft	|j
Dcgc]}|j
}}|j|jddt|ycc}wr)
rrrrrRrwrrkcountr#)rpr"rUrs    rtest_wait_returnz_TestBarrier.test_wait_returnsz	

11DLL%3HI(-dff
61599;66q)1-E7sBcL|jt|dk7rtyr)rrr3)rrrs   r_test_action_fz_TestBarrier._test_action_fs"w<1rc	|j}|j|jt|}|j	|j
||f|j
t|dy)N)rr)rrrwrrr
rkr)rprrs   rtest_actionz_TestBarrier.test_actions_	..",,tvvj.A,B,,w.@AWq)rc 	|j}||jdzk(rt|j|jdy#tj
$r|jdYyt$r|j
YywxYwNrT)rrwr3rWrBrokenBarrierErrorr)rrresults1results2rUs     r
_test_abort_fz_TestBarrier._test_abort_fsn		ACEE1H}""LLNOOD!++	"OOD!	MMO	sA	A$B
2B
B
ch	|j}|j}|j|j|j||f|j	t|d|j	t||jdz
|j|jjyr)	rrrrrkrrwrbroken)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)NrrrtT)	rrw	n_waitingrr
resetrWrr)rrrrresults3rUs      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yr)rrrrrkrrw)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rwr3rWrrrr)rrbarrier2rrrrUs       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||jyr)rrrwrr"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rwrr
rrrWrrrrUs    r_test_timeout_fz_TestBarrier._test_timeout_fsYLLNq=JJsO	!LL++	!NN4 	!sA$A21A2c	|j}|j|j|j|f|j	t||jjyr)rrr(rrkrr)rprs  rr4z_TestBarrier.test_timeoutsR	.."--g/FGWt||';';<rc|j|j}||jdzk(rtjd	|jy#t
j$r|jdYywxYw)Nrr&T)rrrwrr
rrrWr'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)Nrr)rrwrrr+rkrr)rprrs   rtest_default_timeoutz!_TestBarrier.test_default_timeout#s^	,,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)rRrr)rrrconnr^rUs      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)rrrrYrrRrwrr2rrrbrrkr)rprr^r1rjrrUs        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)rurvrwrwrrrrrrrrrrrr
rrrrrr"r$r(r4r+r-r/r2r6rZrrrrNs	
ANI "" J%
*


-"0*
0!!=!!8
1rrc	feZdZdZdddddededfgZd	Zed
ZddZ	dZ
d
Zy)
_TestValuer)rUii^)dg
@g)hi)rrxyc4ts|jdyyNz%requires multiprocessing.sharedctypesrrrs rrz_TestValue.setUpXMMAB rcTt||jD]\}}|d|_yrp)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)rFRawValuerrErkrrrrrr)	rprawcoderrrGrHrIrs	         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)rL)rNrs 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)NrUrr^Fget_lockget_objnavalue)
rrTrUrYrkrr6rlrDrK)
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)rurvrwrrrFrrrrNrQrbrZrrr8r8LsW"M		eCj%*%
LC
.&"3rr8ceZdZdZedZejedudd	dZ	ejeduddZ
ejeduddZejeduddZy)

_TestArrayrc^tdt|D]}||xx||dz
z
cc<yr)rRr)rseqrUs   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?rUrrr	)rrrrararrT)RawArrayArrayrkrrarrayrrrrr)rprLrfarrrs     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)Nr5rrUr)rRrkrkrr)rpsizerrms    rtest_array_from_sizez_TestArray.test_array_from_sizes
q	A**S$'CSXt,T#Yd
32YCFT#YU2Y8
	rc(|jdyrP)rnrs 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)NrUr5rSFrTrUnotalock)rkrrRrTrUrYrkrr6rlrDrj)
rparr1rXrYarr2r[r\r^arr3r^r_r`ras
             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)
rurvrwrrrrFrxr<rnrqrsryrZrrrdrds"MX__Ud]$67,8,0X__Ud]$678X__Ud]$67"8"X__Ud]$67383rrdc@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)Nr5rr)rrra)
rrrrrarrrrrar)rrrrrarrrrrarr)
rrrrrarrr	r	rr)rrrrrarrr	rr~r)rrRrkextendrW)rprrr9relementrs       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)Nr5r(r)rrRrrknext)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)rrRrkpoprrW)rp_irinnerrUrs      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.0rUs  r	<genexpr>z,_TestContainers.test_dict.<locals>.<genexpr>+	s'ECF'Es)
dictrrRrrkrsortedkeysrGr)rpr9indicesrUs    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)
rrrRrrrkrrlr3r)rpr9rrUrs     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)ferretshamstersr5r)waterfeed)petssuppliesrrrblanketsr	rrrrrmarmotsXcrAr)rrkrrrr)rprrr9louters      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{)rrWrrrkrrrs   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_hiddenrkrnrr6)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)rr
rEr4s 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)rrR)totalwhenrUs   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)rrrr
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)Nr5r(r	chunksize)rmaprkrrrR)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)Nr5r~rAr(rrr)rstarmaprrErRrkrr)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)
rrErRrkr
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_asyncrrrRrrrs 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)rrrrrrHrWr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 pickler2rs rrz5_TestPool.test_map_unplicklable.<locals>.A.__reduce__	s
"?33rNr9rZrrAr	s
4rrr5)	rrrr;rlr3rrr)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)rrrrr
r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)	NrrrrAr5rceZdZdZdZdZy)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_asyncrr
r|rrkrrrprrs   r
test_asyncz_TestPool.test_async	
sPii##C!X8CGG$#$$S[[(;rc|jjtdtdzf}t	|j
}|j
tj|t|j|jty)Nrr&r)rr	rrr|rrlrrrrr
s   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|jyNr5r4r(r)rimaprrrRrkrrrl
StopIterationrrprrUs   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)NrrrrAr5rrr	rrra)
rrrrrrrrlrrrRrkrrs   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_unorderedrrrRrkrr)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)
NrrrrAr5rrr	r)rrrrrrrrlrrrrrRrrmr)rprexpected_valuesrUrs     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)
rrrr
rRrr|r
assertLessr)rprUrXrs    rrAz_TestPool.test_terminatew
su$$JJeEl33q%	
		TYY^^,c*
4s	B!
c|jd}|j|jtgg|jt	|jtgg|jt	|j
tgg|j|jtgjg|j|jyr)rrkrrrrrrrr rrNs  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)Nrr5r)rrrRrrrrkrrrlrE)rpLrUrYrrs      rtest_contextz_TestPool.test_context
s99#U2YA()*1A*H*1
4KKQ'  (3
4
FFHj!++sA>$*
4
4sC
7C		Cctd)Nrr2r*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*rirhrrnrr3rkrQ	__cause__rrRemoteTracebackrmtbr<rr=ry
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)NrRr2r*s r_test_wrapped_exceptionz!_TestPool._test_wrapped_exception
s
5!!rc|jd5}|jt5|j|jddddddjy#1swY"xYw#1swY&xYwr)rrlr3rr7rrNs  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?)rrrlrErrrr
r 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)Nr5c3*K|]}|
ywrrZ)rros  rrz3_TestPool.test_release_task_refs.<locals>.<genexpr>
s1bRT1sr)rRrrjrkrrrrlrmrr
rMrkrcr)rprUobjsorefss     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)NrrErz%unclosed running multiprocessing pool)rrrrrrrRUN_stater
check_warningsResourceWarningr
gc_collectrFs  rtest_resource_warningz_TestPool.test_resource_warning
s99	!MM:;yy|		&**..

+
+8/JL	!D 	!	!	!sB,,B5)"rurvrwrrrrrrrrrrrrrr
rrrrr rAr$r(r*r5r7r9r=rCrGrN
__classcell__rs@rrr	s  =
;??
:8)L54<<654H".H
+
?  $L""<(
7 !rrctd)Nkey)KeyErrorrZrrraisingrTs
5/rcdS)Ncy)N*rZrZrrrz%unpickleable_result.<locals>.<lambda>rrZrZrrunpickleable_resultrYsrceZdZdZdZdZy)_TestPoolWorkerErrorsrcHtjd}dgfd}|jt|}|j	t
|j|jd|jdt
|j|jy)Nrc|d<yrrZr2
scratchpads rerrbackz@_TestPoolWorkerErrors.test_async_error_callback.<locals>.errbacksJqMrrr)rrr	rTrlrSrrrr 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.poolrdrrrRr	rYrlrrrassertIsNotNoner2rr 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)Nrr5maxtasksperchildr(2c3<K|]}|jywrr)rrs  rrzD_TestPoolWorkerLifetime.test_pool_worker_lifetime.<locals>.<genexpr>Qs#BQAJJL#Br)rrrkrrrrRrWr	r	enumerater_repopulate_poolallrr
rMrr!rr r)
rprrorigworkerpidsrrUr5r	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?)rrrRrWr	rr rrtrkr)rprrrUr5rs      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_okrkrpcmdrgoutrqs     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{)rR)rUs 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_processrr7r?rprs  rtest_mymanagerz_TestMyManager.test_mymanagersU-=>

G
	


g&&//!fnn_1EFrctt}|5|j|ddd|j|jj
dtjfy#1swYAxYwr)rrrrmrrr7r?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)rrrrrrrrr5)rrrr6rkrrlrErrrrrrR)	rprrRbarrr+foo_methodsbar_methodsrUs	         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_queuersMrceZdZy)QueueManagerNrrZrrrrs.rrrceZdZy)
QueueManager2NrrZrrrrsJrr	xmlrpclibc8eZdZdZgdZeddZedZdZy)_TestRemoteManagerr|)hello worldNT@uhallå världenuпривіт світs
hall vrldenNct||tt}|j|j	}|jt
|jy)Nrr
serializerr)r
SERIALIZERrconnectrrrrGrrrrr"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)rBurandomrrHOSTrrrrbrrrrrrrrrkrrXrlrhrrr
)rprrrmanager2r"s      rtest_remotez_TestRemoteManager.test_remotes**R."''+W-/	

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

;
r)	rurvrwrrGrXrrrrZrrrrs0 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 rrrrrrkrr6rrbOSErrorerrno
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 )rr1msgs   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)rrNrr5rUrarrrr	z(                                        zexpected BufferTooShort, got %sFrAr.Xi)(rrrrrrrlrrRrrkrfilenorHrrrrrrecv_bytes_intoitemsize	bytearrayrirBufferTooShortrQr|rrrr
rr
rr readablewritablerlEOFErrorr)rpr1rrrfrlongmsgrmbufferrYrrrreally_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)rpr1rrrs     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}~wwxYwrX)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)rRrrBdup2rrrecv_handlemsvcrtopen_osfhandlerr+r )rr1datacreate_dummy_fdsrUrs      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	rrrbrrrrrr
get_osfhandlersend_handlerrrkr)rpr1rrrrs      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Trsbarrr
r9z2could not find an unassigned large file descriptorr)rrrrr	rrrbrrrrrrRMAXFDrrirBrrrrr rrkr)rpr1rrrrnewfds       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+rrpr1s  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)rrrrrrrrlr3rrrrpr1rrs    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_REDUCTIONrrxryrzrr6rBrrrr(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)
connectionfamiliesListenerrbr 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#1swYRxYwrr(r*Clientracceptrrkrrrlr)rprrr9s    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-)rprclientr9s    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_supportedr2rZrrr$r$a
s="M11X88=?8?8rr$c2eZdZdZedZdZdZdZy)_TestListenerClientrc||jj|}|jd|jy)Nr)r(r.rr )rrr1s   rrz_TestListenerClient._test
s+~~$$W-		'

rc|jjD]}|jj|}|j|j|j
f}d|_|j|j}|j|jd|j|jy)Nr&rTr)
r(r)r*rrrrrr/rkrrr )rpr'rrr1s     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*rrrrrrr
r/rkrr r)rprrr1s    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.rr/rrrr )rpfamrrrs     rtest_issue16955z#_TestListenerClient.test_issue16955
s??++	C(((4A&&qyy1A
A
LL"OOAFF1I&
GGI
GGI
GGI	rN)	rurvrwrrrr8r:r>rZrrr5r5
s(,M
	 	rr5cXeZdZdZdZedZdZedZdZ	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.)rr
rr )rr1stringsrs    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<rabrsbyersloprrs)	rrrFrrRrrrkr)rprErrrrrUr>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)rrrMrrr
rr rrmr)rpr'rrr&r"s      rtest_boundariesz_TestPoll.test_boundaries
syy1LL 6 6aTLB		

1

y!	C
LL				

allna(rcj|jd|jd|jdy)NrHrIcd)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.rrHr&TrIrQ)rrkrrrRrrr)rprrrs    rtest_dont_mergez_TestPoll.test_dont_merge
s'yy{1e,e,LL 6 6aTLB		.d+d+.d+d+d+/	rN)rurvrwrrBrrFrKrMrOrRrTrZrrr@r@
sW,M)

)
rr@r
c\eZdZdZedZedZedZdZedZ	dZ
y)	_TestPicklingConnectionsrcPddlm}|jtjy)Nr)resource_sharerr)rrXrrr)rrXs  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*rrr/r socket
create_serverrrgetsocknamer)rr1r)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 rZrsendall)rr1rrr1s     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 rarrrrkrrrWr)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 )rr1rr'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)NrTFrrlfoobarfoobarfoobar)
rrrmrrr rrkrr)rpr1rrr'rs      rtest_accessz$_TestPicklingConnections.test_accessls 99;jLL 1 1
LF		yyy&1		!		=1		yyy&1		!			x		j1	rN)rurvrwrrrr^rarjrmrqrZrrrVrVsb#M;;$,\		rrVc8eZdZdZfdZfdZdZdZxZS)	_TestHeaprct|tjjj
|_tjjtjj_yr)rrrrr_heapold_heapHeaprprs rrz_TestHeap.setUpsH

',,::@@
3B3G3G3L3L3N**0rct|jtjj_t
|yr)rvrrrrurrrxs 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)
Nrprrr4freeoccupiedc34K|]}|jywrrp)rarenas  rrz&_TestHeap.test_heap.<locals>.<genexpr>s F Fsr)rrrru_DISCARD_FREE_SPACE_LARGER_THANrRrHrandomlognormvariaterWr	randrangerr_len_to_seqrG_arenasindex_allocated_blocksrrksumsortrpshuffler_n_frees
_n_mallocs_pending_free_blocks)rp
iterations	maxblocksblocksrrUrprrvr|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)Nr5r{r)rl	isenabledenablerbdisable
get_threshold
set_thresholdrRrrrbuddy)rp
thresholdsrUrrs     rtest_free_from_gcz_TestHeap.test_free_from_gcs||~IIKOOBJJ'%%'
((6:6
t	A$$2215A$$2215AAGAG	r)	rurvrwrrrrrrOrPs@rrsrss"MO>3@rrsc"eZdZdefdefdefgZy)_Foor>r?zN)rurvrwr<r=r>_fields_rZrrrrs	e	h	j
Hrrc:eZdZdZdZedZddZdZdZ	y)	_TestSharedCTypesrc4ts|jdyyrArBrs rrz_TestSharedCTypes.setUprCrcL|xjdzc_|xjdzc_|xjdzc_|xjdzc_|xjdzc_|xjdzc_tt	|D]}||xxdzcc<yrp)rr>r?rRr)rr>r?rrRrmstringrUs        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)NrUr	rSgUUUUUU?r<rrr9r5rrrrTgUUUUUU?r=r@
hellohello)rr=r>rrkrrRrrrrrrrrkrr>r?)
rpr^r>r?rrRrmrrrUs
          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)NTrS)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)rprRrs   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SharedMemoryrirr )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_tsmbTcreaterprWrrrFr,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)rrrrbrrkr+r2rprrirmrnr 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)rFrrrrrrrrbrrkr)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)rRpickleHIGHEST_PROTOCOLrrrrbrridumpsloadsrrkr+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)
rRrrrrrrirr 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)rrrbrrrr+rrrrkrrir )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
ShareableListrRrBrCrrr7rrlrrr)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)Nr~rrr5rrr+r1howdy)rrrrlrErrrRrrshmr+rkrr2rirryrzr)rpsmm1rUlolr5lomdoppleganger_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)r
HoWdYgX9vqr(NTrWr	rrr
z8s8sdqxxxxxx?xxxxxxxx?qignore100r(rrTrWsomeraz8s8sdq8sxxxxxxx?qzexceeds available storagezfar too manyuencodésrru	encodéess	123456789sadiostest03_duplicaterMrAiprany)rrrbrrrmr+rnrrl
IndexError_get_packing_formatrkrrwarningscatch_warningssimplefilterrErrrSr
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)Nrrr5rrAr~changedranewvalueri)rRrrrrrrbrrrrrrkassertIsNotrr )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)Nrrr5r)
rRrrrrrrrr rrlrr)rprrr0s    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)
subprocessPopenryrPIPErreadlinestripdecoderr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)rurvrwrrLrrrrrrrrrFrxrBr+rrrr+r4r6rCrZrrrr4s#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)rlrmrrrGupdaterHrs 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>.FooNrrZrrrrMFrr)rr)r)r)d10r)rQexitpriority)d01r)d02)d03)ri)STOPi)
r;rFinalizerrlrm_exit_functionr rB_exit)rr1rrrclose_brrOrQrRrSs           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)NrTrT)rrrOrSrRrQr)	rrrYrrrrrrk)rpr1rrr"rXs      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()rP)rkrrUrrandint)rpr^s rrz6_TestFinalize.test_thread_safety.<locals>.Foo.__init__~s%

dBV^^As5KLrN)rurvrwr)r^srrra}s	
MrrFcsCtjtjdz	tjsByy#t
$r}|Yd}~d}~wwxYwrD)rr
rr_run_finalizersrh)rr2finishs 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)Nr5r)rRrgetrandbitsrhr)r9rUrrr2rfs   rmake_finalizersz9_TestFinalize.test_thread_safety.<locals>.make_finalizersseA@ERy/I!/IAf((+,	0J CGGIIs'
AAAA	A*A%%A*gư>rrrT)r;rygetswitchintervalrlrsetswitchintervalrrrr	
start_threadsrr
rm)
rprgrjold_interval
old_thresholdrrr^r2rfs
      @@@@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)rurvrwrrrrrYr[rrrprZrrrErE7sM"M)>
%%N	NWu%4&4rrEceZdZdZdZy)_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__rescapesplitextsplitrrW)rprtfolderpatternfilesrmodulesrs        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 )r~ryrzrr"r<r.r}rr6r)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)rurvrwr~rrZrrrrrrs	rrrc,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)rr1rs   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
yrD)rr
rBrCr7SIGUSR1)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)
rBrr7rrrrrr
rrrkr)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)rurvrwrrrrFrr6r7rrZrrrr#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)rurvrwrFrxWIN32rrZrrrrEs$X__U01E2ErrceZdZdZdZy)	OtherTestcGddt}|jtjtjj
|dy)NceZdZdZdZy)FOtherTest.test_deliver_challenge_auth_failure.<locals>._FakeConnectioncy)Nsomething bogusrZrprps  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}rcr)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<rNs  rtest_pool_initializerz&TestInitializers.test_pool_initializersa)_%9%9qI  K$''<			q)rN)rurvrwrrrrrZrrrrs
*rrc\	|jd}y#tj$rYywxYw)NF)block)rrr)ritems  r_this_sub_processrs-
uu5u!==

s++ctj}tjt|f}d|_|j|j
yrL)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)rrWrs  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)rrrrrrNs  rtest_pool_in_processz/TestStdinBadfiledescriptor.test_pool_in_processs$##?;			rctj}t|jdt	j
fd}j
y)NrRc$jSr)r)flikesrrz:TestStdinBadfiledescriptor.test_flushing.<locals>.<lambda>s
ekkmrr)rrrr+rrr)rpsiorr
s   @r
test_flushingz(TestStdinBadfiledescriptor.test_flushings=kkm3
E&&.CD

rN)rurvrwrrrrZrrrrs

'rrceZdZedZd
dZedZd
dZdZdZ	e
jddZed	Z
e
jdd
ZdZy)TestWaitctdD]S}|r*tjtjdz|j	|tjfU|jy)Nr5r.)rRrr
rrrBrr )rrslowrUs    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)rrUrrxs   rrz%TestWait.test_wait.<locals>.<genexpr>'s%GGA1aee*G*Gs"r5)multiprocessing.connectionrrRrrrrrrr rWrbrrrrrrrk)rprrreadersmessagesrUr'rrrrYrxs           @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)Nr5r.%s
rc)	rZrrRrr
rr`rr )rrrrrUs     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:9sr5rcr)rrrZr[rrr\rRrrrrrrWrbrr/r rrrrGrk)rprrrrrrxdicrUrr'rrrYvs               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&|jdyrG)rrs rtest_wait_slowzTestWait.test_wait_slowWstrc&|jdyrG)rrs rtest_wait_socket_slowzTestWait.test_wait_socket_slowZsd#rrqcddlm}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rYrrrrr3s        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
)rrjperiods   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)rTrs rrz>TestWait.test_wait_integer.<locals>.<lambda>.<locals>.<lambda>s
BqEr)rR)r)rs rrz,TestWait.test_wait_integer.<locals>.<lambda>s
F1/:rrrrrr%)rrrrmrrr)rrrarHrrZrrrkr"r;rrr)rprrYsorted_rjrrrrrr3s           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)rurvrwrrrrrr!r#rrr&r)r.r0rZrrrrs-<!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.piper4rs rtest_invalid_family_win32z+TestInvalidFamily.test_invalid_family_win32s>


z
*	B&&//0@A	B	B	Br6N)	rurvrwrFrxrr5rr8rZrrr2r2sIX__U01=2=X BCBDBrr2c2eZdZedZedZdZy)	TestFlagscT|jttjyr)rrryflagsrr1s  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)jsonrrNrrr>r#r$DeprecationWarningrrrr rryr<printr)	rrSrAmpr'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()r8z-Sz-Orrc)
rArrPr:check_outputryrrr?rk)rprAprogrchild_flagsrEs      r
test_flagszTestFlags.test_flagssz
&&5&F&F&H%K1
N	
&&
^^T4tT:<(,

4;;w3G(H%%&67rN)rurvrwrr>rFrLrZrrr:r:s-$$!!
8rr:c"eZdZedZdZy)TestTimeoutsctjd|jd|jtj
j
|}|jd|jy)Nrrr)rr
rr rr(r.)rchildrr1s    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)rZgetdefaulttimeoutsetdefaulttimeoutrrr(r*rrQrrr rkrr/r&)rpold_timeoutparentrPrrr1s       rr4zTestTimeouts.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)rurvrwrrQr4rZrrrNrNs2rrNceZdZdZy)TestNoForkBombctj}tjj	tjjtd}|dk7rStjjj||\}}}|j|d|jd|ytjjj||\}}}|j|jd|j|dy)Nzmp_fork_bomb.pyrgrsRuntimeErrors123)rrPrBrrrurvr<rrassert_python_failurerkrmrr)rprvr+rgrrqs      rtest_noforkbombzTestNoForkBomb.test_noforkbombs

-
-
/ww||BGGOOH57HI
<<<55KKDRTULBSS#&MM/3/<<55FFtRPLBSSZZ\62S#&rN)rurvrwr\rZrrrYrYs
'rrYc"eZdZedZdZy)TestForkAwareThreadLockc"|dkDrRtj|j|dz
|f}|j|j	t|n(|j
ttj|j	y)Nrr)
rrrPrr r&rrr_afterfork_registry)rrr1rs    rrPzTestForkAwareThreadLock.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)
rrrForkAwareThreadLockrr`rrPrr rr&assertLessEqual)rpr'rrold_sizernew_sizes       rr_z!TestForkAwareThreadLock.test_lock,s##E*1$$&t//0##4::QFC				668QXx0rN)rurvrwrrPr_rZrrr^r^s
	1rr^c.eZdZdZdZedZdZy)TestCloseFdsc8tr"tjjStjj}g}|dkr,|j|t	j
|}|dkr,|D]}t	j||S)Nrp)rrZdetachrWrBdupr )rprto_closer>s    rget_high_socket_fdzTestCloseFds.get_high_socket_fd=s==?))++'')BHr'#VVBZr'

IrctrCtjtjtj|j	ytj|y)N)r)rrZrSSOCK_STREAMr rB)rprs  rr zTestCloseFds.closeOs3MM&..&*<*<RHNNPHHRLrc	tj|tjtj}|j	|jdy#t$r}|j|Yd}~yd}~wwxYwr)rZfromfdrSrnr rrh)rr1rrrs     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"rFrGrrrlrrqrr rr&rPrnrrrrrwinerror)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)rurvrwrlr rrqrurZrrrgrg;s%$:rrgceZdZeej
ejZedZ	e
jee
dddZedZe
jee
dddZy)TestIgnoreEINTRcd}tjtj||jd|j}|j||j	d|j
zy)NcyrrZrframes  rr4z-TestIgnoreEINTR._test_ignore.<locals>.handlerr_rreadyx)r7rrrr
CONN_MAX_SIZE)rr1r4r>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 rkrrr
rBrCrr7rrrr~rrs    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)NcyrrZrzs  rr4z6TestIgnoreEINTR._test_ignore_listener.<locals>.handlerr_rwelcome)r7rrr(r*rrr/)rr1r4rrs     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 rrr
rBrCrr7rr(r.rkr)rpr1rrrr1s      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_SIZEr~rrrFrr6r7rrrrZrrrwrw}s--w/D/DEM22X35GHI,X35GHIrrwceZdZedZdZdZdZdZdZ	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)	rrNrErkrPrnrlrjr)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)rrNrErFrGrSrset_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)rrPRELOADrPrjrErkrNrrrulowerrrrr2)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_methodsryrzrkr)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)rrPrrBrrrurvr<rrrr?rrCri)rpr+rgrrqs     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)
rrNrrr#rSr3rrr)rpprocess_methodr"process_ctxrrB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	|jyrQ)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)
rrrrrrrrWrrk)rpr"r%rs    rtest_nested_startmethodz'TestStartMethod.test_nested_startmethod0s %%'!))1L1LTYS[\

++-NN599;'++-	
1a&)rN)rurvrwrrrr(rrrrrFrxryrzr[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,noopr8r)rr,)pass_fdsrrT)rrczA 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;ryrrr<r rr=rr?r-rrrr@rrrmrENOENTEINVALrrr)rprr,r'rrrname1name2rBrrrqrYs              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_trackerrrrBrCr7rDrwait_processr#r$r%rrr
rrNrmrZr[rjrkrlrmrrkrr
issubclassr@UserWarningrnr)
rpr
should_dierrrsall_warnrjrothe_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|jtjdyrC)rr7rrs rtest_resource_tracker_sigintz0TestResourceTracker.test_resource_tracker_sigints))&--?rcD|jtjdyrC)rr7r?rs rtest_resource_tracker_sigtermz1TestResourceTracker.test_resource_tracker_sigterms))&..%@rcD|jtjdyrG)rr7rDrs rtest_resource_tracker_sigkillz1TestResourceTracker.test_resource_tracker_sigkills))&..$?rcddlm}|j|jd|fv}||j	z}|j|y)Nrr)rrrr_check_aliver)r1rrreuseds    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)rurvrwrrrrrrLrrrrZrrrr@sAEPN#3J@A@4$Errc`eZdZedZdZdZejjdZ
y)TestSimpleQueuec|j	|j|j|j|j|jy#|jwxYwr)rrrrcrs    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)rSimpleQueuerrrrrrrrcrrrkrr)rpr"rrrs     r
test_emptyzTestSimpleQueue.test_emptys++-)//1-335&&##*=>


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



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



,,-

,,-rN)rurvrwrrrrpr<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+rrrW)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 rrz\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)rurvrwrrrrr)rrsrFailingForkProcessrs
.
'
(
+
Krrrr)r)contextc3<K|]}|jywrrr)rr%s  rrzITestPoolNotLeakOnFailure.test_release_unused_processes.<locals>.<genexpr>:sCw  "Crs)rSrrrrrFr	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$ErrceZdZ	ejj
ZdZdZe	dZ
e
ZdZdZ
e	dZdZe	dZd#d	Ze	d
Zd#dZe	dZd$d
ZdZe	dZdZe	dZdZe	dZdZe	dZd%dZdZe	dZ dZ!e	dZ"dZ#e	dZ$dZ%e	dZ&dZ'e	d Z(d!Z)y")&TestSyncManagerTypescp|j|_|jjd|_yr)
manager_classrrrrs rrzTestSyncManagerTypes.setUpVs)))+	rc|jN|jjr4|jj|jj|jjd|_d|_yr)rrrrrrrs 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_TIMEOUTrrrr@rrrenvironment_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/rcf|j|j|jdyNrt)rrrr"s  rrz TestSyncManagerTypes._test_events!	
		rc|jj}|j|j|j||jdyr)rrrcrrrrprAs  rrzTestSyncManagerTypes.test_events<LL 	((!,	u
rc$|jyrrZrs  r
_test_lockzTestSyncManagerTypes._test_lock
rct|j|}|j|j||j	|jt|jyr)rrrrr[rlr3rplnamerAs   rr_zTestSyncManagerTypes.test_locksF(GDLL%(*+			,		2rcD|j|jyrrZr[rs  r_test_rlockz TestSyncManagerTypes._test_rlock

rcrt|j|}|j|j|yr)rrrrrs   rrbzTestSyncManagerTypes.test_rlocks+(GDLL%(*((!,rc$|jyrrrs  rrkz$TestSyncManagerTypes._test_semaphorerrct|j|}|j|j||j	yr)rrrrkr[)rpsnamerAs   rrnz#TestSyncManagerTypes.test_semaphores4(GDLL%(*,,a0			rc(|jdy)Nrq)r#)rnrs rrrz+TestSyncManagerTypes.test_bounded_semaphores"45rcD|j|jyrrrs  r_test_conditionz$TestSyncManagerTypes._test_conditionrrcp|jj}|j|j|yr)rrrr&rs  rtest_conditionz#TestSyncManagerTypes.test_conditions(LL""$,,a0rc$|jyr)rrs  r
_test_barrierz"TestSyncManagerTypes._test_barriers
			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*+rcyrrZrs  r_test_queuez TestSyncManagerTypes._test_queuerXrct|j|d}|jd|jd|j|j|y)Nrrr)rrrrr1)rpqnamerAs   r
test_queuezTestSyncManagerTypes.test_queuesC(GDLL%(+	a	a((!,rc&|jdy)Nr%)r4rs 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)rrrWrr;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)NrrRr)rRr)rFr8rkrrassertListEqualrrrrGassertDictEqualrassertTupleEqualpopitemrr"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)NrrRr)rrrrCrgrkrrs  rrzTestSyncManagerTypes.test_dictsQLL%+QQ#rctj}|j|jd|j|j	d|jdy)Nrr)rFr8rkrrrcrBs   r_test_valuez TestSyncManagerTypes._test_valuesE  "A&A&
rc|jjdd}|j|j||j	|j
d|j	|j
dy)NrUrr)rrrrFrkrrrs  rrNzTestSyncManagerTypes.test_valuesVLLsA&((!,!$!$rctj}|j|dd|j|dd|jt|d|j	t|ddgy)Nrrr)rFr8rkrr>rrBs   r_test_arrayz TestSyncManagerTypes._test_arraysd  "Q#Q#S1%T#YA/rcx|jjdddg}|j|j|y)NrUrr)rrkrrIrs  rrnzTestSyncManagerTypes.test_arrays0LLsQF+((!,rctj}|j|jd|j|jdyr)rFr8rkr>r?rBs   r_test_namespacez$TestSyncManagerTypes._test_namespace s8  """rc|jj}d|_d|_|j	|j
|yr)rrr>r?rrLrs  rrz#TestSyncManagerTypes.test_namespace&s6LL""$,,a0rNrd)rm)r)*rurvrwrrrrrrrrrrrrrrr_rrbrkrnrrr&r(r*rr-r/r1r4r6r;rrCrrFrNrIrnrLrrZrrrr=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)rrrbrrr+textwrapdedentrrrr?)rprrrgrrqs      r test_global_named_resource_spawnz2TestNamedResource.test_global_named_resource_spawn.s!!	((&1
&#
0
	A
GGHOO	%		

	%55f=C	
#**W"56
	
	s%B((B1N)rurvrwr[rTrZrrrOrO-s !78797rrOc.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
rrrQ)rrrkrr?)rprgrrqs    r,test_spawn_sys_executable_none_allows_importz9MiscTestCase.test_spawn_sys_executable_none_allows_importMsQ%55
F
C	
Q#**W"56rN)rurvrwr\r[r^rZrrrVrVGs"F
!!<=7>7rrVc,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<rrMrcrr%rbrcr	r
r)rrrs   rrzBaseMixin.tearDownClassjs	
!//99:Sa=QQ	/3DLL,!!$8"DE	i))*Sa-AA/3DLL,!!$6wi"@ArN)rurvrwrrrrZrrr`r`ds(44rr`ceZdZdZej
ZejZeejZeejZ	eejZ
eejZeejZeejZ
eejZeejZeej Zeej"Zeej$Zeej&Zeej(Zeej*Zeej,Zeej.Zeej0Zeej2Zeej4Zy)rrN)rurvrwrrrr(rLrrrrrrrr%rYrarmrqrrrrrkrKrjrZrrrr}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:)rrrrr@rrrr	r
rlrmr_number_of_objectsr<_debug_inforrrr)rr6rrrrs     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%rYrarmrqrrrrrkrrrrrrrrOrPs@rririsD%%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  rriceZdZdZej
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(rLrrrrrr%rYrarmrqrrrrrkrZrrrrrrstD##++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5Errrc	|d}t}hd}|jD]\}}t|tst	|t
r|t
ur1|jD]}	|r|	|k7r|rd|	jz|ddz}
||	jdz}Gdd||tj}|	dk(rtjd	|}|
x|_|_
||_|||
<t	|tjs|rGd
d|t}|x|_|_
||_|||<ddgdgfd}
fd}|
|d
<||d<y)Nru>rrrWithrMixinceZdZy*install_tests_in_module_dict.<locals>.TempNrrZrrTemprysrrzrrceZdZyrxrrZrrrzz*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%_cleanuprbrrrPrjrErFrGryrzrrarrJrget_temp_dirrrr)r^rcold_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)	NFrTrererrfr)r<rrMrrjrcr%rbr	r
rrr
r_cleanup_tests)
need_sleeprrrcrs   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)globalsrrrrrr
capitalizerFr8rrequires_hashdigestrurwrvr;)remote_globsrS	only_type
exclude_typesrvlocal_globs	ALL_TYPESr+basetype_newnamervrzrrrcrs `             @@rinstall_tests_in_module_dictrsj)J)K3I!'')&
d$%dL)|#++

-)!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 availabler}z
Linux onlyceZdZdZy)SemLockTestscGddtj}dtj}|ddd|d}tj	|y)NceZdZy)3SemLockTests.test_semlock_subclass.<locals>.SemLockNrrZrrrrNrNrrztest_semlock_subclass-rrr5F)rrrBr
sem_unlink)rprr+rs    rtest_semlock_subclassz"SemLockTests.test_semlock_subclassMsG	&..	'		}5Aq"dE*##D)rN)rurvrwrrZrrrrIs*rrrrC)rF
unittest.mockr"rrRrrrryrBrlrrWr7rlrZrrr:rrorrrjr#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-rrrMrr
rrrrrr
HAVE_GETVALUErzrr7rCrrctypesr;r<r=r>r;rJr[r8r]r|rrrrrrrrrrrVrgrurrrrrrr8rdr{rrrrrrErrrrTrYr[rlrrrrrrrrrrrrrrrrrrrrr$r5r@rrVrsrrrrErrrrrrrrrrrrrrrrr2r:rNrYr^rgrwrrxrrrrrOrVr`rrirrrr6rrZrr<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_;:_;>`	`	`
`'&`'