
    hV3                       S SK r S SKr S SKrS SKrS SKrS SKrS SKrS SKrS SK	r	S SK
r
S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKJr  S SKJr  S SKJr  S SKJr  S SKJ r   S SKJ!r!  S SKJ"r"  S S	KJ#r#  \RH                  " S
5      r%\RH                  " S5        S SK&r&S SK'r(S SK)r'S SK*r'S SK+r'S SK,r'S SK-r'S SK.r'S SK)J/r/J0r0  S SK'J1r1   S SK'J2r2  \2Rf                  r4 S SK6J7r7J8r8  Sr9 S SK'J:r:  Sr; S SK<r<\=" \S5      (       a#  \R|                  (       a  \ R~                  " S5      e\@" SSS9rA\	R                  R                  S5      (       a  SOSrDSrES rFS rGS rH\	R                  S:X  a	  S SK'JJrJ  S rK\1R                  rMSrNSrO\O(       a  S u  rPrQrROS!u  rPrQrR\R                  rTS"rU\V" \%S#S5      (       + rW\R                  S$:H  rYS% rZ \	R                  " S&5      r\S(S)/r] S S*K^J_r_J`r`JaraJbrb  S+ rdS, re " S- S.\ R                  5      rg " S/ S0\c5      rh " S1 S2\c5      riS3 rj " S4 S55      rk " S6 S7\i5      rl " S8 S9\(R                  5      rn " S: S;\i5      roS< rpS= rq " S> S?\i5      rr " S@ SA\i5      rs " SB SC\i5      rt " SD SE\i5      ru " SF SG\i5      rv " SH SI\c5      rwSJ rx " SK SL\c5      ry " SM SN\c5      rz " SO SP\i5      r{ " SQ SR\i5      r| " SS ST\i5      r} " SU SV\i5      r~SSW jrSX rSY rSZ r " S[ S\\c5      r " S] S^\5      rS_ r " S` Sa\i5      rSb rSc r " Sd Se\i5      r " Sf Sg\i5      rS ShK,JrJrJr   " Si Sj\c5      rSk r " Sl Sm\5      r " Sn So\5      r\GR'                  Sp\Sq9  \GR'                  Sr\SsSt9  \GR'                  Su\\Sv9   " Sw Sx\i5      r\GR*                  " 5       rSy r " Sz S{\5      r\GR'                  S|\Sq9   " S} S~\5      r\GR'                  S|5        Sr " S S\i5      r\GR8                  " S5       " S S\i5      5       r\F" S5      r " S S\i5      r " S S\i5      r " S S\i5      r " S S\i5      r\ GRF                  " \4S5      \GR8                  " S5       " S S\i5      5       5       r " S S\i5      r " S S\_5      r " S S\i5      r\ GRF                  " \;S5      \GR8                  " S5       " S S\i5      5       5       r " S S\i5      r " S S\ R                  5      r " S S\i5      r " S S\i5      r " S S\ R                  5      r\GR8                  " S5       " S S\ R                  5      5       r\GR8                  " S5      \GR8                  " S5       " S S\ R                  5      5       5       rS r\GR8                  " S5       " S S\ R                  5      5       rS rS rS rS r " S S\c5      r " S S\ R                  5      r " S S\ R                  5      r " S S\ R                  5      r " S S\ R                  5      r " S S\ R                  5      r " S S\ R                  5      r " S S\ R                  5      r " S S\ R                  5      r " S S\ R                  5      r " S S\ R                  5      r\ GR                  " \R                  S$:H  S5       " S S\ R                  5      5       r " S S\ R                  5      r " S S\ R                  5      r\GR8                  " S5       " S S\ R                  5      5       r " S S\ R                  5      r " S S\ R                  5      r " S S\c5      r " S S\5      r " S S\5      r " S S\5      r SS jr\ GR                  " \=" \%S5      (       + S5      \ GR                  " \R                  S:g  S5       " S S\ R                  5      5       5       rg! \5 a    Sr4 GN#f = f! \5 a    Sr9 GN'f = f! \5 a    Sr; GN-f = f! \5 a    Sr< GN7f = f!   S'r\ GN\= f! \5 a    \cr_S=r`=rarb GN_f = f)    N)support)hashlib_helper)import_helper)	os_helper)script_helper)socket_helper)threading_helper)warnings_helper_multiprocessingzmultiprocess.synchronize)waitAuthenticationError)util)	reductionF)ValuecopyT)shared_memoryHAVE_ASAN_FORK_BUGz?libasan has a pthread_create() dead lock related to thread+fork)
__cleanenv
__isolatedCOVERAGEg     V@g      N@皙?c                 $    U R                  S5      $ )Nlatin)encode)ss    U/home/james-whalen/.local/lib/python3.13/site-packages/multiprocess/tests/__init__.pyr   r   c   s    88G    c                     [        U [        R                  R                  5      (       a!  U R	                  5         U R                  5         g g N)
isinstancemultiprocessingqueuesQueueclosejoin_thread)queues    r   close_queuer'   g   s5    %//5566 7r   c                 6    [         R                  " U [        S9  g Ntimeout)r	   r%   TIMEOUT)processs    r   join_processr.   m   s       ':r   posix)resource_trackerc                 6    [         R                  U   " U 5        g r   )r0   _CLEANUP_FUNCS)namertypes     r   _resource_unlinkr5   v   s    ''.t4r   )g=
ףp=?gffffff?gffffff?)r   r   r         @HAVE_BROKEN_SEM_GETVALUEwin32c                 2    Ub  US:  a  S n[        U /U5      $ )N        r   )handler+   s     r   wait_for_handler=      s"    w}'""r   SC_OPEN_MAX   __main__test_multiprocessing_forkserver)	Structurec_intc_double
c_longlongc                      Sn  [         R                  " S5      nUS:X  d  X:  a  g[        R
                  " SU -  5      e! [        [        4 a     gf = f)zACheck that the system supports enough semaphores to run the test.r?   SC_SEM_NSEMS_MAXNzHThe OS doesn't support enough semaphores to run the test (required: %d).)ossysconfAttributeError
ValueErrorunittestSkipTest)	nsems_minnsemss     r   check_enough_semaphoresrQ      sj     I

-. {e(


 >@IJ K K J' s   ? AAc                    ^  U 4S jnU$ )a  Returns a decorator: raises SkipTest when SM != spawn at test time.

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

This would not be necessary if we refactored our test suite to split things
into other test files when they are not start method specific to be rerun
under all start methods.
c                 J   >^  [         R                  " T 5      UU 4S j5       nU$ )Nc                     > [         R                  " 5       =nS:w  a  [        R                  " SU< ST 35      eT" U 0 UD6$ )Nspawnstart_method=z, not 'spawn'; )r!   get_start_methodrM   rN   )argskwargsstart_methodreason	test_items      r   spawn_check_wrapperKonly_run_in_spawn_testsuite.<locals>.decorator.<locals>.spawn_check_wrapper   sG     / @ @ BBwN''=</(QRRd-f--r   )	functoolswraps)r\   r]   r[   s   ` r   	decorator.only_run_in_spawn_testsuite.<locals>.decorator   s&    		#	. 
$	.
 #"r    )r[   ra   s   ` r   only_run_in_spawn_testsuiterd      s    # r   c                   d    \ rS rSrSr\R                  " \R                  S:H  S5      S 5       r	Sr
g)TestInternalDecorators   zBLogic within a test suite that could errantly skip tests? Test it!r8   ztest requires that fork exists.c                    [         R                  " 5       S:w  a  [        R                  " S5      e [	        S5      S 5       n[         R                  " SS9n [         R                  " SSS9  U R                  W" 5       S	5        [         R                  " S
SS9  U R                  [        R                  5       nU" 5         S S S 5        U R                  S[        WR                  5      5        U R                  S[        UR                  5      5        [         R                  " USS9  g ! [
         a  nU R                  SU 35         S nAGN	S nAff = f! , (       d  f       N= f! [         R                  " USS9  f = f)NrU   z'only run in test_multiprocessing_spawn.ztesting this decoratorc                      gN   rc   rc   r   r   return_four_if_spawnUTestInternalDecorators.test_only_run_in_spawn_testsuite.<locals>.return_four_if_spawn   s    r   z.expected decorated `def` not to raise; caught T
allow_noneforcerk   forkrV   )r!   rW   rM   rN   rd   	Exceptionfailset_start_methodassertEqualassertRaisesassertInstr	exception)selfrl   errorig_start_methodctxs        r    test_only_run_in_spawn_testsuite7TestInternalDecorators.test_only_run_in_spawn_testsuite   s:   ++-8##$MNN	N()AB C
 ,<<M		L,,WDA13Q7,,V4@""8#4#45$& 6MM2C4FGMM/3s}}+=>,,->dK  	NIIFseLMM	N 65
 ,,->dKs=   D' A E$ 7E?AE$ '
E1EE
E!E$ $E;rc   N)__name__
__module____qualname____firstlineno____doc__rM   skipIfsysplatformr   __static_attributes__rc   r   r   rf   rf      s/    L__S\\W,.OPL QLr   rf   c                        \ rS rSrS rS rSrg)TimingWrapper   c                     Xl         S U l        g r   )funcelapsed)r{   r   s     r   __init__TimingWrapper.__init__   s    	r   c                     [         R                  " 5       n U R                  " U0 UD6[         R                  " 5       U-
  U l        $ ! [         R                  " 5       U-
  U l        f = fr   )time	monotonicr   r   )r{   rX   kwdsts       r   __call__TimingWrapper.__call__   sK    NN	099d+d+>>+a/DL4>>+a/DLs   A A%)r   r   Nr   r   r   r   r   r   r   rc   r   r   r   r      s    0r   r   c                   .    \ rS rSrSrS rS rS r\rSr	g)BaseTestCasei  )	processesmanagerthreadsc                 @    [         (       a  U R                  XS5        g g N   )CHECK_TIMINGSassertAlmostEqualr{   abs      r   assertTimingAlmostEqual$BaseTestCase.assertTimingAlmostEqual
  s    =""1+ r   c                 P     U" U6 nU R                  X5      $ ! [         a     g f = fr   )rv   NotImplementedError)r{   valuer   rX   ress        r   assertReturnsIfImplemented'BaseTestCase.assertReturnsIfImplemented  s7    	0+C ##E// # 		s    
%%c                     [        S5      e)Nz#shouldn't try to pickle a test case)r   )r{   rX   s     r   
__reduce__BaseTestCase.__reduce__  s    !"GHHr   rc   N)
r   r   r   r   ALLOWED_TYPESr   r   r   __reduce_ex__r   rc   r   r   r   r     s    7M,0I Mr   r   c                      U R                  5       $ ! [         aC     U R                  s $ ! [         a&     U R                  s s $ ! [         a    [        ef = ff = ff = fr   )	get_valuerK   _Semaphore__value_valuer   r{   s    r   r   r   !  sg    	*~~ *	*))) 	**{{"! *))*	**s:    
A+A
AAAAAAAc                       \ rS rSrS rSrg)DummyCallablei1  c                 T    [        U[        5      (       d   eUR                  S5        g N   )r    r   put)r{   qcs      r   r   DummyCallable.__call__2  s     !]++++	ar   rc   N)r   r   r   r   r   r   rc   r   r   r   r   1  s    r   r   c                   l   \ rS rSrSrS rS r\R                  " S5      S 5       r	\
S 5       rS r\
S	 5       rS
 r\
S 5       rS r\
S 5       r\
S 5       rS r\R*                  " \R.                  S5      S 5       r\
S 5       r\
S 5       r\
S 5       rS rS rS rS rS r \
S 5       r!\RD                  " SS5      S 5       r#\
S 5       r$S r%\
S2S! j5       r&S" r'\R                  " S#5      S$ 5       r(S% r)\
S& 5       r*S' r+\
S( 5       r,S) r-\
0 4S* j5       r.S+ r/S, r0\
S3S- j5       r1S. r2S/ r3S0 r4S1r5g )4_TestProcessi7  r   r   c                 *   U R                   S:X  a*  U R                  SR                  U R                   5      5        U R                  5       nUR                  nU R                  UR                  5       5        U R                  UR                  (       + 5        U R                  U[        5        U R                  [        U5      S:  5        U R                  UR                  [        R                  " 5       5        U R                  UR                  S 5        g )Nr   test not appropriate for {}r   )TYPEskipTestformatcurrent_processauthkey
assertTrueis_alivedaemonassertIsInstancebyteslenrv   identrI   getpidexitcode)r{   currentr   s      r   test_current_TestProcess.test_current;  s    99	!MM7>>tyyIJ&&(//((*+GNN*+gu-Gq()		4))40r   c                    U R                   S:X  a  U R                  SU R                    35        [        R                  [        R                  R	                  5       [
        R                  " [        R                  5      /nU H`  nU R                  U5        U R                  5       nUR                  5         UR                  5         U R                  UR                  S5        Mb     g )Nr   ztest not appropriate for r   )r   r   r   
executabler   pathlibPathset_executableProcessstartjoinrv   r   )r{   pathspathps       r   test_set_executable _TestProcess.test_set_executableI  s    99	!MM5dii[ABNNNN!!#LL(

 D%AGGIFFHQZZ+ r   cpuc           	         SSS/S4n[         [        4n[        R                  " X5      nU H  u  pEU R	                  XES9   U R                  S5      nU R                  U R                  U" Xd45      S9nSUl        UR                  5         UR                  5       nU R                  X5        UR                  5         [        U5        S S S 5        M     g ! , (       d  f       M  = f)Nr   ry   r   )rX   	args_typetargetrX   T)listtuple	itertoolsproductsubTestr#   r   
_test_argsr   r   getrv   r   r'   )	r{   
args_cases
args_types
test_casesrX   r   r   r   
child_argss	            r   test_args_argument_TestProcess.test_args_argumentX  s     T*
E]
&&z>
)OD4=JJqMLLi	>RLS	UUW
  2A >=  *==s    BC
C"	c                 &    UR                  U5        g r   r   )clsr   args      r   r   _TestProcess._test_argsm  s    	c
r   c                    U R                   S:X  a*  U R                  SR                  U R                   5      5        U R                  U R                  S9nU R                  UR                  U R                  5       R                  5        U R                  U R                  SS9nU R                  UR                  5        U R                  U R                  SS9nU R                  UR                  5        g )Nr   r   r   Tr   r   F)
r   r   r   r   _testrv   r   r   r   assertFalse)r{   proc0proc1proc2s       r   test_daemon_argument!_TestProcess.test_daemon_argumentq  s    99	!MM7>>tyyIJ DJJ/t';';'='D'DEDJJt<%DJJu=&r   c                 >   U R                  5       nUR                  U5        UR                  U5        UR                  UR                  5        U R                  S:w  a@  UR                  [	        UR
                  5      5        UR                  UR                  5        g g )Nr   )r   r   r3   r   r   r   pid)r   r   rX   r   r   s        r   r   _TestProcess._test}  sl    %%'	d	d	gll88y EE%()EE'++ !r   c                 `   U R                   S:X  a*  U R                  SR                  U R                   5      5        U R                  U R	                  5       5        U R                  SS9u  pU R                  U R                  U4S9nUR                  5         UR                  5         UR                  5       u  pEU R                  X@R                  5       R                  5        U R                  U[        R                  " 5       5        U R                  XPR                  5       R                   5        g )Nr   r   Fduplexr   )r   r   r   assertIsNoneparent_processPiper   _test_send_parent_processr   r   recvrv   r   r  rI   r   r3   )r{   rconnwconnr   
parent_pidparent_names         r   test_parent_process_attributes+_TestProcess.test_parent_process_attributes  s    99	!MM7>>tyyIJ$--/0yyy.LL > >eXLN			"'**,
%9%9%;%?%?@RYY[1&:&:&<&A&ABr   c                 r    SSK Jn  UR                  U" 5       R                  U" 5       R                  /5        g )Nr   r  )multiprocess.processr  sendr  r3   r   r  r  s      r   r  &_TestProcess._test_send_parent_process  s(    7

N$((.*:*?*?@Ar   c                 l   U R                   S:X  a*  U R                  SR                  U R                   5      5        U R                  SS9u  pU R	                  U R
                  U4S9nUR                  5         UR                  [        R                  S9(       d  [        S5      eUR                  5       nU R                  US5        UR                  5         UR                  5         UR                  [        R                  S9(       d  [        S5      eUR                  5       nU R                  US	5        g )
Nr   r   Fr  r   r*   z(Could not communicate with child processalive	not alive)r   r   r   r  r   _test_create_grandchild_processr   pollr   LONG_TIMEOUTAssertionErrorr  rv   	terminater   )r{   r  r  r   parent_process_statuss        r   _test_parent_process!_TestProcess._test_parent_process  s    99	!MM7>>tyyIJ
 yyy.LL77ui  I		zz'"6"6z7 !KLL %

.8		zz'"6"6z7 !KLL %

.<r   c                     U R                  U R                  U4S9nUR                  5         [        R                  " S5        g )Nr   i,  )r   _test_report_parent_statusr   r   sleep)r   r  r   s      r   r!  ,_TestProcess._test_create_grandchild_process  s0    KKs==UIKN		

3r   c                    SSK Jn  UR                  U" 5       R                  5       (       a  SOS5        U" 5       R	                  [
        R                  S9  UR                  U" 5       R                  5       (       a  S5        g S5        g )Nr   r  r  r   r*   )r  r  r  r   r   r   SHORT_TIMEOUTr  s      r   r*  '_TestProcess._test_report_parent_status  s`    7

n.77997{Kg&;&;<

n.77997K{Kr   c                    U R                  S5      nU R                  5       nUSS4nSSS.nSnU R                  U R                  X4US9nSUl        U R                  5       nU R                  S	:w  a&  U R                  UR                  UR                  5        U R                  UR                  5       S
5        U R                  UR                  S5        U R                  X`R                  5       5        U R                  [        U R                  5       5      [        L 5        U R                  UR                  S 5        UR!                  5         U R                  UR                  S 5        U R                  UR                  5       S5        U R#                  X`R                  5       5        U R                  UR%                  5       USS  5        U R                  UR%                  5       U5        U R                  UR%                  5       UR&                  5        U R                  S	:w  aT  U R                  UR%                  5       UR                  5        U R                  UR%                  5       UR(                  5        UR+                  5         U R                  UR                  S5        U R                  UR                  5       S
5        U R                  X`R                  5       5        [-        U5        g )Nr         gRQ@)hellobyeSomeProcess)r   rX   rY   r3   Tr   Fr   )r#   Eventr   r   r   r   r   rv   r   r   assertNotInactive_childrenr   typer   r   r   rx   r   r3   r  r   r'   )r{   r   erX   rY   r3   r   r   s           r   test_process_TestProcess.test_process  s&   JJqMJJL1ayD)LL::Dd   &&(99	!QYY8u-4(0023T1134<=T*		T*t,a--/0$qr(+&)!&&)99	!QUUWgoo6QUUWaee,	Q'u-0023Ar   zneeds native_idc                    U R                   S:X  a*  U R                  SR                  U R                   5      5        [        R                  " 5       R
                  nU R                  S5      nU R                  U R                  U4S9nUR                  5         UR                  5       nUR                  5         [        U5        U R                  X5        g )Nr   r   r   r   )r   r   r   	threadingmain_thread	native_idr#   r   "_test_process_mainthread_native_idr   r   r   r'   assertNotEqual)r{   current_mainthread_native_idr   r   child_mainthread_native_ids        r   !test_process_mainthread_native_id._TestProcess.test_process_mainthread_native_id  s    99	!MM7>>tyyIJ'0'<'<'>'H'H$JJqMLL G GqdLS		%&UUW"	A8Ur   c                 d    [         R                  " 5       R                  nUR                  U5        g r   )r>  r?  r@  r   )r   r   mainthread_native_ids      r   rA  /_TestProcess._test_process_mainthread_native_id  s$    (446@@	"#r   c                 0    [         R                  " S5        g )Nd   r   r+  r   s    r   _sleep_some_TestProcess._sleep_some  s    

3r   c                 0    [         R                  " U5        g r   rL  )r   delays     r   _test_sleep_TestProcess._test_sleep  s    

5r   c                 8  ^ U R                   S:X  a*  U R                  SR                  U R                   5      5        U R                  U R                  S9mSTl        TR                  5         U R                  TR                  5       S5        U R                  TU R                  5       5        U R                  TR                  S 5        [        TR                  5      nU R                  U" S5      S 5        U R                  UR                  S5        U R                  TR                  5       S5        U R                  U" S5      S 5        U R                  UR                  S5        U R                  TR                  5       S5        [         R"                  " S5        U" T5        [%        [&        S	5      (       a  U4S
 jn[&        R&                  " [&        R(                  U5      n [&        R*                  " S5        U R                  U" 5       S 5        [&        R*                  " S5        [&        R&                  " [&        R(                  U5        OU R                  U" 5       S 5        U R                  UR                  S5        U R                  TR                  5       S5        U R-                  TU R                  5       5        TR                  5         TR                  $ ! [&        R*                  " S5        [&        R&                  " [&        R(                  U5        f = f)Nr   r   r   Tr   r:   rH   r   alarmc                      > [        ST-  5      e)Nzjoin took too long: %sRuntimeError)rX   r   s    r   handler+_TestProcess._kill_process.<locals>.handler%  s    "#;a#?@@r   
   F)r   r   r   r   rN  r   r   rv   r   rx   r8  r   r   r   r   r   r   r+  hasattrsignalSIGALRMrU  r7  )r{   methr   rY  old_handlerr   s        @r   _kill_process_TestProcess._kill_process  s    99	!MM7>>tyyIJLL 0 0L1		t,a--/0T*QVV$a$'$$T\\37t,b4($$T\\37t, 	

1Q67##A --@K;R   .Qfnnk:TVT*$$T\\37u-D0023	zz Qfnnk:s   $-K =Lc                     U R                  [        R                  R                  5      nU R	                  U[
        R                  * 5        g r   )ra  r!   r   r%  rv   r]  SIGTERMr{   r   s     r   test_terminate_TestProcess.test_terminate:  s4    %%o&=&=&G&GHFNN?3r   c                    U R                  [        R                  R                  5      n[        R
                  S:w  a"  U R                  U[        R                  * 5        g U R                  U[        R                  * 5        g Nnt)
ra  r!   r   killrI   r3   rv   r]  SIGKILLrd  re  s     r   	test_kill_TestProcess.test_kill>  sU    %%o&=&=&B&BC77d?X7X7r   c                      [         R                  " 5       nU R                  [	        U5      [
        L 5        U R                  US:  5        g ! [         a    Sn NCf = fr   )r!   	cpu_countr   r   r9  int)r{   cpuss     r   test_cpu_count_TestProcess.test_cpu_countE  sR    	",,.D 	T
c)*	" # 	D	s   A AAc                    U R                  [        U R                  5       5      [        5        U R	                  [
        R                  [        4S9nU R                  XR                  5       5        SUl	        UR                  5         U R                  XR                  5       5        UR                  5         U R                  XR                  5       5        g Nr   T)rv   r9  r8  r   r   r   r+  DELTAr7  r   r   rx   r   r{   r   s     r   test_active_children!_TestProcess.test_active_childrenM  s    d2245t<LL

%L:0023		a--/0	0023r   c                     UR                  U5        [        U5      S:  aR  [        S5       HB  nU R                  U R                  XU/-   4S9nUR                  5         UR                  5         MD     g g Nr1  r   )r  r   ranger   _test_recursionr   r   )r   r  idir   s        r   r~  _TestProcess._test_recursionZ  se    

2r7Q;1XKK..eV_    	  r   T#fails with is_dill(obj, child=True)c                 `   U R                  SS9u  pU R                  U/ 5        [        R                  " [        5        / nUR                  5       (       a6  UR                  UR                  5       5        UR                  5       (       a  M6  / S/SS/SS/S/SS/SS//nU R                  X45        g )NFr  r   r   )	r  r~  r   r+  rw  r"  appendr  rv   )r{   r  r  resultexpecteds        r   test_recursion_TestProcess.test_recursione  s    yyy.UB'

5jjllMM%**,' jjll cAAcAA 	*r   c                 &    UR                  S5        g )Ng      $@r;   r   events     r   _test_sentinel_TestProcess._test_sentinelz  s    

4r   c                    U R                   S:X  a*  U R                  SR                  U R                   5      5        U R                  5       nU R	                  U R
                  U4S9nU R                  [        5         UR                    S S S 5        UR                  5         U R                  UR                  5        UR                  nU R                  U[        5        U R                  [        USS95        UR!                  5         UR                  5         U R#                  [        USS95        g ! , (       d  f       N= f)Nr   r   r   r:   r*   r   )r   r   r   r6  r   r  rw   rL   sentinelr   
addCleanupr   r   rq  r  r=   setr   )r{   r  r   r  s       r   test_sentinel_TestProcess.test_sentinel~  s    99	!MM7>>tyyIJ

LL 3 35(LCz*JJ +		::h,3?@			!<= +*s   ;D00
D>Nc                 V    Ub  UR                  5         [        R                  " U5        g r   )r   r   exit)r   rcr   s      r   _test_close_TestProcess._test_close  s    =EEGr   c                    U R                   S:X  a*  U R                  SR                  U R                   5      5        U R                  5       nU R	                  U R
                  SU0S9nSUl        UR                  5         U R                  UR                  5       S5        U R                  [        5         UR                  5         S S S 5        UR                  S 5        UR                  5         U R                  UR                  5       S5        U R                  UR                  S5        UR                  5         U R                  [        5         UR                  5         S S S 5        U R                  [        5         UR                  5         S S S 5        U R                  [        5         UR!                  5         S S S 5        UR                  5         ["        R$                  " U5      nA[&        R(                  " 5         U R+                  U" 5       S 5        [-        U5        g ! , (       d  f       GNe= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f)Nr   r   r   )r   rY   TFr   )r   r   r   r#   r   r  r   r   rv   r   rw   rL   r$   r   r   r   r%  weakrefrefgccollectassertIsr'   )r{   r   r   wrs       r   
test_close_TestProcess.test_close  s   99	!MM7>>tyyIJJJLLL 0 0#qLB		t,z*GGI + 	
d	u-Q'		z*JJL +z*FFH +z*KKM +		[[^


bdD!A+ +* +*****s0   3H"H4<I*I"
H14
I
I
I$walltimec                 @   U R                   S:X  a*  U R                  SR                  U R                   5      5        [        R                  " 5       n[
        R                  R                  S5      nUS:X  a  U(       a  SOSOSn[        U5       Vs/ s H  nU R                  U R                  SS	9PM     nnU H  nUR                  5         M     U H  n[        U5        M     U H  nU R                  UR                  S
5        M!     [        U5       Vs/ s H  nU R                  U R                  S9PM     nnU H  nUR                  5         M     [         R"                  " S5        U H  nUR%                  5         M     U H  n[        U5        M     [
        R&                  S:w  al  [(        R*                  * /n[,        R.                  S:X  a   UR1                  [(        R2                  * 5        U H  nU R5                  UR                  U5        M!     g g s  snf s  snf )Nr   r   r   rU   r   r   rK  ){Gz?r   r   r   MbP?rj  darwin)r   r   r   r!   rW   rI   environr   r}  r   rR  r   r.   rv   r   rN  r   r+  r%  r3   r]  rd  r   r   r  rl  rx   )r{   smtravisNr  procsr   	exitcodess           r   test_many_processes _TestProcess.test_many_processes  s   99	!MM7>>tyyIJ--/
+$&'M&Qas  ($"Q T%5%5GD" 	 $AGGI AO AQZZ+   ($"Q T%5%56" 	 $AGGI 

5AKKM AO 77d? ..)I||x'   &..1ajj)4  %$$s   $H#Hc                 v   [        5       n[        R                  " U5      nU R                  5       nU R	                  XU4S9nAUR                  5         UR                  5         [        R                  " 5         U R                  U" 5       S 5        U R                  UR                  5       S5        [        U5        g )Nr   r   )r   r  r  r#   r   r   r   r  r  r  rv   r   r'   )r{   r   r  r   r   s        r   test_lose_target_ref!_TestProcess.test_lose_target_ref  s    O[[^JJLLLAL/			


bdD!!$Ar   c                 l    UR                  [        R                  " 5       5        UR                  5         g r   )r   r   fd_countr   )r{   evtr   s      r   _test_child_fd_inflation%_TestProcess._test_child_fd_inflation  s     	i  "#
r   c                 V   U R                   S:X  a*  U R                  SR                  U R                   5      5        [        R                  " 5       nUS:X  a   U R                  SR                  U5      5        SnU R                  5       nU R                  5       n[        U5       Vs/ s H  nU R                  U R                  X44S9PM      nnU H  nUR                  5         M      [        U5       Vs/ s H  oTR                  5       PM     nnU R                  [        [        U5      5      SU5        UR                  5         U H  nUR                  5         M     [!        U5        g s  snf s  snf ! UR                  5         U H  nUR                  5         M     [!        U5        f = f)Nr   r   rr   r   r   r   )r   r   r   r!   rW   r6  r#   r}  r   r  r   r   rv   r   r  r   r'   )	r{   r  r  r  r   r  r  r   	fd_countss	            r   test_child_fd_inflation$_TestProcess.test_child_fd_inflation  sV    99	!MM7>>tyyIJ--/< MM7>>rBCjjlJJL  ($"Q T%B%B#R" 	 $AGGI 	*/(3(Q(I3SY0!Y? GGI N$ 4 GGI Ns$   %%E(&E2 3E-'E2 -E2 26F(c                    ^ U4S jnU4S jn[         R                  " US9R                  5         [         R                  " USS9R                  5         g )Nc                  R   > [         R                  " S5        T R                  5         g )N      ?r   r+  r  r  s   r   func12_TestProcess._test_wait_for_threads.<locals>.func1  s    JJsOGGIr   c                  R   > [         R                  " S5        T R                  5         g )N   )r   r+  clearr  s   r   func22_TestProcess._test_wait_for_threads.<locals>.func2  s    JJrNIIKr   r   Tr   )r>  Threadr   )r{   r  r  r  s    `  r   _test_wait_for_threads#_TestProcess._test_wait_for_threads
  s?    		 	&,,.d399;r   c                 L   U R                   S:X  a*  U R                  SR                  U R                   5      5        U R                  5       nU R	                  U R
                  U4S9nUR                  5         UR                  5         U R                  UR                  5       5        g )Nr   r   r   )
r   r   r   r6  r   r  r   r   r   is_set)r{   r  procs      r   test_wait_for_threads"_TestProcess.test_wait_for_threads  su     99	!MM7>>tyyIJjjl||4#>#>cV|L

		

%r   c                     UR                  5        HL  u  p4US:X  a&  [        R                  " 5       nUR                  5         O
US:X  d   eS n[	        [
        US 5        MN     UR                  5         g )Nr$   remove)itemsioStringIOr$   setattrr   r  )r{   r  break_std_streamsstream_nameactionstreams         r   _test_error_on_stdio_flush'_TestProcess._test_error_on_stdio_flush#  s^    #4#:#:#<K )))Cd+ $= 		r   c           	         [         R                  " 5       S /nUS   R                  5         S H  nU H  n[        [        U5      n[        [        X#5         U R                  5       nU R                  U R                  U4S9nUR                  5         UR                  5         U R                  UR                  5       5        U R                  UR                  S5        [        [        X$5        M     M     g ! [        [        X$5        f = f)Nr   stdoutstderrr   )r  r  r$   getattrr   r  r6  r   r  r   r   r   r  rv   r   )r{   streamsr  r  
old_streamr  r  s          r   test_error_on_stdio_flush_1(_TestProcess.test_error_on_stdio_flush_1/  s    ;;=$'
/K!$S+6
[1	:**,C<<t/N/N.1V ( 5DJJLIIKOOCJJL1$$T]]A6C9 " 0 C9s   BC55Dc           	         S H  nS H  n[        [        U5      n U R                  5       nU R                  U R                  XAU04S9nUR                  5         UR                  5         U R                  UR                  5       5        U R                  UR                  S5        [        [        X5        M     M     g ! [        [        X5        f = f)Nr  )r$   r  r   r   )r  r   r6  r   r  r   r   r   r  rv   r   r  )r{   r  r  r  r  r  s         r   test_error_on_stdio_flush_2(_TestProcess.test_error_on_stdio_flush_2B  s     0K-$S+6
	:**,C<<t/N/N.13H-I ( KDJJLIIKOOCJJL1$$T]]A6C9 . 0 C9s   BB==Cc                 P    [         R                  " U5        UR                  5         g r   r  )r{   r  rQ  s      r   _sleep_and_set_event!_TestProcess._sleep_and_set_eventS  s    

5	r   c                    U R                   S:X  a*  U R                  SR                  U R                   5      5        [        R                  " 5       nUS:w  a   U R                  SR                  U5      5        SSKJn  UR                  5         SnU R                  5       nU R                  U R                  XT4S9nUR                  5         UR                  n[        R                  " Xq5        [        R                   " US-  5        U R                  5       nU R                  U R                  U4S9n	U	R                  5         U	R#                  5         U R%                  UR'                  5       5        U R)                  U	R*                  S5        UR#                  5         U R%                  UR'                  5       5        U R-                  UR*                  S	5        g )
Nr   r   
forkserverr   )_forkserverr  r   g       @)r      )r   r   r   r!   rW   multiprocess.forkserverr  ensure_runningr6  r   r  r   _forkserver_pidrI   rk  r   r+  r   r   r  rv   r   rx   )
r{   signumr  r  rQ  r  r  r  evt2r  s
             r   check_forkserver_death#_TestProcess.check_forkserver_deathX  sQ    99	!MM7>>tyyIJ--/ MM7>>rBC7""$ jjl||4#<#<C<|P

))


53;zz|D$=$=TGL

&+		

%dmmX.r   c                 B    U R                  [        R                  5        g r   )r  r]  SIGINTr   s    r   test_forkserver_sigint#_TestProcess.test_forkserver_sigint~  s    ##FMM2r   c                 l    [         R                  S:w  a   U R                  [        R                  5        g g ri  )rI   r3   r  r]  rl  r   s    r   test_forkserver_sigkill$_TestProcess.test_forkserver_sigkill  s$    77d?''7 r   rc   )r   N)r:   )6r   r   r   r   r   r   r   r   requires_resourcer   classmethodr   r  r   r  r  r'  r!  r*  r;  rM   
skipUnlessr>  _HAVE_THREAD_NATIVE_IDrE  rA  rN  rR  ra  rf  rm  rs  ry  r~  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   rc   r   r   r   r   7  s3   ,M1, u% &(  
'  C B B=2  
 L L&P 99;LMV NV  $ $    1f48#4   __T@A+ B+(  >   
@ z*"5 +"5H  > 
< 
<
& @B 	 	:&:"  $/L38r   r   c                   ,    \ rS rSrS rS rS rS rSrg)_UpperCaseri  c                     [         R                  R                  U 5        [         R                  " 5       u  U l        U l        g r   )r!   r   r   r  
child_connparent_connr   s    r   r   _UpperCaser.__init__  s.    ((.,;,@,@,B))r   c                    U R                   R                  5         [        U R                  R                  S 5       H,  nU R                  R                  UR                  5       5        M.     U R                  R                  5         g r   )r  r$   iterr  r  r  upperr{   r   s     r   run_UpperCaser.run  sW     doo**D1AOO  + 2r   c                     [        U5      [        L d   eU R                  R                  U5        U R                  R	                  5       $ r   )r9  ry   r  r  r  r	  s     r   submit_UpperCaser.submit  s;    Aw#~~a $$&&r   c                     U R                   R                  S 5        U R                   R                  5         U R                  R                  5         g r   )r  r  r$   r  r   s    r   stop_UpperCaser.stop  s8    d# r   )r  r  N)	r   r   r   r   r   r
  r  r  r   rc   r   r   r  r    s    C '
 r   r  c                   J    \ rS rSrSrS rS r\S 5       r\S 5       r	S r
Srg	)
_TestSubclassingProcessi  r   c                 
   [        5       nSUl        UR                  5         U R                  UR	                  S5      S5        U R                  UR	                  S5      S5        UR                  5         UR                  5         g )NTr3  HELLOworldWORLD)r  r   r   rv   r  r  r   )r{   
uppercasers     r   test_subclassing(_TestSubclassingProcess.test_subclassing  sg     ]
 
**73W=**73W=r   c                    U R                   S:X  a*  U R                  SR                  U R                   5      5        [        R                  nU R                  [        R                  U5        U R                  U R                  U4S9nUR                  5         UR                  5         [        USS9 nUR                  5       nU R                  SU5        U R                  SU5        S S S 5        g ! , (       d  f       g = f)Nr   r   r   utf-8encodingZeroDivisionErrorz__init__.py)r   r   r   r   TESTFNr  unlinkr   _test_stderr_flushr   r   openreadrx   )r{   testfnr  fr|   s        r   test_stderr_flush)_TestSubclassingProcess.test_stderr_flush  s    99	!MM7>>tyyIJ!!	((&1||4#:#:&|K

		&7+q&&(CMM-s3MM--	 ,++s   05C..
C<c                     [         R                  " U[         R                  [         R                  -  [         R                  -  5      n[        USSSS9[
        l        SS-    g )Nwr  Fr  closefdr   r   )rI   r$  O_WRONLYO_CREATO_EXCLr   r  )r   r&  fds      r   r#  *_TestSubclassingProcess._test_stderr_flush  sA    WWVR[[2::5		AB"cGUC
	!r   c                     [         R                  " U[         R                  [         R                  -  [         R                  -  5      n[        USSSS9[
        l        [
        R                  " U5        g )Nr+  r  Fr,  )rI   r$  r.  r/  r0  r   r  r  )r   r[   r&  r1  s       r   _test_sys_exit&_TestSubclassingProcess._test_sys_exit  sF    WWVR[[2::5		AB"cGUC
r   c                    U R                   S:X  a*  U R                  SR                  U R                   5      5        [        R                  nU R                  [        R                  U5        / SQS4 H  nU R                  U R                  X!4S9nSUl	        UR                  5         [        U5        U R                  UR                  S5        [        USS	9 nUR                  5       nS S S 5        U R                  WR!                  5       [#        U5      5        [$        R                  " U5        M     / S
QnU Hy  u  pxU R'                  US9   U R                  [(        R*                  US9nSUl	        UR                  5         [        U5        U R                  UR                  U5        S S S 5        M{     g ! , (       d  f       N= f! , (       d  f       M  = f)Nr   r   r   r1     zignore thisr   Tr   r  r  )))Tr   )Fr   ))   r:  )r   r   )rc   r   rX   )r   r   r   r   r!  r  r"  r   r4  r   r   r.   rv   r   r$  r%  rstripry   rI   r   r   r  )	r{   r&  r[   r   r'  contentcasesrX   r  s	            r   test_sys_exit%_TestSubclassingProcess.test_sys_exit  sf   99	!MM7>>tyyIJ!!	((&1 
F D$7$7v>NOAAHGGIOQZZ+fw/1&&( 0W^^-s6{;IIf
  $ND4(LLtL<	Q  X6 )( $ 0/ )(s   F7AG7
G	
G	rc   N)r   r   r   r   r   r  r(  r  r#  r4  r?  r   rc   r   r   r  r    s>    "M."    
&7r   r  c                 j    [        U S5      (       a  U R                  5       $ U R                  5       S:H  $ )Nemptyr   )r\  rB  qsize)r   s    r   queue_emptyrD    s+    q'wwywwyA~r   c                 j    [        U S5      (       a  U R                  5       $ U R                  5       U:H  $ )Nfull)r\  rF  rC  )r   maxsizes     r   
queue_fullrH    s+    q&vvxwwyG##r   c                       \ rS rSr\S 5       rS r\S 5       rS r\S 5       r	S r
S r\S	 5       rS
 rS rS rS rS rS rSrg)
_TestQueuei  c                     UR                  5         [        S5       H  nUR                  5         M     UR                  5         g )N   )r   r}  r   r  )r   r&   child_can_startparent_can_continuer  s        r   	_test_put_TestQueue._test_put  s1    qAIIK !r   c                    SnU R                  US9nU R                  5       nU R                  5       nU R                  U R                  X#U4S9nSUl        UR                  5         U R                  [        U5      S5        U R                  [        X!5      S5        UR                  S5        UR                  SS5        UR                  SSS 5        UR                  S	S5        UR                  S
SS 5        UR                  S5        [        R                  " [        5        U R                  [        U5      S5        U R                  [        X!5      S5        [        UR                  5      n[        UR                  5      nU R                  [         R"                  USS5        U R%                  UR&                  S5        U R                  [         R"                  USSS 5        U R%                  UR&                  S5        U R                  [         R"                  US5        U R%                  UR&                  S5        U R                  [         R"                  USS[(        5        U R%                  UR&                  [(        5        U R                  [         R"                  USS[*        5        U R%                  UR&                  S5        U R                  [         R"                  USS[,        S9  U R%                  UR&                  [,        5        UR/                  5         UR1                  5         U R                  [        U5      S5        U R                  [        X!5      S5        UR3                  5         [5        U5        g )NrL  rG  r   TFr   r1  r8  rk   r      r   r*   )r#   r6  r   rO  r   r   rv   rD  rH  r   
put_nowaitr   r+  rw  r   rw   pyqueueFullr   r   TIMEOUT1TIMEOUT2TIMEOUT3r  r   r   r'   )r{   MAXSIZEr&   rM  rN  r  r   rT  s           r   test_put_TestQueue.test_put  s   

7
+**,"jjl||>>*=>   

U+T2E3U;		!		!T		!T4 		!U		!UD! 	

5U+U3E3T:EII&"5#3#34
',,Q6$$S[[!4',,Qt<$$S[[!4',,
A6$$Z%7%7;',,Qh?$$S[[(;',,Qx@$$S[[!4',,QhG$$S[[(;  "U+T2E3U;		Er   c                     UR                  5         UR                  S5        UR                  S5        UR                  S5        UR                  S5        UR                  5         g )Nr1  r8  rk   r   )r   r   r  r   r&   rM  rN  s       r   	_test_get_TestQueue._test_getJ  sF    		!		!		!		!!r   c                 r   U R                  5       nU R                  5       nU R                  5       nU R                  U R                  XU4S9nSUl        UR                  5         U R                  [        U5      S5        UR                  5         UR                  5         [        R                  " [        5        U R                  [        U5      S5        U R                  UR                  SS 5      S5        U R                  UR                  S5      S5        U R                  UR                  SS9S5        U R                  UR                  5       S	5        U R                  [        U5      S5        [        UR                  5      n[        UR                  5      nU R!                  ["        R$                  US5        U R'                  UR(                  S
5        U R!                  ["        R$                  USS 5        U R'                  UR(                  S
5        U R!                  ["        R$                  U5        U R'                  UR(                  S
5        U R!                  ["        R$                  US[*        5        U R'                  UR(                  [*        5        U R!                  ["        R$                  US[,        5        U R'                  UR(                  S
5        U R!                  ["        R$                  U[.        S9  U R'                  UR(                  [.        5        UR1                  5         [3        U5        g )Nr   TFr1  r8  r   r*   rk   r   r   )r#   r6  r   r_  r   r   rv   rD  r  r   r   r+  rw  r   
get_nowaitr   rw   rU  Emptyr   r   rW  rX  rY  r   r'   )r{   r&   rM  rN  r  r   rb  s          r   test_get_TestQueue.test_getT  sY   

**,"jjl||>>*=>   

U+T2  "

5U+U3 	4.24!,1-q1))+Q/U+T2EII&"5#3#34
'--e4$$S[[!4'--eT:$$S[[!4'--4$$Z%7%7;'--dH=$$S[[(;'--eX>$$S[[!4'--h?$$S[[(;		Er   c                 L    [        SS5       H  nUR                  U5        M     g )Nr[  r  )r}  r   )r   r&   r  s      r   
_test_fork_TestQueue._test_fork  s    r2AIIaL r   c                    U R                  5       n[        S5       H  nUR                  U5        M     [        R                  " [
        5        U R                  U R                  U4S9nSUl        UR                  5         [        S5       H#  nU R                  UR                  5       U5        M%     U R                  [        R                  UR                  S5        UR                  5         [!        U5        g )Nr[  r   Tr  F)r#   r}  r   r   r+  rw  r   rg  r   r   rv   r   rw   rU  rc  r   r'   )r{   r&   r  r   s       r   	test_fork_TestQueue.test_fork  s     

 rAIIaL  	

5 LLuhL?		 rAUYY[!, '--E:	Er   c                 B   U R                  5       n U R                  UR                  5       S5        UR                  S5        U R                  UR                  5       S5        UR                  S5        U R                  UR                  5       S5        UR                  5         U R                  UR                  5       S5        UR                  5         U R                  UR                  5       S5        [        U5        g ! [         a    U R	                  S5         Nf = f)Nr   zqsize method not implementedr   r   r1  )r#   rv   rC  r   r   r   r   r'   r{   r   s     r   
test_qsize_TestQueue.test_qsize  s    JJL	:QWWY* 	
aA&	aA&	A&	A&A # 	:MM89	:s    D   DDc                     [        UR                  S 5       H-  n[        R                  " [        5        UR                  5         M/     g r   )r  r   r   r+  rw  	task_done)r   r   objs      r   _test_task_done_TestQueue._test_task_done  s,    t$CJJuKKM %r   c                    U R                  5       n[        S5       Vs/ s H  nU R                  U R                  U4S9PM      nnU H  nSUl        UR                  5         M     [        S5       H  nUR                  U5        M     UR                  5         U H  nUR                  S 5        M     U H  nUR                  5         M     [        U5        g s  snf )Nrk   r   Tr[  )	JoinableQueuer}  r   rs  r   r   r   r   r'   )r{   r&   r  workersr   s        r   test_task_done_TestQueue.test_task_done  s    ""$ "!H&$q <<t';';5(<K$ 	 & AAHGGI  rAIIaL  	

AIIdO  AFFH E#&s   %Cc                    [         R                  " 5          Sn[        US-   SSS9 nUR                  S5        S S S 5        [        R
                  " [        R                  " 5       5          [        U5        S S S 5        S S S 5        g ! , (       d  f       NU= f! [        R                   a    U R                  S5         NIf = f! , (       d  f       NS= f! , (       d  f       g = f)Nimported_by_an_imported_modulez.pyr+  r  r  a  if 1:
                    import multiprocess as 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)r   temp_cwdr$  writer   DirsOnSysPathrI   getcwd
__import__rU  rc  rt   )r{   module_namer'  s      r   test_no_import_lock_contention)_TestQueue.test_no_import_lock_contention  s    !:KkE)3AQ   B ,,RYY[93{+ : "!AA }} 3II 2 33 :9 "!sW   CB1C*C,B7C
B	C%C>C CC
C	C
C#c                    [         R                  " 5       n[        R                  " 5       nU R	                  [
        R                  UR                  SS5        [        R                  " 5       U-
  nU R                  US5        [        U5        g )NTg?r   )
r!   r#   r   r   rw   rU  rc  r   assertGreaterEqualr'   )r{   r   r   deltas       r   test_timeout_TestQueue.test_timeout  sb    !!# '--e< 5( 	u-Ar   c                    U R                   S:w  a*  U R                  SR                  U R                   5      5         " S S[        5      n[        R
                  R                  5          U R                  5       nUR                  U" 5       5        UR                  S5        U R                  UR                  [
        R                  S95        [        U5        S S S 5        [        R
                  R                  5          U R                  SS9nUR                  U" 5       5        UR                  S5         U R                  UR                  5       S5        U R                  UR                  [
        R                  S95        U R                  UR!                  5       5        [        U5        S S S 5        g ! , (       d  f       N= f! [         a     N|f = f! , (       d  f       g = f)	Nr   r   c                       \ rS rSrS rSrg)F_TestQueue.test_queue_feeder_donot_stop_onexc.<locals>.NotSerializablei  c                     [         er   )rK   r   s    r   r   Q_TestQueue.test_queue_feeder_donot_stop_onexc.<locals>.NotSerializable.__reduce__  s    $$r   rc   Nr   r   r   r   r   r   rc   r   r   NotSerializabler    s    %r   r  Tr*   r   rR  )r   r   r   objecttestr   captured_stderrr#   r   r   r   r.  r'   rv   rC  r   rB  )r{   r  r   s      r   "test_queue_feeder_donot_stop_onexc-_TestQueue.test_queue_feeder_donot_stop_onexc  sV   99#MM7>>tyyIJ	%f 	% \\))+

AEE/#$EE$KOOAEE'*?*?E@AN , \\))+ 

1
%AEE/#$EE$K  A.
 OOAEE'*?*?E@AOOAGGI&N ,+ ,+ '   ,+s>   (A/F4=7G5 GAG4
G
GGGG
G#c                   ^ U R                   S:w  a*  U R                  SR                  U R                   5      5         " S S[        5      m " U4S jS[        R
                  R                  5      nT" 5       n[        R                  R                  5          U" [        R                  " 5       S9nUR                  U5        UR                  S5        U R                  UR                  [        R                  S	95        S S S 5        U R                  UR                  5        U R                  UR                   5        g ! , (       d  f       NE= f)
Nr   r   c                   $    \ rS rSrSrS rS rSrg)K_TestQueue.test_queue_feeder_on_queue_feeder_error.<locals>.NotSerializablei  zMock unserializable objectc                      SU l         SU l        g NF)reduce_was_called on_queue_feeder_error_was_calledr   s    r   r   T_TestQueue.test_queue_feeder_on_queue_feeder_error.<locals>.NotSerializable.__init__!  s    ).&8=5r   c                     SU l         [        eNT)r  rK   r   s    r   r   V_TestQueue.test_queue_feeder_on_queue_feeder_error.<locals>.NotSerializable.__reduce__%  s    )-&$$r   )r  r  N)r   r   r   r   r   r   r   r   rc   r   r   r  r    s    ,>%r   r  c                   0   > \ rS rSrSr\U 4S j5       rSrg)E_TestQueue.test_queue_feeder_on_queue_feeder_error.<locals>.SafeQueuei)  z1Queue with overloaded _on_queue_feeder_error hookc                 d   > [        U [        5      (       a  [        UT5      (       a  SUl        g g g r  )r    rK   r  )r:  rr  r  s     r   _on_queue_feeder_error\_TestQueue.test_queue_feeder_on_queue_feeder_error.<locals>.SafeQueue._on_queue_feeder_error+  s/    q.11"388;?C8 9 2r   rc   N)r   r   r   r   r   staticmethodr  r   )r  s   r   	SafeQueuer  )  s    C@ @r   r  )r~   Tr*   )r   r   r   r  r!   r"   r#   r  r   r  get_contextr   r   r   r.  r  r  )r{   r  not_serializable_objr   r  s       @r   'test_queue_feeder_on_queue_feeder_error2_TestQueue.test_queue_feeder_on_queue_feeder_error  s     99#MM7>>tyyIJ	%f 	%	@..44 	@  /0\\))+o99;<AEE&' EE$KOOAEE'*?*?E@A , 	,>>?,MMN ,+s   A(D==
Ec                    [         R                  " 5       [         R                  " 5       4 Hr  nUR                  5         U R	                  [
        S5         UR                  S5        S S S 5        U R	                  [
        S5         UR                  5         S S S 5        Mt     g ! , (       d  f       NB= f! , (       d  f       M  = f)Nz	is closedfoo)r!   r#   rv  r$   assertRaisesRegexrL   r   r   rm  s     r   $test_closed_queue_put_get_exceptions/_TestQueue.test_closed_queue_put_get_exceptions?  s~     &&(/*G*G*IIAGGI''
K@e A''
K@ A@	 J@@@@s   B"B3"
B0	3
C	rc   N)r   r   r   r   r  rO  r[  r_  rd  rg  rj  rn  rs  rx  r  r  r  r  r  r   rc   r   r   rJ  rJ    s     " "9v " "3j  8   
,3*	@$OLr   rJ  c                   &    \ rS rSrS rS rS rSrg)	_TestLockiJ  c                 F   U R                  5       nU R                  UR                  5       S5        U R                  UR                  S5      S5        U R                  UR                  5       S 5        U R	                  [
        [        R                  4UR                  5        g NTF)Lockrv   acquirereleaserw   rL   r>  ThreadErrorr{   locks     r   	test_lock_TestLock.test_lockL  sq    yy{.e,e4.:y'<'<=t||Lr   c                    U R                  5       nU R                  UR                  5       S5        U R                  UR                  5       S5        U R                  UR                  5       S5        U R                  UR                  5       S 5        U R                  UR                  5       S 5        U R                  UR                  5       S 5        U R	                  [
        [        4UR                  5        g r  )RLockrv   r  r  rw   r$  rX  r  s     r   
test_rlock_TestLock.test_rlockS  s    zz|......><8$,,Gr   c                 Z    U R                  5           S S S 5        g ! , (       d  f       g = fr   r  r   s    r   test_lock_context_TestLock.test_lock_context]  s    YY[ [[s   
*rc   N)r   r   r   r   r  r  r  r   rc   r   r   r  r  J  s    MHr   r  c                   ,    \ rS rSrS rS rS rS rSrg)_TestSemaphoreib  c                 Z   U R                  S[        U5        U R                  UR                  5       S5        U R                  S[        U5        U R                  UR                  5       S5        U R                  S[        U5        U R                  UR                  S5      S5        U R                  S[        U5        U R                  UR	                  5       S 5        U R                  S[        U5        U R                  UR	                  5       S 5        U R                  S[        U5        g )Nr1  Tr   r   F)r   r   rv   r  r  r{   sems     r   _test_semaphore_TestSemaphore._test_semaphored  s    ''9c:-''9c:-''9c:U+U3''9c:-''9c:-''9c:r   c                 $   U R                  S5      nU R                  U5        U R                  UR                  5       S 5        U R	                  S[
        U5        U R                  UR                  5       S 5        U R	                  S[
        U5        g )Nr1  r8  rk   )	Semaphorer  rv   r  r   r   r  s     r   test_semaphore_TestSemaphore.test_semaphoreq  sn    nnQS!-''9c:-''9c:r   c                 H    U R                  S5      nU R                  U5        g Nr1  )BoundedSemaphorer  r  s     r   test_bounded_semaphore%_TestSemaphore.test_bounded_semaphorey  s     ##A&S!r   c                    U R                   S:w  a*  U R                  SR                  U R                   5      5        U R                  S5      n[	        UR
                  5      nU R                  U" S5      S5        U R                  UR                  S5        U R                  U" SS 5      S5        U R                  UR                  S5        U R                  U" S[        5      S5        U R                  UR                  S5        U R                  U" S[        5      S5        U R                  UR                  [        5        U R                  U" [        S9S5        U R                  UR                  [        5        g )Nr   r   r   Fr:   Tr*   )r   r   r   r  r   r  rv   r   r   rW  rX  rY  )r{   r  r  s      r   r  _TestSemaphore.test_timeout  s   99#MM7>>tyyIJnnQ,/$$W__c:-u5$$W__c:159$$W__a8x0%8$$W__h?2E:$$W__h?r   rc   N)	r   r   r   r   r  r  r  r  r   rc   r   r   r  r  b  s    ;;"@r   r  c                       \ rS rSr\SS j5       rS rS rS rS r	S r
S	 r\S
 5       r\R                  " \S5      S 5       r\S 5       r\R                  " \S5      S 5       r\S 5       rS rSrg)_TestConditioni  Nc                     UR                  5         UR                  5         UR                  U5        UR                  5         UR                  5         g r   )r  r  r   )r   condsleepingwokenr+   s        r   r'  _TestCondition.f  s5    		'r   c                     [        S5       H,  n U" 5       U:X  a    O [        R                  " [        5        M.     [        R                  " [        5        U R                  X!5        g ! [         a       M:  f = fNr[  )r}  r   r   r+  rw  r   )r{   r   r   r  s       r   assertReachesEventually&_TestCondition.assertReachesEventually  sd    rA6U? # JJu  	

5''4	 ' s   A((
A76A7c                 *   U R                   S:X  as   UR                  R                  5       UR                  R                  5       -
  nU R	                  US5        U R	                  UR
                  R                  5       S5        g g ! [         a     g f = f)Nr   r   )r   _sleeping_countr   _woken_countrv   _wait_semaphorer   )r{   r  sleeperss      r   check_invariant_TestCondition.check_invariant  s    99# 00::< --779:  1-  !5!5!?!?!A1E $ ' s   A1B 
BBc                    U R                  5       nU R                  S5      nU R                  S5      nU R                  U R                  XU4S9nSUl        UR                  5         U R                  UR                  5        [        R                  " U R                  XU4S9nSUl        UR                  5         U R                  UR                  5        UR                  5         UR                  5         [        R                  " [        5        U R                  S[        U5        UR                  5         UR!                  5         UR#                  5         [        R                  " [        5        U R                  S[        U5        UR                  5         UR!                  5         UR#                  5         [        R                  " [        5        U R                  S[        U5        U R%                  U5        UR                  5         g )Nr   r   Tr   r1  )	Conditionr  r   r'  r   r   r  r   r>  r  r  r   r+  rw  r   r   notifyr  r  )r{   r  r  r  r   s        r   test_notify_TestCondition.test_notify  sm   ~~>>!$q!LLde-DLE		DFF$%1HI		 	 	

5''9e< 	 	

5''9e< 	 	

5''9e< 	T"	r   c                 v  ^ U R                  5       nU R                  S5      nU R                  S5      m[        S5       H  nU R                  U R                  XT[
        4S9nSUl        UR                  5         U R                  UR                  5        [        R                  " U R                  XT[
        4S9nSUl        UR                  5         U R                  UR                  5        M     [        S5       H  nUR                  5         M     [        S5       H  nTR                  5         M     U R                  S[        T5        U R                  U5        [        S5       H  nU R                  U R                  XT4S9nSUl        UR                  5         U R                  UR                  5        [        R                  " U R                  XT4S9nSUl        UR                  5         U R                  UR                  5        M     [        S5       H  nUR                  5         M     [         R"                  " [$        5        U R                  S[        T5        UR                  5         UR'                  5         UR)                  5         U R+                  U4S jS5        U R                  U5        g )Nr   r8  r   TrL  c                     > [        T 5      $ r   r   r  s   r   <lambda>0_TestCondition.test_notify_all.<locals>.<lambda>  
    Yu-=r   )r  r  r}  r   r'  rW  r   r   r  r   r>  r  r  r   r   r  r   r+  rw  
notify_allr  r  r{   r  r  r  r   r   r  s         @r   test_notify_all_TestCondition.test_notify_all  s   ~~>>!$q! qADFF#'5("C  EAAHGGIOOAFF#  '+uh&GIAAHGGIOOAFF#  qA  qAMMO ''9e< 	T" qADFF$%1HIAAHGGIOOAFF#  de5LMAAHGGIOOAFF#  qA  	

5''9e< 	 	$$%=qA 	T"r   c                 8  ^ U R                  5       nU R                  S5      nU R                  S5      m[        S5       H  nU R                  U R                  XT4S9nSUl        UR                  5         U R                  UR                  5        [        R                  " U R                  XT4S9nSUl        UR                  5         U R                  UR                  5        M     [        S5       H  nUR                  5         M     [        R                  " [        5        U R                  S[         T5        UR                  5         UR#                  SS9  UR%                  5         U R'                  U4S jS5        UR                  5         UR#                  S	S9  UR%                  5         U R'                  U4S
 jS5        UR                  5         UR#                  SS9  UR%                  5         U R                  S[         T5        U R)                  U5        g )Nr   r8  r   TrL  r1  )nc                     > [        T 5      $ r   r  r  s   r   r  ._TestCondition.test_notify_n.<locals>.<lambda>B  r  r   rk   c                     > [        T 5      $ r   r  r  s   r   r  r  I  r  r   )r  r  r}  r   r'  r   r   r  r   r>  r  r  r   r+  rw  r   r   r  r  r  r  r  s         @r   test_notify_n_TestCondition.test_notify_n#  s   ~~>>!$q! qADFF$%1HIAAHGGIOOAFF#  de5LMAAHGGIOOAFF#  qA  	

5''9e< 	a 	$$%=qA 	a$$%=qA 	a''9e< 	T"r   c                 
   U R                  5       n[        UR                  5      nUR                  5         U" [        5      nUR                  5         U R                  US5        U R                  UR                  [        5        g r  )	r  r   r   r  rW  r  rv   r   r   )r{   r  r   r   s       r   r  _TestCondition.test_timeoutU  s[    ~~TYY'8ne$$$T\\8<r   c                    ^ U   STl         UR                  5         UR                  U4S j5      nU(       a  TR                   S:w  a  [        R                  " S5        S S S 5        g ! , (       d  f       g = f)Nr   c                  "   > T R                   S:H  $ rj   r   states   r   r  0_TestCondition._test_waitfor_f.<locals>.<lambda>c      EKKNr   rk   r   )r   r  wait_forr   r  )r   r  r  r  s     ` r   _test_waitfor_f_TestCondition._test_waitfor_f^  sH    EKKKM]]#:;FU[[A- TTs   AA''
A5zneeds sharedctypesc                   ^ U R                  5       nU R                  SS5      mU R                  U R                  UT4S9nSUl        UR                  5         U   UR                  U4S j5      nU R                  U5        U R                  TR                  S5        S S S 5        [        S5       HI  n[        R                  " S5        U   T=R                  S	-  sl	        UR                  5         S S S 5        MK     [        U5        U R                  UR                  S5        g ! , (       d  f       N= f! , (       d  f       M  = f)
Nr  rH   r   Tc                  "   > T R                   S:H  $ Nr   r  r  s   r   r  -_TestCondition.test_waitfor.<locals>.<lambda>r  r  r   r   rk   r  r   )r  r   r   r	  r   r   r  r   rv   r   r}  r   r+  r  r.   r   )r{   r  r   r  r  r  s        @r   test_waitfor_TestCondition.test_waitforg  s     ~~

3#LL 4 4D%=LI		]]#:;FOOF#U[[!, 
 qAJJtq    	QQ' T s   AD$
&D5$
D25
E	c                   ^ UR                  5         U   Sn[        R                  " 5       nUR                  U4S jUS9n[        R                  " 5       U-
  nU(       d  U[        -
  U::  a  SUl        S S S 5        g ! , (       d  f       g = f)Nr   c                  "   > T R                   S:H  $ rj   r  r  s   r   r  8_TestCondition._test_waitfor_timeout_f.<locals>.<lambda>  r  r   r*   T)r  r   r   r  	CLOCK_RESr   )r   r  r  successr  r  dtr  s     `     r   _test_waitfor_timeout_f&_TestCondition._test_waitfor_timeout_f  sd    H!B]]#:H]MF!B&Bx)3: $ TTs   AA<<
B
c                 l   U R                  5       nU R                  SS5      nU R                  SS5      nU R                  S5      nU R                  U R                  XX44S9nSUl        UR                  5         U R                  UR                  [        R                  S95        [        S5       HI  n[        R                  " S5        U   U=R                  S	-  sl        UR                  5         S S S 5        MK     [!        U5        U R                  UR                  5        g ! , (       d  f       M  = f)
Nr  r   Fr   Tr*   r8  r  r   )r  r   r  r   r  r   r   r   r  r   r#  r}  r   r+  r   r  r.   )r{   r  r  r  r  r   r  s          r   test_waitfor_timeout#_TestCondition.test_waitfor_timeout  s     ~~

3"**S%(nnQLL < <#G9  ;		G,@,@AB qAJJuq    	Q& s   &D$$
D3	c                     U   UR                  5         S S S 5        [        R                  " S5        Ub&  [        R                  " U[
        R                  5        g g ! , (       d  f       NN= fr   )r  r   r+  rI   rk  r]  r  )r   r   r  s      r   _test_wait_result _TestCondition._test_wait_result  sB    HHJ 

1?GGC'  Qs   A
A*c                 \   [        U [        5      (       a*  [        R                  S:w  a  [        R
                  " 5       nOS nU R                  5       nU   U R                  UR                  S5      5        U R                  UR                  S5      5        U R                  U R                  X!4S9nUR                  5         U R                  UR                  S5      5        Ub!  U R                  [        UR                  S5        UR                  5         S S S 5        g ! , (       d  f       g = f)Nr8   r   r   r   <   )r    ProcessesMixinr   r   rI   r   r  r  r   r   r  r   r   rw   KeyboardInterruptr   )r{   r  r   r   s       r   test_wait_result_TestCondition.test_wait_result  s    dN++0G))+CCNNQVVAY'QVVC[)D$:$:!JAGGIOOAFF2J'!!"3QVVR@FFH QQs   C D
D+rc   r   )r   r   r   r   r  r'  r  r  r  r  r  r  r	  rM   r  HAS_SHAREDCTYPESr  r  r  r  r#  r   rc   r   r   r  r    s     	5	+Z<#|0#d=   )+?@( A(. % % )+?@' A'. ( (r   r  c                   4    \ rS rSr\S 5       rS rSS jrSrg)
_TestEventi  c                 X    [         R                  " [        5        UR                  5         g r   )r   r+  rX  r  r  s     r   _test_event_TestEvent._test_event  s    

8		r   c                 v   U R                  5       n[        UR                  5      nU R                  UR	                  5       S5        U R                  U" S5      S5        U R                  UR                  S5        U R                  U" [        5      S5        U R                  UR                  [        5        UR                  5         U R                  UR	                  5       S5        U R                  U" 5       S5        U R                  UR                  S5        U R                  U" [        5      S5        U R                  UR                  S5        UR                  5         U R                  U R                  U4S9nSUl        UR                  5         U R                  U" 5       S5        UR                  5         g )NFr:   Tr   )r6  r   r   rv   r  r   r   rW  r  r  r   r)  r   r   r   )r{   r  r   r   s       r   
test_event_TestEvent.test_event  sF   

UZZ( 	/ 	cE*$$T\\37h/$$T\\8<		 	.&$$T\\37h.$$T\\37 	 LL 0 0xL@		&	r   Nc                    U R                  5       nU R                  S:X  ar  U R                  [        U5      S5        UR	                  5         U R                  [        U5      S5        UR                  5         U R                  [        U5      S5        g U R                  S:X  aG  U R                  [        U5      S5        UR	                  5         U R                  [        U5      S5        g g )Nr   z<Event at .* unset>z<Event at .* set>r   z(<EventProxy object, typeid 'Event' at .*)r6  r   assertRegexreprr  r  )r{   r  s     r   	test_repr_TestEvent.test_repr  s    

99#T%[*@AIIKT%[*>?KKMT%[*@AYY)#T%[*UVIIKT%[*UV $r   rc   )returnN)	r   r   r   r   r  r)  r,  r1  r   rc   r   r   r'  r'    s      !FWr   r'  c                   2    \ rS rSrS rS rS rS rS rSr	g)	
_DummyListi  c                     [         R                  R                  [        R                  " S5      5      n[         R
                  " 5       nU R                  X45        SU R                  S'   g )Nr  r   )r!   heapBufferWrapperstructcalcsizer  __setstate__
_lengthbuf)r{   wrapperr  s      r   r   _DummyList.__init__  sM    !&&44V__S5IJ##%7/*r   c                 ~    Uu  U l         U l        U R                   R                  5       R                  S5      U l        g )Nr  )_wrapper_lockcreate_memoryviewcastr<  )r{   r  s     r   r;  _DummyList.__setstate__  s/    &+#
--99;@@Er   c                 2    U R                   U R                  4$ r   )r@  rA  r   s    r   __getstate___DummyList.__getstate__  s    tzz**r   c                 ~    U R                      U R                  S==   S-  ss'   S S S 5        g ! , (       d  f       g = fNr   r   rA  r<  )r{   _s     r   r  _DummyList.append  s'    ZZOOA!# ZZs   .
<c                 n    U R                      U R                  S   sS S S 5        $ ! , (       d  f       g = fr  rJ  r   s    r   __len___DummyList.__len__  s    ZZ??1% ZZs   &
4)r<  rA  r@  N)
r   r   r   r   r   r;  rF  r  rN  r   rc   r   r   r5  r5    s    F+$&r   r5  c                  0    [         R                  " S5        g )Nr  rL  rc   r   r   _waitrQ    s    JJtr   c                   @    \ rS rSrSrSS jrS rS rS rS r	S r
S	rg
)Bunchi  z
A bunch of threads.
c                    X l         X0l        X@l        UR                  5       U l        UR                  5       U l        UR                  5       U l        U(       d  U R                  R                  5         / n[        U5       HD  nUR                  U R                  S9nSUl        UR                  5         UR                  U5        MF     S n	[        R                   " X	U5      U l        g)z
Construct a bunch of `n` threads running the same function `f`.
If `wait_before_exit` is True, the threads won't terminate until
do_finish() is called.
r   Tc                 6    U  H  nUR                  5         M     g r   )r   )r   r   s     r   finalize Bunch.__init__.<locals>.finalize5  s     r   N)r'  rX   r  	DummyListstartedfinishedr6  	_can_exitr  r}  r   taskr   r   r  r  rV  
_finalizer)
r{   	namespacer'  rX   r  wait_before_exitr   r  r   rV  s
             r   r   Bunch.__init__  s     	 **,!++-"*NN qA!!!3AAHGGINN1	 	 "**47Cr   c                    [         R                  " 5       nU R                  R                  U5         U R                  " U R
                  6   U R                  R                  U5        U R                  R                  S5        U R                  R                  5       (       d   eg ! U R                  R                  U5        U R                  R                  S5        U R                  R                  5       (       d   ef = f)N   )
rI   r   rY  r  r'  rX   rZ  r[  r   r  r{   r  s     r   r\  
Bunch.task;  s    iikC 	+FFDIIMM  %NN#>>((**** MM  %NN#>>((****s   B# #AC<c                     [        U R                  5      U R                  :  a0  [        5         [        U R                  5      U R                  :  a  M/  g g r   )r   rY  r  rQ  r   s    r   wait_for_startedBunch.wait_for_startedE  s3    $,,$&&(G $,,$&&(r   c                     [        U R                  5      U R                  :  a0  [        5         [        U R                  5      U R                  :  a  M/  g g r   )r   rZ  r  rQ  r   s    r   wait_for_finishedBunch.wait_for_finishedI  s3    $-- 466)G $-- 466)r   c                 8    U R                   R                  5         g r   )r[  r  r   s    r   	do_finishBunch.do_finishM  s    r   c                 $    U R                  5         g r   )r]  r   s    r   r$   Bunch.closeP  s    r   )r[  r]  rX   r'  rZ  r  rY  Nr9  )r   r   r   r   r   r   r\  rf  ri  rl  r$   r   rc   r   r   rS  rS    s&    D8+r   rS  c                        \ rS rSrS rS rSrg)
AppendTrueiT  c                     Xl         g r   rr  )r{   rr  s     r   r   AppendTrue.__init__U  s    r   c                 :    U R                   R                  S5        g r  )rr  r  r   s    r   r   AppendTrue.__call__W  s    r   rs  Nr   rc   r   r   rq  rq  T  s    r   rq  c                      \ rS rSrSrSrSrS rS rS r	S r
\S	 5       rSS
 jrS r\S 5       rS r\S 5       rS r\S 5       rS r\S 5       rS r\S 5       rS r\S 5       rS r\S 5       rS rS r\S 5       rS rSr g) _TestBarrieri[  z
Tests for Barrier objects.
r   g      >@c                 V    U R                  U R                  U R                  S9U l        g r)   )Barrierr  defaultTimeoutbarrierr   s    r   setUp_TestBarrier.setUpb  s     ||DFFD4G4G|Hr   c                 F    U R                   R                  5         S U l         g r   )r|  abortr   s    r   tearDown_TestBarrier.tearDowne  s    r   c                     U R                   S:X  a  / $ U R                   S:X  a  U R                  R                  5       $ [        5       $ )Nr   r   )r   r   r   r5  r   s    r   rX  _TestBarrier.DummyListi  s:    99	!IYY)#<<$$&&<r   c                     [        XX R                  S-
  5      n U" U6   UR                  5         UR                  5         g ! UR                  5         f = fr   )rS  r  ri  r$   )r{   r'  rX   r   s       r   run_threads_TestBarrier.run_threadsq  sA    $4*	tH!GGIAGGIs   A Ac                    UR                   nX@R                  :X  d   e[        U5       H{  nUS   R                  S5        [	        US   5      XT-  :X  d   eUR                  5         US   R                  S5        [	        US   5      US-   U-  :X  d   eUR                  5         M}      UR                  S:X  d   e UR                  (       a   eg ! [         a     N f = f)Nr   Tr   )	partiesr  r}  r  r   r   	n_waitingr   broken)r   r|  resultsr  mr  s         r   	multipass_TestBarrier.multipassy  s    OOEEzzqAAJd#wqz?ae+++LLNAJd#wqz?q1uk111LLN 	$$))) >>!!> # 		s   )C 
CCc                     U R                  5       U R                  5       /nU R                  U R                  U R                  X!45        g)z+
Test that a barrier is passed in lockstep
N)rX  r  r  r|  )r{   passesr  s      r   test_barrier_TestBarrier.test_barrier  s9     >>#T^^%56$,,)HIr   c                 $    U R                  S5      $ )z3
Test that a barrier works for 10 consecutive runs
r[  )r  r   s    r   test_barrier_10_TestBarrier.test_barrier_10  s       $$r   c                 F    UR                  5       nUR                  U5        g r   )r   r   )r   r|  r&   r   s       r   _test_wait_return_f _TestBarrier._test_wait_return_f  s    lln		#r   c                 :   U R                  5       nU R                  U R                  U R                  U45        [	        U R
                  5       Vs/ s H  o!R                  5       PM     nnU R                  UR                  S5      S5        [        U5        gs  snf )z)
test the return value from barrier.wait
r   r   N)
r#   r  r  r|  r}  r  r   rv   countr'   )r{   r&   r  r  s       r   test_wait_return_TestBarrier.test_wait_return  st     

11DLL%3HI(-dff6199;6q)1-E 7s   Bc                 N    UR                  5         [        U5      S:w  a  [        eg r   )r   r   rX  )r   r|  r  s      r   _test_action_f_TestBarrier._test_action_f  s"    w<1 r   c                     U R                  5       nU R                  U R                  [        U5      S9nU R	                  U R
                  X!45        U R                  [        U5      S5        g)z
Test the 'action' callback
)r  r   N)rX  rz  r  rq  r  r  rv   r   )r{   r  r|  s      r   test_action_TestBarrier.test_action  sX     ..",,tvvj.A,B,,w.@AWq)r   c                 $    UR                  5       nX@R                  S-  :X  a  [        eUR                  5         UR                  S5        g ! [        R
                   a    UR                  S5         g [         a    UR                  5          g f = fNr1  T)r   r  rX  r  r>  BrokenBarrierErrorr  )r   r|  results1results2r  s        r   _test_abort_f_TestBarrier._test_abort_f  sl    		AEE1H}""LLNOOD!++ 	"OOD! 	MMO	s   A	A %B3BBc                 d   U R                  5       nU R                  5       nU R                  U R                  U R                  X45        U R	                  [        U5      S5        U R	                  [        U5      U R                  S-
  5        U R                  U R                  R                  5        g)z;
Test that an abort will put the barrier in a broken state
r   r   N)	rX  r  r  r|  rv   r   r  r   r  )r{   r  r  s      r   
test_abort_TestBarrier.test_abort  s     >>#>>#++,,;	=X*Xq1++,r   c                    UR                  5       nXPR                  S-  :X  ac  UR                  U R                  S-
  :  a5  [        R                  " S5        UR                  U R                  S-
  :  a  M5  UR                  5         O" UR                  5         UR                  S5        UR                  5         UR                  S5        g ! [        R                   a    UR                  S5         NIf = f)Nr1  r   r  T)	r   r  r  r   r+  resetr  r>  r  )r   r|  r  r  results3r  s         r   _test_reset_f_TestBarrier._test_reset_f  s    LLNq=##ceeAg-

5! ##ceeAg-MMO&% 		 // &%&s   !C
 
%C21C2c                    U R                  5       nU R                  5       nU R                  5       nU R                  U R                  U R                  XU45        U R	                  [        U5      S5        U R	                  [        U5      U R                  S-
  5        U R	                  [        U5      U R                  5        g)z<
Test that a 'reset' on a barrier frees the waiting threads
r   r   N)rX  r  r  r|  rv   r   r  )r{   r  r  r  s       r   
test_reset_TestBarrier.test_reset  s     >>#>>#>>#++,,HE	GX*Xq1X/r   c                     UR                  5       nX`R                  S-  :X  a  [        eUR                  5         UR                  S5        UR                  5       U R                  S-  :X  a  UR                  5         UR                  5         UR                  5         UR                  S5        g ! [        R
                   a    UR                  S5         N[         a    UR                  5          Nf = fr  )r   r  rX  r  r>  r  r  r  )r   r|  barrier2r  r  r  r  s          r   _test_abort_and_reset_f$_TestBarrier._test_abort_and_reset_f  s    		AEE1H}""LLNOOD! ==?ceeQh&MMO ++ 	"OOD! 	MMO	s   A	B. .%C1C10C1c                    U R                  5       nU R                  5       nU R                  5       nU R                  U R                  5      nU R                  U R                  U R
                  XAX#45        U R                  [        U5      S5        U R                  [        U5      U R                  S-
  5        U R                  [        U5      U R                  5        g)z6
Test that a barrier can be reset after being broken.
r   r   N)rX  rz  r  r  r  r|  rv   r   )r{   r  r  r  r  s        r   test_abort_and_reset!_TestBarrier.test_abort_and_reset  s     >>#>>#>>#<<'55,,HO	QX*Xq1X/r   c                     UR                  5       nX0R                  S-  :X  a  [        R                  " S5         UR                  S5        g ! [        R
                   a    UR                  S5         g f = f)Nr1        ?r  T)r   r  r   r+  r>  r  r  r   r|  r  r  s       r   _test_timeout_f_TestBarrier._test_timeout_f  sW    LLNq=JJsO	!LL++ 	!NN4 	!s   A %A43A4c                     U R                  5       nU R                  U R                  U R                  U45        U R	                  [        U5      U R                  R                  5        g)z
Test wait(timeout)
N)rX  r  r  r|  rv   r   r  )r{   r  s     r   r  _TestBarrier.test_timeout  sM     .."--g/FGWt||';';<r   c                    UR                  U R                  5      nX0R                  S-  :X  a  [        R                  " S5         UR                  5         g ! [
        R                   a    UR                  S5         g f = f)Nr1  r  T)r   r{  r  r   r+  r>  r  r  r  s       r   _test_default_timeout_f$_TestBarrier._test_default_timeout_f%  s]    LL++,q=JJsO	!LLN++ 	!NN4 	!s   A %A>=A>c                     U R                  U R                  SS9nU R                  5       nU R                  U R                  X45        U R                  [        U5      UR                  5        g)z$
Test the barrier's default timeout
r  r*   N)rz  r  rX  r  r  rv   r   r  )r{   r|  r  s      r   test_default_timeout!_TestBarrier.test_default_timeout0  sW     ,,tvvs,3.."557IJWw7r   c                 f    U R                  S5      nUR                  5         UR                  5         g r   )rz  r   )r{   r   s     r   test_single_thread_TestBarrier.test_single_thread9  s!    LLO		r   c                     [        U5       H/  nUR                  5         U   UR                  U5        S S S 5        M1     g ! , (       d  f       MC  = fr   )r}  r   r  )r   r|  r  connr  r  s         r   _test_thousand_f_TestBarrier._test_thousand_f>  s4    vALLN		!  s   A  
A	c                 :   U R                   S:X  a*  U R                  SR                  U R                   5      5        SnU R                  5       nU R	                  S5      u  p4[        U R                  5       HU  nU R                  U R                  U R                  XU4S9nUR                  5         U R                  UR                  5        MW     [        U5       H?  n[        U R                  5       H#  nU R                  UR                  5       U5        M%     MA     g )Nr   r     Fr   )r   r   r   r  r  r}  r  r   r  r|  r   r  r   rv   r  )r{   r  r  r  r  jr   r  s           r   test_thousand_TestBarrier.test_thousandE  s    99	!MM7>>tyyIJyy{99U+tvvAD$9$9!%v4 H  JAGGIOOAFF#	  vA466]  a0 # r   )r|  Nr   )!r   r   r   r   r   r  r{  r}  r  rX  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   rc   r   r   rx  rx  [  s    	
ANI  " " J%    
* 
 

-  "0  *0 ! != ! !8
  1r   rx  c            	       p    \ rS rSrSrSSSSS\" S5      \" S	5      4/rS
 r\S 5       r	SS jr
S rS rSrg)
_TestValueiY  r  )r  i  i^  )dg      @g      )hi   )r                   r   xyc                 >    [         (       d  U R                  S5        g g Nz"requires multiprocess.sharedctypesr%  r   r   s    r   r}  _TestValue.setUpe      MM>?  r   c                 T    [        XR                  5       H  u  p#US   Ul        M     g r  )zipcodes_valuesr   )r   valuessvcvs       r   r   _TestValue._testi  s$    &"2"23FB!uBH 4r   c           	      p   U(       a3  U R                    VVVs/ s H  u  p#nU R                  X#5      PM     nnnnO2U R                    VVVs/ s H  u  p#nU R                  X#5      PM     nnnn[        XPR                   5       H$  u  pgU R	                  UR
                  US   5        M&     U R                  U R                  U4S9nSUl        UR                  5         UR                  5         [        XPR                   5       H$  u  pgU R	                  UR
                  US   5        M&     g s  snnnf s  snnnf )Nr   r   Tr1  )r  RawValuer   r  rv   r   r   r   r   r   r   )	r{   rawcoder   rK  r  r  r  r  s	            r   
test_value_TestValue.test_valueo  s   ,0,=,=?,=.$q mmD0,=  ?F -1,=,=?,=.$q jj-,=  ? &"3"34FBRXXr!u- 5 ||4::VI|>

		&"3"34FBRXXr!u- 5??s   D*D1c                 "    U R                  SS9  g NT)r  )r  r   s    r   test_rawvalue_TestValue.test_rawvalue  s    D!r   c                    U R                  SS5      nUR                  5       nUR                  5       nU R                  SSS S9nUR                  5       nUR                  5       nU R                  5       nU R                  SSUS9nUR                  5       n	UR                  5       n
U R	                  Xy5        U R                  SSSS9nU R                  [        US5      5        U R                  [        US5      5        U R                  [        U R                   SSSS9  U R                  SS5      nU R                  [        US5      5        U R                  [        US5      5        g )Nr  r   r  Fget_lockget_objnavalue)
r   r  r  r  rv   r  r\  rw   rK   r  )r{   val1lock1obj1val2lock2obj2r  val3lock3obj3arr4arr5s                r   test_getobj_getlock_TestValue.test_getobj_getlock  s*   zz#q!||~zz#qtz,||~yy{zz#qtz,||~%zz#quz-z23y12.$**c19M}}S!$z23y12r   rc   Nr9  )r   r   r   r   r   r   r  r}  r  r   r  r  r  r   rc   r   r   r  r  Y  sW    "M 		eCj%*%
L@  
.&"3r   r  c                      \ rS rSrSr\S 5       r\R                  " \	SL S5      SS j5       r
\R                  " \	SL S5      S 5       r\R                  " \	SL S5      S 5       r\R                  " \	SL S5      S	 5       rS
rg)
_TestArrayi  r  c                 ^    [        S[        U5      5       H  nX==   XS-
     -  ss'   M     g r   )r}  r   )r   seqr  s      r   r'  _TestArray.f  s)    q#c(#AFcA#hF $r   Nzrequires _ctypesc                    / SQnU(       a  U R                  SU5      nOU R                  SU5      nU R                  [        U5      [        U5      5        U R                  US   US   5        U R                  [	        USS 5      [	        USS 5      5        [
        R
                  " S/ SQ5      =USS& USS& U R                  [	        US S  5      U5        U R                  U5        U R                  U R                  U4S	9nS
Ul        UR                  5         UR                  5         U R                  [	        US S  5      U5        g )N)
i  ir  i  i5        i$  i  i  i?  r  r8  r1  rS  )r   r1  r8  rk   rk   r:  r   T)RawArrayArrayrv   r   r   arrayr'  r   r   r   r   )r{   r  r
  arrr   s        r   
test_array_TestArray.test_array  s   @--S)C**S#&CS3s8,QQ(c!Ahc!Ah8#kk#|<<Aa3q8c!fs+sLLcVL4			c!fs+r   c           	      <   Sn[        S5       H  nU R                  SU5      nU R                  [        U5      U5        U R                  [	        U5      S/U-  5        [        S5      US S & U R                  [	        U5      [	        [        S5      5      5        AM     g )Nr[  r8  r  r   )r}  r  rv   r   r   )r{   sizerK  r  s       r   test_array_from_size_TestArray.test_array_from_size  s    
 qA**S$'CSXt,T#Yd
32YCFT#YU2Y8 r   c                 "    U R                  SS9  g r  )r  r   s    r   test_rawarray_TestArray.test_rawarray  s    D!r   c                 p   U R                  S[        [        S5      5      5      nUR                  5       nUR	                  5       nU R                  S[        [        S5      5      S S9nUR                  5       nUR	                  5       nU R                  5       nU R                  S[        [        S5      5      US9nUR                  5       n	UR	                  5       n
U R                  Xy5        U R                  S[        S5      SS9nU R                  [        US5      5        U R                  [        US5      5        U R                  [        U R                   S[        S5      SS9  U R                  S[        S5      5      nU R                  [        US5      5        U R                  [        US5      5        g )Nr  r[  r  Fr  r  notalock)r  r   r}  r  r  r  rv   r  r\  rw   rK   r  )r{   arr1r  r  arr2r  r  r  arr3r  r  r  r  s                r   test_getobj_getlock_obj"_TestArray.test_getobj_getlock_obj  sV   zz#tE"I/||~zz#tE"ITz:||~yy{zz#tE"ITz:||~%zz#uRyuz5z23y12.**c59: 	 	G }}S%),z23y12r   rc   r9  )r   r   r   r   r   r  r'  rM   r   rC   r  r  r  r!  r   rc   r   r   r  r    s    "M  __Ud]$67, 8,0 __Ud]$67 8 __Ud]$67" 8" __Ud]$673 83r   r  c                   H    \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 rSrg)_TestContainersi  r   c                    U R                  [        [        S5      5      5      nU R                  US S  [        [        S5      5      5        U R                  5       nU R                  US S  / 5        UR                  [        [        S5      5      5        U R                  US S  [        [        S5      5      5        U R                  US   S5        U R                  USS / SQ5        US-  nU R                  US S  / SQ5        U R                  USS/-   / SQ5        U R                  US S  [        [        S5      5      5        X/nU R                  U5      nU R                  U Vs/ s H  oUS S  PM	     sn/ SQ/ SQ/5        U R                  U/5      nUR	                  S	5        U R                  US
   S S  / SQ5        g s  snf )Nr[  r   r1  )r1  r8  rk   )
r   r   r1  r8  rk   r   r   r1  r8  rk   rL  )r   r   r1  r8  rk   r   r   r1  r8  rk   r   rL  )
r   r   r1  r8  rk   r   rL  rS  r:  	   r3  r   )r   r   r1  r8  rk   r   rL  rS  r:  r'  r3  )r   r}  rv   extendr  )r{   r   r   r  r:  elementr'  s          r   	test_list_TestContainers.test_list  sz   IId59o&1tE"I/IIK1r"	eAh 1tE!H~.1q!1R'*	Q1=>aV%IJ1tE"I/FIIaL'()qGQZq)+-KL	
 IIqcN	1a"IJ *s   %F?c                 F   U R                  [        [        S5      5      5      n[        U5      nU R                  [        U5      [        [        S5      5      5        U R                  [        U5      / 5        [        U5      nSUS'   U R                  [	        U5      S5        g )Nr[  rK  r   )r   r}  r  rv   next)r{   r   its      r   test_list_iter_TestContainers.test_list_iter	  sw    IId59o&!Wb4b	?3b2&!W!b3'r   c           
         U R                  [        S5       Vs/ s H  oR                  [        S5      5      PM     sn5      nU R                  U Vs/ s H  o3S S  PM	     sn/ SQ/S-  5        SUS   S'   U R                  US   S S  / SQ5        [        SS5       H  nU R                  X$   S S  / SQ5        M     U R                  US   R                  5       S5        U R                  [	        US   5      S5        [        SSS5       H   nU R                  [	        X$   5      S5        M"     AU R                  5       nUR                  U5        Ag s  snf s  snf )	Nr8  )r   r   r1  7   r   rH   )r   r   r2  r   r1  )r   r}  rv   popr   r  )r{   _ir   innerr  r   s         r   test_list_proxy_in_list'_TestContainers.test_list_proxy_in_list	  s"   IIU1X>Xryyq*X>?2u(2YK!OD!R1a*-q!AQT!Wi0  	1Q'QqTA&q!QASY*   IIK	# ?2s   #EEc           
      N   U R                  5       n[        [        SS5      5      nU H  n[        U5      X'   M     U R	                  UR                  5       [        S U 5       5      5        U R	                  [        UR                  5       5      U5        U R	                  [        UR                  5       5      U Vs/ s H  n[        U5      PM     sn5        U R	                  [        UR                  5       5      U Vs/ s H  o3[        U5      4PM     sn5        g s  snf s  snf )NA   F   c              3   :   #    U  H  o[        U5      4v   M     g 7fr   )chr.0r  s     r   	<genexpr>,_TestContainers.test_dict.<locals>.<genexpr>8	  s     'EWCFWs   )
dictr   r}  r<  rv   r   sortedkeysr  r  )r{   r  indicesr  s       r   	test_dict_TestContainers.test_dict3	  s    IIKuR}%Aq6AD 4'EW'E#EF)73
+g-Fgc!fg-FG	*',J'QQ[',JK .G,Js   <D
?D"
c                 h   U R                  5       n[        [        SS5      5      nU H  n[        U5      X'   M     [	        U5      nU R                  [        U5      U5        U R                  [        U5      / 5        [	        U5      nUR                  5         U R                  [        [        U5        g )Nr9  r:  )
rA  r   r}  r<  r  rv   r  rw   rX  r-  )r{   r  rD  r  r.  s        r   test_dict_iter_TestContainers.test_dict_iter=	  s    IIKuR}%Aq6AD !Wb7+b2&!W		,b1r   c                 z   U R                  SSS9nU R                  SSS9nU R                  XS9nU R                  US   S5        U R                  US	   S   S5        S
US	   S'   U R                  US   S
5        U R                  US	   S   S
5        SUS	   S'   U R                  US   S5        U R                  US	   S   S5        AAU R                  US   S   S5        SUS	   S'   U R                  US	   S   S5        US   nUS	   nSUS'   U R                  US   S5        U R                  US	   S   S5        UR                  5         U R                  [        U5      S5        U R                  US   S5        U R                  US   S5        U R	                  X/5      nSUS   S'   U R                  US   S5        U R                  US   S   S5        AAU R                  US   S   S5        U R	                  SS/U/5      nU R                  US   [        5        U R                  US   S   S   S5        g )Nr1  rk   )ferretshamstersr[  r8  )waterfeed)petssuppliesrM  rP  r   blanketsrS  rO  rK     r   rL  r   marmotsX   c   rH   rN  )rA  rv   r  r   r   r   )r{   rO  rP  r  louters         r   test_dict_proxy_nested&_TestContainers.test_dict_proxy_nestedJ	  sb   yyQy/992A9.II4I3'*B/:w/4$%*j!*-q1:z2A6!"*g'*A.:w/369-q1$&*j!:z2B7yZ='*A.:w/3		Q#'*A.j)1-IIt&'!Yi!,1i!,1i!,		B8Q-(eAh-r2v.2r   c                    U R                  5       nUR                  U R                  5       5        US   R                  S5        U R	                  US   R                  5       S5        U R                  5       nU R                  5       US'   US   R                  S5        U R	                  US   R                  5       S5        g )Nr   {     )r   r  r#   r   rv   r   rA  r   s      r   test_nested_queue!_TestContainers.test_nested_queuex	  s    IIK		!1S)IIKzz|!	!1S)r   c                 N   U R                  5       nSUl        SUl        SUl        U R	                  UR                  UR                  4S5        U?U R	                  [        U5      S5        U R                  [        US5      5        U R                  [        US5      (       + 5        g )NBobBuilderhidden)r`  ra  zNamespace(name='Bob')r3   job)	Namespacer3   rc  _hiddenrv   ry   r   r\  )r{   r  s     r   test_namespace_TestContainers.test_namespace	  s    NN	!&&!%%*<=EQ!896*+GAu--.r   rc   N)r   r   r   r   r   r*  r/  r6  rE  rH  rX  r]  rf  r   rc   r   r   r$  r$    s2     MK>((L2,3\*	/r   r$  c                 f    Uc  [         R                  " U5        X -  $ UR                  U5        X -  $ r   )r   r+  r   )r  r   r  s      r   sqrri  	  s1    }

4 3J 	

43Jr   c                 
    X-  $ r   rc   )r  r  s     r   mulrk  	  	    3Jr   c                 J    [         R                  " U 5        [        SS-  5      e)Nr  i   )r   r+  rL   r;   s    r   raise_large_valuerrorrn  	  s    JJt
S7]
##r   c                     U $ r   rc   r  s    r   identityrq  	  s    Hr   c                   $    \ rS rSrSrS rS rSrg)CountedObjecti	  r   c                 V    U =R                   S-  sl         [        R                  U 5      $ r   )n_instancesr  __new__rM  s    r   rv  CountedObject.__new__	  s    1~~c""r   c                 @    [        U 5      =R                  S-  sl        g r   )r9  ru  r   s    r   __del__CountedObject.__del__	  s    T
!#r   rc   N)r   r   r   r   ru  rv  ry  r   rc   r   r   rs  rs  	  s    K#$r   rs  c                       \ rS rSrSrg)SayWhenErrori	  rc   Nr   r   r   r   r   rc   r   r   r|  r|  	  s    r   r|  c              #   z   #    US:X  a  [        S5      e[        U 5       H  nX!:X  a  [        S5      eUv   M     g 7f)NrH   zSomebody said when)r|  r}  )totalwhenr  s      r   exception_throwing_generatorr  	  s<     rz/005\9344 s   9;c                   V  ^  \ rS rSr\U 4S j5       r\U 4S j5       rS rS rS r	S r
S rS	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS r\S 5       r\R8                  " SS5      S 5       r\S 5       r\R8                  " SS5      S 5       rS r S r!S r"S  r#S!r$U =r%$ )"	_TestPooli	  c                 N   > [         TU ]  5         U R                  S5      U l        g rj   )super
setUpClassPoolpoolr   	__class__s    r   r  _TestPool.setUpClass	  s    88A;r   c                    > U R                   R                  5         U R                   R                  5         S U l         [        TU ]  5         g r   )r  r%  r   r  tearDownClassr  s    r   r  _TestPool.tearDownClass	  s2    r   c                     U R                   R                  nU R                  U" [        S5      [        S5      5        U R                  U" [        SSS05      [        SS95        g )N)r   r   rc   r  r8  rp  )r  applyrv   ri  )r{   papplys     r   
test_apply_TestPool.test_apply	  sK    T*CF3R#a138<r   c                    U R                   R                  nU R                  U" [        [	        [        S5      5      5      [	        [        [        [	        [        S5      5      5      5      5        U R                  U" [        [	        [        S5      5      SS9[	        [        [        [	        [        S5      5      5      5      5        g )Nr[  rK  r  	chunksize)r  maprv   ri  r   r}  )r{   pmaps     r   test_map_TestPool.test_map	  s|    yy}}c4b	?3T#c4b	?:S5TUc4c
#3rBc#tE#J'789	;r   c           
         U R                   R                  n[        [        [	        S5      [	        SSS5      5      5      nU R                  U" [        U5      [        [        R                  " [        U5      5      5        [        [        [	        S5      [	        SSS5      5      5      nU R                  U" [        USS9[        [        R                  " [        U5      5      5        g )Nr[  r'  rH   rK  rU  r  r  )r  starmapr   r  r}  rv   rk  r   )r{   psmaptupless      r   test_starmap_TestPool.test_starmap	  s    		!!c%)U1R_56sF+i//V<=	?c%*eBr2&678sFb9i//V<=	?r   c           
         [        [        [        S5      [        SSS5      5      5      nU R                  U R                  R                  [        U5      R                  5       [        [        R                  " [        U5      5      5        g )NrK  rU  rH   )
r   r  r}  rv   r  starmap_asyncrk  r   r   r  )r{   r  s     r   test_starmap_async_TestPool.test_starmap_async	  s_    c%*eBr2&67800f=AACi//V<=	?r   c                     U R                  U R                  R                  [        [	        [        S5      5      5      R                  5       [	        [        [        [	        [        S5      5      5      5      5        g r  )rv   r  	map_asyncri  r   r}  r   r  r   s    r   test_map_async_TestPool.test_map_async	  sK    ,,S$uRy/BFFHc#tE"I78	:r   c                 2   U R                   S:X  a  U R                  R                  5       O/ nU R                  R	                  [
        S/UR                  UR                  S9R                  5         U R                  S[        U5      5        U R                  S/US   5        U R                  R	                  [
        S/UR                  UR                  S9R                  5         U R                  S[        U5      5        U R                  US   [        5        g )Nr   1)callbackerror_callbackr   r   r   r1  )r   r   r   r  r  rq  r  r   rv   r   r   rL   )r{   	call_argss     r   test_map_async_callbacks"_TestPool.test_map_async_callbacks	  s    +/99	+ADLL%%'r			C#%.%5%5+4+;+; 	 	==ATVC	N+!il+		C#%.%5%5+4+;+; 	 	==ATVC	N+ilJ7r   c                 F   U R                   S:X  a*  U R                  SR                  U R                   5      5         " S S[        5      nU R	                  [
        5         U R                  R                  [        U" 5       /S-  5        S S S 5        g ! , (       d  f       g = f)Nr   r   c                       \ rS rSrS rSrg)*_TestPool.test_map_unplicklable.<locals>.Ai	  c                     [        S5      e)Nzcannot picklerW  r   s    r   r   5_TestPool.test_map_unplicklable.<locals>.A.__reduce__	  s    "?33r   rc   Nr  rc   r   r   Ar  	  s    4r   r  r[  )	r   r   r   r  rw   rX  r  r  ri  )r{   r  s     r   test_map_unplicklable_TestPool.test_map_unplicklable	  sl    99	!MM7>>tyyIJ	4 	4 |,IIMM#uRx( -,,s   *B
B c                      U R                   R                  [        / SS9R                  [        S9  g ! [
        R                   a    U R                  S5         g f = f)Nr   r  r*   z2pool.map_async with chunksize stalled on null list)r  r  ri  r   rW  r!   TimeoutErrorrt   r   s    r   test_map_chunksize_TestPool.test_map_chunksize	  sS    	LIIR1599(9K++ 	LIIJK	Ls   03 %AAc                    U R                   S:X  a*  U R                  SR                  U R                   5      5        U R                  [        5         U R
                  R                  [        [        SS5      S5        S S S 5        U R                  [        5         U R
                  R                  [        [        SS5      S5        S S S 5        U R                  [        5         U R
                  R                  [        [        SS5      S5        S S S 5         " S S5      nU R                  [        5         U R
                  R                  [        U" 5       S5        S S S 5        U R                  [        5         U R
                  R                  [        U" 5       S5        S S S 5        g ! , (       d  f       GN4= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)	Nr   r   r   rH   r[  r8  c                   &    \ rS rSrS rS rS rSrg)E_TestPool.test_map_handle_iterable_exception.<locals>.SpecialIterablei
  c                     U $ r   rc   r   s    r   __iter__N_TestPool.test_map_handle_iterable_exception.<locals>.SpecialIterable.__iter__
  s    r   c                     [         er   )r|  r   s    r   __next__N_TestPool.test_map_handle_iterable_exception.<locals>.SpecialIterable.__next__
  s    ""r   c                     gr   rc   r   s    r   rN  M_TestPool.test_map_handle_iterable_exception.<locals>.SpecialIterable.__len__
  s    r   rc   N)r   r   r   r   r  r  rN  r   rc   r   r   SpecialIterabler  
  s    #r   r  )	r   r   r   rw   r|  r  r  ri  r  )r{   r  s     r   "test_map_handle_iterable_exception,_TestPool.test_map_handle_iterable_exception	  sK   99	!MM7>>tyyIJ |,IIMM#;ArBAF - |,IIMM#;ArBAF - |,IIMM#;BBAF -	 	 |,IIMM#0!4 -|,IIMM#0!4 -,% -, -, -, -,,,s<   ,F),F;",G5'G9'G.)
F8;
G	
G
G+.
G<c                     U R                   R                  [        S[        45      n[	        UR
                  5      nU R                  U" 5       S5        U R                  UR                  [        5        g )NrS  1   )	r  apply_asyncri  rW  r   r   rv   r   r   )r{   r   r   s      r   
test_async_TestPool.test_async
  sP    ii##C!X8CGG$#$$S[[(;r   c                 X   U R                  S5      n U R                  S:X  a  [        R                  " 5       OS nUR	                  [
        S[        [        R                  -   U45      n[        UR                  5      nU R                  [        R                  U[        S9  U R                  UR                  [        5        Ub  UR!                  5         UR#                  5         UR%                  5         g ! Wb  UR!                  5         UR#                  5         UR%                  5         f = f)Nr8  r   rL  r*   )r  r   r>  r6  r  ri  rX  r   r.  r   r   rw   r!   r  r   r   r  r%  r   )r{   r   r  r   r   s        r   test_async_timeout_TestPool.test_async_timeout
  s    IIaL
	)-i)?IOO%TE--aG4I4I)I5%QRC(Co::CR((h? 		KKMFFH  		KKMFFHs   B-C4 45D)c                    U R                   R                  [        [        [	        S5      5      5      nU R                  [        U5      [        [        [        [        [	        S5      5      5      5      5        U R                   R                  [        [        [	        S5      5      5      n[	        S5       H   nU R                  [        U5      X"-  5        M"     U R                  [        UR                  5        U R                   R                  [        [        [	        S5      5      SS9n[	        S5       H   nU R                  [        U5      X"-  5        M"     U R                  [        UR                  5        g Nr[  r  rK  r  )r  imapri  r   r}  rv   r  r-  rw   StopIterationr  r{   r.  r  s      r   	test_imap_TestPool.test_imap-
  s    YY^^CeBi1b4CeBi(A#BCYY^^CeBi1rAT"Xqs+ -5YY^^CeDk!2c^BtAT"Xqs+ -5r   c                    U R                   S:X  a*  U R                  SR                  U R                   5      5        U R                  R	                  [
        [        SS5      S5      nU R                  [        UR                  5        U R                  R	                  [
        [        SS5      S5      nU R                  [        UR                  5        U R                  R	                  [
        [        SS5      S5      n[        S5       H   nU R                  [        U5      X"-  5        M"     U R                  [        UR                  5        U R                  R	                  [
        [        SS5      S	5      n[        S
5       H   nU R                  [        U5      X"-  5        M"     U R                  [        UR                  5        U R                  R	                  [
        [        SS5      S5      n[        S5       H   nU R                  [        U5      X"-  5        M"     U R                  [        UR                  5        g )Nr   r   r   rH   r[  r8  r  rS  r1  rL  rk   )r   r   r   r  r  ri  r  rw   r|  r  r}  rv   r-  r  s      r   #test_imap_handle_iterable_exception-_TestPool.test_imap_handle_iterable_exception;
  s   99	!MM7>>tyyIJ YY^^C!=a!DaH,4YY^^C!=a!DaH,4YY^^C!=b!!DaHqAT"Xqs+ ,4 YY^^C!=b!!DaHqAT"Xqs+ ,4YY^^C!=b!!DaHqAT"Xqs+ ,4r   c                    U R                   R                  [        [        [	        S5      5      5      nU R                  [        U5      [        [        [        [        [	        S5      5      5      5      5        U R                   R                  [        [        [	        S5      5      SS9nU R                  [        U5      [        [        [        [        [	        S5      5      5      5      5        g r  )r  imap_unorderedri  r   r}  rv   rB  r  )r{   r.  s     r   test_imap_unordered_TestPool.test_imap_unorderedU
  s    YY%%c4b	?;T#c4b	?*C%DEYY%%c4d+<%LT#c4d3D*E%FGr   c           
         U R                   S:X  a*  U R                  SR                  U R                   5      5        U R                  R	                  [
        [        SS5      S5      nU R                  [        UR                  5        U R                  R	                  [
        [        SS5      S5      nU R                  [        UR                  5        U R                  R	                  [
        [        SS5      S5      n[        [        [
        [        [        S5      5      5      5      nU R                  [        5         [        S5       H0  n[        U5      nU R                  XB5        UR                  U5        M2     S S S 5        U R                  R	                  [
        [        SS5      S	5      n[        [        [
        [        [        S5      5      5      5      nU R                  [        5         [        S5       H0  n[        U5      nU R                  XB5        UR                  U5        M2     S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)
Nr   r   r   rH   r[  r8  r  rS  r1  )r   r   r   r  r  ri  r  rw   r|  r  r   r  r}  r-  rx   r  )r{   r.  expected_valuesr  r   s        r   -test_imap_unordered_handle_iterable_exception7_TestPool.test_imap_unordered_handle_iterable_exception\
  s   99	!MM7>>tyyIJ YY%%c&B1b&I&') 	,4YY%%c&B1b&I&') 	,4YY%%c&B2q&I&') s3U2Y89|,2YRe5&&u-  - YY%%c&B2q&I&') s3U2Y89|,2YRe5&&u-  -, -, -,s   <A H8/A I	8
I	
Ic                    U R                   S:X  a  [        O[        nU R                  XR                  S5        U R                  XR                  S5        U R                   S:w  aX  U R	                  S5      n U R                  S[        UR                  5      5        UR                  5         UR                  5         g g ! UR                  5         UR                  5         f = f)Nr   rH   r   r8  )
r   RemoteErrorrL   rw   r  rv   r   _poolr$   r   )r{   expected_errorr   s      r   test_make_pool_TestPool.test_make_pool
  s    )-i)?+) 	 	.))R8.))Q799	!		!A  CL1	 "
 	s   7%B> >"C c                     U R                  S5      n[        S5       Vs/ s H  n[        R                  PM     nnUR	                  [
        R                  USS9nUR                  5         UR                  5         g s  snf )Nr8  i'  r   r  )	r  r}  r   r#  r  r   r+  r%  r   )r{   r   r  rX   r  s        r   rf  _TestPool.test_terminate
  s\    IIaL.3Fm<m$$m<TZZ;		 =s   A;c                    U R                  S5      nU R                  UR                  [        / 5      / 5        U R                  [	        UR                  [        / 5      5      / 5        U R                  [	        UR                  [        / 5      5      / 5        U R                  UR                  [        / 5      R                  5       / 5        UR                  5         UR                  5         g r   )r  rv   r  ri  r   r  r  r  r   r$   r   rx  s     r   test_empty_iterable_TestPool.test_empty_iterable
  s    IIaLsB,affS"o.3a..sB78"=S"-113R8			r   c                    U R                   S:X  a  [        [        S5      5      nU Vs/ s H  n[        U5      PM     nnU R	                  S5       nUR                  [        U5      nU R                  UR                  5       U5        S S S 5        WR                  5         U R                  [        UR
                  [        U5        g g s  snf ! , (       d  f       NK= f)Nr   r[  r1  )r   r   r}  ri  r  r  rv   r   r   rw   rL   )r{   Lr  r  r   rs         r   test_context_TestPool.test_context
  s    99#U2YA()*1AH*1KKQ'  (3  FFHj!++sA> $*s   C7C
Cc                     [        S5      e)Nr[  rW  rM  s    r   _test_traceback_TestPool._test_traceback
  s    3r   Tr  c                    U R                   S:X  Ga  U R                  S5       n UR                  U R                  5        U R	                  S5        S S S 5        WR                  5         U R                  [        W5      [        5        U R                  UR                  S5        UR                  nU R                  [        U5      [        R                  R                  5        U R!                  SUR"                  5        [$        R&                  R)                  5        n Ueg ! [
         a  nUn S nANS nAff = f! , (       d  f       N= f! [         a)    [*        R,                  " [*        R.                  " 5       6    Of = f S S S 5        O! , (       d  f       O= fU R!                  SWR1                  5       5        U R                  S5       n UR3                  [4        [7        SS5      S5        U R	                  S5        O! [
         a  nUn S nAOS nAff = fU R                  [        U5      [8        5        U R                  UR                  S 5        S S S 5        O! , (       d  f       O= fUR                  5         g )Nr   r   zexpected RuntimeError)r[  z&raise RuntimeError(123) # some commentrH   zexpected SayWhenError)r   r  r  r  rt   rs   r   r  r9  rX  rv   rX   	__cause__r!   r  RemoteTracebackrx   tbr  r   r  r   
excepthookexc_infogetvaluer  ri  r  r|  )r{   r   r:  exccausef1s         r   test_traceback_TestPool.test_traceback
  s    99#17GGD001 II56  FFHMM$s)\2SXXv.MMEMM$u+';';'K'KLMMBEHHM--/24I# $ ! C " $ 4NNCLLN343	 0//
 MMB++-) 17EE#;ArBAF II56 ! C d3i6cmmT2  FFHs   D;D" D;FE"
D8,D3.D;3D88D;;
E	0E?<F>E??F
FI !H1I 
HHI H>I  
I.c                     [        S5      e)Nr  rW  rM  s    r   _test_wrapped_exception!_TestPool._test_wrapped_exception
  s    5!!r   c                    U R                  S5       nU R                  [        5         UR                  U R                  5        S S S 5        S S S 5        WR                  5         g ! , (       d  f       N'= f! , (       d  f       N0= fr   )r  rw   rX  r  r  r   rx  s     r   test_wrapped_exception _TestPool.test_wrapped_exception
  sW     YYq\Q""<0445 1  	
 10 \s"   A6A%A6%
A3	/A66
Bc                 H   [         R                  " 5       nU R                  [        5         U R	                  S5       n UR                  [        SS/5        [         R                  " S5        UR                  5         UR                  5          S S S 5        S S S 5        U R                  [         R                  " 5       U-
  S5        g ! [         R                  " S5        UR                  5         UR                  5         f = f! , (       d  f       Nz= f! , (       d  f       N= f)Nr1  r   r   r  g?)r   r   rw   rL   r  r  rn  r+  r$   r   assertGreater)r{   t_startr   s      r   test_map_no_failfast_TestPool.test_map_no_failfast
  s     .."z*1EE/!Q8JJsOGGIFFH  + 	4>>+g5s; JJsOGGIFFH  +*s9   DDC6DD8C??D
D	D
D!c                    [        S5       Vs/ s H  n[        5       PM     nnU Vs/ s H  n[        R                  " U5      PM     nnU R                  R                  [        U5        A[        R                  " 5         [        R                  " [        5        U R                  [        S U 5       5      S 15        U R                  [        R                  S5        g s  snf s  snf )Nr[  c              3   .   #    U  H  o" 5       v   M     g 7fr   rc   )r>  r  s     r   r?  3_TestPool.test_release_task_refs.<locals>.<genexpr>  s     1DbRTTDs   r   )r}  rs  r  r  r  r  rq  r  r  r   r+  rw  rv   r  ru  )r{   r  objsorefss        r   test_release_task_refs _TestPool.test_release_task_refs
  s     */r3A3(,-1A-		h%




51D11D6: 	22A6 4-s
   C C#c                 Z   U R                   S:X  a  U R                  S5        U R                  S5      nU    S S S 5        U R                  [        5         U    S S S 5        S S S 5        UR                  5         g ! , (       d  f       NI= f! , (       d  f       N8= f! , (       d  f       NA= f)Nr   test not applicable to managerr   )r   r   r  rw   rL   r   r{   r  s     r   
test_enter_TestPool.test_enter  sw    99	!MM:;yy| 
 z*  + 			 T  +*s/   A:BBB:
B
B	B
B*c                    U R                   S:X  a  U R                  S5        U R                  S5      nUR                  5         UR	                  5         [
        R                  R                  Ul        [        R                  " S[        45         S n[        R                  " 5         S S S 5        g ! , (       d  f       g = f)Nr   r  r   z%unclosed running multiprocessing pool)r   r   r  r%  r   r!   r  RUN_stater
   check_warningsResourceWarningr   
gc_collectr  s     r   test_resource_warning_TestPool.test_resource_warning  s    99	!MM:;yy|		 &**..++8/JLD L L Ls   B//
B=rc   )&r   r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rf  r  r  r  rM   r   r  r  r  r  r  r  r!  r   __classcell__r  s   @r   r  r  	  s        =
;??
:8)L54<654H".H
?     __T@A$ B$L " " __T@A B<(7 ! !r   r  c                      [        S5      e)Nkey)KeyErrorrc   r   r   raisingr(  '  s    
5/r   c                      S $ )Nc                      g)N*   rc   rc   r   r   r  %unpickleable_result.<locals>.<lambda>+  s    2r   rc   rc   r   r   unpickleable_resultr-  *  s    r   c                   $    \ rS rSrSrS rS rSrg)_TestPoolWorkerErrorsi-  r  c                 F  ^ [         R                  " S5      nS /mU4S jnUR                  [        US9nU R	                  [
        UR                  5        U R                  TS   5        U R                  TS   [
        5        UR                  5         UR                  5         g )Nr1  c                    > U TS'   g r  rc   r  
scratchpads    r   errback@_TestPoolWorkerErrors.test_async_error_callback.<locals>.errback4  s    JqMr   r  r   )r!   r  r  r(  rw   r'  r   r   r   r$   r   )r{   r   r4  r   r3  s       @r   test_async_error_callback/_TestPoolWorkerErrors.test_async_error_callback0  s}      #V
	  mmGGm<(CGG,
1&jmX6			r   c                   ^ SSK Jn  [        R                  " S5      n[	        S5       H  nS /mU4S jnUR                  [        US9nU R                  XR                  5        TS   nU R                  U5        U R                  TS   U5        U R                  UR                  5        U R                  UR                  5        M     UR                  5         UR                  5         g )Nr   )MaybeEncodingErrorr1  r  c                    > U TS'   g r  rc   r2  s    r   r4  @_TestPoolWorkerErrors._test_unpickleable_result.<locals>.errbackG  s     #
1r   r6  )multiprocess.poolr:  r!   r  r}  r  r-  rw   r   r   r   assertIsNotNoner  r   r$   r   )r{   r:  r   	iterationr4  r   wrappedr3  s          @r   _test_unpickleable_result/_TestPoolWorkerErrors._test_unpickleable_result?  s    8  # rIJ$ -- 3G-LC0'': mGOOG$!!*Q-1CD  -  / # 	
		r   rc   N)r   r   r   r   r   r7  rA  r   rc   r   r   r/  r/  -  s    #Mr   r/  c                   0    \ rS rSrSrS rS rS rS rSr	g)	_TestPoolWorkerLifetimeiU  r  c                    [         R                  " SSS9nU R                  S[        UR                  5      5        UR                   Vs/ s H  o"R
                  PM     nn/ n[        S5       H)  nUR                  UR                  [        U45      5        M+     [        U5       H.  u  pgU R                  UR                  5       [        U5      5        M0     UR                  5         SnU(       aj  [        S UR                   5       5      (       dI  US-  n[        R                  " [         5        U(       a#  [        S UR                   5       5      (       d  MI  UR                   Vs/ s H  o"R
                  PM     n	nU R#                  S U5        U R#                  S U	5        U R%                  ['        U5      ['        U	5      5        UR)                  5         UR+                  5         g s  snf s  snf )Nr8  r[  maxtasksperchildrK  2   c              3   @   #    U  H  oR                  5       v   M     g 7fr   r   )r>  r+  s     r   r?  D_TestPoolWorkerLifetime.test_pool_worker_lifetime.<locals>.<genexpr>i  s     #B'QJJLL'   r   )r!   r  rv   r   r  r  r}  r  r  ri  	enumerater   _repopulate_poolallr   r+  rw  r7  rB  rB  r$   r   )
r{   r   r+  origworkerpidsr  r  r  r   	countdownfinalworkerpidss
             r   test_pool_worker_lifetime1_TestPoolWorkerLifetime.test_pool_worker_lifetimeX  sk     R8CL))*1A%%1sANN1==qe45  "'*HQSWWYA/ + 	
 	#B!''#B B BNIJJu #B!''#B B B +,''2'Q55'2~./F>2F?4KL			1 2" 3s   	G((G-c                 ^   [         R                  " SSS9n/ n[        S5       H*  nUR                  UR	                  [
        US45      5        M,     UR                  5         UR                  5         [        U5       H.  u  pEU R                  UR                  5       [        U5      5        M0     g )Nr8  r   rF  rL  g333333?)r!   r  r}  r  r  ri  r$   r   rM  rv   r   )r{   r   r  r  r  r   s         r   %test_pool_worker_lifetime_early_close=_TestPoolWorkerLifetime.test_pool_worker_lifetime_early_closeu  s       Q7qANN1==q#h78 			!'*HQSWWYA/ +r   c                     S H6  nU R                  [        5         [        R                  " SUS9  S S S 5        M8     g ! , (       d  f       MJ  = f)N)r   rH   r  12r8  rF  )rw   rL   r!   r  )r{   r   s     r   "test_pool_maxtasksperchild_invalid:_TestPoolWorkerLifetime.test_pool_maxtasksperchild_invalid  s9    'E"":.$$Q? /. (..s	   >
A	c                     Sn[         R                  R                  R                  " SU40 [        D6u  p#nU R                  US5        g )Na  if 1:
            from multiprocess 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  r   r   assert_python_okENVrv   r{   cmdr  outr|   s        r   >test_worker_finalization_via_atexit_handler_of_multiprocessingV_TestPoolWorkerLifetime.test_worker_finalization_via_atexit_handler_of_multiprocessing  sA     ||11BB4TPSTQr   rc   N)
r   r   r   r   r   rS  rV  rZ  rc  r   rc   r   r   rD  rD  U  s    #M:0@
 r   rD  )BaseManager	BaseProxyr  c                   &    \ rS rSrS rS rS rSrg)FooBari  c                     g)Nf()rc   r   s    r   r'  FooBar.f  s    r   c                     [         er   )rL   r   s    r   gFooBar.g  s    r   c                     g)N_h()rc   r   s    r   _h	FooBar._h  s    r   rc   N)r   r   r   r   r'  rm  rq  r   rc   r   r   rh  rh    s    r   rh  c               #   <   #    [        S5       H	  n X -  v   M     g 7fr  )r}  )r  s    r   bazrt    s     2Yc	 s   c                   $    \ rS rSrSrS rS rSrg)IteratorProxyi  )r  c                     U $ r   rc   r   s    r   r  IteratorProxy.__iter__  s    r   c                 $    U R                  S5      $ )Nr  )_callmethodr   s    r   r  IteratorProxy.__next__  s    
++r   rc   N)r   r   r   r   	_exposed_r  r  r   rc   r   r   rv  rv    s    I,r   rv  c                       \ rS rSrSrg)	MyManageri  rc   Nr}  rc   r   r   r~  r~    s    r   r~  Foo)callableBar)r'  rq  )r  exposedrt  )r  	proxytypec                   0    \ rS rSrSrS rS rS rS rSr	g)	_TestMyManageri  r%  c                     [        [        S9nUR                  5         U R                  U5        UR	                  5         U R                  UR                  R                  S[        R                  * 45        g N)shutdown_timeoutr   )
r~  SHUTDOWN_TIMEOUTr   commonshutdownrx   _processr   r]  rd  r{   r   s     r   test_mymanager_TestMyManager.test_mymanager  sU    -=>G
 	g&&//!fnn_1EFr   c                     [        [        S9nU   U R                  U5        S S S 5        U R                  UR                  R
                  S[        R                  * 45        g ! , (       d  f       NF= fr  )r~  r  r  rx   r  r   r]  rd  r  s     r   test_mymanager_context%_TestMyManager.test_mymanager_context  sP    -=>KK  
 	g&&//!fnn_1EF Ws   A""
A0c                     [        [        S9nUR                  5         U   U R                  U5        S S S 5        U R	                  UR
                  R                  S5        g ! , (       d  f       N5= fr  )r~  r  r   r  rv   r  r   r  s     r   !test_mymanager_context_prestarted0_TestMyManager.test_mymanager_context_prestarted  sN    -=>KK  ))22A6 Ws   A!!
A/c                    UR                  5       nUR                  5       nUR                  5       nS Vs/ s H  n[        X%5      (       d  M  UPM     nnS Vs/ s H  n[        X55      (       d  M  UPM     nnU R	                  USS/5        U R	                  USS/5        U R	                  UR                  5       S5        U R                  [        UR                  5        U R	                  UR                  S5      S5        U R                  [        UR                  S5        U R	                  UR                  5       S5        U R	                  UR                  5       S5        U R	                  UR                  S5      S5        U R	                  UR                  S5      S5        U R	                  [        U5      [        S5       Vs/ s H  oU-  PM	     sn5        g s  snf s  snf s  snf )N)r'  rm  rq  r'  rm  rq  rj  rp  r[  )r  r  rt  r\  rv   r'  rw   rL   rm  rz  r  rq  r   r}  )	r{   r   r  barrt  r3   foo_methodsbar_methodsr  s	            r   r  _TestMyManager.common  ss   kkmkkmkkm(8O(8GC<Nt(8O(8O(8GC<Nt(8OsCj1sDk2%(*cee,-u5+s=%(6*-u5.7c%)$<)QqS)$<=! PO %=s   GGG"1G"G'
rc   N)
r   r   r   r   r   r  r  r  r  r   rc   r   r   r  r    s     M	GG7>r   r  c                      [         $ r   )_queuerc   r   r   	get_queuer    s    Mr   c                       \ rS rSrSrSrg)QueueManageri  z$manager class used by server processrc   Nr   r   r   r   r   r   rc   r   r   r  r    s    .r   r  r  c                       \ rS rSrSrSrg)QueueManager2i  z@manager class which specifies the same interface as QueueManagerrc   Nr  rc   r   r   r  r    s    Jr   r  	xmlrpclibc                   @    \ rS rSrSr/ SQr\SS r\S 5       rS r	Sr
g)_TestRemoteManageri  r%  )hello worldNT      @u   hallå världenu   привіт світs   hall vrldenNc                     [        X[        [        S9nUR                  5         UR	                  5       nUR                  [        U R                  5      5        g )Naddressr   
serializerr  )r  
SERIALIZERr  connectr  r   r   r  r   r  r   r   r&   s        r   _putter_TestRemoteManager._putter  sC    -/ 	!!#		%

#$r   c                 x   [         R                  " S5      n[        [        R                  S4U[
        [        S9nUR                  5         U R                  UR                  5        U R                  U R                  UR                  U4S9nSUl        UR                  5         [        UR                  U[
        [        S9nUR                  5         UR!                  5       nU R#                  UR%                  5       U R&                  5        U R)                  [*        UR,                  [.        R0                  5        Ag )N    r   r  r   T)rI   urandomr  r   HOSTr  r  r   r  r  r   r  r  r   r  r  r  rv   r   r  rw   rs   r   r   r+  )r{   r   r   r   manager2r&   s         r   test_remote_TestRemoteManager.test_remote  s    **R."''+W-/ 	(()LLGOOW3MLN		 OOW-/ 	""$dkk2 	)UYY

; r   rc   )r   r   r   r   r   r  r  r  r  r  r   rc   r   r   r  r    s0     MF
 AYF% %r   r  sha256c                   *    \ rS rSr\S 5       rS rSrg)_TestManagerRestarti5  c                     [        X[        [        S9nUR                  5         UR	                  5       nUR                  S5        g )Nr  r  )r  r  r  r  r  r   r  s        r   r  _TestManagerRestart._putter8  s:    -/ 	!!#		- r   c                 "   [         R                  " S5      n[        [        R                  S4U[
        [        S9n UR                  5       nUR                  nUR                  R                  5         UR                  5         U R                  U R                  UR                  U4S9nUR                  5         UR                  5         UR                  5       nU R!                  UR#                  5       S5        A[%        US5      (       a  UR'                  5         [        XA[
        [        S9n UR                  5         U R)                  UR&                  5        g ! [%        US5      (       a  UR'                  5         f f = f! [*         a  nUR,                  [,        R.                  :w  a  e [0        R2                  " S5        [        XA[
        [        S9n[%        US5      (       a   U R)                  UR&                  5         S nAg  S nAg S nAff = f)Nr  r   r  r   r  r  r  )rI   r  r  r   r  r  r  
get_serverr  listenerr$   r   r   r  r   r  rv   r   r\  r  r  OSErrorerrno
EADDRINUSEr   r+  )r{   r   r   srvraddrr   r&   r:  s           r   test_rapid_restart&_TestManagerRestart.test_rapid_restartA  s   **R."''+W!4DF	#%%'D<<D MM!MMODLL7QRAGGIFFH%%'EUYY[-8w
++  "j-/	2MMOOOG,,- w
++  " ,  
	2ww%*** JJsO"*!13G w
++ 0 011 ,
	2s%   B=E .+F $E>
HA4H		Hrc   N)r   r   r   r   r  r  r  r   rc   r   r   r  r  5  s     ! !'2r   r   c            	          \ rS rSrSr\S 5       rS rS rS r	S r
\S 5       r\SS	 j5       r\R                  " \S
5      S 5       r\R                  " \S
5      \R"                  " \R&                  S:H  S5      \R"                  " \S:*  S5      \R                  " \" \S5      S5      S 5       5       5       5       r\S 5       r\R                  " \S
5      \R"                  " \R&                  S:H  S5      S 5       5       rS rSrg)_TestConnectionip  r   c                     [        UR                  [        5       H  nUR                  U5        M     UR	                  5         g r   )r  
recv_bytesSENTINEL
send_bytesr$   )r   r  msgs      r   _echo_TestConnection._echot  s,    2COOC  3

r   c                    U R                  5       u  pU R                  U R                  U4S9nSUl        UR	                  5         / SQn[        S5      nUS-  n[        R                  " S[        [        S5      5      5      nU R                  S:X  a-  U R                  [        UR                  5       5      [        5        U R                  UR                  U5      S 5        U R                  UR                  5       U5        U R                  UR!                  U5      S 5        U R                  UR#                  5       U5        U R                  S:X  Ga  [        R                  " SS	/S-  5      n[        U5      S	/S[%        U5      -
  -  -   n	U R                  UR!                  U5      S 5        U R                  UR'                  U5      [%        U5      UR(                  -  5        U R                  [        U5      U	5        [        R                  " SS	/S-  5      nS	/S
-  [        U5      -   S	/S[%        U5      -
  -  -   n	U R                  UR!                  U5      S 5        U R                  UR'                  US
UR(                  -  5      [%        U5      UR(                  -  5        U R                  [        U5      U	5        [+        [        S5      5      nU R                  UR!                  U5      S 5         UR'                  U5      n
U R-                  SU
-  5        [5        UR6                  5      nU R                  U" 5       S5        U R9                  UR:                  S	5        U R                  U" S5      S5        U R9                  UR:                  S	5        U R                  U" [<        5      S5        U R9                  UR:                  [<        5        UR                  S 5        [>        R@                  " S5        U R                  U" [<        5      S5        U R9                  UR:                  S	5        U R                  UR                  5       S 5        [        S5      S-  nUR!                  U5        U R                  UR#                  5       U5        UR!                  [B        5        URE                  5         U R                  S:X  ax  U R                  URF                  S5        U R                  URH                  S5        U RK                  [L        UR                  5        U RK                  [L        UR"                  5        URO                  5         g ! [.        R0                   a(  nU R                  UR2                  U45         S nAGNkS nAff = f)Nr   T)r   r  Nr  r[  r  rk   r   r   r8  rS  z(                                        zexpected BufferTooShort, got %sFrH   r   Xi   )(r  r   r  r   r   r   r  r   r}  r   rv   r9  filenorq  r  r  r  r  r   recv_bytes_intoitemsize	bytearrayrt   r!   BufferTooShortrX   r   r"  r   r   rW  r   r+  r  r$   readablewritablerw   EOFErrorr   )r{   r  r  r   r
  r  longmsgr  bufferr  r   r:  r"  really_big_msgs                 r   test_connection_TestConnection.test_connectionz  s0   99;LL

*L?		M"(kk#tE!H~.99#T$++-0#63.c*-t4*C099#[[qc"f-FCyA3"s3x-#88HT__S148T11&9 X79T&\84[[qc"f-FsQwc*aSFSX4E-FFHT__S148T11&!foo:MN X79T&\84uX/FT__W5t<C**62 		;cABTYY''$$T\\15b5)$$T\\15h/$$T\\8<		$

2h.$$T\\15d+s'78'*N;!99#T]]D1T]]D1h		2h8	K #11 5  '445s   5U V
"VV
c                 l   U R                  SS9u  pU R                  UR                  S5      S 5        U R                  UR                  5       S5        U R                  S:X  a  U R                  UR
                  S5        U R                  UR                  S5        U R                  UR
                  S5        U R                  UR                  S5        U R                  [        UR                  S5        U R                  [        UR                  5        U R                  [        UR                  5        g g )NFr  r   r   Tr1  )
r  rv   r  r  r   r  r  rw   r  r"  )r{   readerwriters      r   test_duplex_false!_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 $r   c                    U R                  5       u  pU R                  U R                  U4S9nSUl        UR	                  5         UR                  5         [        S5      nUR                  U5        U R                  UR                  5       U5        UR                  [        5        UR                  5         UR                  5         g )Nr   Tr3  )r  r   r  r   r   r$   r   r  rv   r  r  r   )r{   r  r  r   r  s        r   test_spawn_close _TestConnection.test_spawn_close  s      99;LL

*L?		Gn*C0!

	r   c                 2   U R                   S:w  a*  U R                  SR                  U R                   5      5        [        S5      nU R	                  5       u  p#UR                  U5        U R                  UR                  5       U5        UR                  US5        U R                  UR                  5       USS  5        UR                  USS5        U R                  UR                  5       USS 5        UR                  US5        U R                  UR                  5       [        S	5      5        UR                  USS
5        U R                  UR                  5       [        S	5      5        U R                  [        UR
                  US5        U R                  [        UR
                  USS5        U R                  [        UR
                  USS5        U R                  [        UR
                  US5        U R                  [        UR
                  USS5        g )Nr   r   abcdefghijklmnopqrstuvwxyzr   rS  r:        r  r         r   rH   rk   )
r   r   r   r   r  r  rv   r  rw   rL   )r{   r  r   r   s       r   test_sendbytes_TestConnection.test_sendbytes  s   99#MM7>>tyyIJ01yy{	S-	S!QR1	S!QQs4	S"r3	S"a r3*allC<*allCQ?*allCQ?*allC<*allCB?r   c                      [         R                  " U5        g! [         a)  nUR                  [        R                  :X  a   S nAge S nAff = fr  )rI   fstatr  r  EBADF)r   r1  r:  s      r   _is_fd_assigned_TestConnection._is_fd_assigned  s?    	HHRL   	ww%++%	s    
AAAAc                    U(       aP  [        SS5       H@  nU R                  U5      (       a  M  [        R                  " UR	                  5       U5        MB     [
        R                  " U5      n[        (       a%  [        R                  " U[        R                  5      n[        R                  " XR5        [        R                  " U5        g )Nr   r?   )r}  r  rI   dup2r  r   recv_handlemsvcrtopen_osfhandler.  r}  r$   )r   r  datacreate_dummy_fdsr  r1  s         r   _writefd_TestConnection._writefd  s~    1c]**1--GGDKKM1- # ""4(6&&r2;;7B

r   $test needs multiprocessing.reductionc                    U R                   S:w  a  U R                  S5        U R                  SS9u  pU R                  U R                  US4S9nSUl        UR                  5         U R                  [        R                  [        R                  5        [        [        R                  S5       nUR                  5       n[        (       a  [        R                  " U5      n[        R                   " XUR"                  5        S S S 5        UR%                  5         [        [        R                  S5       nU R'                  UR)                  5       S5        S S S 5        g ! , (       d  f       Nb= f! , (       d  f       g = f)	Nr   only makes sense with processesTr  s   foor   wbrb)r   r   r  r   r  r   r   r  r   r"  r!  r$  r  r  get_osfhandler   send_handler  r   rv   r%  )r{   r  r  r   r'  r1  s         r   test_fd_transfer _TestConnection.test_fd_transfer"  s   99#MM;<99D91LLZ4HLI			(()*:*:;)""D)QBv))"-!!$AEE2	 *
 	
)""D)QQVVXv. *) *) *)s   .AE3!E.
E+.
E<r8   *test semantics don't make sense on Windowsr?   z)largest assignable fd number is too smallr  ztest needs os.dup2()c                    U R                   S:w  a  U R                  S5        U R                  SS9u  pU R                  U R                  USS4S9nSUl        UR                  5         U R                  [        R                  [        R                  5        [        [        R                  S5       nUR                  5       n[        S[        5       H  nU R                  U5      (       a  M    O   U R!                  S	5        ["        R$                  " UW5         [&        R(                  " XUR*                  5        ["        R,                  " U5         S S S 5        UR/                  5         [        [        R                  S
5       nU R1                  UR3                  5       S5        S S S 5        g ! ["        R,                  " U5        f = f! , (       d  f       N}= f! , (       d  f       g = f)Nr   r   Tr  s   barr   r  r?   z2could not find an unassigned large file descriptorr  )r   r   r  r   r  r   r   r  r   r"  r!  r$  r  r}  MAXFDr  rt   rI   r  r   r  r  r$   r   rv   r%  )r{   r  r  r   r'  r1  newfds          r   test_large_fd_transfer&_TestConnection.test_large_fd_transfer5  s[    99#MM;<99D91LLZ4NLO			(()*:*:;)""D)QBsE*++E22 + 		NOGGB %%d1559 * 	
)""D)QQVVXv. *)  *) *)s6   /8G+,G!F,9G!G,GG
G
G&c                 N    [         R                  " UR                  5       S5        g )N    )rI   r}  r  r{   r  s     r   _send_data_without_fd%_TestConnection._send_data_without_fdV  s    
&r   zdoesn't make sense on Windowsc                 6   U R                   S:w  a  U R                  S5        U R                  SS9u  pU R                  U R                  U4S9nSUl        UR                  5         U R                  [        [        R                  U5        UR                  5         g )Nr   r   Tr  r   )r   r   r  r   r  r   r   rw   rX  r   r  r   r{   r  r  r   s       r   test_missing_fd_transfer(_TestConnection.test_missing_fd_transferZ  s{    
 99#MM;<99D91LL : :*LO		,	(=(=tD	r   c                    U R                  5       u  pU   U   UR                  S5        U R                  UR                  5       S5        U R                  S:X  a6  U R                  UR                  5        U R                  UR                  5        S S S 5        S S S 5        U R                  S:X  aw  U R                  UR                  5        U R                  UR                  5        U R                  [        UR                  5        U R                  [        UR                  5        g g ! , (       d  f       N= f! , (       d  f       N= fN  r   )
r  r  rv   r  r   r  closedr   rw   r  r   s      r   r  _TestConnection.test_contexti  s    yy{FF4LQVVXt,yyK'  *  * Q 99#OOAHH%OOAHH%gqvv.gqvv.	 $ QQs#   D9A8D(D9(
D6	2D99
Erc   Nr9  )r   r   r   r   r   r  r  r  r  r  r  r  r  rM   r  HAS_REDUCTIONr  r   r   r   r	  r\  rI   r  r  r  r  r   rc   r   r   r  r  p  sU   ,M 
M^4*@@   	 	 (NO/ P/$ (NO__S\\W,AC__Uc\@BV,/1/1BC P/4 ' ' (NO__S\\W,.MN O P/r   r  c                   j    \ rS rSrSrS rS r\R                  " \	R                  S5      S 5       rSrg)	_TestListeneriy  r  c                    U R                   R                   Hm  nU R                   R                  US9nU R                  UR                  5        U R                  [        U R                   R                  UR                  U5        Mo     g )Nfamily)
connectionfamiliesListenerr  r$   rw   r  r  )r{   r   rV  s      r   test_multiple_bind _TestListener.test_multiple_bind}  sb    oo..F(((7AOOAGG$gt'?'?ii1 /r   c                    U R                   R                  5        nU R                   R                  UR                  5       nUR	                  5        nUR                  S5        U R                  UR                  5       S5        S S S 5        S S S 5        S S S 5        U R                  S:X  a!  U R                  [        WR                  5        g g ! , (       d  f       NP= f! , (       d  f       NY= f! , (       d  f       Nb= fr  r!  r#  Clientr  acceptr  rv   r  r   rw   r  )r{   rV  r   r  s       r   r  _TestListener.test_context  s    __%%'1''		2aXXZ1FF4L$$QVVXt4   3 ( 99#gqxx0 $	  Z 32 ('s;   &C0C2CCC0
CC
C-	)C00
C>z"test needs abstract socket supportc                    U R                   R                  S5       nU R                   R                  UR                  5       nUR	                  5        nUR                  S5        U R                  UR                  5       S5        S S S 5        S S S 5        S S S 5        U R                  S:X  a!  U R                  [        WR                  5        g g ! , (       d  f       NP= f! , (       d  f       NY= f! , (       d  f       Nb= f)Nz
 somethingr  r   r'  )r{   r  clientr  s       r   test_abstract_socket"_TestListener.test_abstract_socket  s     __%%m4''(8(89V__&!KK%$$QVVXt4 ' : 5 99#gx7 $	 '& :9 54s;   &C1C 2CC C1
CC  
C.	*C11
C?rc   N)r   r   r   r   r   r$  r  rM   r  r   abstract_sockets_supportedr-  r   rc   r   r   r  r  y  s;    "M11 88=?8?8r   r  c                   :    \ rS rSrSr\S 5       rS rS rS r	Sr
g)	_TestListenerClienti  r   c                 |    U R                   R                  U5      nUR                  S5        UR                  5         g )Nr3  )r!  r(  r  r$   )r   r  r  s      r   r   _TestListenerClient._test  s+    ~~$$W-		'

r   c                    U R                   R                   H  nU R                   R                  US9nU R                  U R                  UR
                  4S9nSUl        UR                  5         UR                  5       nU R                  UR                  5       S5        UR                  5         UR                  5         M     g )Nr  r   Tr3  )r!  r"  r#  r   r   r  r   r   r)  rv   r  r   r$   )r{   r   rV  r   r  s        r   test_listener_client(_TestListenerClient.test_listener_client  s    oo..F(((7ADJJaii\BAAHGGI88:DTYY['2FFHGGI /r   c                    U R                   R                  5       nU R                  U R                  UR                  4S9nSUl        UR                  5         [        R                  " S5        UR                  5       nU R                  UR                  5       S5        UR                  5         UR                  5         UR                  5         g )Nr   Tr   r3  )r!  r#  r   r   r  r   r   r   r+  r)  rv   r  r$   r   )r{   rV  r   r  s       r   test_issue14725#_TestListenerClient.test_issue14725  s    OO$$&LL

!))L>		

1
 xxzg.

			r   c                    U R                   R                   H  nU R                   R                  US9nU R                   R                  UR                  5      nUR                  5       nUR                  S5        U R                  UR                  S5      5        UR                  5         UR                  5         UR                  5         M     g )Nr     hellor   )
r!  r"  r#  r(  r  r)  r  r   r"  r$   )r{   famrV  r   r   s        r   test_issue16955#_TestListenerClient.test_issue16955  s    ??++C(((4A&&qyy1A
ALL"OOAFF1I&GGIGGIGGI ,r   rc   N)r   r   r   r   r   r  r   r5  r8  r=  r   rc   r   r   r1  r1    s(    ,M 
	 	r   r1  c                   `    \ rS rSrSrS r\S 5       rS r\S 5       r	S r
\S 5       rS	 rS
rg)	_TestPolli  r   c                 
   U R                  5       u  pU R                  UR                  5       S5        UR                  S5        U R                  UR                  5       S5        U R                  UR                  5       S5        g )NFr   T)r  rv   r"  r  r   s      r   test_empty_string_TestPoll.test_empty_string  s]    yy{5)	S4(4(r   c                     U H*  n[         R                  " S5        UR                  U5        M,     UR                  5         g Nr   )r   r+  r  r$   )r   r  stringsr   s       r   _child_strings_TestPoll._child_strings  s.    AJJsOOOA  	

r   c                 J   SnU R                  5       u  p#U R                  U R                  X14S9nUR                  5         U HN  n[	        S5       H  nUR                  S5      (       d  M    O   UR                  5       nU R                  XW5        MP     UR                  5         g )N)r;  r      a   br   s   byer   s   lopr      r  )	r  r   rG  r   r}  r"  r  rv   r   )r{   rF  r   r   r   r   r  r  s           r   test_strings_TestPoll.test_strings  s    Gyy{LL 3 31,LG		A3Z66$<<   AQ"  	
r   c                 &    UR                  S5        g r   )r"  )r   r  s     r   _child_boundaries_TestPoll._child_boundaries  s     	
q	r   c                 h   U R                  S5      u  pU R                  U R                  U4S9nUR                  5         [        R
                  " S5        SS/nU H  nUR                  U5        M     UR                  5         UR                  5         U R                  UR                  5       U5        g )NFr   r1  s   firsts   second)r  r   rP  r   r   r+  r  r$   r   rx   r  )r{   r  r+  r   r  rr  s         r   test_boundaries_TestPoll.test_boundaries  s    yyLL 6 6aTLB		

1y!CLL 			allna(r   c                 j    UR                  S5        UR                  S5        UR                  S5        g )NrJ  rK     cd)r  )r   r   s     r   _child_dont_merge_TestPoll._child_dont_merge   s&    	T	T	Ur   c                 ,   U R                  5       u  pU R                  UR                  S5      S5        U R                  UR                  S5      S5        U R                  U R                  U4S9nUR                  5         U R                  UR                  5       S5        U R                  UR                  S5      S5        U R                  UR                  S5      S5        U R                  UR                  5       S5        U R                  UR                  S5      S5        U R                  UR                  S5      S5        U R                  UR                  S5      S5        U R                  UR                  5       S	5        UR                  5         g )
Nr:   Fr   r   rJ  r  TrK  rV  )r  rv   r"  r   rW  r   r  r   )r{   r   r   r   s       r   test_dont_merge_TestPoll.test_dont_merge  s%   yy{e,e,LL 6 6aTLB		.d+d+.d+d+d+/	r   rc   N)r   r   r   r   r   rB  r  rG  rM  rP  rS  rW  rZ  r   rc   r   r   r@  r@    sW    ,M)    
)  
r   r@  r  c                   d    \ rS rSrSr\S 5       r\S 5       r\S 5       rS r	\S 5       r
S rS	rg
)_TestPicklingConnectionsi  r  c                 J    SSK Jn  UR                  [        R                  S9  g )Nr   )resource_sharerr*   )multiprocessr_  r  r   r#  )r   r_  s     r   r  &_TestPicklingConnections.tearDownClass#  s    0W%9%9:r   c                 0   U Hx  nU R                   R                  US9nUR                  UR                  5        UR	                  5       nUR                  U5        UR                  5         UR                  5         Mz     [        R                  " [        R                  S45      nUR                  UR                  5       5        UR	                  5       u  pVUR                  U5        UR                  5         UR                  5         UR                  5         g )Nr  r   )r!  r#  r  r  r)  r$   socketcreate_serverr   r  getsocknamer  )r   r  r"  r<  rV  new_connr  s          r   	_listener"_TestPicklingConnections._listener(  s    C''s'3AIIaii xxzHIIhNNGGI    -"4"4a!89		!--/"		(				r   c                    [        UR                  S 5       HO  u  p#U R                  R                  U5      nUR	                  UR                  5       5        UR                  5         MQ     UR                  5       u  p#[        R                  " 5       nUR                  U5        UR                  UR                  5       5        UR                  5         UR                  5         g r   )
r  r  r!  r(  r  r  r$   rc  r  sendall)r   r  r  r  r,  s        r   _remote _TestPicklingConnections._remote;  s    "499d3NW^^**73FKK		$LLN 4
 yy{wsyy{#

r   c                    U R                   R                  nU R                  5       u  p#U R                  U R                  X14S9nSUl        UR                  5         UR                  5         U R                  5       u  pVU R                  U R                  U4S9nSUl        UR                  5         UR                  5         U Hw  nSU-  R                  S5      n	UR                  5       n
UR                  X45        UR                  5       nU R                  UR                  5       U	R                  5       5        My     UR                  S 5        [        S5      n	UR                  5       n
UR                  X45        UR                  5       n/ n UR                  S5      nU(       d  OUR                  U5        M,  SR!                  U5      nU R                  XR                  5       5        UR                  5         UR                  S 5        UR                  5         UR                  5         UR!                  5         UR!                  5         g )Nr   TzThis connection uses family %sasciiz$This connection uses a normal socketrK  r   )r!  r"  r  r   rg  r   r   r$   rk  r   r  r  rv   r  r   r  r   )r{   r"  lconnlconn0lpr  rconn0rpr<  r  r  rf  bufr   s                 r   test_pickling&_TestPicklingConnections.test_picklingJ  s   ??++		\\v6H\I	

		\\VI\>	

C3c9AA'JCjjlGJJ~&zz|HX]]_ciik:  	

4:;**,

G>"::<c"AJJqM	 
 hhsmiik*

4
	
	r   c                     UR                  5       nUR                  S5        UR                  5         UR                  5       nUR                  5       nUR                  US-  5        UR                  5         g )Nall is wellr1  )r  r  r$   )r   r  r+  r  r  s        r   child_access%_TestPicklingConnections.child_accessx  sQ    IIK	}		IIKffh		#a%

r   c                 v   U R                  5       u  pU R                  U R                  U4S9nSUl        UR	                  5         UR                  5         U R                  SS9u  pEUR                  U5        UR                  5         U R                  UR                  5       S5        UR                  5         U R                  SS9u  pEUR                  U5        UR                  5         UR                  S5        UR                  5         U R                  UR                  5       S5        UR                  5         g )Nr   TFr  rx  foobarfoobarfoobar)
r  r   ry  r   r   r$   r  rv   r  r   )r{   r  r  r   r  r+  s         r   test_access$_TestPicklingConnections.test_access  s      99;LL 1 1LF		yyy&		!		=1		yyy&		!			x		j1	r   rc   N)r   r   r   r   r   r  r  rg  rk  ru  ry  r~  r   rc   r   r   r]  r]    sb     #M; ;  $  ,\ 	 	r   r]  c                   D   ^  \ rS rSrSrU 4S jrU 4S jrS rS rSr	U =r
$ )	_TestHeapi  r  c                    > [         TU ]  5         [        R                  R                  R
                  U l        [        R                  R                  5       [        R                  R                  l        g r   )r  r}  r!   r7  r8  _heapold_heapHeapr{   r  s    r   r}  _TestHeap.setUp  sH    ',,::@@3B3G3G3L3L3N**0r   c                 t   > U R                   [        R                  R                  l        [
        TU ]  5         g r   )r  r!   r7  r8  r  r  r  r  s    r   r  _TestHeap.tearDown  s&    37==**0r   c           
         SnSn/ n[         R                  R                  R                  nSUl        [        U5       H~  n[        [        R                  " SS5      S-  5      n[         R                  R                  U5      nUR                  U5        [        U5      U:  a  [        R                  " U5      nX5	 AM     UR                     / nSn	Sn
[        UR                  R                  5       5       HF  nU H=  u  pnUR                  UR                   R#                  U5      XX-
  S45        XU-
  -  n	M?     MH     UR$                  R'                  5        HG  u  pU H<  u  pUR                  UR                   R#                  U5      XX-
  S45        XU-
  -  n
M>     MI     U R)                  X-   [+        S UR                    5       5      5        UR-                  5         [        [        U5      S-
  5       Ho  nX   S S	 u  pnXS-      S S	 u  nnnUU:w  a<  U R)                  XR                   U   R.                  5        U R)                  US5        M]  U R)                  UU5        Mq     S S S 5        [        R0                  " U5        U(       a  UR3                  5         U(       a  M  U R)                  UR4                  UR6                  5        U R)                  [        UR8                  5      S5        U R)                  [        UR                   5      S5        U R)                  [        UR$                  5      SUR$                  5        U R)                  [        UR                  5      S5        g ! , (       d  f       GN= f)
N  rH  r   r   r  freeoccupiedc              3   8   #    U  H  oR                   v   M     g 7fr   r  )r>  arenas     r   r?  &_TestHeap.test_heap.<locals>.<genexpr>  s      Fs   r8  )r!   r7  r8  r  _DISCARD_FREE_SPACE_LARGER_THANr}  rq  randomlognormvariater  r   	randrangerA  r   _len_to_seqr  _arenasindex_allocated_blocksr  rv   sumsortr  shuffler3  _n_frees
_n_mallocs_pending_free_blocks)r{   
iterations	maxblocksblocksr7  r  r  r   rO  r  r  r  r  r   r  arena_blocksnarenanstartnstops                      r   	test_heap_TestHeap.test_heap  s   
	 ##1177/0, z"Av,,Q2T9:D$$2248AMM!6{Y&$$Y/I # ZZCDH$**1134*+&E$JJ 2 25 95 $
F 4 5%Z(D +, 5 (,'='='C'C'E##/KEJJ 2 25 95 $
J 8 9e,H $0 (F T_  F FFH HHJ3s8A:&'*vbqz$t*-c(2A,'F?$$T<<+>+C+CD$$VQ/ $$T62 '- D 	vJJL f 	8T667;T\\*A.T334a9O9OPT--.2U Zs   F!M00
M?c                    [         R                  " 5       (       d4  [         R                  " 5         U R                  [         R                  5        [         R
                  " 5       nU R                  " [         R                  /UQ76   [         R                  " S5        [        S5       HM  n[        R                  R                  S5      n[        R                  R                  S5      nXCl        X4l        MO     g )Nr[  r  r   )r  	isenabledenabler  disableget_thresholdset_thresholdr}  r!   r7  r8  buddy)r{   
thresholdsr  r   r   s        r   test_free_from_gc_TestHeap.test_free_from_gc  s     ||~~IIKOOBJJ'%%'
((6:6
 tA$$2215A$$2215AGG r   )r  )r   r   r   r   r   r}  r  r  r  r   r#  r$  s   @r   r  r    s#    "MO>3@ r   r  c                   *    \ rS rSrS\4S\4S\4/rSrg)_Fooi  r  r  zrc   N)	r   r   r   r   rC   rD   rE   _fields_r   rc   r   r   r  r    s    	e	h	j
Hr   r  c                   D    \ rS rSrSrS r\S 5       rS
S jrS r	S r
Srg	)_TestSharedCTypesi  r  c                 >    [         (       d  U R                  S5        g g r  r  r   s    r   r}  _TestSharedCTypes.setUp  r  r   c                 N   U=R                   S-  sl         U=R                   S-  sl         U=R                   S-  sl         U=R                  S-  sl        U=R                  S-  sl        U=R                   S-  sl         [        [	        U5      5       H  nXW==   S-  ss'   M     g r  )r   r  r  r}  r   )r   r  r  r  r  r  stringr  s           r   _double_TestSharedCTypes._double  sn    	1	1	1

s3xAFaKF !r   c           	      :   [        SSUS9n[        [        SUS9n[        [        SUS9n[        [        SSUS9nU R	                  S[        [        S	5      5      US9nU R	                  S
SUS9n[        S5      Ul        U R                  U R                  X#XEXg4S9nSUl        UR                  5         UR                  5         U R                  UR                  S5        U R                  UR                  S5        U R                  UR                  S5        U R                  UR                   S5        U R                  UR"                  S5        [        S	5       H  n	U R                  Xi   U	S-  5        M     U R                  UR                  [        S5      5        g )Nr  rS  r  gUUUUUU?r  r8  r1  r  r[  r   r  r3  r   T   gUUUUUU?r  rL        @
hellohello)r   rD   rE   r  r  r   r}  r   r   r   r  r   r   r   rv   r   r  r  )
r{   r  r  r  r  r  r  r  r   r  s
             r   test_sharedctypes#_TestSharedCTypes.test_sharedctypes'  sN   #qt$(G$/*gD1D!QT*jjd59oDj9C$/W~LLA!#3NLO			"%qww0'*"suuc*rA""361Q3/ u\':;r   c                 "    U R                  SS9  g )NTr  )r  r   s    r   test_synchronize"_TestSharedCTypes.test_synchronize>  s    D)r   c                    [        SSS5      n[        U5      nSUl        SUl        SUl        U R                  UR                  S5        U R                  UR                  S5        U R                  UR                  S5        g )Nr1  r6   r  r   )r  r   r  r  r  rv   r   )r{   r  r  s      r   	test_copy_TestSharedCTypes.test_copyA  sj    1c7#3i"suuc*(r   rc   Nr9  )r   r   r   r   r   r}  r  r  r  r  r  r   rc   r   r   r  r    s0    "M@  <.*)r   r  z#requires multiprocess.shared_memoryc                   4   \ rS rSrSr\S 5       rS rS r\	R                  " SS5      S 5       rS	 rS
 rS rS r\	R                  " \R"                  S:g  S5      S 5       r\	R                  " \R"                  S:g  S5      S 5       rS rS rS rS rS rSrg)_TestSharedMemoryiL  r  c                     [        U [        5      (       a  [        R                  " U 5      nOU nXR                  S [        U5      & UR                  5         g r   )r    ry   r   SharedMemoryrt  r   r$   )shmem_name_or_objbinary_data	local_smss      r   !_attach_existing_shmem_then_write3_TestSharedMemory._attach_existing_shmem_then_writeR  sD    '--%223DEI)I+6's;'(r   c                 D    U[        [        R                  " 5       5      -   $ r   )ry   rI   r   )r{   prefixs     r   _new_shm_name_TestSharedMemory._new_shm_name[  s     BIIK(((r   c                     U R                  S5      n[        R                  " USSS9nU R                  UR                  5        U R                  UR                  U5        U R                  UR                  S5        U R                  [        UR                  5      UR                  5        U R                  UR                  [        U5      5        U R                  [        UR                  5      [        U5      5        SUR                  S'   U R                  UR                  S   S5        [        R                  " U5      nU R                  UR                  S   S5        UR                  5         [        R                  " USUR                  -  S9nU R                  UR                  SUR                  -  5        UR                  5         U R                  [         5         [        R                  " SS	S9  S S S 5        U R                  [         5         [        R                  " S
S9  S S S 5        ["        R$                  R'                  S5       n[        R(                  nU R                  S5      U R                  S5      /nU Vs/ s H  oU-   PM	     nnXul        [        R                  " SSS9n	U R                  U	R                  5        U R                  U	R,                  US   5        Xul        [        R                  " SSS9n
U R                  U
R                  5        U R                  U
R,                  US   5        S S S 5        [        R.                  (       a  U R                  S5      n[        R                  " USSS9nU R                  [0        5          U R                  UR                  S5        [        R                  " U5      nUR	                  5         UR                  5         UR                  5         UR	                  5          S S S 5        U R                  [2        5         [        R                  " USSS9nS S S 5        [        R.                  (       aW   " S S[        R                  5      nU" U5      nU R                  UR                  UR                  5        UR                  5         U R                  [0        5         [        R                  " S5      nUR	                  5         S S S 5        UR                  5         g ! , (       d  f       GN= f! , (       d  f       GN= fs  snf ! , (       d  f       GN= f! UR	                  5         f = f! , (       d  f       GNT= f! , (       d  f       GN2= f! , (       d  f       N= f)Ntest01_tsmbT   creater  r+  r   r  r  Fr  )multiprocess.shared_memory._make_filename	test01_fn	test02_fnr   test01_dblunlinkr  c                   F    \ rS rSr\R
                  \R                  -  rSrg)O_TestSharedMemory.test_shared_memory_basics.<locals>.OptionalAttachSharedMemoryi  rc   N)	r   r   r   r   rI   r/  O_RDWR_flagsr   rc   r   r   OptionalAttachSharedMemoryr    s    bii/r   r  test01_notthere)r  r   r  r  r"  rv   r3   r  r  r   rt  rx   ry   r$   
assertLessrw   rL   rM   mockpatch_SHM_NAME_PREFIXside_effect_name
_USE_POSIXFileNotFoundErrorFileExistsError)r{   	name_tsmbsmsalso_smssame_smsmock_make_filenameNAME_PREFIXnamesr3   shm1shm2name_dblunlinksms_unosms_duothere_can_only_be_one_smsr  ok_if_exists_smsnonexisting_smss                     r   test_shared_memory_basics+_TestSharedMemory.test_shared_memory_basicsa  s   &&}5	((4cJ

# 	9-#.CGGchh7 	chhC)c#((mSX. 
R( !--i8a"- !--ibkJr#(({3 z*&&d< + z*&&e4 +
 ]]  79<N'88K''4d6H6H6UVE 5::ED4'EE:-2* --TBDOODKK(TZZq2-2* --TBDOODKK(TZZq2#9& ## "//0BCN#00G
 ""#45	%++GLL$?+88HGNN$MMOMMO NN$ 6 / )6(B(B)% 0 ##0]-G-G 09)D-22CHH=""$ 01+889JKO""$ 2 			c +* +* ;9 9T NN$ 65 0/0 21st    TT7T4T/B,T4UA"U=U+U-'U?
T
T,/T44
UUU
U*-
U<?
VTzfails with dill >= 0.3.5c                 `   [         R                  R                  S5       n[        R                  nU R                  S5      U R                  S5      /nU Vs/ s H  oBU-   PM	     nnX1l        [        R                  " SSS9nU R                  UR                  5        U R                  UR                  US   5        X1l        [        R                  " SSS9nU R                  UR                  5        U R                  UR                  US   5        S S S 5        g s  snf ! , (       d  f       g = f)Nr  	test03_fn	test04_fnTr   r  r   )rM   r  r  r   r  r  r  r  r  r"  rv   r  )r{   r  r  r  r3   r  r  s          r   test_shared_memory_recreate-_TestSharedMemory.test_shared_memory_recreate  s     ]]  79<N'88K''4d6H6H6UVE 5::ED4'EE:-2* --TBDOODKK(TZZq2-2* --TBDOODKK(TZZq2#9 9 ;9 9s   7DD%B,DD
D-c                    U R                  [        5         [        R                  " SSS9nS S S 5        U R                  [        5         [        R                  " SSS9nS S S 5        U R                  [        5         [        R                  " SS9nS S S 5        g ! , (       d  f       Nt= f! , (       d  f       NR= f! , (       d  f       g = f)NTrH   r  r   r  )rw   rL   r   r  )r{   sms_invalids     r   "test_invalid_shared_memory_cration4_TestSharedMemory.test_invalid_shared_memory_cration  s    z*'44DrJK + z*'44DqIK + z*'44DAK +* +* +* +*s#   B	B+<B<
B(+
B9<
C
c           	         [        [        R                  S-   5       GH  nU R                  US9   [        R
                  " SSS9nU R                  UR                  5        SUR                  SS& [        R                  " X!S	9n[        R                  " U5      nU R                  U[        R
                  5        U R                  UR                  UR                  5        U R                  [        UR                  SS 5      S5        U R                  [        UR                  SS 5      S5        S
UR                  SS& U R                  [        UR                  SS 5      S
5        U R                  [        UR                  SS 5      S
5        SUR                  SS& U R                  [        UR                  SS 5      S5        U R                  [        UR                  SS 5      S5        S S S 5        GM     g ! , (       d  f       GM  = f)Nr   protoTr  r     pickler   rL  protocols   newvals   oldval)r}  pickleHIGHEST_PROTOCOLr   r   r  r  r"  rt  dumpsloadsr   rv   r3   r   )r{   r  r  pickled_smssms2s        r   "test_shared_memory_pickle_unpickle4_TestSharedMemory.test_shared_memory_pickle_unpickle  s   622Q67EE*#003G

+(! %ll3? ||K0%%dM,F,FG  4995  swwq|!4i@  txx!}!5yA  )!  swwq|!4i@  txx!}!5yA )1  swwq|!4i@  txx!}!5yA- +* 8**s   F>G<<
H	c                    [        [        R                  S-   5       H  nU R                  US9   [        R
                  " SSS9nSUR                  SS& [        R                  " X!S	9nUR                  5         UR                  5         U R                  [        5         [        R                  " U5        S S S 5        S S S 5        M     g ! , (       d  f       N= f! , (       d  f       M  = f)
Nr   r  Tr  r  r  r   rL  r  )r}  r  r  r   r   r  rt  r  r$   r"  rw   r  r  )r{   r  r  r  s       r   .test_shared_memory_pickle_unpickle_dead_object@_TestSharedMemory.test_shared_memory_pickle_unpickle_dead_object  s    622Q67EE*#003G(!$ll3? 		

&&'89LL- : +* 8 :9 +*s$   A.CC	4C	
CC
C)	c                 D   [         R                  " SSS9nU R                  UR                  5        U R	                  U R
                  UR                  S4S9nSUl        UR                  5         UR                  5         U R                  [        UR                  S S 5      S5        U R	                  U R
                  US4S9nSUl        UR                  5         UR                  5         U R                  [        UR                  S S 5      S5        UR                  5         g )NTr  r  s   howdyr   r   s   HELLO)r   r  r  r"  r   r  r3   r   r   r   rv   r   rt  r$   )r{   r  r   s      r   #test_shared_memory_across_processes5_TestSharedMemory.test_shared_memory_across_processes  s     ((3?

# LL99((H%  
 			swwr{+X6 LL99x  
 			swwr{+X6		r   r/   z#not feasible in non-posix platformsc                 (   [         R                  R                  5       nUR                  5         UR	                  [        S5      5      n[        R                  " UR                  R                  [        R                  5        UR	                  [        S5      5      nU R                  [        5         [        R                  " [        R                  " 5       [        R                  5        S S S 5        UR                  5         g ! , (       d  f       N= fr  )r!   managersSharedMemoryManagerr   ShareableListr}  rI   rk  r  r  r]  r  rw   r"  r   r  )r{   smmslsl2s       r   4test_shared_memory_SharedMemoryServer_ignores_sigintF_TestSharedMemory.test_shared_memory_SharedMemoryServer_ignores_sigint:  s     &&::<		 uRy)
 	  &--0b	* 01GGBIIK/ 2 	 21s   19D
Dzresource_tracker is posix onlyc                     Sn[         R                  R                  R                  " SU40 [        D6u  p#nU R                  U5        g )Nzif 1:
            from multiprocessing.managers import SharedMemoryManager


            smm = SharedMemoryManager()
            smm.start()
            sl = smm.ShareableList(range(10))
            smm.shutdown()
        r]  )r  r   r   r^  r_  r  r`  s        r   >test_shared_memory_SharedMemoryManager_reuses_resource_trackerP_TestSharedMemory.test_shared_memory_SharedMemoryManager_reuses_resource_trackerR  sA     ||11BB4TPST 	r   c                 :   [         R                  R                  5       nU R                  [        5         UR                  SS9  S S S 5        UR                  5         [        SS5       Vs/ s H  o!R                  [        U5      5      PM     nn[        SSS5       Vs/ s H  oAR                  US9PM     nn[        R                  " US   R                  R                  S	9nU R                  [        U5      S5        [        R
                  " US   R                  S	9nU R                  [        UR                  5      S5        US   R                  nUR!                  5         ["        R$                  S
:w  a2  U R                  [&        5         [        R
                  " US	9n	S S S 5        [         R                  R                  5        n
U
R                  S5      nU
R                  SS9nUR                  R                  nS S S 5        ["        R$                  S
:w  a3  U R                  [&        5         [        R                  " US	9nS S S 5        g g ! , (       d  f       GN= fs  snf s  snf ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)Nr'  r  r   r[  r        r   r3   r8   howdy)r!   r!  r"  rw   rL   r  r   r}  r#  r   shmr3   rv   r   r  rt  r  r   r   r  )r{   smm1r  lolr  lomdoppleganger_list0doppleganger_shm0	held_name
absent_shmsmm2r%  r1  	absent_sls                 r   -test_shared_memory_SharedMemoryManager_basics?_TestSharedMemory.test_shared_memory_SharedMemoryManager_basicsg  s   '';;=z*1% +

6;ArlDl""58,lD38S"3EG3Ea!!q!)3EG*88c!fjjooN/0!4)66CFKKH$5$9$9 :B?FKK	<<7" ""#45*77YG
 6 %%99;t##G,B###-CI < <<7"""#45)77YG	 65 #- +* EG 65 <;
 65s;   I*#I I%I*7I;/J
I*
I8;
J	
Jc                    [         R                  " / SQ5      nU R                  UR                  R                  5        U R                  UR                  R                  [        U5      5        U R                  [        [        U5      5      [        U5      5        U R                  [        5         US     S S S 5        U R                  [        5         SUS'   S S S 5        UR                  S5      nSUS'   U R                  X!R                  S5      5        U R                  UR                  S5        U R                  [        U5      S5        [        R                   " 5          [        R"                  " S5        U R                  [$        5         UR'                  S5        S S S 5        U R                  UR'                  S	5      S
5        S S S 5        U R                  US   S5        U R                  US   S5        U R                  [)        U5      S5        SUS
'   U R                  US
   S5        SUS'   U R                  US   S5        U R                  UR                  S5        U R+                  [$        S5         SUS'   S S S 5        U R                  US   S5        SUS'   U R                  US   S5        U R                  US   S5        U R+                  [$        S5         SUS'   S S S 5        U R                  US   S5        U R+                  [$        S5         SUS'   S S S 5        U R                  US   S5        [        R                   " 5          [        R"                  " S5        U R                  UR-                  S5      S5        U R                  UR-                  S5      S5        U R                  UR-                  S5      S5        S S S 5        U R/                  S5      n[         R                  " XS9n U R1                  UR                  R                  UR                  R                  5        U R                  X4R                  R                  5        U R                  [        U5      [        U5      5        U R                  UR                  UR                  5        SUS'   U R                  US   S5        U R1                  US   S5        UR                  R3                  5         UR                  R	                  5         [         R                  " UR                  R                  S9nU R                  UR                  R                  UR                  R                  5        SUS'   U R                  US   S5        UR                  R3                  5         UR                  R3                  5         [         R                  " 5       n U R                  [        U5      S5        U R                  UR                  S5        U R                  UR-                  S5      S5        U R                  [$        5         UR'                  S 5        S S S 5        UR                  R3                  5         UR                  R	                  5         g ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNX= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNA= f! UR                  R	                  5         f = f! , (       d  f       N= f! UR                  R	                  5         f = f) N)r0     HoWdYgX9vqrK  NTr+  rS  r1  r   r0  z8s8sdqxxxxxx?xxxxxxxx?qignore100rK  r8  r  Tr+  somerk   z8s8sdq8sxxxxxxx?qzexceeds available storagezfar too manyu   encodésr   r>  u	   encodéess	   123456789s   adiostest03_duplicater/  M   rH   ip  r  any)r   r#  r  r1  r"  rx   r3   ry   r   rw   
IndexError_get_packing_formatrv   r   r   warningscatch_warningssimplefilterrL   r  r   r  r  r  rB  r$   )r{   r%  current_formatname_duplicatesl_copysl_tetheredempty_sls          r   'test_shared_memory_ShareableList_basics9_TestSharedMemory.test_shared_memory_ShareableList_basics  s   ((>
 	& 	bffkk3r7+c$r(mSW- z*qE + z*BqE + //21)?)?)BC 	$=> 	R!$ $$&!!(+"":. /RXXc]A. ' 	A(B& 	"I>	
 1A#1A'$78##J$?A"BqEA 	A'1A
+A)##J$?ABqEA 	A)##J$?A BqEA 	A) $$&!!(+RXXb\1-RXXh/3RXXh/3 ' ++,>?--bF
	!W[[-=-=>^[[-=-=>T"XtG}5RYY7GBKWR["-2+KKKK  $11rvv{{Ckoo&:&:;BB%
 !..0	"S]A.X__b1X^^E2A6"":.t$ /LL LL!I +* +*$ /. '&.A AA AA A '&( KK " /. LL!s   /ZZ",[Z/ )[<[$[%[7A:\	=C2\ A-] <\:"] 
Z
Z,/
Z>	9[
[
["%
[47
\	
\\7:
]] ]'c                    [        [        R                  S-   5       GH  nU R                  US9   [        R
                  " [        S5      5      nU R                  UR                  R                  5        [        R                  " X!S9n[        R                  " U5      nU R                  U[        R
                  5        U R                  US   S5        U R                  X$5        SUS'   U R                  US   S5        S	US
'   U R                  US
   S	5        [        R
                  " [        S5      5      nU R                  UR                  R                  5        [        R                  " XQS9nU R                  [        U5      [        U5      5        UR                  R                  5         UR                  R                  5         UR                  R                  5         S S S 5        GM     g ! , (       d  f       GM  = f)Nr   r  r[  r  rH   r'  changedrk   newvaluer8  i  )r}  r  r  r   r   r#  r  r1  r"  r  r  r   rv   assertIsNotr   r$   )r{   r  r%  serialized_sldeserialized_sl	larger_slserialized_larger_sls          r   )test_shared_memory_ShareableList_pickling;_TestSharedMemory.test_shared_memory_ShareableList_pickling  sy   622Q67EE*"00r;. &R @"(,,}"=%%#]%@%@B  !4a8  5%."  A	2"1  !3Z@)77c
C		 4 45'-||I'N$  ]!3S9M5NO##%##))+/ +* 8**s   F3G11
H	c                    [        [        R                  S-   5       H  nU R                  US9   [        R
                  " [        S5      5      n[        R                  " X!S9nUR                  R                  5         UR                  R                  5         U R                  [        5         [        R                  " U5        S S S 5        S S S 5        M     g ! , (       d  f       N= f! , (       d  f       M  = f)Nr   r  r[  r  )r}  r  r  r   r   r#  r  r1  r$   r"  rw   r  r  )r{   r  r%  rU  s       r   5test_shared_memory_ShareableList_pickling_dead_objectG_TestSharedMemory.test_shared_memory_ShareableList_pickling_dead_object  s    622Q67EE*"00r; &R @ &&'89LL/ : +* 8 :9 +*s$   A=C),CC)
C&"C))
C8	c                    Sn[         R                  " [        R                  SSU/[         R                  [         R                  S9 nUR
                  R                  5       R                  5       R                  5       nUR                  5         UR                  5         Sn[        R                  " [        R                  U5       H  n [        R                  " USS9nM     ["        R$                  S:X  aT  [&        R(                  " S	U 3S
5        UR*                  R-                  5       R                  5       nU R/                  SU5        S S S 5        g ! [          a       M  f = f! , (       d  f       g = f)NaX  if 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)
        -Er]  r  zIA SharedMemory segment was leaked after a process was abruptly terminatedFr  r/   /r   z[resource_tracker: There appear to be 1 leaked shared_memory objects to clean up at shutdown)
subprocessPopenr   r   PIPEr  readlinestripdecoder%  r   r   sleeping_retryr#  r   r  r  rI   r3   r0   
unregisterr  r%  rx   )r{   ra  r   r3   err_msgrK  r$  r|   s           r   4test_shared_memory_cleaned_after_process_terminationF_TestSharedMemory.test_shared_memory_cleaned_after_process_termination  s,   	 s~~tT3?%/__%/__69:88$$&,,.557D KKMFFH;G++G,@,@'J'44T%HC K ww'! !++avJH
 hhmmo,,.DEHJ=6 6 ) 6 6s2   BE%	EA,E%
E"E%!E""E%%
E3rc   N)r   r   r   r   r   r  r  r  r  rM   r   r  r
  r  r  r  rI   r3   r'  r*  r;  rO  rY  r\  rj  r   rc   r   r   r  r  L  s     #M )n` __T563 73,BB4.8 __RWW')NO P. __RWW')IJ K(H<o"b60+Jr   r  c                   j    \ rS rSrSrS rS r\S 5       rS r	\
R                  " S5      S 5       rS	rg
)_TestFinalizeiP  r  c                     [         R                  R                  5       U l        [         R                  R	                  5         g r   )r   _finalizer_registryr   registry_backupr  r   s    r   r}  _TestFinalize.setUpT  s+    #77<<>  &&(r   c                     [         R                  " 5         U R                  [        R                  5        [        R                  R                  U R                  5        g r   )r  r  r  r   ro  updaterp  r   s    r   r  _TestFinalize.tearDownX  s9    


112  ''(<(<=r   c                     " S S[         5      nU" 5       n[        R                  " X1R                  SS9  A[        R
                  " 5         U" 5       n[        R                  " XAR                  SS9nU" 5         U" 5         A[        R
                  " 5         U" 5       n[        R                  " XaR                  SS9  U" 5       n[        R                  " XqR                  SSS	9  U" 5       n[        R                  " XR                  S
SS	9  U" 5       n	[        R                  " XR                  SSS	9  U" 5       n
[        R                  " XR                  SSS	9  [        R                  " S UR                  SSS	9  [        R                  " S UR                  SSS	9  [        R                  " 5         UR                  5         [        R                  " S5        g )Nc                       \ rS rSrSrg))_TestFinalize._test_finalize.<locals>.Fooi_  rc   Nr}  rc   r   r   r  rw  _      r   r  )r   r;  )r   )r   )d10r   )rX   exitpriority)d01r   )d02)d03)r:  i)STOPi)
r  r   Finalizer  r  r  _exit_functionr$   rI   _exit)r   r  r  r   r   close_br   ry  r{  r|  r}  s              r   _test_finalize_TestFinalize._test_finalize]  s9   	& 	 Ea0


E--996:		


Ea0ec998!Dec998!Dec998!Dec998!DdDIIFEdDIIIDI 	


r   c                 (   U R                  5       u  pU R                  U R                  U4S9nSUl        UR	                  5         UR                  5         [        UR                  S5       Vs/ s H  oDPM     nnU R                  U/ SQ5        g s  snf )Nr   Tr~  )r   r   ry  r}  r|  r{  r:  )	r  r   r  r   r   r   r  r  rv   )r{   r  r  r   rr  r  s         r   test_finalize_TestFinalize.test_finalize  sz    99;LL 3 3:-LH			!%dii!89!8##!89!LM :s   -Br   c                   ^^^^	 S m " U4S jS[         5      mSm	S mUU	4S jnUUU	4S jn[        R                  " 5       n[        R                  " 5       n [        R
                  " S5        [        R                  " SSS5        [        R                  " US	9[        R                  " US	9/n[        R                  " U5         [        R                  " S
5        Sm	S S S 5        Tb  Te [        R
                  " U5        [        R                  " U6   [        R                  " 5         g ! , (       d  f       NS= f! [        R
                  " U5        [        R                  " U6   [        R                  " 5         f = f)Nc                      g r   rc   rc   r   r   cb,_TestFinalize.test_thread_safety.<locals>.cb      r   c                   "   > \ rS rSrU 4S jrSrg)-_TestFinalize.test_thread_safety.<locals>.Fooi  c                 h   > X l         [        R                  " U T[        R                  " SS5      S9  g )Nr   rK  )rz  )r  r   r  r  randint)r{   r  s    r   r   6_TestFinalize.test_thread_safety.<locals>.Foo.__init__  s#    dBV^^As5KLr   )r  N)r   r   r   r   r   r   )r  s   r   r  r    s    M Mr   r  Fc                     > T(       dL  [         R                  " [        R                  " 5       S-  5         [        R                  " 5         T(       d  MK  g g ! [
         a  n U m S n A NS n A ff = frE  )r   r+  r  r   _run_finalizersrs   )r:  r  finishs    r   run_finalizers8_TestFinalize.test_thread_safety.<locals>.run_finalizers  sN    

6==?T12 ((* f ! Cs   A 
A, A''A,c                     > 0 n T(       dC   [        S5       Vs1 s H
  nT" 5       iM     snU [        R                  " S5      '   T(       d  MB  g g s  snf ! [         a  nUmU R	                  5          S nAN1S nAff = f)Nr[  r   )r}  r  getrandbitsrs   r  )r  r  r:  r  r  r  s      r   make_finalizers9_TestFinalize.test_thread_safety.<locals>.make_finalizers  sk    A @ERy/Iy!y/IAf((+,	 f 0J  CGGIIs'   A AA A 
A:A55A:gư>r   r   r  T)r  r   getswitchintervalr  r  setswitchintervalr  r>  r  r	   start_threadsr   r+  r  )
r{   r  r  old_intervalold_thresholdr   r  r  r  r  s
         @@@@r   test_thread_safety _TestFinalize.test_thread_safety  s   		M& 	M 		
	 ,,.((*	!!$'Q1% ''~> ''?AG!//8

3 9 	  !!,/m,JJL 98 !!,/m,JJLs&   A,D; D*D; *
D84D; ;A E;)rp  N)r   r   r   r   r   r}  r  r  r  r  r   r  r  r   rc   r   r   rm  rm  P  sK    "M)>
 % %N	N u%4 &4r   rm  c                        \ rS rSrS rS rSrg)_TestImportStari  c                    SS K n[        R                  R                  [        R
                  5      n[        R                  R                  UR                  U5      S5      nUR                  U5      nU Vs/ s HE  n[        R                  R                  [        R                  R                  U5      S   5      S   PMG     nnU Vs/ s H  nSU-   PM
     nnUR                  S5        UR                  S5        U$ s  snf s  snf )Nr   z*.pyr   zmultiprocess.zmultiprocess.__init__r`  )globrI   r   dirnamer!   __file__r   escapesplitextsplitr  r  )r{   r  folderpatternfilesr'  modulesr  s           r   get_module_names _TestImportStar.get_module_names  s    !9!9:'',,t{{62F;		'"EJKU277##BGGMM!$4Q$78;UK0781?Q&8./~&	 L8s   6AC=Dc                 .   U R                  5       n[        R                  S:X  a4  UR                  S5        UR                  S5        UR                  S5        O-UR                  S5        [        (       d  UR                  S5        [
        c  UR                  S5        U Hr  n[        U5        [        R                  U   nU R                  [        US5      U5        UR                   H%  nU R                  [        X45      U< SU< 35        M'     Mt     g )	Nr8   zmultiprocess.popen_forkzmultiprocess.popen_forkserverzmultiprocess.popen_spawn_posixzmultiprocess.popen_spawn_win32zmultiprocess.sharedctypes__all__z does not have attribute )r  r   r   r  r  rC   r  r  r   r\  r  )r{   r  r3   modattrs        r   test_import_TestImportStar.test_import  s    '')<<7"NN45NN:;NN;<NN;< =>?=NN67Dt++d#COOGC3T:C&7:DA $ r   rc   N)r   r   r   r   r  r  r   rc   r   r   r  r    s    	r   r  c                   4    \ rS rSrSrS r\S 5       rS rSr	g)_TestLoggingi  r  c                     [         R                  " 5       nUR                  [        R                  5        U R                  US L5        UR                  S5        UR                  S5        UR                  [        5        g )Nzthis will not be printedznor will this)	r!   
get_loggersetLevelr   
SUBWARNINGr   debuginfo	LOG_LEVEL)r{   loggers     r   test_enable_logging _TestLogging.test_enable_logging  sV     ++-(d*+/0O$	"r   c                 l    [         R                  " 5       nUR                  UR                  5       5        g r   )r!   r  r  getEffectiveLevel)r   r  r  s      r   _test_level_TestLogging._test_level  s%     ++-		&**,-r   c                    SnSn[         R                  " 5       n[        R                  " 5       nUR                  n[         R
                  " SS9u  pgUR                  U5        U R                  U R                  U4S9nUR                  5         U R                  XR                  5       5        UR                  5         UR                  5         UR                  [        R                  5        UR                  U5        U R                  U R                  U4S9nUR                  5         U R                  X&R                  5       5        UR                  5         UR                  5         UR                  U5        UR                  [        S9  g )Nr  %   Fr  r   )level)r!   r  logging	getLoggerr  r  r  r   r  r   rv   r  r   r$   NOTSETr  )	r{   LEVEL1LEVEL2r  root_logger
root_levelr  r  r   s	            r   
test_level_TestLogging.test_level  s    ++-'') &&
(--U;LL 0 0yLA		/			'V$LL 0 0yLA		/			Z(i(r   rc   N)
r   r   r   r   r   r  r  r  r  r   rc   r   r   r  r    s%    "M# . .)r   r  c                   h    \ rS rSrSr\S 5       r\R                  " \	" \
S5      S5      S 5       rSrg)	_TestPollEintri<  r  c                 z    [         R                  " S5        [        R                  " U[        R
                  5        g rE  )r   r+  rI   rk  r]  SIGUSR1)r   r  s     r   _killer_TestPollEintr._killer@  s    

3
V^^$r   r  requires SIGUSR1c                   ^ S/mU4S jn[         R                  " 5       n[        R                  " [        R                  U5      n U R	                  U R
                  U4S9nUR                  5          U R	                  [        R                  SS9nUR                  5         UR                  5         UR                  5         U R                  TS   5        U R                  UR                  S5        [        R                  " [        R                  U5        g ! UR                  5         f = f! [        R                  " [        R                  U5        f = f)NFc                     > STS'   g )NTr   rc   )rX   
got_signals    r   record._TestPollEintr.test_poll_eintr.<locals>.recordH  s     JqMr   r   )r1  r   )rI   r   r]  r  r   r  r   r   r+  r   r   rv   r   )r{   r  r  
oldhandlerkillerr   r  s         @r   test_poll_eintr_TestPollEintr.test_poll_eintrE  s    W
	!iik]]6>>6:
	6\\SF\CFLLNLL

L>	OOJqM*QZZ+MM&..*5	  MM&..*5s%   +D+ 2>D 0A D+ D((D+ +'Erc   N)r   r   r   r   r   r  r  rM   r  r\  r]  r  r   rc   r   r   r  r  <  sC    "M% % 35GH6 I6r   r  c                   F    \ rS rSr\R
                  " \S5      S 5       rSrg)TestInvalidHandlei^  skipped on Windowsc                     [         R                  R                  S5      n UR                  5         S Ul        U R                  [        [
        4[         R                  R                  S5        g ! [        [
        4 a     NOf = f! S Ul        f = f)NiMrH   )r!   r!  
Connectionr"  rL   r  _handlerw   r  s     r   test_invalid_handles&TestInvalidHandle.test_invalid_handles`  sy    ))44X>	 IIK  DL:w/)44??	E G$ 		
  DLs#   A. .B>B  BB 	Brc   N)	r   r   r   r   rM   r   WIN32r  r   rc   r   r   r  r  ^  s"    __U01E 2Er   r  c                        \ rS rSrS rS rSrg)	OtherTestiq  c                      " S S[         5      nU R                  [        R                  [        R                  R
                  U" 5       S5        g )Nc                        \ rS rSrS rS rSrg)FOtherTest.test_deliver_challenge_auth_failure.<locals>._FakeConnectioniu  c                     g)N   something bogusrc   r{   r  s     r   r  QOtherTest.test_deliver_challenge_auth_failure.<locals>._FakeConnection.recv_bytesv  s    )r   c                     g r   rc   r{   r  s     r   r  QOtherTest.test_deliver_challenge_auth_failure.<locals>._FakeConnection.send_bytesx      r   rc   N)r   r   r   r   r  r  r   rc   r   r   _FakeConnectionr  u  s    *r   r     abc)r  rw   r!   r   r!  deliver_challenger{   r  s     r   #test_deliver_challenge_auth_failure-OtherTest.test_deliver_challenge_auth_failuret  s=    	f 	
 	/==)44FF)+V	5r   c                      " S S[         5      nU R                  [        R                  [        R                  R
                  U" 5       S5        g )Nc                   &    \ rS rSrS rS rS rSrg)EOtherTest.test_answer_challenge_auth_failure.<locals>._FakeConnectioni  c                     SU l         g r  r  r   s    r   r   NOtherTest.test_answer_challenge_auth_failure.<locals>._FakeConnection.__init__  s	    
r   c                     U =R                   S-  sl         U R                   S:X  a  [        R                  R                  $ U R                   S:X  a  gg)Nr   r1  r  r   )r  r!   r!  
_CHALLENGEr  s     r   r  POtherTest.test_answer_challenge_auth_failure.<locals>._FakeConnection.recv_bytes  s=    

a
::?*55@@@ZZ1_-r   c                     g r   rc   r  s     r   r  POtherTest.test_answer_challenge_auth_failure.<locals>._FakeConnection.send_bytes  r  r   r  N)r   r   r   r   r   r  r  r   rc   r   r   r  r    s    r   r  r  )r  rw   r!   r   r!  answer_challenger  s     r   "test_answer_challenge_auth_failure,OtherTest.test_answer_challenge_auth_failure~  s=    	f 	 	/==)44EE)+V	5r   rc   N)r   r   r   r   r  r  r   rc   r   r   r  r  q  s    55r   r  md5c                   *    \ rS rSrSrS rS rS rSrg)ChallengeResponseTesti  s   supadupasecretkeyc                 V    [         R                  R                  U R                  U5      $ r   )r!   r!  _create_responser   )r{   messages     r   create_response%ChallengeResponseTest.create_response  s$    ))::LL'
 	
r   c                 V    [         R                  R                  U R                  X5      $ r   )r!   r!  _verify_challenger   )r{   r  responses      r   verify_challenge&ChallengeResponseTest.verify_challenge  s$    ));;LL'
 	
r   c                 P   S H  nU R                  SU< 35         SnU(       a  SUR                  S5      -  nOSnX2-   nU R                  U5      nUR                  U5      (       d  U R	                  U5        U R                  X$5        S S S 5        M     g ! , (       d  f       M  = f)N)Nr  r  zalgo=s   is-twenty-bytes-longs   {%s}rn  r   )r   r   r  
startswithrt   r  )r{   algor  r  r  s        r   test_challengeresponse,ChallengeResponseTest.test_challengeresponse  s    +Dj)-$t{{7';;F Fl//4**622IIh'%%c4 *) ,))s   A.B
B%	rc   N)	r   r   r   r   r   r  r  r  r   rc   r   r   r  r    s     #G



5r   r  c                 .    U =R                   S-  sl         g r   )r  )nss    r   initializerr!    s    GGqLGr   c                   ,    \ rS rSrS rS rS rS rSrg)TestInitializersi  c                     [         R                  " 5       U l        U R                  R                  5       U l        SU R                  l        g r  )r!   Managermgrrd  r   r  r   s    r   r}  TestInitializers.setUp  s1    "**,(($$&r   c                 l    U R                   R                  5         U R                   R                  5         g r   )r&  r  r   r   s    r   r  TestInitializers.tearDown  s    r   c                 P   [         R                  R                  5       nU R                  [        UR
                  S5        UR                  [        U R                  45        U R                  U R                  R                  S5        UR                  5         UR                  5         g r   )r!   r!  SyncManagerrw   	TypeErrorr   r!  r   rv   r  r  r   )r{   r  s     r   test_manager_initializer)TestInitializers.test_manager_initializer  sj    $$002)QWWa0	dggZ(q)	

	r   c                 $   U R                  [        [        R                  SS9  [        R                  " S[        U R
                  45      nUR                  5         UR                  5         U R                  U R
                  R                  S5        g )Nr   )r!  )
rw   r,  r!   r  r!  r   r$   r   rv   r  rx  s     r   test_pool_initializer&TestInitializers.test_pool_initializer  sa    )_%9%9qI  K$''<			q)r   )r&  r   N)	r   r   r   r   r}  r  r-  r0  r   rc   r   r   r#  r#    s    
*r   r#  c                 X     U R                  SS9ng ! [        R                   a     g f = f)NF)block)r   rU  rc  )r   items     r   _this_sub_processr5    s-    uu5u!== s    ))c                      [         R                  " 5       n [         R                  " [        U 4S9nSUl        UR                  5         UR                  5         g rv  )r!   r#   r   r5  r   r   r   )r&   subProcs     r   _test_processr8    s>    !!#E%%->eXNGGNMMOLLNr   c                 
    X -  $ r   rc   rp  s    r   _afuncr:    rl  r   c                      [         R                  " SS9n U R                  [        / SQ5      nU R	                  5         U R                  5         g )Nrk   r  )r   r1  r8  rk   r   rL  rS  )r!   r  r  r:  r$   r   )r  r  s     r   pool_in_processr<    s5    !,D./AJJLIIKr   c                   6    \ rS rSrS r\S 5       rS rS rSr	g)
_file_likei  c                     Xl         S U l        g r   )	_delegate_pid)r{   delegates     r   r   _file_like.__init__  s    !	r   c                 |    [         R                  " 5       nXR                  :w  a  Xl        / U l        U R                  $ r   )rI   r   rA  _cacherc  s     r   cache_file_like.cache  s-    iik))IDK{{r   c                 :    U R                   R                  U5        g r   )rF  r  r  s     r   r}  _file_like.write  s    

$r   c                 z    U R                   R                  SR                  U R                  5      5        / U l        g )Nr  )r@  r}  r   rF  rE  r   s    r   flush_file_like.flush  s(    RWWTZZ01r   )rE  r@  rA  N)
r   r   r   r   r   propertyrF  r}  rK  r   rc   r   r   r>  r>    s%       r   r>  c                   &    \ rS rSrS rS rS rSrg)TestStdinBadfiledescriptori  c                 t    [         R                  " [        S9nUR                  5         UR	                  5         g Nr   )r!   r   r8  r   r   )r{   r  s     r   test_queue_in_process0TestStdinBadfiledescriptor.test_queue_in_process  s$    &&m<

		r   c                 t    [         R                  " [        S9nUR                  5         UR	                  5         g rQ  )r!   r   r<  r   r   rx  s     r   test_pool_in_process/TestStdinBadfiledescriptor.test_pool_in_process  s$    ##?;			r   c                    ^ [         R                  " 5       n[        U5      mTR                  S5        [        R
                  " U4S jS9nTR                  5         UR                  5       S:X  d   eg )Nr  c                  $   > T R                  5       $ r   )rK  )flikes   r   r  :TestStdinBadfiledescriptor.test_flushing.<locals>.<lambda>  s    ekkmr   r   )r  r  r>  r}  r!   r   rK  r  )r{   sior  rY  s      @r   test_flushing(TestStdinBadfiledescriptor.test_flushing  sQ    kkm3E&&.CD||~&&&r   rc   N)r   r   r   r   rR  rU  r\  r   rc   r   r   rO  rO    s    

'r   rO  c                       \ rS rSr\S 5       rSS jr\S 5       rSS jrS r	S r
\R                  " S5      S	 5       r\S
 5       r\R                  " S5      S 5       rS rSrg)TestWaiti  c                     [        S5       H\  nU(       a,  [        R                  " [        R                  " 5       S-  5        UR	                  U[
        R                  " 5       45        M^     UR                  5         g )Nr[  r   )r}  r   r+  r  r  rI   r   r$   )r   r+  slowr  s       r   _child_test_waitTestWait._child_test_wait  sL    rA

6==?U23FFAryy{#$  	
	r   c                   ^ SSK Jn  / n/ m/ n[        S5       H  n[        R                  " SS9u  pg[        R
                  " U R                  Xq4S9nSUl        UR                  5         UR                  5         UR                  U5        TR                  U5        U R                  UR                  5        M     U(       a:  U" U5       H%  n UR                  5       n	UR                  U	5        M'     U(       a  M:  UR!                  5         [#        U4S j[        S	5       5       5      n
U R%                  XJ5        g ! [         a%    UR                  U5        UR                  5          M  f = f)
Nr   r;   rk   Fr  r   Tc              3   R   >#    U  H  nT  H  o!UR                   4v   M     M     g 7fr   )r  )r>  r  r   r  s      r   r?  %TestWait.test_wait.<locals>.<genexpr>@  s     GiAaee**is   $'r[  )multiprocess.connectionr   r}  r!   r  r   rb  r   r   r$   r  r  r   r  r  r  r  rB  rv   )r{   ra  r   readersmessagesr  r  r+  r   r  r  r  s              @r   	test_waitTestWait.test_wait%  s   0qA"''u5DA''t/D/DA9UAAHGGIGGINN1LLOOOAFF#  '])&&(C
 OOC( # g 	GeBiGG,   NN1%GGIs   D;;+E*)E*c                 @   [         R                   " 5       nUR                  U5        [        S5       HY  nU(       a,  [        R                  " [
        R
                  " 5       S-  5        UR                  SU-  R                  S5      5        M[     UR                  5         g )Nr[  r   %s
rn  )	rc  r  r}  r   r+  r  rj  r   r$   )r   r  ra  r   r  s        r   _child_test_wait_socket TestWait._child_test_wait_socketC  sg    MMO			'rA

6==?U23IIvz))'23  	
	r   c                    SSK Jn  [        R                  " [        R
                  S45      nUR                  5       n/ n/ n0 n[        S5       Hf  n[        R                  " U R                  XA4S9n	SU	l        U	R                  5         UR                  U	5        U R                  U	R                  5        Mh     [        S5       H*  nUR!                  5       u  pUR                  U
5        / Xz'   M,     UR#                  5         U(       af  U" U5       HQ  n
U
R%                  S5      nU(       d#  UR'                  U
5        U
R#                  5         M>  Xz   R                  U5        MS     U(       a  Mf  SR                  S [        S	5       5       5      R)                  S
5      nUR+                  5        H$  nU R-                  SR                  U5      U5        M&     g )Nr   r;   rk   r   Tr  r  c              3   ,   #    U  H
  nS U-  v   M     g7f)rm  Nrc   r=  s     r   r?  ,TestWait.test_wait_socket.<locals>.<genexpr>l  s     9y!6A:ys   r[  rn  r   )rg  r   rc  rd  r   r  re  r}  r!   r   rn  r   r   r  r  r   r)  r$   r  r  r   r  rv   )r{   ra  r   rV  r  rh  r  dicr  r   r  rK  r  r  vs                  r   test_wait_socketTestWait.test_wait_socketM  sc   0  -"4"4a!89}}qA''t/K/K.2\;AAHGGILLOOOAFF#  qA88:DANN1CF  	
	']ffRjNN1%GGIFMM#& # g 779uRy99@@IASXXa[(3 r   c                 &    U R                  S5        g r  )rj  r   s    r   test_wait_slowTestWait.test_wait_slowp  s    tr   c                 &    U R                  S5        g r  )ru  r   s    r   test_wait_socket_slowTestWait.test_wait_socket_slows  s    d#r   r  c                 ^   SSK Jn  Sn[        R                  " 5       u  p4[        R
                  " 5       nU" X4/U5      n[        R
                  " 5       U-
  nU R                  U/ 5        U R                  Xr[        -
  5        UR                  S 5        U" X4/S5      nU R                  Xc/5        g )Nr   r;   r6   r  )
rg  r   r!   r  r   r   rv   r
  r  r  )r{   r   r+   r   r   r   r   r  s           r   test_wait_timeoutTestWait.test_wait_timeoutv  s    0##% A67# 5(b!5I"56	tA62c"r   c                 P    UR                  5         [        R                  " U5        g r   )r  r   r+  )r   r  periods      r   signal_and_sleepTestWait.signal_and_sleep  s    

6r   c                    SSK Jn  SnS n[        R                  " S5      n[        R                  " 5       u  pV[        R
                  " U R                  XB4S9nUR                  5         U R                  UR                  [        5        U R                  UR                  SS95        [        R                  " 5       nU" XWR                  U/US-   5      n	[        R                  " 5       U-
  n
U R                  XR                  /5        U R!                  XS-   5        U R#                  XS-
  5        UR%                  S 5        [        R                  " 5       nU" XWR                  U/S5      n	[        R                  " 5       U-
  n
U R                  U" U	5      U" UR                  U/5      5        U R!                  U
S	5        UR%                  S 5        [        R                  " 5       nU" XWR                  U/S5      n	[        R                  " 5       U-
  n
U R                  U" U	5      U" XWR                  U/5      5        U R!                  U
S	5        UR'                  5         UR)                  5         g )
Nr   r;   r8  c                     [        U S S9$ )Nc                     [        U 5      $ r   )r  rp  s    r   r  >TestWait.test_wait_integer.<locals>.<lambda>.<locals>.<lambda>  s    BqEr   )r&  )rB  )rV  s    r   r  ,TestWait.test_wait_integer.<locals>.<lambda>  s    F1/:r   r   r  r*   r1  g?)rg  r   r!   r  r  r   r  r   r   r  rq  r   r  r   r   rv   r  r
  r  r%  r   )r{   r   r  sorted_r  r   r   r   r   r   r  s              r   test_wait_integerTestWait.test_wait_integer  s   0:''*##%##4+@+@*-: 	
	ajj#.B/0 Azz1%x"}5 5(zzl+!|,5Q,/	t Azz1%r* 5(w

A'?@s#	t Azz1%r* 5(w::q/A'BCs#		r   c                 0   SSK Jn  [        R                  " 5       u  p#[        R
                  " 5       nU" U/SS9n[        R
                  " 5       U-
  nU R                  U/ 5        U R                  US5        UR                  5         UR                  5         g )Nr   r;   rH   r*   r   )	rg  r   r!   r  r   r   rv   r  r$   )r{   r   r   r   r   r   s         r   test_neg_timeoutTestWait.test_neg_timeout  sp    0##%NNA3#NNq b!1				r   rc   Nr9  )r   r   r   r   r  rb  rj  rn  ru  rx  r{  r   r  r~  r  r  r  r   rc   r   r   r_  r_    s     -<  !4F$ z*# +#"   z*) +)V	r   r_  c                   x    \ rS rSr\R
                  " \S5      S 5       r\R                  " \S5      S 5       r	Sr
g)TestInvalidFamilyi  r  c                     U R                  [        5         [        R                  R	                  S5        S S S 5        g ! , (       d  f       g = f)Nz\\.\testrw   rL   r!   r!  r#  r   s    r   test_invalid_family%TestInvalidFamily.test_invalid_family  s0    z*&&//< +**	    ?
Az skipped on non-Windows platformsc                     U R                  [        5         [        R                  R	                  S5        S S S 5        g ! , (       d  f       g = f)Nz/var/test.piper  r   s    r   test_invalid_family_win32+TestInvalidFamily.test_invalid_family_win32  s1    z*&&//0@A +**r  rc   N)r   r   r   r   rM   r   r  r  r  r  r   rc   r   r   r  r    sE    __U01= 2=  BCB DBr   r  c                   :    \ rS rSr\S 5       r\S 5       rS rSrg)	TestFlagsi  c                 T    UR                  [        [        R                  5      5        g r   )r  r   r   flagsr   r  s     r   run_in_grandchildTestFlags.run_in_grandchild  s    		%		"#r   c                    SS K n[        R                  " U5      nUR                  SS9u  pEUR	                  U R
                  U4S9n[        R                  " [        S9   UR                  5         S S S 5        UR                  5       nUR                  5         UR                  5         UR                  5         [        [        R                  5      U4n[!        UR#                  U5      5        g ! , (       d  f       N= f)Nr   Fr  r   )category)jsonr!   r  r  r   r  rG  rH  DeprecationWarningr   r  r   r$   r   r   r  printr  )	r   rZ   r  mpr  r+  r   grandchild_flagsr  s	            r   run_in_childTestFlags.run_in_child  s    ((6wwew$JJc331$J?$$.@AGGI B668					syy!#34djj  BAs   C..
C<c                     SS K nS[        R                  " 5       < S3n[        R                  " [
        R                  SSSSU/5      nUR                  UR                  S5      5      u  pEU R                  XE5        g )	Nr   zAfrom multiprocess.tests import TestFlags; TestFlags.run_in_child()r_  z-Sz-Or]  rn  )
r  r!   rW   ra  check_outputr   r   r  rf  rv   )r{   r  progr  child_flagsr  s         r   _test_flagsTestFlags._test_flags  st    &&5&F&F&H%K1N 	 &&^^T4tT:<(,

4;;w3G(H%7r   rc   N)	r   r   r   r   r  r  r  r  r   rc   r   r   r  r    s-    $ $ ! !
8r   r  c                   *    \ rS rSr\S 5       rS rSrg)TestTimeoutsi  c                     [         R                  " S5        UR                  S5        UR                  5         [        R
                  R                  U5      nUR                  S5        UR                  5         g )Nr   r[  r\  )r   r+  r  r$   r!   r!  r(  )r   childr  r  s       r   _test_timeoutTestTimeouts._test_timeout  sK    

1

3))009		#

r   c                    [         R                  " 5       n [         R                  " S5        [        R                  " SS9u  p#[        R
                  R                  SS9n[        R                  " U R                  X4R                  4S9nUR                  5         UR                  5         U R                  UR                  5       S5        UR                  5         UR                  5       nU R                  UR                  5       S5        UR                  5         UR                  5         [        U5        [         R                  " U5        g ! [         R                  " U5        f = f)	Nr   Tr  AF_INETr  r   r[  r\  )rc  getdefaulttimeoutsetdefaulttimeoutr!   r  r!  r#  r   r  r  r   r$   rv   r  r)  r.   )r{   old_timeoutparentr  rV  r   r  s          r   r  TestTimeouts.test_timeout  s    ..0	2$$S)+00=MF**3393EA''t/A/A.3YY-?AAGGIKKMV[[]C0LLN88:DTYY[#.JJLGGIO$$[1F$$[1s   DE E$rc   N)r   r   r   r   r  r  r  r   rc   r   r   r  r    s     2r   r  c                       \ rS rSrS rSrg)TestNoForkBombi  c                 &   [         R                  " 5       n[        R                  R	                  [        R                  R                  [        5      S5      nUS:w  aQ  [        R                  R                  R                  X!5      u  p4nU R                  US5        U R                  SU5        g [        R                  R                  R                  " X!40 [        D6u  p4nU R                  UR                  5       S5        U R                  US5        g )Nzmp_fork_bomb.pyrr   r   s   RuntimeErrors   123)r!   rW   rI   r   r   r  r  r  r   r   assert_python_failurerv   rx   r^  r_  r<  )r{   r  r3   r  rb  r|   s         r   test_noforkbombTestNoForkBomb.test_noforkbomb  s    --/ww||BGGOOH57HI<<<55KKDULBSS#&MM/3/<<55FFtWSVWLBSSZZ\62S#&r   rc   N)r   r   r   r   r  r   rc   r   r   r  r    s    
'r   r  c                   *    \ rS rSr\S 5       rS rSrg)TestForkAwareThreadLocki/  c                     US:  aP  [         R                  " U R                  US-
  U4S9nUR                  5         UR	                  5         [        U5        O(UR                  [        [        R                  5      5        UR	                  5         g )Nr   r   )
r!   r   r  r   r$   r.   r  r   r   _afterfork_registry)r   r  r  r   s       r   r  TestForkAwareThreadLock.child4  s`    q5''syy!T{KAGGIJJLOIIc$2234

r   c                 j   [         R                  " S5      u  p[        R                  " 5       n[	        [        R
                  5      n[         R                  " U R                  SU4S9nUR                  5         UR                  5         UR                  5       n[        U5        U R                  Xd5        g )NFr   r   )r!   r  r   ForkAwareThreadLockr   r  r   r  r   r$   r  r.   assertLessEqual)r{   r  r+  rV  old_sizer   new_sizes          r   r  !TestForkAwareThreadLock.test_lock?  s~    ##E*$$&t//0##4::QFC				668QX0r   rc   N)r   r   r   r   r  r  r  r   rc   r   r   r  r  /  s    
  	1r   r  c                   6    \ rS rSrS rS r\S 5       rS rSr	g)TestCloseFdsiN  c                 T   [         (       a#  [        R                  " 5       R                  5       $ [        R                  " 5       R                  5       n/ nUS:  a/  UR                  U5        [        R
                  " U5      nUS:  a  M/  U H  n[        R                  " U5        M     U$ )NrH  )r  rc  detachr  rI   dupr$   )r{   r1  to_closer  s       r   get_high_socket_fdTestCloseFds.get_high_socket_fdP  s~    5 ==?))++ '')BHr'#VVBZ r'  Ir   c                     [         (       aA  [        R                  " [        R                  [        R                  US9R	                  5         g [
        R                  " U5        g )N)r  )r  rc  r  SOCK_STREAMr$   rI   )r{   r1  s     r   r$   TestCloseFds.closeb  s5    5MM&..&*<*<RHNNPHHRLr   c                      [         R                  " U[         R                  [         R                  5      nUR	                  5         UR                  S 5        g ! [         a  nUR                  U5         S nAg S nAff = fr   )rc  fromfdr  r  r$   r  rs   )r   r  r1  r   r:  s        r   _test_closefdsTestCloseFds._test_closefdsh  sX    	b&..&2D2DEA GGIIIdO	  	IIaLL	s   4A 
A="A88A=c                 (   [         (       d  [        R                  " S5      e[        R                  " 5       u  pU R                  5       n [        R                  " U R                  X#4S9nUR                  5         UR                  5         UR                  5       n[        U5        U R                  U5        UR                  5         UR                  5         [        R                  " 5       S:X  a  U R                  US 5        g SnU R                  U[        5        U R!                  UR"                  ["        R$                  :H  =(       d    UR&                  U:H  U5        g ! U R                  U5        UR                  5         UR                  5         f = f)Nzrequires fd picklingr   rr   i6'  )r  rM   rN   r!   r  r  r   r  r   r$   r  r.   rW   r  r   r  r   r  r  winerror)r{   r  r  r1  r   r:  WSAENOTSOCKs          r   test_closefdTestCloseFds.test_closefdr  s   }##$:;;(--/$$&
	''t/B/B.4\;AGGILLNAOJJrNLLNLLN++-7MM!T"K!!!W-OOAGGu{{2 6JJ+5q: JJrNLLNLLNs   
AE 3Frc   N)
r   r   r   r   r  r$   r  r  r  r   rc   r   r   r  r  N  s%    $  :r   r  c                       \ rS rSr\" \R                  \R                  5      r\	S 5       r
\R                  " \" \S5      S5      S 5       r\	S 5       r\R                  " \" \S5      S5      S 5       rSrg	)
TestIgnoreEINTRi  c                     S n[         R                   " [         R                  U5        UR                  S5        UR                  5       nUR                  U5        UR	                  SU R
                  -  5        g )Nc                     g r   rc   r  frames     r   rY  -TestIgnoreEINTR._test_ignore.<locals>.handler  r  r   ready   x)r]  r  r  r  r  CONN_MAX_SIZE)r   r  rY  r  s       r   _test_ignoreTestIgnoreEINTR._test_ignore  sR    	fnng.		'IIK		!s0001r   r  r  c                    [         R                  " 5       u  p [         R                  " U R                  U4S9nSUl        UR                  5         UR                  5         U R                  UR                  5       S5        [        R                  " S5        [        R                  " UR                  [        R                  5        [        R                  " S5        UR!                  S5        U R                  UR                  5       S5        [        R                  " S5        [        R                  " UR                  [        R                  5        U R                  UR#                  5       SU R$                  -  5        [        R                  " S5        UR'                  5         UR                  5         g ! UR                  5         f = f)Nr   Tr  r   i  r  )r!   r  r   r  r   r   r$   rv   r  r   r+  rI   rk  r  r]  r  r  r  r  r   r  s       r   test_ignoreTestIgnoreEINTR.test_ignore  s   *//1	''t/@/@.8]<AAHGGITYY['2JJsOGGAEE6>>*JJsOIIdOTYY[$/JJsOGGAEE6>>*T__.t7I7I0IJJJsOFFHJJLDJJLs   FF5 5Gc                 <   S n[         R                   " [         R                  U5        [        R                  R	                  5        nUR                  UR                  5        UR                  5       nUR                  S5        S S S 5        g ! , (       d  f       g = f)Nc                     g r   rc   r  s     r   rY  6TestIgnoreEINTR._test_ignore_listener.<locals>.handler  r  r   welcome)r]  r  r!   r!  r#  r  r  r)  )r   r  rY  rV  r   s        r   _test_ignore_listener%TestIgnoreEINTR._test_ignore_listener  s`    	fnng.''002aIIaii 
AFF9 322s   =B
Bc                    [         R                  " 5       u  p [         R                  " U R                  U4S9nSUl        UR                  5         UR                  5         UR                  5       n[        R                  " S5        [        R                  " UR                  [        R                  5        [        R                  " S5        [         R                  R!                  U5      nU R#                  UR                  5       S5        UR%                  5         UR                  5         g ! UR                  5         f = f)Nr   Tr   r  )r!   r  r   r  r   r   r$   r  r   r+  rI   rk  r  r]  r  r!  r(  rv   r   )r{   r  r  r   r  r,  s         r   test_ignore_listener$TestIgnoreEINTR.test_ignore_listener  s    *//1	''t/I/I.8]<AAHGGIiikGJJsOGGAEE6>>*JJsO$//66w?FV[[]I6FFHJJLDJJLs   DD+ +D=rc   N)r   r   r   r   maxr   PIPE_MAX_SIZESOCK_MAX_SIZEr  r  r  rM   r  r\  r]  r  r  r  r   rc   r   r   r  r    s     --w/D/DEM2 2 35GH I,   35GH Ir   r  c                       \ rS rSr\S 5       rS rS rS rS r	S r
S r\R                  " \R                  S	:H  S
5      \" S5      S 5       5       r\S 5       r\S 5       rS rSrg)TestStartMethodi  c                 L    UR                  [        R                  " 5       5        g r   )r  r!   rW   r  s     r   _check_contextTestStartMethod._check_context  s    		/2245r   c                 :   UR                  SS9u  p#UR                  U R                  U4S9nUR                  5         UR	                  5         UR                  5       nUR	                  5         UR                  5         U R                  XQR                  5       5        g )NFr  r   )	r  r   r 	  r   r$   r  r   rv   rW   )r{   r~   r  r+  r   child_methods         r   check_contextTestStartMethod.check_context  st    xxux%KKt22!K>				vvx			';';'=>r   c                    S H  n [         R                  " U5      nU R                  UR	                  5       U5        U R                  UR                  5       U5        U R                  [        UR                  S5        U R                  [        UR                  S 5        U R                  U5        M     g ! [         a     M  f = f)Nrr   rU   r  rU   )	r!   r  rL   rv   rW   r  rw   ru   r	  )r{   methodr~   s      r   r  TestStartMethod.test_context  s    5F%11&9 S113V<MM#//+S1j#*>*>Hj#*>*>Es# 6  s   B55
CCc                      [         R                  " S5      nU R                  [        S5         UR                  / SQ5        S S S 5        g ! [         a    [        R                  " S5      ef = f! , (       d  f       g = f)Nr  zforkserver should be availablez&module_names must be a list of stringsr7  )r!   r  rL   rM   rN   r  r,  set_forkserver_preload)r{   r~   s     r   test_context_check_module_types/TestStartMethod.test_context_check_module_types  sn    	F!--l;C ##I/WX&&y1 YX  	F##$DEE	FXXs   A A/!A,/
A=c                 >   [         R                  " [        5        Sn[         R                  " 5       n S GH  n [         R                  " USS9  U R                  [         R                  " 5       U5        [         R                  " 5       nU R                  UR                  5       U5        U R                  [        U5      R                  R                  5       R                  U5      5        U R                  UR                  R                  R                  5       R                  U5      5        U R                  [         5        US-  nGM     [         R                  " USS9  U R                  US5        g ! [
         a     GML  f = f! [         R                  " USS9  f = f)Nr   r	  Trp   r   )r!   r	  PRELOADrW   ru   rL   rv   r  r   r9  r   lowerr  r   r	  r  )r{   r  
old_methodr	  r~   s        r   test_set_getTestStartMethod.test_set_get  sB   ..w7$557
	E9#44V4H   !A!A!CVL%113  !5!5!7@S	 2 2 8 8 : E Ef MNKK((..0;;FCE""?3
 : ,,ZtDq) "  ,,ZtDs/   F E3C<F 3
F=F FF Fc                     [         R                  " 5       n[        R                  S:X  a  U R	                  US/5        g U R                  USS/:H  =(       d#    USS/:H  =(       d    U/ SQ:H  =(       d    U/ SQ:H  5        g )Nr8   rU   rr   r	  )rU   rr   r  )r!   get_all_start_methodsr   r   rv   r   )r{   methodss     r   test_get_allTestStartMethod.test_get_all  sz    !779<<7"Wwi0OOG'88 G#'88G#'FFG $'FFHr   c                    [         R                  " 5       S:w  a  U R                  S5        [        R                  R                  [        R                  R                  [        5      S5      n[        R                  R                  R                  " U40 [        D6u  p#nUR                  5       nUR                  5       nUR                  5       S:w  d  US:w  a(  [        U5        [        U5        U R!                  S5        g g )Nr  z*test only relevant for 'forkserver' methodzmp_preload.pyokr  z(failed spawning forkserver or grandchild)r!   rW   r   rI   r   r   r  r  r  r   r   r^  r_  rf  r<  r  rt   )r{   r3   r  rb  r|   s        r   test_preload_resources&TestStartMethod.test_preload_resources  s    ++-=MMFGww||BGGOOH5G||11BB4O3Ojjljjl::<43"9#J#JII@A $-r   r8   z*Only Spawn on windows so no risk of mixingavoids redundant testing.c                 d   S H  n[         R                  " S5      R                  5       n[         R                  " U5      nUR                  [        U4S9nSnU R                  [        U5         UR                  5         S S S 5        M     S H  n[         R                  " 5        Hr  n[         R                  " U5      R                  5       n[         R                  " U5      nUR                  [        U4S9nUR                  5         UR                  5         Mt     M     g ! , (       d  f       GM,  = f)N)rU   r  rr   r   zA SemLock created in a fork)
r!   r  r#   r   r'   r  rX  r   r	  r   )r{   process_methodr&   process_ctxr   ri  queue_methods          r   test_mixed_startmethod&TestStartMethod.test_mixed_startmethod"  s    
 6N#//7==?E)55nEK##;eX#FA3G''g>	 ?> 6 4L"1"G"G"I'33LAGGI-99.I''{%'J	 #J 4	 ?>s   -D
D/	c                 &    UR                  S5        g r   r   )r   r&   s     r   _put_one_in_queue!TestStartMethod._put_one_in_queue8  s    		!r   c                     UR                  S5        [        R                  " U R                  U4S9nUR	                  5         UR                  5         g r|  )r   r!   r   r%	  r   r   )r   r&   r-   s      r   _put_two_and_nest_once&TestStartMethod._put_two_and_nest_once<  s9    		!!))1F1FeXVr   c                    [         R                  " 5       n[         R                  " U R                  U4S9nUR	                  5         UR                  5         / nUR                  5       (       d6  UR                  UR                  5       5        UR                  5       (       d  M6  U R                  [        U5      [        SS/5      5        g )Nr   r1  r   )r!   r#   r   r(	  r   r   rB  r  r   assertSetEqualr  )r{   r&   r-   r  s       r   test_nested_startmethod'TestStartMethod.test_nested_startmethodC  s      %%'!))1L1LTYS[\++--NN599;' ++--
 	CL#q!f+6r   rc   N)r   r   r   r   r  r 	  r	  r  r	  r	  r	  r	  rM   r   r   r   rd   r"	  r%	  r(	  r,	  r   rc   r   r   r  r    s    6 6?
$2*,H
B __S\\W,AC !<= >C&    7r   r  r  c                   N    \ rS rSrS rS rS rS rS r\	S 5       r
S rS	 rS
rg)TestResourceTrackeriU  c                    Sn[         R                   GH  nU R                  US9   US:X  a   S S S 5        M%  [        R                  " 5       u  p4[
        R                  " [        R                  SSUR                  XBS9/U/[
        R                  S9n[        R                  " U5        [        USS	S
9 nUR                  5       R                  5       R                  S5      nUR                  5       R                  5       R                  S5      nS S S 5        [!        WU5        UR#                  5         UR%                  5         SU S3n	[&        R(                  " [&        R*                  U	5       H  n
 [!        WU5        M     UR6                  R9                  5       R                  S5      nUR6                  R                  5         SR                  U5      nU R;                  X5        U R;                  USU-  5        S S S 5        GM     g ! , (       d  f       GN= f! [,         aF  nU R/                  UR0                  [0        R2                  [0        R4                  45         S nA  M  S nAff = f! , (       d  f       GMl  = f)Na  if 1:
            import time, os
            import multiprocess as mp
            from multiprocess import resource_tracker
            from multiprocess.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)
        )r4   noopr_  r]  )r+  r4   )pass_fdsr  r  T)r-  rn  zA z< resource was leaked after a process was abruptly terminatedr  z8resource_tracker: There appear to be 2 leaked {} objectszresource_tracker: %r: \[Errno)r0   r2   r   rI   pipera  rb  r   r   r   rc  r$   r$  rd  r<  rf  r5   r%  r   r   rg  r.  r  rx   r  ENOENTEINVALr  r%  r/  )r{   ra  r4   r  r+  r   r'  name1name2ri  rK  r:  r|   r  s                 r   _test_resource_tracker*TestResourceTracker._test_resource_trackerY  s   : &44EE*F? +* wwy$$cnn%)4a1M&O/0c,6OO= !T40AJJL//188AEJJL//188AE 1 !.w '1 2 //0E0E29;A(6; hhmmo,,W5 &&,f!'#    /  &F&NOG +* 5 10 #  aggell/KL	/ +*sV   I/A<I/4AH
A"I/2H>A>I/

HI/
I,	&:I'	 I/'I,	,I//
I?	c                    SSK Jn  UR                  nUbI  [        R                  " U[
        R                  5        [        R                  " U[
        R                  * S9  [        R                  " 5          [        R                  " S5        UR                  5         S S S 5        UR                  n[        R                  " XA5        [        R                  " S5        [        R                   " S5      n[        R                  " SS9 n[        R                  " S	5        UR#                  5       nUR%                  5         UR'                  5         [(        R*                  " U5      nA[,        R.                  " 5         U R1                  U" 5       5        U(       aq  U R3                  [5        U5      S
5        US   n	U R7                  [9        U	R:                  [<        5      5        U R7                  S[?        U	R@                  5      ;   5        OU R3                  [5        U5      S5        S S S 5        g ! , (       d  f       GN= f! , (       d  f       g = f)Nr   _resource_tracker)r   r?  r  rU   T)r  alwaysr   zresource_tracker: process died)!multiprocess.resource_trackerr<	  rA  rI   rk  r]  rl  r   wait_processrG  rH  rI  r  r   r+  r!   r  r  r  r  r  r  r  r  r  rv   r   r   
issubclassr  UserWarningry   r  )
r{   r  
should_dier<	  r  r~   all_warnr  r  the_warns
             r   check_resource_tracker_death0TestResourceTracker.check_resource_tracker_death  s    	D$$?GGC(  ?$$&!!(+,,. '  $$


3))'2$$D1X!!(+--/CKKMKKMS!B JJLbd#  X2#A;
8+<+<k JK @#&x'7'7#8!9 :   X2% 21 '& 21s   4'H*DH<*
H9<
I
c                 D    U R                  [        R                  S5        g r  )rE	  r]  r  r   s    r   test_resource_tracker_sigint0TestResourceTracker.test_resource_tracker_sigint  s    ))&--?r   c                 D    U R                  [        R                  S5        g r  )rE	  r]  rd  r   s    r   test_resource_tracker_sigterm1TestResourceTracker.test_resource_tracker_sigterm  s    ))&..%@r   c                 D    U R                  [        R                  S5        g r  )rE	  r]  rl  r   s    r   test_resource_tracker_sigkill1TestResourceTracker.test_resource_tracker_sigkill  s    ))&..$?r   c                     SSK Jn  UR                  5         UR                  S U4;   nX2R	                  5       -  nU R                  U5        g )Nr   r;	  )r>	  r<	  r  rA  _check_aliver  )r  r  r<	  reuseds       r   _is_resource_tracker_reused/TestResourceTracker._is_resource_tracker_reused  sD    C((* #''D#;60022		&r   c                 v   SSK Jn  UR                  5         UR                  n[        R
                  " SS9u  p4[        R                  " U R                  XB4S9nUR                  5         UR                  5       nUR                  5         UR                  5         UR                  5         U R                  U5        g )Nr   r;	  Fr  r   )r>	  r<	  r  rA  r!   r  r   rS	  r   r  r   r$   r   )r{   r<	  r  r  r+  r   is_resource_tracker_reuseds          r   test_resource_tracker_reused0TestResourceTracker.test_resource_tracker_reused  s    C((*$$##51##4+K+K*+3		%&VVX" 	
				23r   c                     SnSS[        U5      -
  -  nU R                  [        5         [        R                  " X!5        S S S 5        g ! , (       d  f       g = f)Nr   r   r  )r   rw   rL   r0   register)r{   r4   too_long_name_resources      r   test_too_long_name_resource/TestResourceTracker.test_too_long_name_resource  sF      !$c%j(8!9z*%%&<D +**s   A		
Arc   N)r   r   r   r   r8	  rE	  rH	  rK	  rN	  r  rS	  rW	  r\	  r   rc   r   r   r/	  r/	  U  sA    EPN#3J@A@  4$Er   r/	  c                   h    \ rS rSr\S 5       rS rS r\R                  R                  S 5       rSrg)TestSimpleQueuei  c                     UR                  5          UR                  UR                  5       5        UR                  UR                  5       5        UR                  5         g ! UR                  5         f = fr   )r   r   rB  r  r^  s       r   _test_emptyTestSimpleQueue._test_empty  sQ    	&IIekkm$IIekkm$##%##%s   >A! !A3c                    [         R                  " 5       n[         R                  " 5       n[         R                  " 5       n[         R                  " U R                  XU4S9nSUl        UR                  5         U R                  UR                  5       5        UR                  5         UR                  5         U R                  UR                  5       5        U R                  UR                  5       S5        U R                  UR                  5       S5        U R                  UR                  5       5        UR                  5         g )Nr   TF)r!   SimpleQueuer6  r   ra	  r   r   r   rB  r  r   r  rv   r   r   )r{   r&   rM  rN  r  s        r   
test_emptyTestSimpleQueue.test_empty  s    ++-)//1-335&&##*=>
 

&  "'d+e,&		r   c                 n    [         R                  " 5       nUR                  5         UR                  5         g r   )r!   rd	  r$   r{   r&   s     r   r  TestSimpleQueue.test_close  s"    ++-r   c                     [         R                  " 5       nUR                  5         U R                  UR                  R
                  5        U R                  UR                  R
                  5        g r   )r!   rd	  r$   r   _readerr  _writerrh	  s     r   test_closedTestSimpleQueue.test_closed!  sE    ++-,,-,,-r   rc   N)r   r   r   r   r  ra	  re	  r  r  r   cpython_onlyrm	  r   rc   r   r   r_	  r_	    s<    & &0 
\\. .r   r_	  c                       \ rS rSrS rSrg)TestPoolNotLeakOnFailurei)  c                   ^^ Sm/ m " UU4S jS5      nU R                  [        S5         [        R                  R	                  S[
        R                  R                  US9S9nUR                  5         UR                  5         S S S 5        U R                  [        S T 5       5      5        g ! , (       d  f       N0= f)	Nr8  c                   @   > \ rS rSrU 4S jrU4S jrS rS rS rSr	g)	RTestPoolNotLeakOnFailure.test_release_unused_processes.<locals>.FailingForkProcessi1  c                 R   > SU l         S U l        S U l        TR                  U 5        g )NzFake Process)r3   r   r  r  )r{   rY   forked_processess     r   r   [TestPoolNotLeakOnFailure.test_release_unused_processes.<locals>.FailingForkProcess.__init__2  s&    *	 $!
 ''-r   c                 @   > TS::  a  [        S5      eTS-  mSU l        g )Nr   Manually induced OSErrorr   rY  )r  r  )r{   will_fail_ins    r   r   XTestPoolNotLeakOnFailure.test_release_unused_processes.<locals>.FailingForkProcess.start8  s(    1$!"<==!&
r   c                     SU l         g )Nstoppingr  r   s    r   r%  \TestPoolNotLeakOnFailure.test_release_unused_processes.<locals>.FailingForkProcess.terminate?  s	    '
r   c                 4    U R                   S:X  a  SU l         g g )Nr}	  stoppedr  r   s    r   r   WTestPoolNotLeakOnFailure.test_release_unused_processes.<locals>.FailingForkProcess.joinB  s    ::+!*DJ ,r   c                 L    U R                   S:H  =(       d    U R                   S:H  $ )NrY  r}	  r  r   s    r   r   [TestPoolNotLeakOnFailure.test_release_unused_processes.<locals>.FailingForkProcess.is_aliveF  s    zzY.J$**
2JJr   )r   r3   r  N)
r   r   r   r   r   r   r%  r   r   r   )rv	  rz	  s   r   FailingForkProcessrt	  1  s    .'(+Kr   r	  ry	  r   )r   )contextc              3   @   #    U  H  oR                  5       v   M     g 7fr   rJ  )r>  r-   s     r   r?  ITestPoolNotLeakOnFailure.test_release_unused_processes.<locals>.<genexpr>O  s     C2Bw  ""2BrL  )r  r  r!   r  r  rM   r  	MagicMockr$   r   r  rD  )r{   r	  r   rv	  rz	  s      @@r   test_release_unused_processes6TestPoolNotLeakOnFailure.test_release_unused_processes+  s     	K 	K0 ##G-GH$$))!X]]5L5L* 6M 6,) -AGGIFFH	 I
 	C2BCC	E IHs   AB//
B=rc   N)r   r   r   r   r	  r   rc   r   r   rq	  rq	  )  s    $Er   rq	  c                      \ rS rSrSr\R                  R                  rS r	S r
\S 5       r\rS rS r\S 5       rS	 r\S
 5       rS&S jr\S 5       rS&S jr\S 5       rS'S jrS r\S 5       rS r\S 5       rS r\S 5       rS r\S 5       rS(S jr S r!\S 5       r"S r#\S 5       r$S r%\S 5       r&S r'\S  5       r(S! r)\S" 5       r*S# r+S$r,g%))TestSyncManagerTypesiR  a9  Test all the types which can be shared between a parent and a
child process by using a manager which acts as an intermediary
between them.

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

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

# The parent.
def test_list(self):
    o = self.manager.list()
    o.append(5)
    self.run_worker(self._test_list, o)
    assert o[1] == 6
c                 p    U R                  5       U l        U R                  R                  5         S U l        g r   )manager_classr   r   r  r   s    r   r}  TestSyncManagerTypes.setUpk  s)    ))+	r   c                    U R                   bS  U R                   R                  5       (       a4  U R                   R                  5         U R                   R                  5         U R                  R                  5         S U l        S U l         g r   )r  r   r%  r   r   r  r   s    r   r  TestSyncManagerTypes.tearDownp  sZ    99 TYY%7%7%9%9II!IINN	r   c                 .    [         R                  " 5         g r   )r   reap_childrenrM  s    r   r  TestSyncManagerTypes.setUpClassx  s    r   c                    [        U R                  5        [        n[        R                  " 5       n[
        R                  " USS9 H'  n[        [        R                  " 5       5      S::  d  M'    g    [        R                  " 5       U-
  nS[
        l
        [
        R                  " S[        R                  " 5        SUS S35        g )	NFerrorr   Tmultiprocess.Manager still has  active children after .1f seconds)r.   r  WAIT_ACTIVE_CHILDREN_TIMEOUTr   r   r   rg  r   r!   r8  environment_alteredprint_warning)r{   r+   
start_timerK  r  s        r   wait_proc_exit#TestSyncManagerTypes.wait_proc_exit~  s     	TYY.^^%
''u=A?2245: > !J.B*.G'!!$C%4%D%D%F$G H;;=c((#L Mr   c                     [         R                  " X4S9U l        SU R                  l        U R                  R	                  5         U R                  5         U R                  U R                  R                  S5        g )Nr   Tr   )r!   r   r  r   r   r	  rv   r   )r{   workerrr  s      r   
run_workerTestSyncManagerTypes.run_worker  sV    #++6H					++Q/r   c                     UR                  5       (       d   eUR                  5         UR                  5         UR                  S5        g Nr  )r  r   r  r   rr  s     r   r)   TestSyncManagerTypes._test_event  s/    zz|||
		r   c                     U R                   R                  5       nUR                  5         U R                  U R                  U5        UR                  5       (       a   eUR                  S5        g r	  )r   r6  r  r	  r)  r  r   r{   r  s     r   r,  TestSyncManagerTypes.test_event  sL    LL 	((!,88::~	ur   c                 $    UR                  5         g r   r  r	  s     r   
_test_lockTestSyncManagerTypes._test_lock      r   c                     [        U R                  U5      " 5       nU R                  U R                  U5        UR	                  5         U R                  [        UR                  5        g r   )r  r   r	  r	  r  rw   rX  r{   lnamer  s      r   r  TestSyncManagerTypes.test_lock  sD    DLL%(*+			,		2r   c                 D    UR                  5         UR                  5         g r   r  r  r	  s     r   _test_rlock TestSyncManagerTypes._test_rlock      r   c                 r    [        U R                  U5      " 5       nU R                  U R                  U5        g r   )r  r   r	  r	  r	  s      r   r  TestSyncManagerTypes.test_rlock  s)    DLL%(*((!,r   c                 $    UR                  5         g r   r	  r	  s     r   r  $TestSyncManagerTypes._test_semaphore  r	  r   c                     [        U R                  U5      " 5       nU R                  U R                  U5        UR	                  5         g r   )r  r   r	  r  r  )r{   snamer  s      r   r  #TestSyncManagerTypes.test_semaphore  s2    DLL%(*,,a0			r   c                 "    U R                  SS9  g )Nr  )r	  )r  r   s    r   r  +TestSyncManagerTypes.test_bounded_semaphore  s    "45r   c                 D    UR                  5         UR                  5         g r   r	  r	  s     r   _test_condition$TestSyncManagerTypes._test_condition  r	  r   c                 p    U R                   R                  5       nU R                  U R                  U5        g r   )r   r  r	  r	  r	  s     r   test_condition#TestSyncManagerTypes.test_condition  s(    LL""$,,a0r   c                 H    UR                   S:X  d   eUR                  5         g r   )r  r  r	  s     r   _test_barrier"TestSyncManagerTypes._test_barrier  s    {{a		r   c                 r    U R                   R                  S5      nU R                  U R                  U5        g r   )r   rz  r	  r	  r	  s     r   r  !TestSyncManagerTypes.test_barrier  s*    LL  #**A.r   c                 >    U    S S S 5        g ! , (       d  f       g = fr   rc   r	  s     r   
_test_poolTestSyncManagerTypes._test_pool  s      SSs   
c                 n    U R                   R                  SS9nU R                  U R                  U5        g )Nrk   r  )r   r  r	  r	  r	  s     r   	test_poolTestSyncManagerTypes.test_pool  s+    LL*+r   c                 @   UR                  5       S:X  d   eUR                  5       (       d   eUR                  5       (       a   eUR                  5       S:X  d   eUR                  5       (       a   eUR                  5       S:X  d   eUR                  5       (       d   eg Nr1  r   rL  )rC  rF  rB  r   r	  s     r   _test_queue TestSyncManagerTypes._test_queue  sz    yy{axxzzz99;;wwyA~~99;;wwyA~~yy{{{r   c                    [        U R                  U5      " S5      nUR                  S5        UR                  S5        U R                  U R                  U5        UR                  5       (       d   eUR                  5       (       a   eg r	  )r  r   r   r	  r	  rB  rF  )r{   qnamer  s      r   
test_queueTestSyncManagerTypes.test_queue  sc    DLL%(+	a	a((!,wwyyy6688|8r   c                 &    U R                  S5        g )Nrv  )r	  r   s    r   test_joinable_queue(TestSyncManagerTypes.test_joinable_queue  s    (r   c                    [         R                  " 5       nUR                  US   S5        UR                  UR                  S5      S5        UR                  UR	                  S5      S5        UR                  5         UR                  5         U H  nM     UR                  [        U5      S5        UR                  UR                  S5      S5        g )Nr   r   r   )	rM   TestCaserv   r  r  r  reverser   r3  )r   rr  caser  s       r   
_test_listTestSyncManagerTypes._test_list  s      "Q#1q)1q)
A S1%Q'r   c                     U R                   R                  5       nUR                  S5        U R                  U R                  U5        U R                  U5        U R                  [        U5      S5        g )Nr   r   )r   r   r  r	  r	  r>  rv   r   r	  s     r   r*  TestSyncManagerTypes.test_list  sS    LL	+QQ#r   c                 P   [         R                  " 5       nUR                  [        U5      S5        UR                  US   S5        UR                  UR	                  S5      S5        UR                  [        UR                  5       5      S/5        UR                  [        UR                  5       5      S/5        UR                  [        UR                  5       5      S/5        UR                  UR                  5       SS05        UR                  UR                  5       S5        g )Nr   r  r   )r  r   )rM   r	  rv   r   r   assertListEqualr   r  rC  r  assertDictEqualr   assertTupleEqualpopitemr   rr  r	  s      r   
_test_dictTestSyncManagerTypes._test_dict	  s      "S1%UQ'+T#))+.=T#((*-w7T#**,/!5SXXZ%4ckkmZ8r   c                     U R                   R                  5       nSUS'   U R                  U R                  U5        U R	                  U5        U R                  [        U5      S5        g )Nr   r  r   )r   rA  r	  r	  r>  rv   r   r	  s     r   rE  TestSyncManagerTypes.test_dict  sQ    LL%+QQ#r   c                     [         R                  " 5       nUR                  UR                  S5        UR                  UR	                  5       S5        UR                  S5        g )Nr   r1  )rM   r	  rv   r   r   r  r	  s      r   _test_value TestSyncManagerTypes._test_value  sE      "A&A&
r   c                     U R                   R                  SS5      nU R                  U R                  U5        U R	                  UR
                  S5        U R	                  UR                  5       S5        g )Nr  r   r1  )r   r   r	  r	  rv   r   r   r	  s     r   r  TestSyncManagerTypes.test_value#  sV    LLsA&((!,!$!$r   c                     [         R                  " 5       nUR                  US   S5        UR                  US   S5        UR                  [        U5      S5        UR	                  [        U5      SS/5        g )Nr   r   r1  )rM   r	  rv   r   r	  r   r	  s      r   _test_array TestSyncManagerTypes._test_array)  sd      "Q#Q#S1%T#YA/r   c                 x    U R                   R                  SSS/5      nU R                  U R                  U5        g )Nr  r   r   )r   r  r	  r	  r	  s     r   r  TestSyncManagerTypes.test_array1  s0    LLsQF+((!,r   c                     [         R                  " 5       nUR                  UR                  S5        UR                  UR                  S5        g rI  )rM   r	  rv   r  r  r	  s      r   _test_namespace$TestSyncManagerTypes._test_namespace5  s8      """r   c                     U R                   R                  5       nSUl        SUl        U R	                  U R
                  U5        g rI  )r   rd  r  r  r	  r	  r	  s     r   rf  #TestSyncManagerTypes.test_namespace;  s6    LL""$,,a0r   )r   r  Nr  )r  )r#   )-r   r   r   r   r   r!   r!  r+  r	  r}  r  r  r  r  r	  r	  r)  r,  r	  r  r	  r  r  r  r  r	  r	  r	  r  r	  r	  r	  r	  r	  r	  r*  r	  rE  r	  r  r	  r  r	  rf  r   rc   r   r   r	  r	  R  s   * $,,88M
     MM$0    3  -  
6  1  /  
,  ) 
( 
($ 	9 	9$  % 0 0- # #
1r   r	  c                   \    \ rS rSr\R
                  " SS5      \" S5      S 5       5       rSrg)TestNamedResourceiB  TModuleNotFoundErrorzspawn specific test.c                 f   [         R                  nU R                  [         R                  U5        [	        USSS9 nUR                  [        R                  " S5      5        S S S 5        [        R                  " U5      u  p4nU R                  XUR                  S5      S9  g ! , (       d  f       NF= f)Nr+  r  r  aT                  import multiprocess 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  )r   r!  r  r"  r$  r}  textwrapdedentr   r^  r  rf  )r{   r&  r'  r  rb  r|   s         r    test_global_named_resource_spawn2TestNamedResource.test_global_named_resource_spawnC  s     !!	((&1&#0AGGHOO 	% 	 	 1 %55f= 	**W"56 10s   &B""
B0rc   N)	r   r   r   r   rM   r   rd   r
  r   rc   r   r   r
  r
  B  s.    __T01 !787 9 27r   r
  c                   b    \ rS rSrS r\R                  " SS5      \" S5      S 5       5       rSr	g)	MiscTestCasei]  c                 Z    [         R                  " U [        [        R                  / SQS9  g )N)SUBDEBUGr  licensecitation)extranot_exported)r   check__all__r!   r  r   s    r   test__all__MiscTestCase.test__all__^  s#    T?/:Q:Q+B	Cr   Tr
  r	  c                     [         R                  " SS5      u  pnU R                  US5        U R                  X3R	                  S5      S9  g )Nr]  zif 1:
            import sys
            sys.executable = None
            assert "multiprocess" not in sys.modules, "already imported!"
            import multiprocess as multiprocessing
            import multiprocess.spawn  # This should not fail
r   r  r
  )r   r^  rv   r  rf  )r{   r  rb  r|   s       r   ,test_spawn_sys_executable_none_allows_import9MiscTestCase.test_spawn_sys_executable_none_allows_importe  sM     %55C
 	Q**W"56r   rc   N)
r   r   r   r   r
  rM   r   rd   r
  r   rc   r   r   r
  r
  ]  s6    C __T01 !<=7 > 27r   r
  c                   4    \ rS rSr\S 5       r\S 5       rSrg)	BaseMixini}  c                     [         R                  R                  R                  5       [        R                  R                  5       4U l        g r   )r!   r-   	_danglingr   r>  danglingrM  s    r   r  BaseMixin.setUpClass~  s5    '//99>>@!++0024r   c                    [         R                  R                  5         [        [        R
                  R                  5      [        U R                  S   5      -
  nU(       a.  S[         R                  l        [        R                  " SU 35        S n[        [        R                  5      [        U R                  S   5      -
  nU(       a.  S[         R                  l        [        R                  " SU 35        S ng )Nr   TDangling processes: r   Dangling threads: )r  r   r   r  r!   r-   r
  r
  r	  r	  r>  )r   r   r   s      r   r  BaseMixin.tearDownClass  s     	!//99:Sa=QQ	/3DLL,!!$8"DE	i))*Sa-AA/3DLL,!!$6wi"@Ar   rc   N)r   r   r   r   r  r  r  r   rc   r   r   r
  r
  }  s(    4 4  r   r
  c                      \ rS rSrSr\R                  r\R                  r\" \R                  5      r	\" \R                  5      r
\" \R                  5      r\" \R                  5      r\" \R                  5      r\" \R                  5      r\" \R                  5      r\" \R                   5      r\" \R"                  5      r\" \R$                  5      r\" \R&                  5      r\" \R(                  5      r\" \R*                  5      r\" \R,                  5      r\" \R.                  5      r\" \R0                  5      r\" \R2                  5      r\" \R4                  5      r\" \R6                  5      rSrg)r!  i  r   rc   N)r   r   r   r   r   r!   r   r!  r  r   r  r8  r   r  r  r#   rv  r  r  r  r  r  r6  rz  r   r  r  r  r   rc   r   r   r!  r!    sN   D%%G ++J"?#B#BCO!/"@"@AN"?#B#BCO!/"@"@AN,,-D,,-D../E !>!>?M,,-D../E_667I#O$D$DE_667I../E?223G../E../EO445HO445Hr   r!  c                     ^  \ rS rSrSr\R                  r\" \R                  " S5      5      r
\" \R                  " S5      5      r\" \R                  " S5      5      r\" \R                  " S5      5      r\" \R                  " S5      5      r\" \R                  " S5      5      r\" \R                  " S	5      5      r\" \R                  " S
5      5      r\" \R                  " S5      5      r\" \R                  " S5      5      r\" \R                  " S5      5      r\" \R                  " S5      5      r\" \R                  " S5      5      r\" \R                  " S5      5      r\S 5       r\U 4S j5       r\U 4S j5       rSrU =r$ )ManagerMixini  r   zmanager.Queuezmanager.JoinableQueuezmanager.Lockzmanager.RLockzmanager.Semaphorezmanager.BoundedSemaphorezmanager.Conditionzmanager.Eventzmanager.Barrierzmanager.Valuezmanager.Arrayzmanager.listzmanager.dictzmanager.Namespacec                 :    U R                   R                  " U0 UD6$ r   )r   r  )r   rX   r   s      r   r  ManagerMixin.Pool  s    {{...r   c                 V   > [         TU ]  5         [        R                  " 5       U l        g r   )r  r  r!   r%  r   r  s    r   r  ManagerMixin.setUpClass  s    %--/r   c                   > [         n[        R                  " 5       n[        R                  " USS9 H'  n[        [        R                  " 5       5      S::  d  M'    OV   [        R                  " 5       U-
  nS[        l        [        R                  " S[        R                  " 5        SUS S35        [        R                  " 5         U R                  R                  5       S	:w  aY  S[        R                  l        [        R                  " S
5        [        R                  " U R                  R                  5       5        U R                  R!                  5         U R                  R#                  5         S U l        [$        TU ]M  5         g )NFr	  r   Tr	  r	  r	  r	  r   z5Shared objects which still exist at manager shutdown:)r	  r   r   r   rg  r   r!   r8  r	  r	  r  r  r   _number_of_objectsr  _debug_infor  r   r  r  )r   r+   r	  rK  r  r  s        r   r  ManagerMixin.tearDownClass  s%   
 /^^%
''u=A?2245: > !J.B*.G'!!$C%4%D%D%F$G H;;=c((#L M 	

;;))+q0 04DLL,!! #9 :!!#++"9"9";<r   rc   )r   r   r   r   r   r!   r   rM  operator
attrgetterr#   rv  r  r  r  r  r  r6  rz  r   r  r   rA  rd  r  r  r  r  r   r#  r$  s   @r   r$
  r$
    sz   D%%GX((9:EX001HIJMH''78DX((9:E,,-@ABI 3 34N OP,,-@ABIX((9:Ex**+<=>GX((9:EX((9:EH''78DH''78D,,-@ABI/ / 0 0    r   r$
  c                      \ rS rSrSr\R                  R                  r\R                  R                  r\	" \R                  R                  5      r
\	" \R                  R                  5      r\	" \R                  R                  5      r\	" \R                  R                  5      r\	" \R                  R                  5      r\	" \R                  R                  5      r\	" \R                  R                   5      r\	" \R                  R"                  5      r\	" \R                  R$                  5      r\	" \R                  R&                  5      r\	" \R                  R(                  5      r\	" \R                  R*                  5      r\	" \R                  R,                  5      r\	" \R                  R.                  5      r\	" \R                  R0                  5      rSrg)ThreadsMixini  r   rc   N)r   r   r   r   r   r!   dummyr   r!  r  r   r8  r  r  r#   rv  r  r  r  r  r  r6  rz  r   r  r   rc   r   r   r0
  r0
    st   D##++G &&11J"?#8#8#H#HIO"?#8#8#H#HIO--223D--223D..445E !6!6!D!DEM--223D..445E_22<<=I#O$9$9$J$JK_22<<=I..445E?00889G..445E..445Er   r0
  c           	      j  ^^^ U S   n[        5       n1 SknUR                  5        GHj  u  px[        U[        5      (       d  M  [	        U[
        5      (       a  U[
        L a  M=  [        UR                  5      U::  d   UR                  5       eUR                   H  n	U(       a  X:w  a  M  U(       a  M  SU	R                  5       -   USS  -   n
XYR                  5       S-      n " S SX[        R                  5      nU	S:X  a  [        R                  " S	5      " U5      nU
=Ul        Ul        XLl        XU
'   M     GM  [	        U[        R                  5      (       d  GM8  U(       a  GMB   " S
 SU[         5      nU=Ul        Ul        XLl        XU'   GMm     S S /mS /mUUU4S jnUU4S jnXS'   XS'   g )Nr   >   r   r   r   Withr   Mixinc                       \ rS rSrSrg)*install_tests_in_module_dict.<locals>.Tempi  rc   Nr}  rc   r   r   Tempr6
    s    r   r7
  r   r  c                       \ rS rSrSrg)r6
  i"  rc   Nr}  rc   r   r   r7
  r6
  "  s    r   c                     > [         R                  " [        5        [         R                  R	                  5         [         R                  R
                  R                  5       TS'   [        R
                  R                  5       TS'   [         R                  " SS9TS'    [         R                  " TSS9  [        R                  R                  S5      (       a   [         R                   " 5       n [%        5         [&        R(                  " 5         [         R*                  " 5       R-                  [.        5        g ! [         a    [        R                  " TS-   5      ef = f! ["         a    [        R                  " S5      ef = f)	Nr   r   Trn   rp   z start method not supportedlinuxz1OSError raises on RLock creation, see issue 3111!)r!   r	  r	  r-   _cleanupr
  r   r>  rW   ru   rL   rM   rN   r   r   r  r  r  rQ   r   get_temp_dirr  r  r  )r  r
  old_start_methodrZ   s    r   setUpModule1install_tests_in_module_dict.<locals>.setUpModule+  s5   ..w7((*%--77<<>))..0->>$O	C,,\F
 <<""7++;&,,. 	 !""$--i8  	C##L$A%B C C	C  ;'' ): ; ;;s   D5 E 5$E!E=c                    > Sn [         R                  R                  5         [        R                  " TS   SS9  [        [        R                  R                  5      [        TS   5      -
  nU(       a0  Sn S[         R                  l        [        R                  " SU 35        S n[        [        R                  5      [        TS   5      -
  nU(       a0  Sn S[         R                  l        [        R                  " SU 35        S nU (       a  [        R                  " S5        [        R                  R                  5         g )	NFr   Trp   r
  r   r 
  r  )r  r   r   r!   ru   r  r-   r
  r	  r	  r>  r   r+  r   _cleanup_tests)
need_sleepr   r   r
  r=
  s      r   tearDownModule4install_tests_in_module_dict.<locals>.tearDownModuleA  s    
 	!(()9!)<DI//99:S!=MM	J/3DLL,!!$8"DE	i))*S!-==J/3DLL,!!$6wi"@A JJsO++-r   r>
  rC
  )globalsr  r    r9  r@	  r   r  r   
capitalizerM   r	  r   requires_hashdigestr   r   r   r  )remote_globsrZ   	only_typeexclude_typesr   local_globs	ALL_TYPESr3   basetype_newnamer4
  r7
  r>
  rC
  r
  r=
  s    `             @@r   install_tests_in_module_dictrP
    s   j)J)K3I!'')
$%%dL))|#t))*i7K9K9KK7++!3  5#3#3#55QR@#$4$4$6$@A4(9(9 I%)==hGMD4;; 1",(,W% , h//00tV 044DMD-(O!%; *> d|Hv9,.: #.%3!"r   SemLockzSemLock not availabler:
  z
Linux onlyc                       \ rS rSrS rSrg)SemLockTestsib  c                      " S S[         R                  5      nS[        R                  " 5        3nU" SSSUS5      n[         R	                  U5        g )Nc                       \ rS rSrSrg)3SemLockTests.test_semlock_subclass.<locals>.SemLockig  rc   Nr}  rc   r   r   rQ
  rV
  g  rx  r   rQ
  ztest_semlock_subclass-r   r   r[  F)r   rQ
  rI   r   
sem_unlink)r{   rQ
  r3   r   s       r   test_semlock_subclass"SemLockTests.test_semlock_subclassf  sG    	&.. 	'		}5Aq"dE*##D)r   rc   N)r   r   r   r   rX
  r   rc   r   r   rS
  rS
  b  s    *r   rS
  )r:   Nr  )rM   unittest.mockr&   rU  r
  r   r  r   r   rI   r  r  r_   r]  r  rc  r  r  ra  r9  r-
  r   r  r  rG  test.supportr  test.support.script_helperr   r   r   r   r   r   r	   r
   import_moduler   r>  r`  r!   rg  multiprocess.dummymultiprocess.heapmultiprocess.managersr=  multiprocess.queuesr   r   r   r   HAVE_SEND_HANDLEr  ImportErrormultiprocess.sharedctypesr   r   r%  r   	HAS_SHMEMr  r\  r   rN   rA  r_  r  r   r,   r  r   r'   r.   r3   r0   r5   r  r  rw  r   rW  rX  rY  r.  r  r	  r  HAVE_GETVALUEr   r  r=   rJ   r	  r	  ctypesrB   rC   rD   rE   r  rQ   rd   r	  rf   r   r   r   r   r   r   r  r  rD  rH  rJ  r  r  r  r'  r5  rQ  rS  rq  rx  r  r  r$  ri  rk  rn  rq  rs  rL   r|  r  r  r(  r-  r/  rD  re  rf  r  rh  rt  rv  r~  rZ	  r  r#   r  r  r  r  r  r  rG
  r  r  r  r  r1  r@  r  r]  r  r  r  r  rm  r  r  r  r  r  r  r!  r#  r5  r8  r:  r<  r>  rO  r_  r  r  r  r  r  r  r  r  r   r/	  r_	  rq	  r	  r
  r
  r
  r!  r$
  r0
  rP
  rS
  rc   r   r   <module>rh
     s4	  
      	  
 	 	                !  ' & " & & ) ( !../AB    6 7  &       = &..M5*I
 7'((W-G-G 

]
^^ E2 ::>>*--44 	; 77g-5 OO	 	 #2 Hh#0 Hh (( " ,6? ? 
	 #
JJ}%E
 8
9)==K2LX.. L@0F 0"6 6
*  N	8< N	8h /))  ,Q7l Q7n$@ @J
 03@\ 3@ld\ dN	5W 5W@& &.
6F 6r x1< x1|C3 C3LM3 M3fY/l Y/~$$F $ %: $n! n!`&L &PB l B P F EV ,I ,	 	 
  56  * 	  56;  ? 	  53-  @4>\ 4>v 
/; /   kI  6KK K   { # 
. .b ##H-22, 22 .22p 9G/l G/R8L 8D., .`L Ld 
]$JK##H-@| @ . L@Lb bP
9 
5) 5)p 
Y EF##H-|J |J . G|JDuL ux%h'' %V+)< +)J6\ 6DE)) E& ##H-5!! 5 .5< ##E*##H-5H-- 5 . +5N ##H-*x(( * .*< *'!2!2 '*gx   gZ
B)) 
B 8!! 8H28$$ 2D'X&& '"1h// 1><:8$$ <:DAh'' AF7h'' 7D 
(=?\E(++ \E?\E~0.h'' 0.f&Ex00 &ER ##H-l18,, l1 .l1^7)) 7678$$ 7@ 26Y 629 9 9 x69 62 @E\4~ 
W-y99;RS	(,7*8$$ * 8 T*OA  M    I
  F\E  )I$((E(Hz)sf   ,` ?
`% 
`4 a +a a `"!`"%`10`14a ?a aaaa.-a.