
    wi@                       d dl Z d dlZ d dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlmZ d dlmZ d dlmZ d dlmZ d dlm Z  d dlm!Z! d dlm"Z" d d	lm#Z#  ej$        d
          Z% ej$        d           d dl&Z&d dl'Z(d dl)Z'd dl*Z'd dl+Z'd dl,Z'd dl-Z'd dl.Z'd dl'm/Z/ 	 d dl'm0Z0 e0j1        Z2n# e3$ r dZ2Y nw xY w	 d dl4m5Z5m6Z6 dZ7n# e3$ r dZ7Y nw xY w	 d dl'm8Z8 dZ9n# e3$ r dZ9Y nw xY w	 d dl:Z:n# e3$ r dZ:Y nw xY w e;ed          rej<        r e j=        d          dZ> e?dd          Z@e	jA        B                    d          rdndZCd ZDd ZEd ZFe	jG        dk    r	d dl'mHZH d ZIe/jJ        ZKdZLdZMeMrd\  ZNZOZPnd \  ZNZOZPejQ        ZR eSe%d!d           ZTejU        d"k    ZVd d#l)mWZW d$ ZX	  e	jY        d%          ZZn	#  d&ZZY nxY wd'd(gZ[	 d d)l\m]Z]m^Z^m_Z_m`Z` n# e3$ r eaZ]dxZ^xZ_Z`Y nw xY wd* Zbd+ Zc G d, d-e jd                  Ze G d. d/ea          Zf G d0 d1ea          Zgd2 Zh G d3 d4          Zi G d5 d6eg          Zj G d7 d8e(jk                  Zl G d9 d:eg          Zmd; Znd< Zo G d= d>eg          Zp G d? d@eg          Zq G dA dBeg          Zr G dC dDeg          Zs G dE dFeg          Zt G dG dHea          ZudI Zv G dJ dKea          Zw G dL dMea          Zx G dN dOeg          Zy G dP dQeg          Zz G dR dSeg          Z{ G dT dUeg          Z|ddWZ}dX Z~dY ZdZ Z G d[ d\ea          Z G d] d^e          Zd_ Z G d` daeg          Zdb Zdc Z G dd deeg          Z G df dgeg          Zd dhl,mZmZmZ  G di djea          Zdk Z G dl dme          Z G dn doe          Ze                    dpeq           e                    dredst           e                    dueev            G dw dxeg          Z ej                    Zdy Z G dz d{e          Ze                    d|eq            G d} d~e          Ze                    d|           dZ G d deg          Z ej        d           G d deg                      Z eDd          Z G d deg          Z G d deg          Z G d deg          Z G d deg          Z e j        e2d           ej        d           G d deg                                  Z G d deg          Z G d de]          Z G d deg          Z e j        e9d           ej        d           G d deg                                  Z G d deg          Z G d de jd                  Z G d deg          Z G d deg          Z G d de jd                  Z ej        d           G d de jd                              Zd Z ej        d           G d de jd                              Zd Zd Zd Zd Z G d dea          Z G d de jd                  Z G d de jd                  Z G d de jd                  Z G d de jd                  Z G d de jd                  Z G d de jd                  Z G d de jd                  Z G d de jd                  Z G d de jd                  Z G d de jd                  Z e j        ejU        d"k    dæ           G dĄ de jd                              Z G dƄ de jd                  Z G dȄ de jd                  Z ej        d           G dʄ de jd                              Z G d̄ de jd                  Z G d΄ de jd                  Z G dЄ dea          Z G d҄ deŦ          Z G dԄ deŦ          Z G dք deŦ          Z	 dd؄Z e j         e;e%d٦           dڦ           e j        ejU        dk    dܦ           G d݄ de jd                                          ZdS )    N)support)hashlib_helper)import_helper)	os_helper)script_helper)socket_helper)threading_helper)warnings_helper_multiprocessingzmultiprocess.synchronize)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                 ,    |                      d          S )Nlatin)encode)ss    s/var/www/development/aibuddy-work/election-extract/venv/lib/python3.11/site-packages/multiprocess/tests/__init__.pyr   r   b   s    88G    c                     t          | t          j        j                  r*|                                  |                                  d S d S N)
isinstancemultiprocessingqueuesQueueclosejoin_thread)queues    r   close_queuer%   f   sI    %/566  r   c                 <    t          j        | t                     d S Ntimeout)r	   r#   TIMEOUT)processs    r   join_processr,   l   s       '::::::r   posix)resource_trackerc                 :    t          j        |         |            d S r   )r.   _CLEANUP_FUNCS)namertypes     r   _resource_unlinkr3   u   s    '.t44444r   )g=
ףp=?gffffff?gffffff?)r   r   r   HAVE_BROKEN_SEM_GETVALUEwin32waitc                 8    ||dk     rd }t          | g|          S )N        r6   )handler)   s     r   wait_for_handler;      s'    w}}'"""r   SC_OPEN_MAX   __main__test_multiprocessing_forkserver)	Structurec_intc_double
c_longlongc                      d} 	 t          j        d          }n# t          t          f$ r Y dS w xY w|dk    s|| k    rdS t	          j        d| z            )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_semaphoresrO      s     I
-..J'    {{ey((

 >@IJ K K Ks    ..c                       fd}|S )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     t          j                    fd            }|S )Nc                  z    t          j                    x}dk    rt          j        d|d            | i |S )Nspawnstart_method=z, not 'spawn'; )r   get_start_methodrK   rL   )argskwargsstart_methodreason	test_items      r   spawn_check_wrapperzKonly_run_in_spawn_testsuite.<locals>.decorator.<locals>.spawn_check_wrapper   sS     / @ B BBwNN'(Q<(Q(Q(Q(QRRR9d-f---r   )	functoolswraps)rZ   r[   rY   s   ` r   	decoratorz.only_run_in_spawn_testsuite.<locals>.decorator   s?    		#	#	. 	. 	. 	. 	. 
$	#	.
 #"r    )rY   r^   s   ` r   only_run_in_spawn_testsuiter`      s$    # # # # # r   c                   X    e Zd ZdZ ej        ej        dk    d          d             ZdS )TestInternalDecoratorszBLogic within a test suite that could errantly skip tests? Test it!r5   ztest requires that fork exists.c                 2   t          j                    dk    rt          j        d          	 t	          d          d             }n/# t
          $ r"}|                     d|            Y d }~nd }~ww xY wt          j        d          }	 t          j        dd           |                      |            d	           t          j        d
d           | 	                    t          j                  5 } |             d d d            n# 1 swxY w Y   | 
                    dt          |j                             | 
                    dt          |j                             t          j        |d           d S # t          j        |d           w xY w)NrS   z'only run in test_multiprocessing_spawn.ztesting this decoratorc                      dS N   r_   r_   r   r   return_four_if_spawnzUTestInternalDecorators.test_only_run_in_spawn_testsuite.<locals>.return_four_if_spawn   s    qr   z.expected decorated `def` not to raise; caught T
allow_noneforcerf   forkrT   )r   rU   rK   rL   r`   	Exceptionfailset_start_methodassertEqualassertRaisesassertInstr	exception)selfrg   errorig_start_methodctxs        r    test_only_run_in_spawn_testsuitez7TestInternalDecorators.test_only_run_in_spawn_testsuite   s   +--88#$MNNN	N()ABB  CB  	N 	N 	NIILsLLMMMMMMMM	N ,<MMM		L,WDAAAA1133Q777,V4@@@@""8#455 '$$&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' 'MM2C4F4FGGGMM/3s}+=+=>>>,->dKKKKKKO,->dKKKKKsI   A 
A2A--A2A)E> 4D?E> DE> DAE> >FN)	__name__
__module____qualname____doc__rK   skipIfsysplatformry   r_   r   r   rb   rb      sP        LLX_S\W,.OPPL L QPL L Lr   rb   c                       e Zd Zd Zd ZdS )TimingWrapperc                 "    || _         d | _        d S r   )funcelapsed)ru   r   s     r   __init__zTimingWrapper.__init__   s    	r   c                     t          j                    }	  | j        |i |t          j                    |z
  | _        S # t          j                    |z
  | _        w xY wr   )time	monotonicr   r   )ru   rV   kwdsts       r   __call__zTimingWrapper.__call__   s^    N	049d+d++>++a/DLL4>++a/DL////s	   = ANrz   r{   r|   r   r   r_   r   r   r   r      s2          0 0 0 0 0r   r   c                   (    e Zd ZdZd Zd Zd ZeZdS )BaseTestCase)	processesmanagerthreadsc                 F    t           r|                     ||d           d S d S N   )CHECK_TIMINGSassertAlmostEqualru   abs      r   assertTimingAlmostEqualz$BaseTestCase.assertTimingAlmostEqual	  s2     	,""1a+++++	, 	,r   c                 \    	  || }|                      ||          S # t          $ r Y d S w xY wr   )rp   NotImplementedError)ru   valuer   rV   ress        r   assertReturnsIfImplementedz'BaseTestCase.assertReturnsIfImplemented  sN    	0$+C ##E3/// # 	 	 	DD	s    
++c                      t          d          )Nz#shouldn't try to pickle a test case)r   )ru   rV   s     r   
__reduce__zBaseTestCase.__reduce__  s    !"GHHHr   N)rz   r{   r|   ALLOWED_TYPESr   r   r   __reduce_ex__r_   r   r   r   r     sJ        7M, , ,0 0 0I I I MMMr   r   c                     	 |                                  S # t          $ r: 	 | j        cY S # t          $ r" 	 | j        cY cY S # t          $ r t          w xY ww xY ww xY wr   )	get_valuerI   _Semaphore__value_valuer   ru   s    r   r   r      s    	*~~ * * *	*)))) 	* 	* 	**{"""""! * * *))*	**s8    
A*A
AA AA AAAc                       e Zd Zd ZdS )DummyCallablec                 ^    t          |t                    sJ |                    d           d S N   )r   r   put)ru   qcs      r   r   zDummyCallable.__call__1  s+    !]+++++	ar   N)rz   r{   r|   r   r_   r   r   r   r   0  s#            r   r   c                      e Zd ZdZd Zd Z ej        d          d             Ze	d             Z
d Ze	d             Zd	 Ze	d
             Zd Ze	d             Ze	d             Zd Z ej        ej        d          d             Ze	d             Ze	d             Ze	d             Zd Zd Zd Zd Zd Ze	d             Z  ej!        dd          d             Z"e	d             Z#d Z$e	d2d!            Z%d" Z& ej        d#          d$             Z'd% Z(e	d&             Z)d' Z*e	d(             Z+d) Z,e	i fd*            Z-d+ Z.d, Z/e	d3d.            Z0d/ Z1d0 Z2d1 Z3d S )4_TestProcessr   r   c                 @   | j         dk    r-|                     d                    | j                              |                                 }|j        }|                     |                                           |                     |j                    |                     |t                     |                     t          |          dk               |                     |j        t          j                               |                     |j        d            d S )Nr   test not appropriate for {}r   )TYPEskipTestformatcurrent_processauthkey
assertTrueis_alivedaemonassertIsInstancebyteslenrp   identrG   getpidexitcode)ru   currentr   s      r   test_currentz_TestProcess.test_current:  s    9	!!MM7>>tyIIJJJ&&((/((**+++GN*+++gu---Gq()))	444)400000r   c                    | j         dk    r|                     d| j                     t          j        t          j                                        t          j        t          j                  g}|D ]n}|                     |           |                                 }|	                                 |
                                 |                     |j        d           od S )Nr   ztest not appropriate for r   )r   r   r   
executabler   pathlibPathset_executableProcessstartjoinrp   r   )ru   pathspathps       r   test_set_executablez _TestProcess.test_set_executableH  s    9	!!MMAdiAABBBNN!!##L((

  	, 	,D%%%AGGIIIFFHHHQZ++++	, 	,r   cpuc           	         dddgdf}t           t          f}t          j        ||          }|D ]\  }}|                     ||          5  |                     d          }|                     | j         |||f                    }d|_        |	                                 |
                                }|                     ||           |                                 t          |           d d d            n# 1 swxY w Y   d S )Nr   rs   r   )rV   	args_typetargetrV   T)listtuple	itertoolsproductsubTestr!   r   
_test_argsr   r   getrp   r   r%   )	ru   
args_cases
args_types
test_casesrV   r   r   r   
child_argss	            r   test_args_argumentz_TestProcess.test_args_argumentW  s;    T*
E]
&z:>>
) 
	 
	OD)49== 	 	JJqMMLLiiD	>R>RLSS			UUWW
  T222A	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
	 
	s   	B%C::C>	C>	c                 0    |                     |           d S r   r   )clsr   args      r   r   z_TestProcess._test_argsl  s    	c




r   c                    | j         dk    r-|                     d                    | j                              |                     | j                  }|                     |j        |                                 j                   |                     | j        d          }|                     |j                   |                     | j        d          }| 	                    |j                   d S )Nr   r   r   Tr   r   F)
r   r   r   r   _testrp   r   r   r   assertFalse)ru   proc0proc1proc2s       r   test_daemon_argumentz!_TestProcess.test_daemon_argumentp  s    9	!!MM7>>tyIIJJJ DJ//t';';'='='DEEEDJt<<%%%DJu==&&&&&r   c                 R   |                                  }|                    |           |                    |           |                    |j                   | j        dk    rC|                    t	          |j                             |                    |j                   d S d S )Nr   )r   r   r1   r   r   r   pid)r   r   rV   r   r   s        r   r   z_TestProcess._test|  s    %%''	d	d	gl8y  EE%(()))EE'+ ! r   c                    | j         dk    r-|                     d                    | j                              |                     |                                            |                     d          \  }}|                     | j        |f          }|                                 |	                                 |
                                \  }}|                     ||                                 j                   |                     |t          j                               |                     ||                                 j                   d S )Nr   r   Fduplexr   )r   r   r   assertIsNoneparent_processPiper   _test_send_parent_processr   r   recvrp   r   r   rG   r   r1   )ru   rconnwconnr   
parent_pidparent_names         r   test_parent_process_attributesz+_TestProcess.test_parent_process_attributes  s   9	!!MM7>>tyIIJJJ$--//000yyy..uLL >eXLNN					"'**,,
KT%9%9%;%;%?@@@RY[[111d&:&:&<&<&ABBBBBr   c                 t    ddl m} |                     |            j         |            j        g           d S )Nr   r   )multiprocess.processr   sendr   r1   r   r   r   s      r   r   z&_TestProcess._test_send_parent_process  sG    777777

NN$$(..*:*:*?@AAAAAr   c                    | j         dk    r-|                     d                    | j                              |                     d          \  }}|                     | j        |f          }|                                 |                    t          j	                  st          d          |                                }|                     |d           |                                 |                                 |                    t          j	                  st          d          |                                }|                     |d	           d S )
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   rp   	terminater   )ru   r   r   r   parent_process_statuss        r   _test_parent_processz!_TestProcess._test_parent_process  s8   9	!!MM7>>tyIIJJJ
 yyy..uLL7ui  I I				zz'"6z77 	M !KLLL %

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

.<<<<<r   c                     |                      | j        |f          }|                                 t          j        d           d S )Nr   i,  )r   _test_report_parent_statusr   r   sleep)r   r   r   s      r   r	  z,_TestProcess._test_create_grandchild_process  s:    KKs=UIKNN				
3r   c                 .   ddl m} |                     |                                            rdnd            |                                t
          j                   |                     |                                            rdnd           d S )Nr   r  r  r  r(   )r  r   r  r   r   r   SHORT_TIMEOUTr  s      r   r  z'_TestProcess._test_report_parent_status  s    777777

nn..7799J77{KKKg&;<<<

nn..7799J77{KKKKKr   c                    |                      d          }|                                 }|ddf}ddd}d}|                     | j        |||          }d|_        |                                 }| j        d	k    r |                     |j        |j                   |                     |	                                d
           |                     |j        d           | 
                    ||                                            |                     t          |                                           t          u            |                     |j        d            |                                 |                     |j        d            |                     |	                                d           |                     ||                                            |                     |                                |dd                     |                     |                                |           |                     |                                |j                   | j        d	k    rZ|                     |                                |j                   |                     |                                |j                   |                                 |                     |j        d           |                     |	                                d
           | 
                    ||                                            t-          |           d S )Nr         gRQ@)hellobyeSomeProcess)r   rV   rW   r1   Tr   Fr   )r!   Eventr   r   r   r   r   rp   r   r   assertNotInactive_childrenr   typer   r   r   rr   r   r1   r   r   r%   )ru   r   erV   rW   r1   r   r   s           r   test_processz_TestProcess.test_process  s   JJqMMJJLL1ayD))LL:Dd    &&((9	!!QY888u---4(((D0022333T113344<===T***				T***t,,,a--//000$qrr(+++&)))!&)))9	!!QUUWWgo666QUUWWae,,,	Q'''u---D0022333Ar   zneeds native_idc                    | j         dk    r-|                     d                    | j                              t          j                    j        }|                     d          }|                     | j        |f          }|	                                 |
                                }|                                 t          |           |                     ||           d S )Nr   r   r   r   )r   r   r   	threadingmain_thread	native_idr!   r   "_test_process_mainthread_native_idr   r   r   r%   assertNotEqual)ru   current_mainthread_native_idr   r   child_mainthread_native_ids        r   !test_process_mainthread_native_idz._TestProcess.test_process_mainthread_native_id  s    9	!!MM7>>tyIIJJJ'0'<'>'>'H$JJqMMLL GqdLSS				%&UUWW"	A8:TUUUUUr   c                 `    t          j                    j        }|                    |           d S r   )r"  r#  r$  r   )r   r   mainthread_native_ids      r   r%  z/_TestProcess._test_process_mainthread_native_id  s-    (466@	"#####r   c                 .    t          j        d           d S )Nd   r   r  r   s    r   _sleep_somez_TestProcess._sleep_some  s    
3r   c                 .    t          j        |           d S r   r.  )r   delays     r   _test_sleepz_TestProcess._test_sleep  s    
5r   c                    | j         dk    r-|                     d                    | j                              |                     | j                  d_                                         |                                                     d           | 	                    | 
                                           |                     j        d            t          j                  }|                      |d          d            |                     |j        d           |                                                     d           |                      |d          d            |                     |j        d           |                                                     d           t!          j        d            |           t%          t&          d	          rÈfd
}t'          j        t&          j        |          }	 t'          j        d           |                      |            d            t'          j        d           t'          j        t&          j        |           nV# t'          j        d           t'          j        t&          j        |           w xY w|                      |            d            |                     |j        d           |                                                     d           |                     | 
                                                                            j        S )Nr   r   r   Tr   r9   rF   r   alarmc                  (    t          dz            )Nzjoin took too long: %sRuntimeError)rV   r   s    r   handlerz+_TestProcess._kill_process.<locals>.handler$  s    "#;a#?@@@r   
   F)r   r   r   r   r0  r   r   rp   r   rr   r  r   r   r   r   r   r   r  hasattrsignalSIGALRMr5  r  )ru   methr   r9  old_handlerr   s        @r   _kill_processz_TestProcess._kill_process  s   9	!!MM7>>tyIIJJJLL 0L11				t,,,a--//000T***QV$$a$'''$$T\3777t,,,b4((($$T\3777t,,, 	
1Q67## 	+A A A A A -@@K;R     ...Qfnk:::: Qfnk::::TTVVT***$$T\3777u---D0022333	zs   2I2 25J'c                     |                      t          j        j                  }|                     |t
          j                    d S r   )r@  r   r   r  rp   r<  SIGTERMru   r   s     r   test_terminatez_TestProcess.test_terminate9  s;    %%o&=&GHHFN?33333r   c                     |                      t          j        j                  }t          j        dk    r#|                     |t          j                    d S |                     |t          j	                    d S Nnt)
r@  r   r   killrG   r1   rp   r<  SIGKILLrB  rC  s     r   	test_killz_TestProcess.test_kill=  sf    %%o&=&BCC7d??X77777X77777r   c                     	 t          j                    }n# t          $ r d}Y nw xY w|                     t	          |          t
          u            |                     |dk               d S r   )r   	cpu_countr   r   r  int)ru   cpuss     r   test_cpu_countz_TestProcess.test_cpu_countD  st    	",..DD" 	 	 	DDD	T

c)***	"""""s    %%c                    |                      t          |                                           t                     |                     t
          j        t          f          }|                     ||                                            d|_	        |
                                 |                     ||                                            |                                 |                     ||                                            d S Nr   T)rp   r  r  r   r   r   r  DELTAr  r   r   rr   r   ru   r   s     r   test_active_childrenz!_TestProcess.test_active_childrenL  s    d224455t<<<LL
%L::D0022333				a--//000	D002233333r   c                    |                     |           t          |          dk     r\t          d          D ]N}|                     | j        |||gz   f          }|                                 |                                 Md S d S Nr  r   )r  r   ranger   _test_recursionr   r   )r   r   idir   s        r   rX  z_TestProcess._test_recursionY  s    

2r77Q;;1XX  KK.eRV_     			 ; r   T#fails with is_dill(obj, child=True)c                    |                      d          \  }}|                     |g            t          j        t                     g }|                                r;|                    |                                           |                                ;g dgddgddgdgddgddgg}|                     ||           d S )NFr   r   r   )	r   rX  r   r  rR  r
  appendr   rp   )ru   r   r   resultexpecteds        r   test_recursionz_TestProcess.test_recursiond  s    yyy..uUB'''
5jjll 	(MM%**,,''' jjll 	( cAAcAA 	*****r   c                 0    |                     d           d S )Ng      $@r6   r   events     r   _test_sentinelz_TestProcess._test_sentinely  s    

4r   c                    | j         dk    r-|                     d                    | j                              |                                 }|                     | j        |f          }|                     t                    5  |j         d d d            n# 1 swxY w Y   |	                                 | 
                    |j                   |j        }|                     |t                     |                     t          |d                     |                                 |                                 |                     t          |d                     d S )Nr   r   r   r9   r(   r   )r   r   r   r  r   rd  rq   rJ   sentinelr   
addCleanupr   r   rM  r   r;   setr   )ru   rc  r   rf  s       r   test_sentinelz_TestProcess.test_sentinel}  sg   9	!!MM7>>tyIIJJJ

LL 35(LCCz** 	 	JJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 					:h,,,3???@@@			!<<<=====s   BBBr   Nc                 Z    ||                                  t          j        |           d S r   )r   r   exit)r   rcr   s      r   _test_closez_TestProcess._test_close  s%    =EEGGGr   c                 b   | j         dk    r-|                     d                    | j                              |                                 }|                     | j        d|i          }d|_        |                                 |                     |	                                d           | 
                    t                    5  |                                 d d d            n# 1 swxY w Y   |                    d            |                                 |                     |	                                d           |                     |j        d           |                                 | 
                    t                    5  |	                                 d d d            n# 1 swxY w Y   | 
                    t                    5  |                                 d d d            n# 1 swxY w Y   | 
                    t                    5  |                                 d d d            n# 1 swxY w Y   |                                 t#          j        |          }~t'          j                     |                      |            d            t-          |           d S )Nr   r   r   )r   rW   TFr   )r   r   r   r!   r   rm  r   r   rp   r   rq   rJ   r"   r   r   r   r  weakrefrefgccollectassertIsr%   )ru   r   r   wrs       r   
test_closez_TestProcess.test_close  s   9	!!MM7>>tyIIJJJJJLLLL 0#qLBB				t,,,z** 	 	GGIII	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
d	u---Q'''				z** 	 	JJLLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	z** 	 	FFHHH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	z** 	 	KKMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 					[^^

bbddD!!!AsH   C))C-0C-F//F36F3G55G9<G9H;;H?H?walltimec                      j         dk    r-                     d                     j                              t          j                    }t
          j                            d          }|dk    r|rdndnd} fdt          |          D             }|D ]}|	                                 |D ]}t          |           |D ]}                     |j        d	            fd
t          |          D             }|D ]}|	                                 t          j        d           |D ]}|                                 |D ]}t          |           t
          j        dk    r^t"          j         g}t&          j        dk    r |                    t"          j                    |D ]}                     |j        |           d S d S )Nr   r   r   rS   r   r   r-  c                 H    g | ]}                     j        d           S )){Gz?r   )r   r3  .0rZ  ru   s     r   
<listcomp>z4_TestProcess.test_many_processes.<locals>.<listcomp>  s<     $ $ $ T%5GDD $ $ $r   r   c                 F    g | ]}                     j                   S )r   )r   r0  rz  s     r   r|  z4_TestProcess.test_many_processes.<locals>.<listcomp>  s:     $ $ $ T%566 $ $ $r   MbP?rG  darwin)r   r   r   r   rU   rG   environr   rW  r   r,   rp   r   r   r  r  r1   r<  rB  r   r   r]  rI  rr   )ru   smtravisNprocsr   	exitcodess   `      r   test_many_processesz _TestProcess.test_many_processes  s   9	!!MM7>>tyIIJJJ-//
++$&'MM&QQaas$ $ $ $(($ $ $ 	 	AGGIIII 	 	AOOOO 	, 	,AQZ++++$ $ $ $(($ $ $ 	 	AGGIIII
5 	 	AKKMMMM 	 	AOOOO7d?? .)I|x''   &.111 5 5aj)4444 ?5 5r   c                    t                      }t          j        |          }|                                 }|                     |||f          }~|                                 |                                 t          j                     | 	                     |            d            | 
                    |                                d           t          |           d S )Nr   r   )r   ro  rp  r!   r   r   r   rq  rr  rs  rp   r   r%   )ru   r   rt  r   r   s        r   test_lose_target_refz!_TestProcess.test_lose_target_ref  s    OO[^^JJLLLLAL//					

bbddD!!!!$$$Ar   c                 z    |                     t          j                               |                                 d S r   )r   r   fd_countr7   )ru   evtr   s      r   _test_child_fd_inflationz%_TestProcess._test_child_fd_inflation  s.    	i ""###




r   c                 R     j         dk    r-                     d                     j                              t          j                    }|dk    r(                     d                    |                     d}                                                                   fdt          |          D             }|D ]}|                                 	 fdt          |          D             } 	                    t          t          |                    d|                                            |D ]}|                                 t                     d S #                                  |D ]}|                                 t                     w xY w)Nr   r   rl   r   c                 L    g | ] }                     j        f           !S r   )r   r  )r{  rZ  r  r   ru   s     r   r|  z8_TestProcess.test_child_fd_inflation.<locals>.<listcomp>  s@     $ $ $ T%B#qRR $ $ $r   c                 8    g | ]}                                 S r_   r   )r{  rZ  r   s     r   r|  z8_TestProcess.test_child_fd_inflation.<locals>.<listcomp>   s!    333Q333r   r   )r   r   r   r   rU   r  r!   rW  r   rp   r   rh  r   r%   )ru   r  r  r  r   	fd_countsr  r   s   `     @@r   test_child_fd_inflationz$_TestProcess.test_child_fd_inflation  s    9	!!MM7>>tyIIJJJ-//<< MM7>>rBBCCCjjllJJLL$ $ $ $ $ $(($ $ $ 	 	AGGIIII	3333%((333ISY00!Y??? GGIII  NNNNN GGIII  NNNNs   AE( (>F&c                     fd}fd}t          j        |                                           t          j        |d                                           d S )Nc                  X    t          j        d                                             d S )N      ?r   r  rh  r  s   r   func1z2_TestProcess._test_wait_for_threads.<locals>.func1  s!    JsOOOGGIIIIIr   c                  X    t          j        d                                             d S )N   )r   r  clearr  s   r   func2z2_TestProcess._test_wait_for_threads.<locals>.func2  s!    JrNNNIIKKKKKr   r   Tr   )r"  Threadr   )ru   r  r  r  s    `  r   _test_wait_for_threadsz#_TestProcess._test_wait_for_threads	  s    	 	 	 	 		 	 	 	 	 	&&&,,...d33399;;;;;r   c                 v   | j         dk    r-|                     d                    | j                              |                                 }|                     | j        |f          }|                                 |                                 |                     |	                                           d S )Nr   r   r   )
r   r   r   r  r   r  r   r   r   is_set)ru   r  procs      r   test_wait_for_threadsz"_TestProcess.test_wait_for_threads  s     9	!!MM7>>tyIIJJJjjll||4#>cV|LL

		

%%%%%r   c                     |                                 D ]S\  }}|dk    r(t          j                    }|                                 n
|dk    sJ d }t	          t
          |d            T|                                 d S )Nr"   remove)itemsioStringIOr"   setattrr   rh  )ru   r  break_std_streamsstream_nameactionstreams         r   _test_error_on_stdio_flushz'_TestProcess._test_error_on_stdio_flush"  s    #4#:#:#<#< 	, 	,K  ))))Cd++++					r   c           	      l   t          j                    d g}|d                                          dD ] }|D ]}t          t          |          }t          t          ||           	 |                                 }|                     | j        |f          }|	                                 |
                                 |                     |                                           |                     |j        d           t          t          ||           # t          t          ||           w xY wd S )Nr   stdoutstderrr   )r  r  r"   getattrr   r  r  r   r  r   r   r   r  rp   r   )ru   streamsr  r  
old_streamr  r  s          r   test_error_on_stdio_flush_1z(_TestProcess.test_error_on_stdio_flush_1.  s#   ;==$'
/ 	: 	:K! : :$S+66
[&111	:**,,C<<t/N.1V ( 5 5DJJLLLIIKKKOOCJJLL111$$T]A666Cj9999GCj9999:	: 	:s   %BDD/c           	         dD ]}dD ]}t          t          |          }	 |                                 }|                     | j        |||if          }|                                 |                                 |                     |                                           | 	                    |j
        d           t          t          ||           # t          t          ||           w xY wd S )Nr  )r"   r  r   r   )r  r   r  r   r  r   r   r   r  rp   r   r  )ru   r  r  r  r  r  s         r   test_error_on_stdio_flush_2z(_TestProcess.test_error_on_stdio_flush_2A  s     0 	: 	:K- : :$S+66
	:**,,C<<t/N.1K3H-I ( K KDJJLLLIIKKKOOCJJLL111$$T]A666Cj9999GCj9999:	: 	:s   BCC,r9   c                 V    t          j        |           |                                 d S r   r  )ru   r  r2  s      r   _sleep_and_set_eventz!_TestProcess._sleep_and_set_eventR  s#    
5					r   c                    | j         dk    r-|                     d                    | j                              t          j                    }|dk    r(|                     d                    |                     ddlm} |                                 d}|                                 }| 	                    | j
        ||f          }|                                 |j        }t          j        ||           t          j        |dz             |                                 }| 	                    | j
        |f          }	|	                                 |	                                 |                     |                                           |                     |	j        d           |                                 |                     |                                           |                     |j        d	           d S )
Nr   r   
forkserverr   )_forkserverr  r   g       @)r      )r   r   r   r   rU   multiprocess.forkserverr  ensure_runningr  r   r  r   _forkserver_pidrG   rH  r   r  r   r   r  rp   r   rr   )
ru   signumr  r  r2  r  r  r   evt2r   s
             r   check_forkserver_deathz#_TestProcess.check_forkserver_deathW  s    9	!!MM7>>tyIIJJJ-// MM7>>rBBCCC777777""$$$ jjll||4#<C<|PP

)
V
53;zz||D$=TGLL

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

%%%dmX.....r   c                 D    |                      t          j                   d S r   )r  r<  SIGINTr   s    r   test_forkserver_sigintz#_TestProcess.test_forkserver_sigint}  s    ##FM22222r   c                 h    t           j        dk    r!|                     t          j                   d S d S rF  )rG   r1   r  r<  rI  r   s    r   test_forkserver_sigkillz$_TestProcess.test_forkserver_sigkill  s0    7d??''77777 ?r   )r   N)r9   )4rz   r{   r|   r   r   r   r   requires_resourcer   classmethodr   r   r   r   r   r  r	  r  r   rK   
skipUnlessr"  _HAVE_THREAD_NATIVE_IDr)  r%  r0  r3  r@  rD  rJ  rO  rT  rX  r~   r`  rd  ri  rm  ru  r  r  r  r  r  r  r  r  r  r  r  r  r  r_   r   r   r   r   6  s       ,M1 1 1, , , Wu%%  &%(   [
' 
' 
'   [C C C B B [B= = =2   [
 L L [L& & &P X9;LMMV V NMV  $ $ [$   [   [1 1 1f4 4 48 8 8# # #4 4 4   [ X_T@AA+ + BA+(   [> > >     [
  @ Wz**"5 "5 +*"5H     [  > 
< 
< [
<
& 
& 
& @B 	 	 	 [	: : :&: : :"    [$/ $/ $/L3 3 38 8 8 8 8r   r   c                   &    e Zd Zd Zd Zd Zd ZdS )_UpperCaserc                     t           j                            |            t          j                    \  | _        | _        d S r   )r   r   r   r   
child_connparent_connr   s    r   r   z_UpperCaser.__init__  s7    ((...,;,@,B,B))))r   c                     | j                                          t          | j        j        d           D ].}| j                            |                                           /| j                                         d S r   )r  r"   iterr  r   r  upperru   r   s     r   runz_UpperCaser.run  sp       do*D11 	, 	,AO  ++++r   c                     t          |          t          u sJ | j                            |           | j                                        S r   )r  rs   r  r  r   r  s     r   submitz_UpperCaser.submit  sA    Aww#~~~~a   $$&&&r   c                     | j                             d            | j                                          | j                                         d S r   )r  r  r"   r  r   s    r   stopz_UpperCaser.stop  sH    d###   r   N)rz   r{   r|   r   r  r  r  r_   r   r   r  r    sS        C C C     ' ' '
         r   r  c                   P    e Zd ZdZd Zd Zed             Zed             Zd Z	dS )_TestSubclassingProcessr   c                 L   t                      }d|_        |                                 |                     |                    d          d           |                     |                    d          d           |                                 |                                 d S )NTr  HELLOworldWORLD)r  r   r   rp   r  r  r   )ru   
uppercasers     r   test_subclassingz(_TestSubclassingProcess.test_subclassing  s     ]]
 
**733W===**733W===r   c                 ,   | j         dk    r-|                     d                    | j                              t          j        }|                     t          j        |           |                     | j        |f          }|	                                 |
                                 t          |d          5 }|                                }|                     d|           |                     d|           d d d            d S # 1 swxY w Y   d S )Nr   r   r   utf-8encodingZeroDivisionErrorz__init__.py)r   r   r   r   TESTFNrg  unlinkr   _test_stderr_flushr   r   openreadrr   )ru   testfnr  frv   s        r   test_stderr_flushz)_TestSubclassingProcess.test_stderr_flush  s/   9	!!MM7>>tyIIJJJ!	(&111||4#:&|KK

		&7+++ 	.q&&((CMM-s333MM----		. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.s   ;AD		DDc                     t          j        |t           j        t           j        z  t           j        z            }t          |ddd          t
          _        ddz   d S )Nwr  Fr  closefdr   r   )rG   r  O_WRONLYO_CREATO_EXCLr   r  )r   r  fds      r   r  z*_TestSubclassingProcess._test_stderr_flush  sH    WVR[2:5	ABB"cGUCCC
	!r   c                     t          j        |t           j        t           j        z  t           j        z            }t          |ddd          t
          _        t          j        |           d S )Nr  r  Fr  )rG   r  r  r  r  r   r  rk  )r   rY   r  r  s       r   _test_sys_exitz&_TestSubclassingProcess._test_sys_exit  sQ    WVR[2:5	ABB"cGUCCC
r   c                    | j         dk    r-|                     d                    | j                              t          j        }|                     t          j        |           g ddfD ]}|                     | j        ||f          }d|_	        |
                                 t          |           |                     |j        d           t          |d	          5 }|                                }d d d            n# 1 swxY w Y   |                     |                                t#          |                     t%          j        |           g d
}|D ]\  }}|                     |          5  |                     t(          j        |          }d|_	        |
                                 t          |           |                     |j        |           d d d            n# 1 swxY w Y   d S )Nr   r   r   r     zignore thisr   Tr   r  r  )))Tr   )Fr   ))   r   )r   r   )r_   r   rV   )r   r   r   r   r  rg  r  r   r  r   r   r,   rp   r   r  r  rstriprs   rG   r   r   rk  )	ru   r  rY   r   r  contentcasesrV   r_  s	            r   test_sys_exitz%_TestSubclassingProcess.test_sys_exit  sW   9	!!MM7>>tyIIJJJ!	(&111 II
 	 	F D$7vv>NOOAAHGGIIIOOOQZ+++fw/// #1&&((# # # # # # # # # # # # # # #W^^--s6{{;;;If   $ 	7 	7ND(4(( 7 7LLtL<<			Q  X6667 7 7 7 7 7 7 7 7 7 7 7 7 7 7	7 	7s%   !DD		D	8A'G++G/	2G/	N)
rz   r{   r|   r   r  r  r  r  r  r  r_   r   r   r  r    s|        "M  . . ."   [   [
&7 &7 &7 &7 &7r   r  c                 z    t          | d          r|                                 S |                                 dk    S )Nemptyr   )r;  r  qsize)r   s    r   queue_emptyr	    s4    q' wwyywwyyA~r   c                 z    t          | d          r|                                 S |                                 |k    S )Nfull)r;  r  r  )r   maxsizes     r   
queue_fullr    s4    q& $vvxxwwyyG##r   c                       e Zd Zed             Zd Zed             Zd Zed             Zd Z	d Z
ed             Zd	 Zd
 Zd Zd Zd Zd ZdS )
_TestQueuec                     |                                  t          d          D ]}|                                 |                                 d S )N   )r7   rW  r   rh  )r   r$   child_can_startparent_can_continuerZ  s        r   	_test_putz_TestQueue._test_put  sP    q 	 	AIIKKKK!!!!!r   c                    d}|                      |          }|                                 }|                                 }|                     | j        |||f          }d|_        |                                 |                     t          |          d           |                     t          ||          d           |	                    d           |	                    dd           |	                    ddd            |	                    d	d           |	                    d
dd            |
                    d           t          j        t                     |                     t          |          d           |                     t          ||          d           t          |j	                  }t          |j
                  }|                     t           j        |dd           |                     |j        d           |                     t           j        |ddd            |                     |j        d           |                     t           j        |d           |                     |j        d           |                     t           j        |ddt(                     |                     |j        t(                     |                     t           j        |ddt*                     |                     |j        d           |                     t           j        |ddt,                     |                     |j        t,                     |                                 |                                 |                     t          |          d           |                     t          ||          d           |                                 t5          |           d S )Nr  r  r   TFr   r  r  rf   r      r   r(   )r!   r  r   r  r   r   rp   r	  r  r   
put_nowaitr   r  rR  r   rq   pyqueueFullr   r   TIMEOUT1TIMEOUT2TIMEOUT3rh  r7   r   r%   )ru   MAXSIZEr$   r  r  r  r   r  s           r   test_putz_TestQueue.test_put  s\   

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

U++T222E733U;;;		!		!T		!T4   		!U		!UD!!! 	
5U++U333E733T:::EI&&"5#344
',Q666$$S[!444',Qt<<<$$S[!444',
A666$$Z%7;;;',Qh???$$S[(;;;',Qx@@@$$S[!444',QhGGG$$S[(;;;  """U++T222E733U;;;		Er   c                     |                                  |                    d           |                    d           |                    d           |                    d           |                                 d S )Nr  r  rf   r   )r7   r   rh  r   r$   r  r  s       r   	_test_getz_TestQueue._test_getJ  sh    		!		!		!		!!!!!!r   c                 .   |                                  }|                                 }|                                 }|                     | j        |||f          }d|_        |                                 |                     t          |          d           |                                 |	                                 t          j        t                     |                     t          |          d           |                     |                    dd           d           |                     |                    d          d           |                     |                    d          d           |                     |                                d	           |                     t          |          d           t          |j                  }t          |j                  }|                     t"          j        |d           |                     |j        d
           |                     t"          j        |dd            |                     |j        d
           |                     t"          j        |           |                     |j        d
           |                     t"          j        |dt*                     |                     |j        t*                     |                     t"          j        |dt,                     |                     |j        d
           |                     t"          j        |t.                     |                     |j        t.                     |                                 t3          |           d S )Nr   TFr  r  r   r(   rf   r   r   )r!   r  r   r"  r   r   rp   r	  rh  r7   r   r  rR  r   
get_nowaitr   rq   r  Emptyr   r   r  r  r  r   r%   )ru   r$   r  r  r  r   r$  s          r   test_getz_TestQueue.test_getT  s   

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

U++T222  """
5U++U333 	4..2224!,,,1--q111))++Q///U++T222EI&&"5#344
'-e444$$S[!444'-eT:::$$S[!444'-444$$Z%7;;;'-dH===$$S[(;;;'-eX>>>$$S[!444'-h???$$S[(;;;		Er   c                 V    t          dd          D ]}|                    |           d S )Nr:  r  )rW  r   )r   r$   rZ  s      r   
_test_forkz_TestQueue._test_fork  s4    r2 	 	AIIaLLLL	 	r   c                 $   |                                  }t          d          D ]}|                    |           t          j        t
                     |                     | j        |f          }d|_        |	                                 t          d          D ]*}| 
                    |                                |           +|                     t          j        |j        d           |                                 t!          |           d S )Nr:  r   Tr  F)r!   rW  r   r   r  rR  r   r(  r   r   rp   r   rq   r  r%  r   r%   )ru   r$   rZ  r   s       r   	test_forkz_TestQueue.test_fork  s     

 r 	 	AIIaLLLL 	
5 LLuhL??				 r 	- 	-AUYY[[!,,,,'-E:::	Er   c                    |                                  }	 |                     |                                d           n%# t          $ r |                     d           Y nw xY w|                    d           |                     |                                d           |                    d           |                     |                                d           |                                 |                     |                                d           |                                 |                     |                                d           t          |           d S )Nr   zqsize method not implementedr   r   r  )r!   rp   r  r   r   r   r   r%   ru   r   s     r   
test_qsizez_TestQueue.test_qsize  s(   JJLL	:QWWYY****" 	: 	: 	:MM899999	:	aA&&&	aA&&&	A&&&	A&&&As   (? A! A!c                     t          |j        d           D ]/}t          j        t                     |                                 0d S r   )r  r   r   r  rR  	task_done)r   r   objs      r   _test_task_donez_TestQueue._test_task_done  sF    t$$ 	 	CJuKKMMMM	 	r   c                                                        fdt          d          D             }|D ]}d|_        |                                 t          d          D ]}                    |                                            |D ]}                    d            |D ]}|                                 t                     d S )Nc                 J    g | ]}                     j        f            S r  )r   r1  )r{  rZ  r$   ru   s     r   r|  z-_TestQueue.test_task_done.<locals>.<listcomp>  s>     & & & <<t';5(<KK & & &r   rf   Tr:  )JoinableQueuerW  r   r   r   r   r%   )ru   workersr   rZ  r$   s   `   @r   test_task_donez_TestQueue.test_task_done  s    ""$$& & & & &!!HH& & &  	 	AAHGGIIIIr 	 	AIIaLLLL

 	 	AIIdOOOO 	 	AFFHHHHEr   c                    t          j                    5  d}t          |dz   dd          5 }|                    d           d d d            n# 1 swxY w Y   t	          j        t          j                              5  	 t          |           n*# t          j
        $ r |                     d           Y nw xY wd d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )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   DirsOnSysPathrG   getcwd
__import__r  r%  rn   )ru   module_namer  s      r   test_no_import_lock_contentionz)_TestQueue.test_no_import_lock_contention  s   !! 	3 	3:KkE)3AAA 	Q    	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ,RY[[99 3 33{++++} 3 3 3II 2 3 3 3 3 333 3 3 3 3 3 3 3 3 3 3 3 3 3 3	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3s|   CACA	CA	(C>C BC$B74C6B77C:CC
	
CC
	CC"%C"c                    t          j                    }t          j                    }|                     t
          j        |j        dd           t          j                    |z
  }|                     |d           t          |           d S )NT皙?r   )
r   r!   r   r   rq   r  r%  r   assertGreaterEqualr%   )ru   r   r   deltas       r   test_timeoutz_TestQueue.test_timeout  st    !##  '-e<<<  5( 	u---Ar   c                 \   | j         dk    r-|                     d                    | j                               G d dt                    }t          j                                        5  |                                 }|                     |                       |                    d           | 	                    |
                    t
          j                             t          |           d d d            n# 1 swxY w Y   t          j                                        5  |                     d          }|                     |                       |                    d           	 |                     |                                d           n# t          $ r Y nw xY w| 	                    |
                    t
          j                             | 	                    |                                           t          |           d d d            d S # 1 swxY w Y   d S )	Nr   r   c                       e Zd Zd ZdS )F_TestQueue.test_queue_feeder_donot_stop_onexc.<locals>.NotSerializablec                     t           r   )rI   r   s    r   r   zQ_TestQueue.test_queue_feeder_donot_stop_onexc.<locals>.NotSerializable.__reduce__  s    $$r   Nrz   r{   r|   r   r_   r   r   NotSerializablerG    s#        % % % % %r   rJ  Tr(   r   r  )r   r   r   objecttestr   captured_stderrr!   r   r   r   r  r%   rp   r  r   r  )ru   rJ  r   s      r   "test_queue_feeder_donot_stop_onexcz-_TestQueue.test_queue_feeder_donot_stop_onexc  su   9##MM7>>tyIIJJJ	% 	% 	% 	% 	%f 	% 	% 	% \))++ 	 	

AEE//##$$$EE$KKKOOAEE'*?E@@AAANNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 \))++ 	 	 

1
%%AEE//##$$$EE$KKK  A....&     OOAEE'*?E@@AAAOOAGGII&&&NNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	sK   *B	C??DD(A	H!2(FH!
F(%H!'F((A,H!!H%(H%c                    | j         dk    r-|                     d                    | j                               G d dt                     G fddt          j        j                  }             }t          j        	                                5   |t	          j
                              }|                    |           |                    d           |                     |                    t          j        	                     d d d            n# 1 swxY w Y   |                     |j                   |                     |j                   d S )
Nr   r   c                       e Zd ZdZd Zd ZdS )K_TestQueue.test_queue_feeder_on_queue_feeder_error.<locals>.NotSerializablezMock unserializable objectc                 "    d| _         d| _        d S NF)reduce_was_called on_queue_feeder_error_was_calledr   s    r   r   zT_TestQueue.test_queue_feeder_on_queue_feeder_error.<locals>.NotSerializable.__init__!  s    ).&8=555r   c                     d| _         t          NT)rT  rI   r   s    r   r   zV_TestQueue.test_queue_feeder_on_queue_feeder_error.<locals>.NotSerializable.__reduce__%  s    )-&$$r   N)rz   r{   r|   r}   r   r   r_   r   r   rJ  rQ    s8        ,,> > >% % % % %r   rJ  c                   .    e Zd ZdZe fd            ZdS )E_TestQueue.test_queue_feeder_on_queue_feeder_error.<locals>.SafeQueuez1Queue with overloaded _on_queue_feeder_error hookc                 h    t          | t                    rt          |          rd|_        d S d S d S rW  )r   rI   rU  )r  r0  rJ  s     r   _on_queue_feeder_errorz\_TestQueue.test_queue_feeder_on_queue_feeder_error.<locals>.SafeQueue._on_queue_feeder_error+  sO    q.11 @"388@;?C888@ @ @ @r   N)rz   r{   r|   r}   staticmethodr[  )rJ  s   r   	SafeQueuerY  )  sE        CC@ @ @ @ \@ @ @r   r]  )rx   Tr(   )r   r   r   rK  r   r    r!   rL  r   rM  get_contextr   r   r   r  rT  rU  )ru   r]  not_serializable_objr   rJ  s       @r   'test_queue_feeder_on_queue_feeder_errorz2_TestQueue.test_queue_feeder_on_queue_feeder_error  s    9##MM7>>tyIIJJJ	% 	% 	% 	% 	%f 	% 	% 	%	@ 	@ 	@ 	@ 	@ 	@ 	@.4 	@ 	@ 	@  /00\))++ 	B 	B	o9;;<<<AEE&''' EE$KKKOOAEE'*?E@@AAA	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	,>???,MNNNNNs   A;DD"Dc                    t          j                    t          j                    fD ]}|                                 |                     t
          d          5  |                    d           d d d            n# 1 swxY w Y   |                     t
          d          5  |                                 d d d            n# 1 swxY w Y   d S )Nz	is closedfoo)r   r!   r4  r"   assertRaisesRegexrJ   r   r   r,  s     r   $test_closed_queue_put_get_exceptionsz/_TestQueue.test_closed_queue_put_get_exceptions?  s2    &((/*G*I*II 	 	AGGIII''
K@@  e              ''
K@@                		 	s$   A::A>	A>	 CC	C	N)rz   r{   r|   r  r  r  r"  r&  r(  r*  r-  r1  r6  r?  rD  rN  r`  rd  r_   r   r   r  r    s        " " ["9 9 9v " " ["3 3 3j   [  8      [
  ,3 3 3*	 	 	  @$O $O $OL    r   r  c                        e Zd Zd Zd Zd ZdS )	_TestLockc                 x   |                                  }|                     |                                d           |                     |                    d          d           |                     |                                d            |                     t
          t          j        f|j                   d S NTF)Lockrp   acquirereleaserq   rJ   r"  ThreadErrorru   locks     r   	test_lockz_TestLock.test_lockL  s    yy{{...e,,e444...:y'<=t|LLLLLr   c                 \   |                                  }|                     |                                d           |                     |                                d           |                     |                                d           |                     |                                d            |                     |                                d            |                     |                                d            |                     t
          t          f|j                   d S rW  )RLockrp   rj  rk  rq   r  r8  rm  s     r   
test_rlockz_TestLock.test_rlockS  s    zz||..................><8$,GGGGGr   c                 b    |                                  5  	 d d d            d S # 1 swxY w Y   d S r   ri  r   s    r   test_lock_contextz_TestLock.test_lock_context]  sw    YY[[ 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   $((N)rz   r{   r|   ro  rr  ru  r_   r   r   rf  rf  J  sG        M M MH H H    r   rf  c                   &    e Zd Zd Zd Zd Zd ZdS )_TestSemaphorec                    |                      dt          |           |                     |                                d           |                      dt          |           |                     |                                d           |                      dt          |           |                     |                    d          d           |                      dt          |           |                     |                                d            |                      dt          |           |                     |                                d            |                      dt          |           d S )Nr  Tr   r   F)r   r   rp   rj  rk  ru   sems     r   _test_semaphorez_TestSemaphore._test_semaphored  s2   ''9c:::---''9c:::---''9c:::U++U333''9c:::---''9c:::---''9c:::::r   c                 j   |                      d          }|                     |           |                     |                                d            |                     dt
          |           |                     |                                d            |                     dt
          |           d S )Nr  r  rf   )	Semaphorer{  rp   rk  r   r   ry  s     r   test_semaphorez_TestSemaphore.test_semaphoreq  s    nnQS!!!---''9c:::---''9c:::::r   c                 Z    |                      d          }|                     |           d S Nr  )BoundedSemaphorer{  ry  s     r   test_bounded_semaphorez%_TestSemaphore.test_bounded_semaphorey  s/    ##A&&S!!!!!r   c                 F   | j         dk    r-|                     d                    | j                              |                     d          }t	          |j                  }|                      |d          d           |                     |j        d           |                      |dd           d           |                     |j        d           |                      |dt                    d           |                     |j        d           |                      |dt                    d           |                     |j        t                     |                      |t                    d           |                     |j        t                     d S )Nr   r   r   Fr9   Tr(   )r   r   r   r}  r   rj  rp   r   r   r  r  r  )ru   rz  rj  s      r   rD  z_TestSemaphore.test_timeout  sw   9##MM7>>tyIIJJJnnQ,,///$$W_c:::--u555$$W_c:::115999$$W_a888x00%888$$W_h???222E:::$$W_h?????r   N)rz   r{   r|   r{  r~  r  rD  r_   r   r   rw  rw  b  sU        ; ; ;; ; ;" " "@ @ @ @ @r   rw  c                       e Zd Zedd            Zd Zd Zd Zd Zd Z	d Z
ed	             Z ej        ed
          d             Zed             Z ej        ed
          d             Zed             Zd ZdS )_TestConditionNc                     |                                  |                                 |                    |           |                                 |                                 d S r   )rj  rk  r7   )r   condsleepingwokenr)   s        r   r  z_TestCondition.f  sQ    		'r   c                     t          d          D ]>}	  |            |k    r n,n# t          $ r Y  nw xY wt          j        t                     ?t          j        t                     |                     ||           d S Nr:  )rW  r   r   r  rR  r   )ru   r   r   rZ  s       r   assertReachesEventuallyz&_TestCondition.assertReachesEventually  s    r 	 	A466U??E #&   Ju
5''t44444s   $
22c                 0   | j         dk    r	 |j                                        |j                                        z
  }|                     |d           |                     |j                                        d           d S # t          $ r Y d S w xY wd S )Nr   r   )r   _sleeping_countr   _woken_countrp   _wait_semaphorer   )ru   r  sleeperss      r   check_invariantz_TestCondition.check_invariant  s    9## 0::<< -7799:  1---  !5!?!?!A!A1EEEEE&    $#s   A6B 
BBc                    |                                  }|                     d          }|                     d          }|                     | j        |||f          }d|_        |                                 |                     |j                   t          j	        | j        |||f          }d|_        |                                 |                     |j                   |
                                 |
                                 t          j        t                     |                     dt          |           |
                                 |                                 |                                 t          j        t                     |                     dt          |           |
                                 |                                 |                                 t          j        t                     |                     dt          |           |                     |           |                                 d S )Nr   r   Tr   r  )	Conditionr}  r   r  r   r   rg  r   r"  r  rj  r   r  rR  r   r   notifyrk  r  )ru   r  r  r  r   s        r   test_notifyz_TestCondition.test_notify  s   ~~>>!$$q!!LLdHe-DLEE				DF$%1HIII				 	 	
5''9e<<< 	 	
5''9e<<< 	 	
5''9e<<< 	T"""	r   c                    |                                  }|                     d          }|                     d          t          d          D ]}|                     | j        ||t
          f          }d|_        |                                 |                     |j	                   t          j        | j        ||t
          f          }d|_        |                                 |                     |j	                   t          d          D ]}|                                 t          d          D ]}                                 |                     dt                     |                     |           t          d          D ]}|                     | j        ||f          }d|_        |                                 |                     |j	                   t          j        | j        ||f          }d|_        |                                 |                     |j	                   t          d          D ]}|                                 t!          j        t$                     |                     dt                     |                                 |                                 |                                 |                     fdd           |                     |           d S )Nr   r  r   Tr  c                  "    t                     S r   r   r  s   r   <lambda>z0_TestCondition.test_notify_all.<locals>.<lambda>      Yu-=-= r   )r  r}  rW  r   r  r  r   r   rg  r   r"  r  rj  r   r   r  r   r  rR  
notify_allrk  r  ru   r  r  rZ  r   r   r  s         @r   test_notify_allz_TestCondition.test_notify_all  s   ~~>>!$$q!! q 	$ 	$ADF#'5("C  E EAAHGGIIIOOAF### '+Xuh&GI I IAAHGGIIIOOAF#### q 	 	A q 	 	AMMOOOO''9e<<< 	T""" q 		$ 		$ADF$%1HIIAAHGGIIIOOAF### dHe5LMMMAAHGGIIIOOAF#### q 	 	A 	
5''9e<<< 	 	$$%=%=%=%=qAAA 	T"""""r   c                    |                                  }|                     d          }|                     d          t          d          D ]}|                     | j        ||f          }d|_        |                                 |                     |j                   t          j
        | j        ||f          }d|_        |                                 |                     |j                   t          d          D ]}|                                 t          j        t                     |                     dt                      |                                 |                    d           |                                 |                     fdd           |                                 |                    d	           |                                 |                     fd
d           |                                 |                    d           |                                 |                     dt                      |                     |           d S )Nr   r  r   Tr  r  )nc                  "    t                     S r   r  r  s   r   r  z._TestCondition.test_notify_n.<locals>.<lambda>B  r  r   rf   c                  "    t                     S r   r  r  s   r   r  z._TestCondition.test_notify_n.<locals>.<lambda>I  r  r   )r  r}  rW  r   r  r   r   rg  r   r"  r  rj  r   r  rR  r   r   r  rk  r  r  r  s         @r   test_notify_nz_TestCondition.test_notify_n#  s6   ~~>>!$$q!! q 		$ 		$ADF$%1HIIAAHGGIIIOOAF### dHe5LMMMAAHGGIIIOOAF#### q 	 	A 	
5''9e<<< 	a 	$$%=%=%=%=qAAA 	a$$%=%=%=%=qAAA 	a''9e<<< 	T"""""r   c                 2   |                                  }t          |j                  }|                                  |t                    }|                                 |                     |d           |                     |j        t                     d S rS  )	r  r   r7   rj  r  rk  rp   r   r   )ru   r  r7   r   s       r   rD  z_TestCondition.test_timeoutU  s{    ~~TY''d8nne$$$$$T\8<<<<<r   c                     |5  d_         |                                 |                    fd          }|rj         dk    rt          j        d           d d d            d S # 1 swxY w Y   d S )Nr   c                       j         dk    S re   r   states   r   r  z0_TestCondition._test_waitfor_f.<locals>.<lambda>c      EKN r   rf   r   )r   r  wait_forr   rk  )r   r  r  r^  s     ` r   _test_waitfor_fz_TestCondition._test_waitfor_f^  s     	 	EKKKMMM]]#:#:#:#:;;F U[A--	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AA&&A*-A*zneeds sharedctypesc                    |                                  }|                     dd          |                     | j        |f          }d|_        |                                 |5  |                    fd          }|                     |           |                     j	        d           d d d            n# 1 swxY w Y   t          d          D ]T}t          j        d           |5  xj	        d	z  c_	        |                                 d d d            n# 1 swxY w Y   Ut          |           |                     |j        d           d S )
NrZ  rF   r   Tc                       j         dk    S Nr   r  r  s   r   r  z-_TestCondition.test_waitfor.<locals>.<lambda>r  r  r   r   rf   ry  r   )r  r   r   r  r   r   r  r   rp   r   rW  r   r  r  r,   r   )ru   r  r   r^  rZ  r  s        @r   test_waitforz_TestCondition.test_waitforg  s    ~~

3##LL 4D%=LII				 	- 	-]]#:#:#:#:;;FOOF###U[!,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-
 q 	 	AJt  q                	QQ'''''s%   'A	B<<C C .%DD#	&D#	c                    |                                  |5  d}t          j                    }|                    fd|          }t          j                    |z
  }|s|t          z
  |k    rd|_        d d d            d S # 1 swxY w Y   d S )Nr   c                       j         dk    S re   r  r  s   r   r  z8_TestCondition._test_waitfor_timeout_f.<locals>.<lambda>  r  r   r(   T)rk  r   r   r  	CLOCK_RESr   )r   r  r  successrz  r_  dtr^  s     `     r   _test_waitfor_timeout_fz&_TestCondition._test_waitfor_timeout_f  s     	% 	%H!!B]]#:#:#:#:H]MMF!!B&B %x)3:: $	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%s   ABB	Bc                    |                                  }|                     dd          }|                     dd          }|                     d          }|                     | j        ||||f          }d|_        |                                 |                     |                    t          j
                             t          d          D ]T}t          j        d           |5  |xj        d	z  c_        |                                 d d d            n# 1 swxY w Y   Ut!          |           |                     |j                   d S )
NrZ  r   Fr   Tr(   r  ry  r   )r  r   r}  r   r  r   r   r   rj  r   r  rW  r   r  r   r  r,   )ru   r  r  r  rz  r   rZ  s          r   test_waitfor_timeoutz#_TestCondition.test_waitfor_timeout  sq    ~~

3""**S%((nnQLL <#UGS9  ; ;				G,@AABBB q 	 	AJu  q                	Q&&&&&s   +%DD 	#D 	c                     |5  |                                  d d d            n# 1 swxY w Y   t          j        d           |!t          j        |t
          j                   d S d S r   )r  r   r  rG   rH  r<  r  )r   r   r   s      r   _test_wait_resultz _TestCondition._test_wait_result  s     	 	HHJJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
1?GC''''' ?s   $((c                    t          | t                    r$t          j        dk    rt	          j                    }nd }|                                 }|5  |                     |                    d                     |                     |                    d                     | 	                    | j
        ||f          }|                                 |                     |                    d                     |!|                     t          |j        d           |                                 d d d            d S # 1 swxY w Y   d S )Nr5   r   r   r   <   )r   ProcessesMixinr   r   rG   r   r  r   r7   r   r  r   r   rq   KeyboardInterruptr   )ru   r   r   r   s       r   test_wait_resultz_TestCondition.test_wait_result  sY   dN++ 	0G0G)++CCCNN 	 	QVVAYY'''QVVC[[)))D$:!SJJAGGIIIOOAFF2JJ'''!!"3QVR@@@FFHHH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   C"EEEr   )rz   r{   r|   r  r  r  r  r  r  r  rD  r  rK   r  HAS_SHAREDCTYPESr  r  r  r  r  r_   r   r   r  r    sK          [	5 	5 	5	 	 	+ + +Z<# <# <#|0# 0# 0#d= = =   [ X)+?@@( ( A@(. % % [% X)+?@@' ' A@'. ( ( [(    r   r  c                   2    e Zd Zed             Zd ZddZdS )
_TestEventc                 `    t          j        t                     |                                 d S r   )r   r  r  rh  rb  s     r   _test_eventz_TestEvent._test_event  s#    
8		r   c                    |                                  }t          |j                  }|                     |                                d           |                      |d          d           |                     |j        d           |                      |t                    d           |                     |j        t                     |                                 |                     |                                d           |                      |            d           |                     |j        d           |                      |t                    d           |                     |j        d           |	                                 | 
                    | j        |f          }d|_        |                                 |                      |            d           |                                 d S )NFr9   Tr   )r  r   r7   rp   r  r   r   r  rh  r  r   r  r   r   r   )ru   rc  r7   r   s       r   
test_eventz_TestEvent.test_event  s   

UZ(( 	/// 	cE***$$T\3777h///$$T\8<<<		 	...&&&$$T\3777h...$$T\3777 	 LL 0xL@@				&&&	r   returnNc                 8   |                                  }| j        dk    r|                     t          |          d           |                                 |                     t          |          d           |                                 |                     t          |          d           d S | j        dk    r\|                     t          |          d           |                                 |                     t          |          d           d S d S )Nr   z<Event at .* unset>z<Event at .* set>r   z(<EventProxy object, typeid 'Event' at .*)r  r   assertRegexreprrh  r  )ru   rc  s     r   	test_reprz_TestEvent.test_repr  s    

9##T%[[*@AAAIIKKKT%[[*>???KKMMMT%[[*@AAAAAY)##T%[[*UVVVIIKKKT%[[*UVVVVV $#r   )r  N)rz   r{   r|   r  r  r  r  r_   r   r   r  r    sW          [! ! !FW W W W W Wr   r  c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )
_DummyListc                     t           j                            t          j        d                    }t          j                    }|                     ||f           d| j        d<   d S )NrZ  r   )r   heapBufferWrapperstructcalcsizeri  __setstate__
_lengthbuf)ru   wrapperrn  s      r   r   z_DummyList.__init__  sZ    !&44V_S5I5IJJ#%%7D/***r   c                     |\  | _         | _        | j                                                             d          | _        d S )NrZ  )_wrapper_lockcreate_memoryviewcastr  )ru   r  s     r   r  z_DummyList.__setstate__  s7    &+#
-99;;@@EEr   c                     | j         | j        fS r   )r  r  r   s    r   __getstate__z_DummyList.__getstate__  s    tz**r   c                 p    | j         5  | j        dxx         dz  cc<   d d d            d S # 1 swxY w Y   d S Nr   r   r  r  )ru   _s     r   r]  z_DummyList.append  s    Z 	$ 	$OA!#	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$s   +//c                 ^    | j         5  | j        d         cd d d            S # 1 swxY w Y   d S r  r  r   s    r   __len__z_DummyList.__len__  sx    Z 	& 	&?1%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&s   "&&N)rz   r{   r|   r   r  r  r]  r  r_   r   r   r  r    sb          F F F+ + +$ $ $& & & & &r   r  c                  .    t          j        d           d S )Nry  r.  r_   r   r   _waitr    s    Jtr   c                   8    e Zd ZdZd
dZd Zd Zd Zd Zd Z	d	S )Bunchz
    A bunch of threads.
    Fc                    || _         || _        || _        |                                | _        |                                | _        |                                | _        |s| j                                         g }t          |          D ]M}|
                    | j                  }d|_        |                                 |                    |           Nd }	t          j        | |	|          | _        dS )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                 8    | D ]}|                                  d S r   )r   )r   r   s     r   finalizez Bunch.__init__.<locals>.finalize5  s*       r   N)r  rV   r  	DummyListstartedfinishedr  	_can_exitrh  rW  r   taskr   r   r]  ro  r  
_finalizer)
ru   	namespacer  rV   r  wait_before_exitr   rZ  r   r  s
             r   r   zBunch.__init__  s     	 **,,!++--"** 	!N   q 	 	A!!!33AAHGGIIINN1	 	 	 "*47CCr   c                    t          j                    }| j                            |           	  | j        | j          | j                            |           | j                            d           | j        	                                sJ d S # | j                            |           | j                            d           | j        	                                sJ w xY w)N   )
rG   r   r  r]  r  rV   r  r  r7   r  ru   r   s     r   r  z
Bunch.task;  s    ikkC   	+DFDIM  %%%N###>((******* M  %%%N###>((*********s   B AC c                     t          | j                  | j        k     r-t                       t          | j                  | j        k     +d S d S r   )r   r  r  r  r   s    r   wait_for_startedzBunch.wait_for_startedE  sG    $,$&((GGG $,$&((((((r   c                     t          | j                  | j        k     r-t                       t          | j                  | j        k     +d S d S r   )r   r  r  r  r   s    r   wait_for_finishedzBunch.wait_for_finishedI  sG    $-  46))GGG $-  46))))))r   c                 8    | j                                          d S r   )r  rh  r   s    r   	do_finishzBunch.do_finishM  s    r   c                 .    |                                   d S r   )r  r   s    r   r"   zBunch.closeP  s    r   Nr  )
rz   r{   r|   r}   r   r  r  r  r  r"   r_   r   r   r  r    s         D D D D8+ + +          r   r  c                       e Zd Zd Zd ZdS )
AppendTruec                     || _         d S r   )r0  )ru   r0  s     r   r   zAppendTrue.__init__U  s    r   c                 :    | j                             d           d S rW  )r0  r]  r   s    r   r   zAppendTrue.__call__W  s    r   Nr   r_   r   r   r  r  T  s2              r   r  c                   <   e Zd ZdZdZdZd Zd Zd Zd Z	e
d             Zdd
Zd Ze
d             Zd Ze
d             Zd Ze
d             Zd Ze
d             Zd Ze
d             Zd Ze
d             Zd Ze
d             Zd Zd Ze
d             Zd ZdS )_TestBarrierz$
    Tests for Barrier objects.
    r   g      >@c                 R    |                      | j        | j                  | _        d S r'   )Barrierr  defaultTimeoutbarrierr   s    r   setUpz_TestBarrier.setUpb  s"    ||DFD4G|HHr   c                 F    | j                                          d | _         d S r   )r  abortr   s    r   tearDownz_TestBarrier.tearDowne  s!    r   c                     | j         dk    rg S | j         dk    r| j                                        S t                      S )Nr   r   )r   r   r   r  r   s    r   r  z_TestBarrier.DummyListi  s?    9	!!IY)##<$$&&&<<r   c                     t          | ||| j        dz
            }	  ||  |                                 |                                 d S # |                                 w xY wr   )r  r  r  r"   )ru   r  rV   r   s       r   run_threadsz_TestBarrier.run_threadsq  s`    $4**	AtHH!!!GGIIIIIAGGIIIIs   A A!c                    |j         }|| j        k    sJ t          |          D ]}|d                             d           t	          |d                   ||z  k    sJ |                                 |d                             d           t	          |d                   |dz   |z  k    sJ |                                 	 |j        dk    sJ n# t          $ r Y nw xY w|j        rJ d S )Nr   Tr   )	partiesr  rW  r]  r   r7   	n_waitingr   broken)r   r  resultsr  mrZ  s         r   	multipassz_TestBarrier.multipassy  s   OCEzzzzq 	 	AAJd###wqz??a!e++++LLNNNAJd###wqz??q1uk1111LLNNNN	$)))))" 	 	 	D	>!!!!!s   C 
C C r   c                     |                                  |                                  g}|                     | j        | j        ||f           dS )z;
        Test that a barrier is passed in lockstep
        N)r  r  r  r  )ru   passesr  s      r   test_barrierz_TestBarrier.test_barrier  sI     >>##T^^%5%56$,)HIIIIIr   c                 ,    |                      d          S )zC
        Test that a barrier works for 10 consecutive runs
        r:  )r  r   s    r   test_barrier_10z_TestBarrier.test_barrier_10  s       $$$r   c                 X    |                                 }|                    |           d S r   )r7   r   )r   r  r$   r   s       r   _test_wait_return_fz _TestBarrier._test_wait_return_f  s"    llnn		#r   c                 $   |                                  |                     | j        | j        f           fdt	          | j                  D             }|                     |                    d          d           t                     dS )z9
        test the return value from barrier.wait
        c                 8    g | ]}                                 S r_   r  )r{  rZ  r$   s     r   r|  z1_TestBarrier.test_wait_return.<locals>.<listcomp>  s!    6661599;;666r   r   r   N)	r!   r  r  r  rW  r  rp   countr%   )ru   r  r$   s     @r   test_wait_returnz_TestBarrier.test_wait_return  s     

1DL%3HIII6666df666q))1---Er   c                 b    |                                  t          |          dk    rt          d S r   )r7   r   r8  )r   r  r  s      r   _test_action_fz_TestBarrier._test_action_f  s.    w<<1 r   c                     |                                  }|                     | j        t          |                    }|                     | j        ||f           |                     t          |          d           dS )z,
        Test the 'action' callback
        )r  r   N)r  r  r  r  r  r!  rp   r   )ru   r  r  s      r   test_actionz_TestBarrier.test_action  sr     .."",,tvj.A.A,BB,w.@AAAWq)))))r   c                 B   	 |                                 }|| j        dz  k    rt          |                                  |                    d           d S # t          j        $ r |                    d           Y d S t          $ r |                                 Y d S w xY wNr  T)r7   r  r8  r]  r"  BrokenBarrierErrorr	  )r   r  results1results2rZ  s        r   _test_abort_fz_TestBarrier._test_abort_f  s    		ACE1H}}""LLNNNOOD!!!!!+ 	" 	" 	"OOD!!!!!! 	 	 	MMOOOOOO	s   AA $B=BBc                 v   |                                  }|                                  }|                     | j        | j        ||f           |                     t          |          d           |                     t          |          | j        dz
             |                     | j        j                   dS )zK
        Test that an abort will put the barrier in a broken state
        r   r   N)	r  r  r)  r  rp   r   r  r   r  )ru   r'  r(  s      r   
test_abortz_TestBarrier.test_abort  s     >>##>>##+,(;	= 	= 	=X***Xq111+,,,,,r   c                    |                                 }|| j        dz  k    rO|j        | j        dz
  k     r't          j        d           |j        | j        dz
  k     '|                                 nU	 |                                  |                    d           n*# t          j        $ r |                    d           Y nw xY w|                                  |                    d           d S )Nr  r   r~  T)	r7   r  r  r   r  resetr]  r"  r&  )r   r  r'  r(  results3rZ  s         r   _test_reset_fz_TestBarrier._test_reset_f  s    LLNNq==#ceAg--
5!!! #ceAg--MMOOOO&%%%%/ & & &%%%%%& 	s   3)B $CCc                    |                                  }|                                  }|                                  }|                     | j        | j        |||f           |                     t          |          d           |                     t          |          | j        dz
             |                     t          |          | j                   dS )zL
        Test that a 'reset' on a barrier frees the waiting threads
        r   r   N)r  r  r/  r  rp   r   r  )ru   r'  r(  r.  s       r   
test_resetz_TestBarrier.test_reset  s     >>##>>##>>##+,(HE	G 	G 	GX***Xq111X/////r   c                 "   	 |                                 }|| j        dz  k    rt          |                                  |                    d           nI# t          j        $ r |                    d           Y n#t          $ r |                                 Y nw xY w|                                 | j        dz  k    r|                                 |                                  |                                  |                    d           d S r%  )r7   r  r8  r]  r"  r&  r	  r-  )r   r  barrier2r'  r(  r.  rZ  s          r   _test_abort_and_reset_fz$_TestBarrier._test_abort_and_reset_f  s    		ACE1H}}""LLNNNOOD!!!!+ 	" 	" 	"OOD!!!!! 	 	 	MMOOOOO	
 ==??ceQh&&MMOOOs   AA $B;BBc                    |                                  }|                                  }|                                  }|                     | j                  }|                     | j        | j        ||||f           |                     t          |          d           |                     t          |          | j        dz
             |                     t          |          | j                   dS )zF
        Test that a barrier can be reset after being broken.
        r   r   N)r  r  r  r  r4  r  rp   r   )ru   r'  r(  r.  r3  s        r   test_abort_and_resetz!_TestBarrier.test_abort_and_reset  s     >>##>>##>>##<<''5,(HhO	Q 	Q 	QX***Xq111X/////r   c                     |                                 }|| j        dz  k    rt          j        d           	 |                     d           d S # t          j        $ r |                    d           Y d S w xY w)Nr        ?r  T)r7   r  r   r  r"  r&  r]  r   r  r  rZ  s       r   _test_timeout_fz_TestBarrier._test_timeout_f  s    LLNNq==JsOOO	!LL+ 	! 	! 	!NN4      	!s   A $A76A7c                     |                                  }|                     | j        | j        |f           |                     t          |          | j        j                   dS )z$
        Test wait(timeout)
        N)r  r  r:  r  rp   r   r  )ru   r  s     r   rD  z_TestBarrier.test_timeout  sZ     ..""-g/FGGGWt|';<<<<<r   c                     |                     | j                  }|| j        dz  k    rt          j        d           	 |                                  d S # t
          j        $ r |                    d           Y d S w xY w)Nr  r8  T)r7   r  r  r   r  r"  r&  r]  r9  s       r   _test_default_timeout_fz$_TestBarrier._test_default_timeout_f%  s    LL+,,q==JsOOO	!LLNNNNN+ 	! 	! 	!NN4      	!s   A $A<;A<c                     |                      | j        d          }|                                 }|                     | j        ||f           |                     t          |          |j                   dS )z4
        Test the barrier's default timeout
        r  r(   N)r  r  r  r  r=  rp   r   r  )ru   r  r  s      r   test_default_timeoutz!_TestBarrier.test_default_timeout0  sl     ,,tvs,33..""57IJJJWw77777r   c                     |                      d          }|                                 |                                 d S r   )r  r7   )ru   r   s     r   test_single_threadz_TestBarrier.test_single_thread9  s/    LLOO		r   c                     t          |          D ]E}|                                 |5  |                    |           d d d            n# 1 swxY w Y   Fd S r   )rW  r7   r  )r   r  r  connrn  rZ  s         r   _test_thousand_fz_TestBarrier._test_thousand_f>  s    v 	 	ALLNNN  		!              	 	s   A

A	A	c                 H   | j         dk    r-|                     d                    | j                              d}|                                 }|                     d          \  }}t          | j                  D ]U}|                     | j        | j	        |||f          }|
                                 |                     |j                   Vt          |          D ]A}t          | j                  D ]*}|                     |                                |           +Bd S )Nr   r     Fr   )r   r   r   ri  r   rW  r  r   rD  r  r   rg  r   rp   r   )ru   r  rn  rC  r  jr   rZ  s           r   test_thousandz_TestBarrier.test_thousandE  s   9	!!MM7>>tyIIJJJyy{{99U++jtv 	$ 	$AD$9!%vz4 H  J JAGGIIIOOAF####v 	1 	1A46]] 1 1  a00001	1 	1r   Nr   )rz   r{   r|   r}   r  r  r  r
  r  r  r  r  r  r  r  r  r!  r#  r)  r+  r/  r1  r4  r6  r:  rD  r=  r?  rA  rD  rH  r_   r   r   r  r  [  s
         	
ANI I I          " " [" J J J J% % %   [     [
* * * 
 
 [

- 
- 
-   ["0 0 0   [*0 0 0 ! ! [!= = = ! ! [!8 8 8  
   [1 1 1 1 1r   r  c            	       z    e Zd ZdZddddd ed           ed          fgZd	 Zed
             ZddZ	d Z
d ZdS )
_TestValuer  )rZ  i  i^  )dg      @g      )hi   )r                   r   xyc                 B    t           s|                     d           d S d S Nz"requires multiprocess.sharedctypesr  r   r   s    r   r  z_TestValue.setUpe  0     	@MM>?????	@ 	@r   c                 V    t          || j                  D ]\  }}|d         |_        d S r  )zipcodes_valuesr   )r   valuessvcvs       r   r   z_TestValue._testi  s9    &#"233 	 	FB!uBHH	 	r   Fc                     |r fd j         D             }n fd j         D             }t          | j                   D ]&\  }}                     |j        |d                    '                      j        |f          }d|_        |                                 |                                 t          | j                   D ]&\  }}                     |j        |d                    'd S )Nc                 D    g | ]\  }}}                     ||          S r_   )RawValuer{  coder   r  ru   s       r   r|  z)_TestValue.test_value.<locals>.<listcomp>q  s=     ? ? ?($q mmD%00 ? ? ?r   c                 D    g | ]\  }}}                     ||          S r_   )r   r_  s       r   r|  z)_TestValue.test_value.<locals>.<listcomp>t  s=     ? ? ?($q jju-- ? ? ?r   r   r   Tr  )	rX  rW  rp   r   r   r   r   r   r   )ru   rawrY  rZ  r[  r  s   `     r   
test_valuez_TestValue.test_valueo  s'    	?? ? ? ?,0,=? ? ?FF? ? ? ?,0,=? ? ?F &$"344 	. 	.FBRXr!u----||4:VI|>>

		&$"344 	. 	.FBRXr!u----	. 	.r   c                 2    |                      d           d S NT)rb  )rc  r   s    r   test_rawvaluez_TestValue.test_rawvalue  s    D!!!!!r   c                    |                      dd          }|                                }|                                }|                      ddd           }|                                }|                                }|                                 }|                      dd|          }|                                }	|                                }
|                     ||	           |                      ddd          }|                     t          |d                     |                     t          |d                     |                     t          | j         ddd           | 	                    dd          }|                     t          |d                     |                     t          |d                     d S )NrZ  r   rn  Fget_lockget_objnavalue)
r   ri  rj  ri  rp   r   r;  rq   rI   r^  )ru   val1lock1obj1val2lock2obj2rn  val3lock3obj3arr4arr5s                r   test_getobj_getlockz_TestValue.test_getobj_getlock  s}   zz#q!!||~~zz#qtz,,||~~yy{{zz#qtz,,||~~u%%%zz#quz--z22333y11222.$*c19MMM}}S!$$z22333y1122222r   Nr  )rz   r{   r|   r   r   rX  r  r  r   rc  rf  rw  r_   r   r   rJ  rJ  Y  s        "M 		eeCjj%%**%
L@ @ @   [
. . . .&" " "3 3 3 3 3r   rJ  c                   
   e Zd ZdZed             Z ej        edu d          d
d            Z	 ej        edu d          d             Z
 ej        edu d          d             Z ej        edu d          d	             ZdS )
_TestArrayr  c                 x    t          dt          |                    D ]}||xx         ||dz
           z  cc<   d S r   )rW  r   )r   seqrZ  s      r   r  z_TestArray.f  sK    q#c((## 	 	AFFFc!A#hFFFF	 	r   Nzrequires _ctypesFc                 D   g d}|r|                      d|          }n|                     d|          }|                     t          |          t          |                     |                     |d         |d                    |                     t	          |dd                   t	          |dd                              t          j        dg d          x|dd<   |dd<   |                     t	          |d d                    |           |                     |           |                     | j        |f	          }d
|_        |	                                 |
                                 |                     t	          |d d                    |           d S )N)
i  ir  i  i5        i$  i  i  i?  rZ  r  r  r  )r   r  r  rf   rf   r   r   T)RawArrayArrayrp   r   r   arrayr  r   r   r   r   )ru   rb  r{  arrr   s        r   
test_arrayz_TestArray.test_array  sp   @@@ 	'--S))CC**S#&&CS3s88,,,QQ(((c!A#hc!A#h888#k#|||<<<AaC3qs8c!!!fs+++sLLcVL44					c!!!fs+++++r   c           	         d}t          d          D ]}|                     d|          }|                     t          |          |           |                     t	          |          dg|z             t          d          |d d <   |                     t	          |          t	          t          d                               ~d S )Nr:  r  rZ  r   )rW  r  rp   r   r   )ru   sizer  r  s       r   test_array_from_sizez_TestArray.test_array_from_size  s    
 q 	 	A**S$''CSXXt,,,T#YYd
3332YYCFT#YYU2YY888	 	r   c                 2    |                      d           d S re  )r  r   s    r   test_rawarrayz_TestArray.test_rawarray  s    D!!!!!r   c                 |   |                      dt          t          d                              }|                                }|                                }|                      dt          t          d                    d           }|                                }|                                }|                                 }|                      dt          t          d                    |          }|                                }	|                                }
|                     ||	           |                      dt          d          d          }|                     t          |d                     |                     t          |d                     | 	                    t          | j         dt          d          d           |                     dt          d                    }|                     t          |d                     |                     t          |d                     d S )NrZ  r:  rh  Fri  rj  notalock)r  r   rW  ri  rj  ri  rp   r   r;  rq   rI   r  )ru   arr1rm  rn  arr2rp  rq  rn  arr3rs  rt  ru  rv  s                r   test_getobj_getlock_objz"_TestArray.test_getobj_getlock_obj  s   zz#tE"II//||~~zz#tE"IITz::||~~yy{{zz#tE"IITz::||~~u%%%zz#uRyyuz55z22333y11222.*c599: 	 	G 	G 	G }}S%)),,z22333y1122222r   r  )rz   r{   r|   r   r  r  rK   r~   rA   r  r  r  r  r_   r   r   ry  ry    s        "M  [ X_Ud]$677, , , 87,0 X_Ud]$677  87 X_Ud]$677" " 87" X_Ud]$6773 3 873 3 3r   ry  c                   B    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
S )_TestContainersr   c                    |                      t          t          d                              }|                     |d d          t          t          d                               |                                  }|                     |d d          g            |                    t          t          d                               |                     |d d          t          t          d                               |                     |d         d           |                     |dd         g d           |dz  }|                     |d d          g d           |                     |ddgz   g d           |                     |d d          t          t          d                               ||g}|                      |          }|                     d |D             g d	g dg           |                      |g          }|                    d
           |                     |d         d d          g d           d S )Nr:  r   r  )r  r  rf   )
r   r   r  r  rf   r   r   r  r  rf   r  )r   r   r  r  rf   r   r   r  r  rf   r   r  c                 "    g | ]}|d d          S r   r_   )r{  elements     r   r|  z-_TestContainers.test_list.<locals>.<listcomp>	  s     )))GWQQQZ)))r   )
r   r   r  r  rf   r   r  r  r   	   r  r   )r   r   r  r  rf   r   r  r  r   r  r  )r   rW  rp   extendr]  )ru   r   r   rK  r  r  s         r   	test_listz_TestContainers.test_list  s   IId599oo&&111tE"II///IIKK111r"""	eAhh   111tE!HH~~...1q!!!1R4'''***	Q111===>>>aV%I%I%IJJJ111tE"II///FIIaLL))q)))+++-K-K-KL	 	 	
 IIqcNN	1aaa"I"I"IJJJJJr   c                    |                      t          t          d                              }t          |          }|                     t          |          t          t          d                               |                     t          |          g            t          |          }d|d<   |                     t	          |          d           d S )Nr:  r-  r   )r   rW  r  rp   next)ru   r   its      r   test_list_iterz_TestContainers.test_list_iter	  s    IId599oo&&!WWb4b		??333b2&&&!WW!b3'''''r   c                                            fdt          d          D                       }                     d |D             g dgdz             d|d         d<                        |d         d d          g d           t          d	d          D ](}                     ||         d d          g d           )                     |d	                                         d
                                t	          |d	                   d
           t          ddd
          D ]+}                     t	          ||                   d           ,~                                  }|                    |           ~d S )Nc                 T    g | ]$}                     t          d                     %S )r  )r   rW  )r{  _iru   s     r   r|  z;_TestContainers.test_list_proxy_in_list.<locals>.<listcomp> 	  s+    >>>rtyyq**>>>r   r  c                 "    g | ]}|d d          S r   r_   )r{  inners     r   r|  z;_TestContainers.test_list_proxy_in_list.<locals>.<listcomp>!	  s     222u%(222r   )r   r   r  7   r   rF   )r   r   r  r   r  )r   rW  rp   popr   r]  )ru   r   rZ  r   s   `   r   test_list_proxy_in_listz'_TestContainers.test_list_proxy_in_list	  su   II>>>>U1XX>>>??22222YYYK!ODDD!R1aaa***---q! 	1 	1AQqT!!!Wiii00001Q'''QqTA&&&q!Q 	+ 	+AS1YY****IIKK	AAr   c                 z   |                                  }t          t          dd                    }|D ]}t          |          ||<   |                     |                                t          d |D                                  |                     t          |                                          |           |                     t          |                                          d |D                        |                     t          |	                                          d |D                        d S )NA   F   c              3   8   K   | ]}|t          |          fV  d S r   chrr{  rZ  s     r   	<genexpr>z,_TestContainers.test_dict.<locals>.<genexpr>8	  s,      'E'ECFF'E'E'E'E'E'Er   c                 ,    g | ]}t          |          S r_   r  r  s     r   r|  z-_TestContainers.test_dict.<locals>.<listcomp>:	  s    -F-F-Fc!ff-F-F-Fr   c                 0    g | ]}|t          |          fS r_   r  r  s     r   r|  z-_TestContainers.test_dict.<locals>.<listcomp>;	  s"    ,J,J,JQaQ[,J,J,Jr   )
dictr   rW  r  rp   r   sortedkeysrY  r  )ru   rK  indicesrZ  s       r   	test_dictz_TestContainers.test_dict3	  s   IIKKuR}}%% 	 	Aq66AaDD4'E'EW'E'E'E#E#EFFF))7333

++-F-Fg-F-F-FGGG		**,J,J',J,J,JKKKKKr   c                    |                                  }t          t          dd                    }|D ]}t          |          ||<   t	          |          }|                     t          |          |           |                     t          |          g            t	          |          }|                                 |                     t          t          |           d S )Nr  r  )
r  r   rW  r  r  rp   r  rq   r8  r  )ru   rK  r  rZ  r  s        r   test_dict_iterz_TestContainers.test_dict_iter=	  s    IIKKuR}}%% 	 	Aq66AaDD!WWb7+++b2&&&!WW				,b11111r   c                 "   |                      dd          }|                      dd          }|                      ||          }|                     |d         d           |                     |d	         d         d           d
|d	         d<   |                     |d         d
           |                     |d	         d         d
           d|d	         d<   |                     |d         d           |                     |d	         d         d           ~~|                     |d         d         d           d|d	         d<   |                     |d	         d         d           |d         }|d	         }d|d<   |                     |d         d           |                     |d	         d         d           |                                 |                     t          |          d           |                     |d         d           |                     |d         d           |                     ||g          }d|d         d<   |                     |d         d           |                     |d         d         d           ~~|                     |d         d         d           |                     ddg|g          }|                     |d         t                     |                     |d         d         d         d           d S )Nr  rf   )ferretshamstersr:  r  )waterfeed)petssuppliesr  r  r   blanketsr  r  r     r   r  r   marmotsX   c   rF   r  )r  rp   r  r   r   r   )ru   r  r  rK  louters         r   test_dict_proxy_nestedz&_TestContainers.test_dict_proxy_nestedJ	  s   yyQy//992A9..II4(I33'*B///:w/444$%*j!*-q111:z2A666!"*g'*A...:w/33369-q111$&*j!:z2B777yZ='*A...:w/333				Q###'*A...j)1---IItX&''!Yi!,,,1i!,,,1i!,,,		B8Q-((eAh---r2v.22222r   c                    |                                  }|                    |                                            |d                             d           |                     |d                                         d           |                                 }|                                 |d<   |d                             d           |                     |d                                         d           d S )Nr   {     )r   r]  r!   r   rp   r   r  r   s      r   test_nested_queuez!_TestContainers.test_nested_queuex	  s    IIKK		!1S)))IIKKzz||!	!1S)))))r   c                 t   |                                  }d|_        d|_        d|_        |                     |j        |j        fd           |`|                     t          |          d           |                     t          |d                     |                     t          |d                      d S )NBobBuilderhidden)r  r  zNamespace(name='Bob')r1   job)	Namespacer1   r  _hiddenrp   rs   r   r;  )ru   r  s     r   test_namespacez_TestContainers.test_namespace	  s    NN	!&!%*<===EQ!89996**+++GAu---.....r   N)rz   r{   r|   r   r  r  r  r  r  r  r  r  r_   r   r   r  r    s         MK K K>( ( (  (L L L2 2 2,3 ,3 ,3\* * *	/ 	/ 	/ 	/ 	/r   r  r9   c                 d    |t          j        |           n|                    |           | | z  S r   )r   r  r7   )rP  r7   rc  s      r   sqrr  	  s5    }
4

4Q3Jr   c                     | |z  S r   r_   rP  rQ  s     r   mulr  	      Q3Jr   c                 N    t          j        |            t          ddz            )NrP  i   )r   r  rJ   r6   s    r   raise_large_valuerrorr  	  s$    Jt
S7]
#
##r   c                     | S r   r_   rP  s    r   identityr  	  s    Hr   c                       e Zd ZdZd Zd ZdS )CountedObjectr   c                 V    | xj         dz  c_         t                              |           S r   )n_instancesrK  __new__r/  s    r   r  zCountedObject.__new__	  s$    1~~c"""r   c                 @    t          |           xj        dz  c_        d S r   )r  r  r   s    r   __del__zCountedObject.__del__	  s"    T

!#r   N)rz   r{   r|   r  r  r  r_   r   r   r  r  	  s7        K# # #$ $ $ $ $r   r  c                       e Zd ZdS )SayWhenErrorNrz   r{   r|   r_   r   r   r  r  	  s          r   r  c              #      K   |dk    rt          d          t          |           D ]}||k    rt          d          |V  d S )NrF   zSomebody said when)r  rW  )totalwhenrZ  s      r   exception_throwing_generatorr  	  s`      rzz/0005\\  993444 r   c                   f    e Zd Ze fd            Ze fd            Zd Zd Zd Zd Z	d Z
d Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zed             Z ej        dd          d             Zed             Z ej        dd          d             Zd Zd Z d Z!d Z" xZ#S ) 	_TestPoolc                 |    t                                                       |                     d          | _        d S re   )super
setUpClassPoolpoolr   	__class__s    r   r  z_TestPool.setUpClass	  s.    88A;;r   c                     | j                                          | j                                          d | _         t                                                       d S r   )r  r  r   r  tearDownClassr  s    r   r  z_TestPool.tearDownClass	  sI    r   c                     | j         j        }|                      |t          d          t          d                     |                      |t          dddi          t          d                     d S )N)r   r   r_   rP  r  r  )r  applyrp   r  )ru   papplys     r   
test_applyz_TestPool.test_apply	  si    T**CFF333R#a113888<<<<<r   c                    | j         j        }|                      |t          t	          t          d                              t	          t          t          t	          t          d                                                   |                      |t          t	          t          d                    d          t	          t          t          t	          t          d                                                   d S )Nr:  r-  r  	chunksize)r  maprp   r  r   rW  )ru   pmaps     r   test_mapz_TestPool.test_map	  s    y}c4b		??33T#c4b		??:S:S5T5TUUUc4c

#3#3rBBBc#tE#JJ'7'78899	; 	; 	; 	; 	;r   c           
      .   | j         j        }t          t          t	          d          t	          ddd                              }|                      |t          |          t          t          j        t          |                               t          t          t	          d          t	          ddd                              }|                      |t          |d          t          t          j        t          |                               d S )Nr:  r  rF   r-  r  r  r  )r  starmapr   rW  rW  rp   r  r   )ru   psmaptupless      r   test_starmapz_TestPool.test_starmap	  s    	!c%))U1R__5566sF++i/V<<==	? 	? 	?c%**eBr2&6&67788sFb999i/V<<==	? 	? 	? 	? 	?r   c           
      N   t          t          t          d          t          ddd                              }|                     | j                            t          |                                          t          t          j	        t          |                               d S )Nr-  r  rF   )
r   rW  rW  rp   r  starmap_asyncr  r   r   r  )ru   r  s     r   test_starmap_asyncz_TestPool.test_starmap_async	  s    c%**eBr2&6&6778800f==AACCi/V<<==	? 	? 	? 	? 	?r   c                 :   |                      | j                            t          t	          t          d                                                              t	          t          t          t	          t          d                                                   d S r  )rp   r  	map_asyncr  r   rW  r   r  r   s    r   test_map_asyncz_TestPool.test_map_async	  sq    ,,S$uRyy//BBFFHHc#tE"II7788	: 	: 	: 	: 	:r   c                 Z   | j         dk    r| j                                        ng }| j                            t
          dg|j        |j                                                   |                     dt          |                     |                     dg|d                    | j                            t
          dg|j        |j                                                   |                     dt          |                     | 
                    |d         t                     d S )Nr   1)callbackerror_callbackr   r   r   r  )r   r   r   r  r  rM  r]  r7   rp   r   r   rJ   )ru   	call_argss     r   test_map_async_callbacksz"_TestPool.test_map_async_callbacks	  s   +/9	+A+ADL%%'''r		C#%.%5+4+; 	 	= 	==ATVVVC	NN+++!il+++	C#%.%5+4+; 	 	= 	==ATVVVC	NN+++ilJ77777r   c                 Z   | j         dk    r-|                     d                    | j                               G d dt                    }|                     t
                    5  | j                            t           |            gdz             d d d            d S # 1 swxY w Y   d S )Nr   r   c                       e Zd Zd ZdS )*_TestPool.test_map_unplicklable.<locals>.Ac                      t          d          )Nzcannot pickler7  r   s    r   r   z5_TestPool.test_map_unplicklable.<locals>.A.__reduce__	  s    "?333r   NrI  r_   r   r   Ar  	  s#        4 4 4 4 4r   r  r:  )	r   r   r   rK  rq   r8  r  r  r  )ru   r  s     r   test_map_unplicklablez_TestPool.test_map_unplicklable	  s    9	!!MM7>>tyIIJJJ	4 	4 	4 	4 	4 	4 	4 	4 |,, 	) 	)IMM#uRx(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)s   &-B  B$'B$c                     	 | j                             t          g d                              t                     d S # t
          j        $ r |                     d           Y d S w xY w)Nr   r  r(   z2pool.map_async with chunksize stalled on null list)r  r  r  r   r  r   TimeoutErrorrn   r   s    r   test_map_chunksizez_TestPool.test_map_chunksize	  sz    	LIR15599(9KKKKK+ 	L 	L 	LIIJKKKKKK	Ls   ;? $A'&A'c                 D   | j         dk    r-|                     d                    | j                              |                     t                    5  | j                            t          t          dd          d           d d d            n# 1 swxY w Y   |                     t                    5  | j                            t          t          dd          d           d d d            n# 1 swxY w Y   |                     t                    5  | j                            t          t          dd          d           d d d            n# 1 swxY w Y    G d d          }|                     t                    5  | j                            t           |            d           d d d            n# 1 swxY w Y   |                     t                    5  | j                            t           |            d           d d d            d S # 1 swxY w Y   d S )	Nr   r   r   rF   r:  r  c                        e Zd Zd Zd Zd ZdS )E_TestPool.test_map_handle_iterable_exception.<locals>.SpecialIterablec                     | S r   r_   r   s    r   __iter__zN_TestPool.test_map_handle_iterable_exception.<locals>.SpecialIterable.__iter__
  s    r   c                     t           r   )r  r   s    r   __next__zN_TestPool.test_map_handle_iterable_exception.<locals>.SpecialIterable.__next__
  s    ""r   c                     dS r   r_   r   s    r   r  zM_TestPool.test_map_handle_iterable_exception.<locals>.SpecialIterable.__len__
  s    qr   N)rz   r{   r|   r  r  r  r_   r   r   SpecialIterabler  
  sA          # # #    r   r   )	r   r   r   rq   r  r  r  r  r  )ru   r   s     r   "test_map_handle_iterable_exceptionz,_TestPool.test_map_handle_iterable_exception	  sZ   9	!!MM7>>tyIIJJJ |,, 	G 	GIMM#;ArBBAFFF	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G |,, 	G 	GIMM#;ArBBAFFF	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G |,, 	G 	GIMM#;BBBAFFF	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G	 	 	 	 	 	 	 	 |,, 	5 	5IMM#00!444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5|,, 	5 	5IMM#00!444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5sZ   0BBB40C00C47C40EEE*F99F= F=*HHHc                     | j                             t          dt          f          }t	          |j                  }|                      |            d           |                     |j        t                     d S )Nr  1   )	r  apply_asyncr  r  r   r   rp   r   r   )ru   r   r   s      r   
test_asyncz_TestPool.test_async
  sf    i##C!X88CG$$###$$S[(;;;;;r   c                    |                      d          }	 | j        dk    rt          j                    nd }|                    t
          dt          t          j        z   |f          }t          |j
                  }|                     t          j        |t                     |                     |j        t                     ||                                 |                                 |                                 d S # ||                                 |                                 |                                 w xY w)Nr  r   r  r(   )r  r   r"  r  r$  r  r  r   r  r   r   rq   r   r  r   r   rh  r  r   )ru   r   rc  r   r   s        r   test_async_timeoutz_TestPool.test_async_timeout
  s   IIaLL
	)-i)?)?IO%%%TE--aG4I)I5%QRRC((Co:CRRR((h??? 		KKMMMFFHHHHH  		KKMMMFFHHHHs   B+D A Ec                    | j                             t          t          t	          d                              }|                     t          |          t          t          t          t          t	          d                                                   | j                             t          t          t	          d                              }t	          d          D ](}|                     t          |          ||z             )|                     t          |j
                   | j                             t          t          t	          d                    d          }t	          d          D ](}|                     t          |          ||z             )|                     t          |j
                   d S Nr:  rF  r-  r  )r  imapr  r   rW  rp   r  r  rq   StopIterationr  ru   r  rZ  s      r   	test_imapz_TestPool.test_imap-
  sK   Y^^CeBii11b4CeBii(A(A#B#BCCCY^^CeBii11r 	, 	,AT"XXqs++++-555Y^^CeDkk!2!2c^BBt 	, 	,AT"XXqs++++-55555r   c                    | j         dk    r-|                     d                    | j                              | j                            t
          t          dd          d          }|                     t          |j	                   | j                            t
          t          dd          d          }|                     t          |j	                   | j                            t
          t          dd          d          }t          d          D ](}|                     t          |          ||z             )|                     t          |j	                   | j                            t
          t          dd          d	          }t          d
          D ](}|                     t          |          ||z             )|                     t          |j	                   | j                            t
          t          dd          d          }t          d          D ](}|                     t          |          ||z             )|                     t          |j	                   d S )Nr   r   r   rF   r:  r  r  r  r  r  rf   )r   r   r   r  r*  r  r  rq   r  r  rW  rp   r  r,  s      r   #test_imap_handle_iterable_exceptionz-_TestPool.test_imap_handle_iterable_exception;
  s   9	!!MM7>>tyIIJJJ Y^^C!=a!D!DaHH,444Y^^C!=a!D!DaHH,444Y^^C!=b!!D!DaHHq 	, 	,AT"XXqs++++,444 Y^^C!=b!!D!DaHHq 	, 	,AT"XXqs++++,444Y^^C!=b!!D!DaHHq 	, 	,AT"XXqs++++,44444r   c                 f   | j                             t          t          t	          d                              }|                     t          |          t          t          t          t          t	          d                                                   | j                             t          t          t	          d                    d          }|                     t          |          t          t          t          t          t	          d                                                   d S r)  )r  imap_unorderedr  r   rW  rp   r  r  )ru   r  s     r   test_imap_unorderedz_TestPool.test_imap_unorderedU
  s    Y%%c4b		??;;T#c4b		??*C*C%D%DEEEY%%c4d+<+<%LLT#c4d3D3D*E*E%F%FGGGGGr   c           
      \   | j         dk    r-|                     d                    | j                              | j                            t
          t          dd          d          }|                     t          |j	                   | j                            t
          t          dd          d          }|                     t          |j	                   | j                            t
          t          dd          d          }t          t          t
          t          t          d                                        }|                     t                    5  t          d          D ]<}t          |          }|                     ||           |                    |           =	 d d d            n# 1 swxY w Y   | j                            t
          t          dd          d	          }t          t          t
          t          t          d                                        }|                     t                    5  t          d          D ]<}t          |          }|                     ||           |                    |           =	 d d d            d S # 1 swxY w Y   d S )
Nr   r   r   rF   r:  r  r  r  r  )r   r   r   r  r1  r  r  rq   r  r  r   r  rW  r  rr   r  )ru   r  expected_valuesrZ  r   s        r   -test_imap_unordered_handle_iterable_exceptionz7_TestPool.test_imap_unordered_handle_iterable_exception\
  s   9	!!MM7>>tyIIJJJ Y%%c&B1b&I&I&') ) 	,444Y%%c&B1b&I&I&') ) 	,444Y%%c&B2q&I&I&') ) s3U2YY8899|,, 	. 	.2YY . .Re_555&&u----.	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. Y%%c&B2q&I&I&') ) s3U2YY8899|,, 	. 	.2YY . .Re_555&&u----.	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.s&   AF66F:=F:AJ!!J%(J%c                    | j         dk    rt          nt          }|                     || j        d           |                     || j        d           | j         dk    r|                     d          }	 |                     dt          |j                             |                                 |	                                 d S # |                                 |	                                 w xY wd S )Nr   rF   r   r  )
r   RemoteErrorrJ   rq   r  rp   r   _poolr"   r   )ru   expected_errorr   s      r   test_make_poolz_TestPool.test_make_pool
  s    )-i)?)?++) 	 	.$)R888.$)Q7779	!!		!A  CLL111			 			 "!s   3(C *C/c                 V   t           j        | j        dk    rd|                     d          }fdt	          d          D             }|                    t          j        |d          }t          j        d           |                                 |	                                 d S )Nr   r   r  c                     g | ]}S r_   r_   )r{  rZ  
sleep_times     r   r|  z,_TestPool.test_terminate.<locals>.<listcomp>
  s    222q
222r   i'  r  rA  )
r   r  r   r  rW  r  r   r  r  r   )ru   r   rV   r^  r=  s       @r   rD  z_TestPool.test_terminate
  s    )
9	!! JIIaLL2222E&MM222TZ;;
3		r   c                 P   |                      d          }|                     |                    t          g           g            |                     t	          |                    t          g                     g            |                     t	          |                    t          g                     g            |                     |                    t          g                                           g            |	                                 |
                                 d S r   )r  rp   r  r  r   r*  r1  r  r   r"   r   rS  s     r   test_empty_iterablez_TestPool.test_empty_iterable
  s    IIaLLsB,,,affS"oo..333a..sB7788"===S"--1133R888					r   c                    | j         dk    rt          t          d                    }d |D             }|                     d          5 }|                    t
          |          }|                     |                                |           d d d            n# 1 swxY w Y   |                                 | 	                    t          |j        t
          |           d S d S )Nr   r:  c                 ,    g | ]}t          |          S r_   )r  r  s     r   r|  z*_TestPool.test_context.<locals>.<listcomp>
  s    ***1A***r   r  )r   r   rW  r  r  r  rp   r   r   rq   rJ   )ru   Lr_  r   rs        r   test_contextz_TestPool.test_context
  s    9##U2YYA*****H1 4KKQ''  (3334 4 4 4 4 4 4 4 4 4 4 4 4 4 4 FFHHHj!+sA>>>>> $#s   	ABB Bc                      t          d          )Nr  r7  r/  s    r   _test_tracebackz_TestPool._test_traceback
  s    3r   Tr[  c                 D   | j         dk    r|                     d          5 }	 |                    | j                   |                     d           n# t
          $ r}|}Y d }~nd }~ww xY wd d d            n# 1 swxY w Y   |                                 |                     t          |          t                     | 
                    |j        d           |j        }|                     t          |          t          j        j                   |                     d|j                   t$          j                                        5 }	 |# t          $ r" t+          j        t+          j                      Y nw xY w	 d d d            n# 1 swxY w Y   |                     d|                                           |                     d          5 }	 |                    t4          t7          dd          d           |                     d           n# t
          $ r}|}Y d }~nd }~ww xY w|                     t          |          t8                     |                     |j        d            d d d            n# 1 swxY w Y   |                                 d S d S )Nr   r   zexpected RuntimeError)r  z&raise RuntimeError(123) # some commentrF   zexpected SayWhenError)r   r  r  rF  rn   rm   r   rs  r  r8  rp   rV   	__cause__r   r  RemoteTracebackrr   tbrL  r   rM  r   
excepthookexc_infogetvaluer  r  r  r  )ru   r   r  exccausef1s         r   test_tracebackz_TestPool.test_traceback
  sA    9##1 77GGD0111 II56666 !   CCCCCC7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 FFHHHMM$s))\222SXv...MEMM$u++';'KLLLMMBEHMMM--// 424I# 4 4 4NCLNN333343	4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
 MMB++--) ) ) 1 37EE#;ArBBAFFF II56666 !   CCCCCC d3ii666cmT2223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 FFHHHHHC $#s   A9AA9
A*A% A9%A**A99A= A=FE)E=:F<E==FFFI?*HI?
H-!H(#I?(H--AI??JJc                      t          d          )Nrb  r7  r/  s    r   _test_wrapped_exceptionz!_TestPool._test_wrapped_exception
  s    5!!!r   c                     |                      d          5 }|                     t                    5  |                    | j                   d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |                                 d S r   )r  rq   r8  r  rS  r   rS  s     r   test_wrapped_exceptionz _TestPool.test_wrapped_exception
  s     YYq\\ 	6Q""<00 6 645556 6 6 6 6 6 6 6 6 6 6 6 6 6 6	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	
s4   A/AA/A	A/A	 A//A36A3c                 x   t          j                    }|                     t                    5  |                     d          5 }	 |                    t          ddg           t          j        d           |                                 |	                                 nA# t          j        d           |                                 |	                                 w xY w	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   | 
                    t          j                    |z
  d           d S )Nr  r   r   r  g?)r   r   rq   rJ   r  r  r  r  r"   r   assertGreater)ru   t_startr   s      r   test_map_no_failfastz_TestPool.test_map_no_failfast
  s    .""z** 	 	1 EE/!Q888JsOOOGGIIIFFHHHH JsOOOGGIIIFFHHHHH              	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	4>++g5s;;;;;sM   DC.B #=C. >CC."D.C2	2D5C2	6DD	D	c                    d t          d          D             }d |D             }| j                            t          |           ~t	          j                     t          j        t                     | 	                    t          d |D                       d h           | 	                    t          j        d           d S )Nc                 *    g | ]}t                      S r_   )r  r  s     r   r|  z4_TestPool.test_release_task_refs.<locals>.<listcomp>  s    333A333r   r:  c                 6    g | ]}t          j        |          S r_   )ro  rp  )r{  os     r   r|  z4_TestPool.test_release_task_refs.<locals>.<listcomp>  s     ---1A---r   c              3   *   K   | ]} |            V  d S r   r_   )r{  rt  s     r   r  z3_TestPool.test_release_task_refs.<locals>.<genexpr>  s(      11bRRTT111111r   r   )rW  r  r  r  rq  rr  r   r  rR  rp   rh  r  r  )ru   objsrefss      r   test_release_task_refsz _TestPool.test_release_task_refs  s     43r333-----	h%%%


511D11111D6::: 	2A66666r   c                 h   | j         dk    r|                     d           |                     d          }|5  	 d d d            n# 1 swxY w Y   |                     t                    5  |5  	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |                                 d S )Nr   test not applicable to managerr   )r   r   r  rq   rJ   r   ru   r  s     r   
test_enterz_TestPool.test_enter  sk   9	!!MM:;;;yy|| 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 z** 	 	                	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 			sG   AA
A
+B.A<0B<B 	 BB 	BBBc                 ~   | j         dk    r|                     d           |                     d          }|                                 |                                 t
          j        j        |_        t          j
        dt          f          5  d }t          j                     d d d            d S # 1 swxY w Y   d S )Nr   rc  r   z%unclosed running multiprocessing pool)r   r   r  r  r   r   r  RUN_stater
   check_warningsResourceWarningr   
gc_collectrd  s     r   test_resource_warningz_TestPool.test_resource_warning   s    9	!!MM:;;;yy||		 &*.+8/JL L 	! 	!D   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!s   B22B69B6)$rz   r{   r|   r  r  r  r  r  r  r  r  r  r  r  r!  r%  r'  r-  r/  r2  r5  r:  rD  r?  rD  rF  rK   r~   rQ  rS  rU  rY  ra  re  rl  __classcell__r  s   @r   r  r  	  sV           [         [ = = =
; ; ;? ? ?? ? ?
: : :8 8 8) ) )L L L5 5 54< < <  6 6 65 5 54H H H". ". ".H    "
 
 
? ? ?     [  X_T@AA$ $ BA$L " " [" X_T@AA  BA< < <(7 7 7   ! ! ! ! ! ! !r   r  c                       t          d          )Nkey)KeyErrorr_   r   r   raisingrr  0  s    
5//r   c                      d S )Nc                      dS )N*   r_   r_   r   r   r  z%unpickleable_result.<locals>.<lambda>4  s    2 r   r_   r_   r   r   unpickleable_resultrv  3  s
    :r   c                       e Zd ZdZd Zd ZdS )_TestPoolWorkerErrorsr  c                    t          j        d          }d gfd}|                    t          |          }|                     t
          |j                   |                     d                    |                     d         t
                     |	                                 |
                                 d S )Nr  c                     | d<   d S r  r_   rN  
scratchpads    r   errbackz@_TestPoolWorkerErrors.test_async_error_callback.<locals>.errback=  s    JqMMMr   r  r   )r   r  r$  rr  rq   rq  r   r   r   r"   r   )ru   r   r}  r   r|  s       @r   test_async_error_callbackz/_TestPoolWorkerErrors.test_async_error_callback9  s     ##V
	  	  	  	  	  mmGGm<<(CG,,,
1&&&jmX666					r   c                    ddl m} t          j        d          }t	          d          D ]}d gfd}|                    t          |          }|                     ||j                   d         }| 	                    |           | 
                    d         |           |                     |j                   |                     |j                   |                                 |                                 d S )Nr   )MaybeEncodingErrorr  r  c                     | d<   d S r  r_   r{  s    r   r}  z@_TestPoolWorkerErrors._test_unpickleable_result.<locals>.errbackP  s     #
1r   r~  )multiprocess.poolr  r   r  rW  r$  rv  rq   r   r   r   assertIsNotNonerN  r   r"   r   )ru   r  r   	iterationr}  r   wrappedr|  s          @r   _test_unpickleable_resultz/_TestPoolWorkerErrors._test_unpickleable_resultH  s   888888 ## r 	0 	0IJ$ $ $ $ $ -- 3G-LLC0#'::: mGOOG$$$!!*Q-1CDDD  ---  ////					r   N)rz   r{   r|   r   r  r  r_   r   r   rx  rx  6  s7        #M      r   rx  c                   *    e Zd ZdZd Zd Zd Zd ZdS )_TestPoolWorkerLifetimer  c                    t          j        dd          }|                     dt          |j                             d |j        D             }g }t          d          D ]1}|                    |                    t          |f                     2t          |          D ]:\  }}|                     |
                                t          |                     ;|                                 d}|r\t          d |j        D                       s>|dz  }t          j        t                     |rt          d |j        D                       >d	 |j        D             }|                     d |           |                     d |           |                     t%          |          t%          |                     |                                 |                                 d S )
Nr  r:  maxtasksperchildc                     g | ]	}|j         
S r_   r   r{  r  s     r   r|  zE_TestPoolWorkerLifetime.test_pool_worker_lifetime.<locals>.<listcomp>d  s    111A!%111r   r-  2   c              3   >   K   | ]}|                                 V  d S r   r   r  s     r   r  zD_TestPoolWorkerLifetime.test_pool_worker_lifetime.<locals>.<genexpr>r  s*      #B#BQAJJLL#B#B#B#B#B#Br   r   c                     g | ]	}|j         
S r_   r  r  s     r   r|  zE_TestPoolWorkerLifetime.test_pool_worker_lifetime.<locals>.<listcomp>u  s    222Q15222r   )r   r  rp   r   r8  rW  r]  r$  r  	enumerater   _repopulate_poolallr   r  rR  r  r&  r  r"   r   )	ru   r   origworkerpidsr  rZ  rG  r   	countdownfinalworkerpidss	            r   test_pool_worker_lifetimez1_TestPoolWorkerLifetime.test_pool_worker_lifetimea  s    R888CLL)))11111s 	6 	6ANN1==qe445555 "'** 	0 	0HQSWWYYA////	 	 	#B#B!'#B#B#B B B 	NIJu  	#B#B!'#B#B#B B B 	 32!'222~...///F>22F?4K4KLLL					r   c                    t          j        dd          }g }t          d          D ]2}|                    |                    t
          |df                     3|                                 |                                 t          |          D ]:\  }}| 	                    |
                                t          |                     ;d S )Nr  r   r  r  g333333?)r   r  rW  r]  r$  r  r"   r   r  rp   r   )ru   r   r  rZ  rG  r   s         r   %test_pool_worker_lifetime_early_closez=_TestPoolWorkerLifetime.test_pool_worker_lifetime_early_close~  s      Q777q 	9 	9ANN1==q#h778888					!'** 	0 	0HQSWWYYA////	0 	0r   c                     dD ]J}|                      t                    5  t          j        d|           d d d            n# 1 swxY w Y   Kd S )N)r   rF   r  12r  r  )rq   rJ   r   r  )ru   r   s     r   "test_pool_maxtasksperchild_invalidz:_TestPoolWorkerLifetime.test_pool_maxtasksperchild_invalid  s    ' 	@ 	@E"":.. @ @$Q????@ @ @ @ @ @ @ @ @ @ @ @ @ @ @	@ 	@s   AA		A	c                     d}t          j        j        j        d|fi t          \  }}}|                     |d           d S )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   )rL  r   r   assert_python_okENVrp   ru   cmdrl  outrv   s        r   >test_worker_finalization_via_atexit_handler_of_multiprocessingzV_TestPoolWorkerLifetime.test_worker_finalization_via_atexit_handler_of_multiprocessing  sM     |1B4TTPSTTCQr   N)rz   r{   r|   r   r  r  r  r  r_   r   r   r  r  ^  sX        #M  :0 0 0@ @ @
         r   r  )BaseManager	BaseProxyr7  c                        e Zd Zd Zd Zd ZdS )FooBarc                     dS )Nf()r_   r   s    r   r  zFooBar.f  s    ur   c                     t           r   )rJ   r   s    r   gzFooBar.g  s    r   c                     dS )N_h()r_   r   s    r   _hz	FooBar._h  s    vr   N)rz   r{   r|   r  r  r  r_   r   r   r  r    sA                r   r  c               #   <   K   t          d          D ]	} | | z  V  
d S r  )rW  )rZ  s    r   bazr    s4      2YY  c				 r   c                       e Zd ZdZd Zd ZdS )IteratorProxy)r  c                     | S r   r_   r   s    r   r  zIteratorProxy.__iter__  s    r   c                 ,    |                      d          S )Nr  )_callmethodr   s    r   r  zIteratorProxy.__next__  s    
+++r   N)rz   r{   r|   	_exposed_r  r  r_   r   r   r  r    s7        I  , , , , ,r   r  c                       e Zd ZdS )	MyManagerNr  r_   r   r   r  r    s        Dr   r  Foo)callableBar)r  r  )r  exposedr  )r  	proxytypec                   *    e Zd ZdZd Zd Zd Zd ZdS )_TestMyManagerr  c                    t          t                    }|                                 |                     |           |                                 |                     |j        j        dt          j	         f           d S N)shutdown_timeoutr   )
r  SHUTDOWN_TIMEOUTr   commonshutdownrr   _processr   r<  rB  ru   r   s     r   test_mymanagerz_TestMyManager.test_mymanager  so    -=>>>G
 	g&/!fn_1EFFFFFr   c                     t          t                    }|5  |                     |           d d d            n# 1 swxY w Y   |                     |j        j        dt          j         f           d S r  )r  r  r  rr   r  r   r<  rB  r  s     r   test_mymanager_contextz%_TestMyManager.test_mymanager_context  s    -=>>> 	! 	!KK   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!
 	g&/!fn_1EFFFFFs   :>>c                     t          t                    }|                                 |5  |                     |           d d d            n# 1 swxY w Y   |                     |j        j        d           d S r  )r  r  r   r  rp   r  r   r  s     r   !test_mymanager_context_prestartedz0_TestMyManager.test_mymanager_context_prestarted  s    -=>>> 	! 	!KK   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!)2A66666s   AAAc                    |                                 |                                |                                }fddD             }fddD             }|                     |ddg           |                     |ddg           |                                                     d           |                     t          j                   |                                         d          d           |                     t          j        d           |                                                     d           |                     
                                d           |                                         d          d           |                                         d          d           |                     t          |          d	 t          d
          D                        d S )Nc                 4    g | ]}t          |          |S r_   r;  )r{  r1   rb  s     r   r|  z)_TestMyManager.common.<locals>.<listcomp>  (    OOOGC<N<NOtOOOr   )r  r  r  c                 4    g | ]}t          |          |S r_   r  )r{  r1   bars     r   r|  z)_TestMyManager.common.<locals>.<listcomp>  r  r   r  r  r  r  r  c                     g | ]}||z  S r_   r_   r  s     r   r|  z)_TestMyManager.common.<locals>.<listcomp>  s    $<$<$<QQqS$<$<$<r   r:  )r  r  r  rp   r  rq   rJ   r  r  r7  r  r   rW  )ru   r   r  foo_methodsbar_methodsr  rb  s        @@r   r  z_TestMyManager.common  s   kkmmkkmmkkmmOOOO(8OOOOOOO(8OOOsCj111sDk222%(((*ce,,,--u555+s===%(((6***--u555..777c$<$<%))$<$<$<=====r   N)rz   r{   r|   r   r  r  r  r  r_   r   r   r  r    s[         M	G 	G 	GG G G7 7 7> > > > >r   r  c                      t           S r   )_queuer_   r   r   	get_queuer    s    Mr   c                       e Zd ZdZdS )QueueManagerz$manager class used by server processNrz   r{   r|   r}   r_   r   r   r  r    s        ....r   r  r  c                       e Zd ZdZdS )QueueManager2z@manager class which specifies the same interface as QueueManagerNr  r_   r   r   r  r    s        JJJJr   r  	xmlrpclibc                   J    e Zd ZdZg dZedd         Zed             Zd ZdS )_TestRemoteManagerr  )hello worldNT      @u   hallå världenu   привіт світs   hall vrldenNc                     t          ||t          t                    }|                                 |                                }|                    t          | j                             d S )Naddressr   
serializerr  )r  
SERIALIZERr  connectr  r   r   rY  r   r  r   r   r$   s        r   _putterz_TestRemoteManager._putter  se    W-/ / / 	!!##		%
##$$$$$r   c                    t          j        d          }t          t          j        df|t
          t                    }|                                 |                     |j	                   | 
                    | j        |j        |f          }d|_        |                                 t          |j        |t
          t                    }|                                 |                                }|                     |                                | j                   |                     t*          |j        t.          j                   ~d S )N    r   r  r   T)rG   urandomr  r   HOSTr  r  r   rg  r  r   r  r  r   r  r  r  rp   r   r^  rq   rm   r   r   r  )ru   r   r   r   manager2r$   s         r   test_remotez_TestRemoteManager.test_remote!  s   *R.."'+W-/ / / 	()))LLGOW3MLNN				 OW-/ / / 	""$$dk222 	)UY
;;; EEr   )	rz   r{   r|   r   rY  r^  r  r  r  r_   r   r   r  r    sa         M  F
 AAAYF% % [%    r   r  md5c                   *    e Zd Zed             Zd ZdS )_TestManagerRestartc                     t          ||t          t                    }|                                 |                                }|                    d           d S )Nr  r  )r  r  r  r  r  r   r  s        r   r  z_TestManagerRestart._putterA  s[    W-/ / / 	!!##		-     r   c                 v   t          j        d          }t          t          j        df|t
          t                    }	 |                                }|j        }|j	        
                                 |                                 |                     | j        |j        |f          }|                                 |                                 |                                }|                     |                                d           ~t%          |d          r|                                 n*# t%          |d          r|                                 w w xY wt          ||t
          t                    }	 |                                 |                     |j                   d S # t*          $ r}|j        t,          j        k    r t1          j        d           t          ||t
          t                    }t%          |d          r |                     |j                   Y d }~d S Y d }~d S d }~ww xY w)Nr  r   r  r   r  r  r8  )rG   r  r  r   r  r  r  
get_serverr  listenerr"   r   r   r  r   r  rp   r   r;  r  rg  OSErrorerrno
EADDRINUSEr   r  )ru   r   r   srvraddrr   r$   r  s           r   test_rapid_restartz&_TestManagerRestart.test_rapid_restartJ  s?   *R.."'+W!4DF F F	#%%''D<D M!!!MMOOODL7QRRAGGIIIFFHHH%%''EUYY[[-888w
++ #  """ w
++ #  """"# 'j-/ / /	2MMOOOOOG,----- 
	2 
	2 
	2w%*** JsOOO"g*!13 3 3G w
++ 2 01111111112 2 2 2 2 2
	2s%   CD4 4'E<.F, ,
H86A1H33H8N)rz   r{   r|   r  r  r  r_   r   r   r  r  >  s>         ! ! [!'2 '2 '2 '2 '2r   r   c            	          e Zd ZdZed             Zd Zd Zd Zd Z	ed             Z
edd	            Z ej        ed
          d             Z ej        ed
           ej        ej        dk    d           ej        edk    d           ej         eed          d          d                                                 Zed             Z ej        ed
           ej        ej        dk    d          d                         Zd ZdS )_TestConnectionr   c                     t          |j        t                    D ]}|                    |           |                                 d S r   )r  
recv_bytesSENTINEL
send_bytesr"   )r   rC  msgs      r   _echoz_TestConnection._echo}  sC    22 	! 	!COOC    

r   c                    |                                  \  }}|                     | j        |f          }d|_        |                                 g d}t          d          }|dz  }t          j        dt          t          d                              }| j	        dk    r:| 
                    t          |                                          t                     | 
                    |                    |          d            | 
                    |                                |           | 
                    |                    |          d            | 
                    |                                |           | j	        dk    rNt          j        dd	gdz            }t          |          d	gdt%          |          z
  z  z   }	| 
                    |                    |          d            | 
                    |                    |          t%          |          |j        z             | 
                    t          |          |	           t          j        dd	gdz            }d	gd
z  t          |          z   d	gdt%          |          z
  z  z   }	| 
                    |                    |          d            | 
                    |                    |d
|j        z            t%          |          |j        z             | 
                    t          |          |	           t+          t          d                    }| 
                    |                    |          d            	 |                    |          }
|                     d|
z             n8# t.          j        $ r&}| 
                    |j        |f           Y d }~nd }~ww xY wt5          |j                  }| 
                     |            d           |                     |j        d	           | 
                     |d          d           |                     |j        d	           | 
                     |t<                    d           |                     |j        t<                     |                    d            t?          j         d           | 
                     |t<                    d           |                     |j        d	           | 
                    |                                d            t          d          dz  }|                    |           | 
                    |                                |           |                    tB                     |"                                 | j	        dk    rv| 
                    |j#        d           | 
                    |j$        d           | %                    tL          |j                   | %                    tL          |j                   |'                                 d S )Nr   T)r   r  Nr  r:  rZ  rf   r   r   r  r  z(                                        zexpected BufferTooShort, got %sFrF   r   Xi   )(r   r   r
  r   r   r   r  r   rW  r   rp   r  filenorM  r  r   r  r  r   recv_bytes_intoitemsize	bytearrayrn   r   BufferTooShortrV   r   r
  r   r   r  r   r  r  r"   readablewritablerq   EOFErrorr   )ru   rC  r  r   r{  r	  longmsgr  bufferr_  r   r  r
  really_big_msgs                 r   test_connectionz_TestConnection.test_connection  sl   99;;jLL
*L??				ooM""(k#tE!HH~~..9##T$++--00#6663...c***--t444**C0009##[qc"f--FCyyA3"s3xx-#88HT__S114888T11&99 XX79 9 9T&\\8444[qc"f--FsQwc*aSFSXX4E-FFHT__S114888T11&!fo:MNN XX79 9 9T&\\8444uX//FT__W55t<<<C**622 		;cABBBB #1 5 5 5  '444444445
 TY'''''$$T\1555b5)))$$T\1555h///$$T\8<<<		$
2h...$$T\1555d+++s'78'''**N;;;!!!9##T]D111T]D111h	222h888	s   2N   O/OOc                    |                      d          \  }}|                     |                    d          d            |                     |                                d           | j        dk    r|                     |j        d           |                     |j        d           |                     |j        d           |                     |j        d           |                     t          |j        d           |                     t          |j                   |                     t          |j	                   d S d S )NFr   r   r   Tr  )
r   rp   r  r   r   r  r  rq   r  r
  )ru   readerwriters      r   test_duplex_falsez!_TestConnection.test_duplex_false  s   %00Q...***9##V_d333V_e444V_e444V_d333gv{A666gv{333gv{33333 $#r   c                    |                                  \  }}|                     | j        |f          }d|_        |                                 |                                 t          d          }|                    |           |                     |	                                |           |                    t                     |                                 |                                 d S )Nr   Tr  )r   r   r
  r   r   r"   r   r  rp   r  r  r   )ru   rC  r  r   r	  s        r   test_spawn_closez _TestConnection.test_spawn_close  s      99;;jLL
*L??				Gnn**C000!!!

	r   c                    | j         dk    r-|                     d                    | j                              t          d          }|                                 \  }}|                    |           |                     |                                |           |                    |d           |                     |                                |dd                     |                    |dd           |                     |                                |dd                    |                    |d           |                     |                                t          d	                     |                    |dd
           |                     |                                t          d	                     |                     t          |j        |d           |                     t          |j        |dd           |                     t          |j        |dd           |                     t          |j        |d           |                     t          |j        |dd           d S )Nr   r   abcdefghijklmnopqrstuvwxyzr   r  r         r  r         r   rF   rf   )
r   r   r   r   r   r  rp   r  rq   rJ   )ru   r	  r   r   s       r   test_sendbytesz_TestConnection.test_sendbytes  s   9##MM7>>tyIIJJJ011yy{{1	S---	S!QRR111	S!QQsU444	S"r333	S"a   r333*alC<<<*alCQ???*alCQ???*alC<<<*alCB?????r   c                     	 t          j        |           dS # t          $ r!}|j        t          j        k    rY d }~dS  d }~ww xY wrh  )rG   fstatr  r  EBADF)r   r  r  s      r   _is_fd_assignedz_TestConnection._is_fd_assigned  s[    	HRLLL 4  	 	 	w%+%%uuuuu	s    
A>>AFc                 n   |rOt          dd          D ]>}|                     |          s't          j        |                                |           ?t          j        |          }t          rt          j        |t          j	                  }t          j
        ||           t          j        |           d S )Nr   r=   )rW  r)  rG   dup2r  r   recv_handlemsvcrtopen_osfhandler  r:  r"   )r   rC  datacreate_dummy_fdsrZ  r  s         r   _writefdz_TestConnection._writefd  s     	.1c]] . .**1-- .GDKKMM1---"4(( 	8&r2;77B
T
r   $test needs multiprocessing.reductionc                    | j         dk    r|                     d           |                     d          \  }}|                     | j        |df          }d|_        |                                 |                     t          j	        t          j
                   t          t          j
        d          5 }|                                }t          rt          j        |          }t          j        |||j                   d d d            n# 1 swxY w Y   |                                 t          t          j
        d          5 }|                     |                                d           d d d            d S # 1 swxY w Y   d S )	Nr   only makes sense with processesTr   s   foor   wbrb)r   r   r   r   r1  r   r   rg  r   r  r  r  r  r-  get_osfhandler   send_handler   r   rp   r  )ru   rC  r  r   r  r  s         r   test_fd_transferz _TestConnection.test_fd_transfer+  s   9##MM;<<<99D911jLLZ4HLII					()*:;;;)"D)) 	3QB .)"--!$AE222		3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3
 	
)"D)) 	/QQVVXXv...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s%   7ADDD)E==FFr5   *test semantics don't make sense on Windowsr=   z)largest assignable fd number is too smallr+  ztest needs os.dup2()c                    | j         dk    r|                     d           |                     d          \  }}|                     | j        |ddf          }d|_        |                                 |                     t          j	        t          j
                   t          t          j
        d          5 }|                                }t          dt                    D ]}|                     |          s n|                     d	           t#          j        ||           	 t'          j        |||j                   t#          j        |           n# t#          j        |           w xY w	 d d d            n# 1 swxY w Y   |                                 t          t          j
        d
          5 }|                     |                                d           d d d            d S # 1 swxY w Y   d S )Nr   r4  Tr   s   barr   r5  r=   z2could not find an unassigned large file descriptorr6  )r   r   r   r   r1  r   r   rg  r   r  r  r  r  rW  MAXFDr)  rn   rG   r+  r   r8  r   r"   r   rp   r  )ru   rC  r  r   r  r  newfds          r   test_large_fd_transferz&_TestConnection.test_large_fd_transfer>  s<    9##MM;<<<99D911jLLZ4NLOO					()*:;;;)"D)) 	 QBsE** P P++E22 E 		NOOOGB %dE15999	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	
)"D)) 	/QQVVXXv...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s=   8A.E='EE=E--E==FF6)G,,G03G0c                 T    t          j        |                                d           d S )N    )rG   r:  r  ru   rC  s     r   _send_data_without_fdz%_TestConnection._send_data_without_fd_  s"    
&&&&&r   zdoesn't make sense on Windowsc                 \   | j         dk    r|                     d           |                     d          \  }}|                     | j        |f          }d|_        |                                 |                     t          t          j
        |           |                                 d S )Nr   r4  Tr   r   )r   r   r   r   rB  r   r   rq   r8  r   r,  r   ru   rC  r  r   s       r   test_missing_fd_transferz(_TestConnection.test_missing_fd_transferc  s    
 9##MM;<<<99D911jLL :*LOO				,	(=tDDD	r   c                    |                                  \  }}|5  |5  |                    d           |                     |                                d           | j        dk    r4|                     |j                   |                     |j                   d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   | j        dk    rv|                     |j                   |                     |j                   |                     t          |j                   |                     t          |j                   d S d S N  r   )
r   r  rp   r   r   r   closedr   rq   r  r   s      r   rD  z_TestConnection.test_contextr  s   yy{{1 	+ 	+ 	+ 	+FF4LLLQVVXXt,,,yK''  ***  ***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 9##OOAH%%%OOAH%%%gqv...gqv.....	 $#s5   B=A=B&B=&B*	*B=-B*	.B==CCNr  )rz   r{   r|   r   r  r
  r  r  r  r%  r)  r1  rK   r  HAS_REDUCTIONr9  r~   r   r   r<  r;  rG   r>  rB  rE  rD  r_   r   r   r  r  y  s       ,M  [
M M M^4 4 4  *@ @ @@   [ 	 	 	 [	 X(NOO/ / PO/$ X(NOOX_S\W,AC CX_Uc\@B BXV,,/1 1/ /1 1B BC C PO/4 ' ' [' X(NOOX_S\W,.MNN  ON PO/ / / / /r   r  c                   b    e Zd ZdZd Zd Zd Z ej        e	j
        d          d             ZdS )_TestListenerr  c                     | j         j        D ]c}| j                             |          }|                     |j                   |                     t          | j         j        |j        |           dd S )Nfamily)
connectionfamiliesListenerrg  r"   rq   r  r  )ru   rO  r  s      r   test_multiple_bindz _TestListener.test_multiple_bind  sy    o. 	1 	1F(((77AOOAG$$$gt'?i1 1 1 1	1 	1r   c                    | j                                         5 }| j                             |j                  5 }|                                5 }|                    d           |                     |                                d           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   | j        dk    r"| 	                    t          |j                   d S d S rG  rP  rR  Clientr  acceptr  rp   r   r   rq   r  )ru   r  r   rK  s       r   rD  z_TestListener.test_context  s   _%%'' 	51''	22 5aXXZZ 51FF4LLL$$QVVXXt4445 5 5 5 5 5 5 5 5 5 5 5 5 5 55 5 5 5 5 5 5 5 5 5 5 5 5 5 5	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 9##gqx00000 $#sX    CB0>BB0BB0 B!B0$C0B4	4C7B4	8CCCc                     d } fd}d} j                             |          5 }t          j        ||j        |f          }|                                 	 |                                5 }                     |                                d           d d d            n# 1 swxY w Y   |	                                 n# |	                                 w xY w	 d d d            n# 1 swxY w Y    j
        dk    rI                     t                    5  |                                 d d d            d S # 1 swxY w Y   d S d S )Nc                       t          d          )NzConnection took too long...r7  r  s    r   r9  z1_TestListener.test_empty_authkey.<locals>.handler  s    <===r   c                 j    j                             | |          }|                    d           d S )Nr   rH  )rP  rV  r  )r   r   clientru   s      r   r  z-_TestListener.test_empty_authkey.<locals>.run  s5    _++D'+BBFKKr   r   r[  r   rH  r   )rP  rR  r"  r  r  r   rW  rp   r   r   r   rq   r  )ru   r9  r  rp  r  threadrK  s   `      r   test_empty_authkeyz _TestListener.test_empty_authkey  s   	> 	> 	>	 	 	 	 	 _%%c%22 	h%S8H#7NOOOFLLNNN__&& 5!$$QVVXXt4445 5 5 5 5 5 5 5 5 5 5 5 5 5 5 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 9##""7++ " "!!!" " " " " " " " " " " " " " " " " " $#s_   2C)C.)B#C#B'	'C*B'	+C.C)CC))C-0C-D;;D?D?z"test needs abstract socket supportc                    | j                             d          5 }| j                             |j                  5 }|                                5 }|                    d           |                     |                                d           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   | j        dk    r"| 	                    t          |j                   d S d S )Nz
 somethingrH  r   rU  )ru   r  r\  rK  s       r   test_abstract_socketz"_TestListener.test_abstract_socket  s    _%%m44 	5''(899 5V__&& 5!KK%%%$$QVVXXt4445 5 5 5 5 5 5 5 5 5 5 5 5 5 55 5 5 5 5 5 5 5 5 5 5 5 5 5 5	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 9##gx77777 $#sX    CB1>BB1BB1!B"B1%C1B5	5C8B5	9CCCN)rz   r{   r|   r   rS  rD  r^  rK   r  r   abstract_sockets_supportedr`  r_   r   r   rL  rL    s{        "M1 1 11 1 1" " "0 X8=? ?8 8? ?8 8 8r   rL  c                   :    e Zd ZdZed             Zd Zd Zd ZdS )_TestListenerClientr   c                     | j                             |          }|                    d           |                                 d S )Nr  )rP  rV  r  r"   )r   r  rC  s      r   r   z_TestListenerClient._test  s:    ~$$W--		'

r   c                    | j         j        D ]}| j                             |          }|                     | j        |j        f          }d|_        |                                 |                                }| 	                    |
                                d           |                                 |                                 d S )NrN  r   Tr  )rP  rQ  rR  r   r   r  r   r   rW  rp   r   r   r"   )ru   rO  r  r   rC  s        r   test_listener_clientz(_TestListenerClient.test_listener_client  s    o. 	 	F(((77ADJai\BBAAHGGIII88::DTYY[['222FFHHHGGIIII	 	r   c                    | j                                         }|                     | j        |j        f          }d|_        |                                 t          j        d           |	                                }| 
                    |                                d           |                                 |                                 |                                 d S )Nr   Tr   r  )rP  rR  r   r   r  r   r   r   r  rW  rp   r   r"   r   )ru   r  r   rC  s       r   test_issue14725z#_TestListenerClient.test_issue14725  s    O$$&&LL
!)L>>				
1
 xxzzg...

							r   c                    | j         j        D ]}| j                             |          }| j                             |j                  }|                                }|                    d           |                     |                    d                     |	                                 |	                                 |	                                 d S )NrN     hellor   )
rP  rQ  rR  rV  r  rW  r  r   r
  r"   )ru   famr  r   r   s        r   test_issue16955z#_TestListenerClient.test_issue16955  s    ?+ 	 	C(((44A&&qy11A

ALL"""OOAFF1II&&&GGIIIGGIIIGGIIII	 	r   N)	rz   r{   r|   r   r  r   rf  rh  rl  r_   r   r   rc  rc    s_        ,M  [
	 	 	   	 	 	 	 	r   rc  c                   l    e Zd ZdZd Zed             Zd Zed             Zd Z	ed             Z
d Zd	S )
	_TestPollr   c                 N   |                                  \  }}|                     |                                d           |                    d           |                     |                                d           |                     |                                d           d S )NFr   T)r   rp   r
  r  r   s      r   test_empty_stringz_TestPoll.test_empty_string  s    yy{{15)))	S4(((4(((((r   c                     |D ]+}t          j        d           |                    |           ,|                                 d S Nr   )r   r  r  r"   )r   rC  stringsr   s       r   _child_stringsz_TestPoll._child_strings  sD     	 	AJsOOOOOA

r   c                 t   d}|                                  \  }}|                     | j        ||f          }|                                 |D ]U}t	          d          D ]}|                    d          r n|                                }|                     ||           V|                                 d S )N)rj  r      a   br   s   byer   s   lopr      ry  )	r   r   rt  r   rW  r
  r  rp   r   )ru   rs  r   r   r   r   rZ  rP  s           r   test_stringsz_TestPoll.test_strings  s    Gyy{{1LL 31g,LGG				 	# 	#A3ZZ  66$<< EAQ""""	r   c                 0    |                     d           d S r   )r
  )r   rC  s     r   _child_boundariesz_TestPoll._child_boundaries  s     	
q					r   c                    |                      d          \  }}|                     | j        |f          }|                                 t	          j        d           ddg}|D ]}|                    |           |                                 |                                 | 	                    |
                                |           d S )NFr   r  s   firsts   second)r   r   r{  r   r   r  r  r"   r   rr   r  )ru   rC  r  r   rB  r0  s         r   test_boundariesz_TestPoll.test_boundaries  s    yy1LL 6aTLBB				
1y! 	 	CLL					allnna(((((r   c                     |                     d           |                     d           |                     d           d S )Nrv  rw     cd)r  )r   r   s     r   _child_dont_mergez_TestPoll._child_dont_merge!  s>    	T	T	Ur   c                    |                                  \  }}|                     |                    d          d           |                     |                    d          d           |                     | j        |f          }|                                 |                     |                                d           |                     |                    d          d           |                     |                    d          d           |                     |                                d           |                     |                    d          d           |                     |                    d          d           |                     |                    d          d           |                     |                                d	           |                                 d S )
Nr9   Fr   r   rv  r8  Trw  r  )r   rp   r
  r   r  r   r  r   )ru   r   r   r   s       r   test_dont_mergez_TestPoll.test_dont_merge'  s   yy{{1e,,,e,,,LL 6aTLBB				...d+++d+++...d+++d+++d+++///	r   N)rz   r{   r|   r   rp  r  rt  ry  r{  r}  r  r  r_   r   r   rn  rn    s        ,M) ) )   [     [
) 
) 
)   [
    r   rn  r2  c                   v    e Zd ZdZed             Zed             Zed             Zd Zed             Z	d Z
dS )	_TestPicklingConnectionsr  c                 R    ddl m} |                    t          j                   d S )Nr   )resource_sharerr(   )multiprocessr  r  r   r  )r   r  s     r   r  z&_TestPicklingConnections.tearDownClassD  s4    000000W%9:::::r   c                 z   |D ]}| j                             |          }|                    |j                   |                                }|                    |           |                                 |                                 t          j        t          j	        df          }|                    |
                                           |                                \  }}|                    |           |                                 |                                 |                                 d S )NrN  r   )rP  rR  r  r  rW  r"   socketcreate_serverr   r  getsocknamer   )r   rC  rQ  rk  r  new_connr   s          r   	_listenerz"_TestPicklingConnections._listenerI  s     	 	C''s'33AIIai   xxzzHIIhNNGGIIII -"4a!899		!--//"""$		(						r   c                    t          |j        d           D ]Z\  }}| j                            |          }|                    |                                           |                                 [|                                \  }}t          j                    }|                    |           |	                    |                                           |                                 |                                 d S r   )
r  r   rP  rV  r  r  r"   r  r  sendall)r   rC  r  r	  r\  s        r   _remotez _TestPicklingConnections._remote\  s    "49d33 	 	NWc^**733FKK		$$$LLNNNNyy{{wsyy{{###

r   c                 l   | j         j        }|                                 \  }}|                     | j        ||f          }d|_        |                                 |                                 |                                 \  }}|                     | j        |f          }d|_        |                                 |                                 |D ]}d|z  	                    d          }	|
                                }
|                    |
|	f           |
                                }|                     |
                                |	                                           |                    d            t          d          }	|
                                }
|                    |
|	f           |
                                }g }	 |
                    d          }|sn|                    |           .d                    |          }|                     ||	                                           |                                 |                    d            |                                 |                                 |                                 |                                 d S )Nr   TzThis connection uses family %sasciiz$This connection uses a normal socketr-  r   )rP  rQ  r   r   r  r   r   r"   r  r   r   r  rp   r  r   r]  r   )ru   rQ  lconnlconn0lpr   rconn0rprk  r	  r  r  bufr   s                 r   test_picklingz&_TestPicklingConnections.test_picklingk  s8   ?+		v\\vx6H\II	



		v\\VI\>>	



 	; 	;C3c9AA'JJCjjllGJJ~&&&zz||HX]]__ciikk::::

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

GS>"""::<<	c""A JJqMMM		
 hhsmmciikk***

4
			
					r   c                 (   |                                 }|                    d           |                                 |                                 }|                                 }|                    |dz             |                                 d S )Nall is wellr  )r   r  r"   )r   rC  r  rC  r	  s        r   child_accessz%_TestPicklingConnections.child_access  so    IIKK	}				IIKKffhh		#a%

r   c                    |                                  \  }}|                     | j        |f          }d|_        |                                 |                                 |                      d          \  }}|                    |           |                                 |                     |                                d           |                                 |                      d          \  }}|                    |           |                                 |                    d           |                                 |                     |                                d           |	                                 d S )Nr   TFr   r  foobarfoobarfoobar)
r   r   r  r   r   r"   r  rp   r   r   )ru   rC  r  r   rC  r  s         r   test_accessz$_TestPicklingConnections.test_access  s5     99;;jLL 1LFF				yyy&&1		!				=111				yyy&&1		!					x				j111	r   N)rz   r{   r|   r   r  r  r  r  r  r  r  r_   r   r   r  r  >  s         #M; ; [;   [$   [, , ,\ 	 	 [	    r   r  c                   8     e Zd ZdZ fdZ fdZd Zd Z xZS )	_TestHeapr  c                     t                                                       t          j        j        j        | _        t          j                                        t          j        j        _        d S r   )r  r  r   r  r  _heapold_heapHeapru   r  s    r   r  z_TestHeap.setUp  sG    ',:@3B3G3L3L3N3N*000r   c                 ~    | j         t          j        j        _        t                                                       d S r   )r  r   r  r  r  r  r
  r  s    r   r
  z_TestHeap.tearDown  s/    37=*0r   c           
      ,   d}d}g }t           j        j        j        }d|_        t          |          D ]}t          t          j        dd          dz            }t           j                            |          }|	                    |           t          |          |k    rt          j        |          }||= ~|j        5  g }d}	d}
t          |j                                                  D ]H}|D ]C\  }}}|	                    |j                            |          ||||z
  df           |	||z
  z  }	DI|j                                        D ]J\  }}|D ]B\  }}|	                    |j                            |          ||||z
  df           |
||z
  z  }
CK|                     |	|
z   t+          d |j        D                                  |                                 t          t          |          dz
            D ]}||         d d	         \  }}}||dz            d d	         \  }}}||k    r=|                     ||j        |         j                   |                     |d           p|                     ||           	 d d d            n# 1 swxY w Y   t          j        |           |r|                                 ||                     |j        |j                   |                     t          |j                  d           |                     t          |j                  d           |                     t          |j                  d|j                   |                     t          |j                  d           d S )
N  r  r   r   rF  freeoccupiedc              3   $   K   | ]}|j         V  d S r   r  )r{  arenas     r   r  z&_TestHeap.test_heap.<locals>.<genexpr>  s$       F F F F F F F Fr   r  )r   r  r  r  _DISCARD_FREE_SPACE_LARGER_THANrW  rM  randomlognormvariater]  r   	randranger  r   _len_to_seqrY  _arenasindex_allocated_blocksr  rp   sumsortr  shuffler  _n_frees
_n_mallocs_pending_free_blocks)ru   
iterations	maxblocksblocksr  rZ  r  r   r  r  r  rB  r  r   r  arena_blocksnarenanstartnstops                      r   	test_heapz_TestHeap.test_heap  s   
	 #17/0, z"" 	 	Av,Q22T9::D$22488AMM!6{{Y&&$Y//1I Z 	3 	3CDH$*113344 ) )*+ ) )&E5$JJ 2 25 9 95$ $U
F 4 5 5 5T%Z(DD) (,'='C'C'E'E - -#|#/ - -KE4JJ 2 25 9 95$ $U
J 8 9 9 9e,HH-
 TH_  F F F F FFFH H H HHJJJ3s88A:&& 	3 	3'*1vbqbz$t*-ac(2A2,'F??$$T4<+>+CDDD$$VQ//// $$T62222	3-	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3D 	v 	JJLLL  	 	888T677;;;T\**A...T344a9OPPPT-..22222s   G	JJJc                    t          j                    s2t          j                     |                     t           j                   t          j                    } | j        t           j        g|R   t          j        d           t          d          D ]N}t          j	        
                    d          }t          j	        
                    d          }||_        ||_        Od S )Nr:  r  r   )rq  	isenabledenablerg  disableget_thresholdset_thresholdrW  r   r  r  buddy)ru   
thresholdsrZ  r   r   s        r   test_free_from_gcz_TestHeap.test_free_from_gc  s     |~~ 	(IKKKOOBJ'''%''
(6:6666
 t 	 	A$22155A$22155AAGAGG	 	r   )	rz   r{   r|   r   r  r
  r  r  rm  rn  s   @r   r  r    sz        "MO O O O O    >3 >3 >3@      r   r  c                   $    e Zd ZdefdefdefgZdS )_FoorP  rQ  zN)rz   r{   r|   rA   rB   rC   _fields_r_   r   r   r  r  .  s+        	e	h	j
HHHr   r  c                   B    e Zd ZdZd Zed             Zd	dZd Zd Z	dS )
_TestSharedCTypesr  c                 B    t           s|                     d           d S d S rS  rT  r   s    r   r  z_TestSharedCTypes.setUp9  rU  r   c                 $   |xj         dz  c_         |xj         dz  c_         |xj         dz  c_         |xj        dz  c_        |xj        dz  c_        |xj         dz  c_         t          t	          |                    D ]}||xx         dz  cc<   d S r  )r   rP  rQ  rW  r   )r   rP  rQ  r  rb  r  stringrZ  s           r   _doublez_TestSharedCTypes._double=  s    	1	1	1

s3xx 	 	AFFFaKFFFF	 	r   Fc           	         t          dd|          }t          t          d|          }t          t          d|          }t          t          dd|          }|                     dt          t          d	                    |          }|                     d
d|          }t          d          |_        | 	                    | j
        ||||||f          }d|_        |                                 |                                 |                     |j        d           |                     |j        d           |                     |j        d           |                     |j        d           |                     |j        d           t          d	          D ]!}	|                     ||	         |	dz             "|                     |j        t          d                     d S )NrZ  r  rh  gUUUUUU?rN  r  r  rK  r:  r   r  r  r   T   gUUUUUU?rO  r        @
hellohello)r   rB   rC   r  r  r   rW  r   r   r   r  r   r   r   rp   r   rP  rQ  )
ru   rn  rP  rQ  r  rb  r  r  r   rZ  s
             r   test_sharedctypesz#_TestSharedCTypes.test_sharedctypesH  s   #qt$$$(G$///*gD111D!QT***jjd599ooDj99C$//W~~LLAq!S#v3NLOO					"%%%qw000'***"""suc***r 	0 	0A""3q61Q3////u\':':;;;;;r   c                 2    |                      d           d S )NTrh  )r  r   s    r   test_synchronizez"_TestSharedCTypes.test_synchronize_  s    D)))))r   c                    t          ddd          }t          |          }d|_        d|_        d|_        |                     |j        d           |                     |j        d           |                     |j        d           d S )Nr        @rN  r   )r  r   rP  rQ  r  rp   r   )ru   rb  r  s      r   	test_copyz_TestSharedCTypes.test_copyb  s    1c7##3ii"""suc***(((((r   Nr  )
rz   r{   r|   r   r  r  r  r  r  r  r_   r   r   r  r  5  sx        "M@ @ @   [< < < <.* * *) ) ) ) )r   r  z#requires multiprocess.shared_memoryc                   p   e Zd ZdZed             Zd Z ej        e	j
        dk    d          d             Zd Z ej        dd	          d
             Zd Zd Zd Zd Z ej        ej        dk    d          d             Z ej        ej        dk    d          d             Zd Zd Zd Zd Zd ZdS )_TestSharedMemoryr  c                     t          | t                    rt          j        |           }n| }||j        d t          |          <   |                                 d S r   )r   rs   r   SharedMemoryr  r   r"   )shmem_name_or_objbinary_data	local_smss      r   !_attach_existing_shmem_then_writez3_TestSharedMemory._attach_existing_shmem_then_writes  s]    '-- 	*%23DEEII)I+6	's;'''(r   c                 H    |t          t          j                              z   S r   )rs   rG   r   )ru   prefixs     r   _new_shm_namez_TestSharedMemory._new_shm_name|  s     BIKK((((r   izadded in 3.11.9c                    |                      d          }t          j        |dd          }|                     |j                   |                     t                    5  t          j        |dz   dd           d d d            n# 1 swxY w Y   t          j        rm|j        }	 |dz   |_        |                     t                    5  |                                 d d d            n# 1 swxY w Y   ||_        d S # ||_        w xY wd S )Ntest01_nullT   creater  z aF)	r  r   r  rg  r  rq   rJ   
_USE_POSIX_name)ru   	name_tsmbsms	orig_names       r   *test_shared_memory_name_with_embedded_nullz<_TestSharedMemory.test_shared_memory_name_with_embedded_null  s   &&}55	(4cJJJ
###z** 	R 	R&y5'8SQQQQ	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R# 	&	I&%-	&&z22 ! !JJLLL! ! ! ! ! ! ! ! ! ! ! ! ! ! ! &			I	%%%%	& 	&sB   !BBB'$D  C, D  ,C00D  3C04D   	D	c                 X   |                      d          }t          j        |dd          }|                     |j                   |                     |j        |           |                     |j        d           |                     t          |j
                  |j                   |                     |j        t          |                     |                     t          |j                  t          |                     d|j
        d<   |                     |j
        d         d           t          j        |          }|                     |j
        d         d           |                                 t          j        |d|j        z            }|                     |j        d|j        z             |                                 |                     t                     5  t          j        dd	           d d d            n# 1 swxY w Y   |                     t                     5  t          j        d
           d d d            n# 1 swxY w Y   t"          j                            d          5 }t          j        |                      d          |                      d          g}fd|D             }||_        t          j        dd          }|                     |j                   |                     |j        |d                    ||_        t          j        dd          }|                     |j                   |                     |j        |d                    d d d            n# 1 swxY w Y   t          j        r|                      d          }	t          j        |	dd          }
|                     t0                    5  	 |                     |
j        d           t          j        |	          }|                                 |                                 |
                                 |
                                 n# |
                                 w xY w	 d d d            n# 1 swxY w Y   |                     t2                    5  t          j        |dd          }d d d            n# 1 swxY w Y   t          j        rW G d dt          j                  } ||          }|                     |j        |j                   |                                 |                     t0                    5  t          j        d          }|                                 d d d            n# 1 swxY w Y   |                                 d S )Ntest01_tsmbTr  r  ru  r   r  r  Fr  )multiprocess.shared_memory._make_filename	test01_fn	test02_fnc                     g | ]}|z   S r_   r_   r{  r1   NAME_PREFIXs     r   r|  z?_TestSharedMemory.test_shared_memory_basics.<locals>.<listcomp>      :::D[4':::r   r   test01_dblunlinkr  c                   ,    e Zd Zej        ej        z  ZdS )O_TestSharedMemory.test_shared_memory_basics.<locals>.OptionalAttachSharedMemoryN)rz   r{   r|   rG   r  O_RDWR_flagsr_   r   r   OptionalAttachSharedMemoryr    s        bi/r   r	  test01_notthere)r  r   r  rg  r  rp   r1   rB  r  r   r  rr   rs   r"   
assertLessrq   rJ   rK   mockpatch_SHM_NAME_PREFIXside_effectr  r  FileNotFoundErrorFileExistsError)ru   r  r  also_smssame_smsmock_make_filenamenamesshm1shm2name_dblunlinksms_unosms_duothere_can_only_be_one_smsr	  ok_if_exists_smsnonexisting_smsr  s                   @r   test_shared_memory_basicsz+_TestSharedMemory.test_shared_memory_basics  s   &&}55	(4cJJJ
### 	9---#...CGch777 	chC)))c#(mmSXX... 
R((( !-i88a"--- !-ibkJJJr#({333 z** 	= 	=&d<<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= z** 	5 	5&e4444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5
 ]  79 9 	3<N'8K''44d6H6H6U6UVE ;:::E:::E-2* -TBBBDOODK(((TZq222-2* -TBBBDOODK(((TZq222#	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3& # 	% "//0BCCN#0  G
 ""#455 
% 
%	%++GL$???+8HHGNN$$$MMOOOMMOOO NN$$$$GNN$$$$$
% 
% 
% 
% 
% 
% 
% 
% 
% 
% 
% 
% 
% 
% 
% // 	 	 )6(B) ) )%	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 # 	%0 0 0 0 0]-G 0 0 099)DD-2CH===""$$$ 011 	% 	%+89JKKO""$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 			s   +HHH3III?C5N  NNRA+Q
RQ55RR	R	*SSS)VVVTzfails with dill >= 0.3.5c                 `   t           j                            d          5 }t          j        |                     d          |                     d          g}fd|D             }||_        t          j        dd          }|                     |j	                   | 
                    |j        |d                    ||_        t          j        dd          }|                     |j	                   | 
                    |j        |d                    d d d            d S # 1 swxY w Y   d S )	Nr  	test03_fn	test04_fnc                     g | ]}|z   S r_   r_   r  s     r   r|  zA_TestSharedMemory.test_shared_memory_recreate.<locals>.<listcomp>  r  r   Tr   r  r   )rK   r  r  r   r  r  r  r  rg  r  rp   r  )ru   r  r  r  r  r  s        @r   test_shared_memory_recreatez-_TestSharedMemory.test_shared_memory_recreate  sg    ]  79 9 	3<N'8K''44d6H6H6U6UVE ;:::E:::E-2* -TBBBDOODK(((TZq222-2* -TBBBDOODK(((TZq222#	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3s   C5D##D'*D'c                    |                      t                    5  t          j        dd          }d d d            n# 1 swxY w Y   |                      t                    5  t          j        dd          }d d d            n# 1 swxY w Y   |                      t                    5  t          j        d          }d d d            d S # 1 swxY w Y   d S )NTrF   r  r   r  )rq   rJ   r   r  )ru   sms_invalids     r   #test_invalid_shared_memory_creationz5_TestSharedMemory.test_invalid_shared_memory_creation  s   z** 	K 	K'4DrJJJK	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K z** 	J 	J'4DqIIIK	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J z** 	B 	B'4DAAAK	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	Bs3   >AA#BB
B
+CCCc           	      `   t          t          j        dz             D ]}|                     |          5  t	          j        dd          }|                     |j                   d|j        dd<   t          j	        ||	          }t          j
        |          }|                     |t          j                   |                     |j        |j                   |                     t          |j        dd                   d           |                     t          |j        dd                   d           d
|j        dd<   |                     t          |j        dd                   d
           |                     t          |j        dd                   d
           d|j        dd<   |                     t          |j        dd                   d           |                     t          |j        dd                   d           d d d            n# 1 swxY w Y   d S )Nr   protoTr  r     pickler   r  protocols   newvals   oldval)rW  pickleHIGHEST_PROTOCOLr   r   r  rg  r  r  dumpsloadsr   rp   r1   r   )ru   r)  r  pickled_smssms2s        r   "test_shared_memory_pickle_unpicklez4_TestSharedMemory.test_shared_memory_pickle_unpickle&  sL   62Q677 	B 	BEE** B B#03GGG
+++(! %l3??? |K00%%dM,FGGG  49555  swqs|!4!4i@@@  tx!}!5!5yAAA  )!  swqs|!4!4i@@@  tx!}!5!5yAAA )1  swqs|!4!4i@@@  tx!}!5!5yAAA-B B B B B B B B B B B B B B B	B 	Bs   GH!!H%	(H%	c                    t          t          j        dz             D ]}|                     |          5  t	          j        dd          }d|j        dd<   t          j        ||	          }|                                 |	                                 | 
                    t                    5  t          j        |           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d S )
Nr   r(  Tr  r  r*  r   r  r+  )rW  r-  r.  r   r   r  r  r/  r"   r  rq   r  r0  )ru   r)  r  r1  s       r   .test_shared_memory_pickle_unpickle_dead_objectz@_TestSharedMemory.test_shared_memory_pickle_unpickle_dead_object@  sc   62Q677 	. 	.EE** . .#03GGG(!$l3??? 		

&&'899 . .L---. . . . . . . . . . . . . . .. . . . . . . . . . . . . . .	. 	.s6   A;C(0CC(CC(CC((C,	/C,	c                    t          j        dd          }|                     |j                   |                     | j        |j        df          }d|_        |                                 |	                                 | 
                    t          |j        d d                   d           |                     | j        |df          }d|_        |                                 |	                                 | 
                    t          |j        d d                   d           |                                 d S )NTr  r  s   howdyr   r   s   HELLO)r   r  rg  r  r   r  r1   r   r   r   rp   r   r  r"   )ru   r  r   s      r   #test_shared_memory_across_processesz5_TestSharedMemory.test_shared_memory_across_processesO  s%    (3???
### LL9(H%  
 
 					swrr{++X666 LL9x  
 
 					swrr{++X666		r   r-   z#not feasible in non-posix platformsc                 0   t           j                                        }|                                 |                    t          d                    }t          j        |j        j	        t          j                   |                    t          d                    }|                     t                    5  t          j        t          j                    t          j                   d d d            n# 1 swxY w Y   |                                 d S r  )r   managersSharedMemoryManagerr   ShareableListrW  rG   rH  r  r   r<  r  rq   r  r   r  )ru   smmslsl2s       r   4test_shared_memory_SharedMemoryServer_ignores_sigintzF_TestSharedMemory.test_shared_memory_SharedMemoryServer_ignores_sigintk  s    &::<<		 uRyy))
 	 &-000b		** 011 	0 	0GBIKK///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	s   :1C77C;>C;zresource_tracker is posix onlyc                     d}t          j        j        j        d|fi t          \  }}}|                     |           d S )Nzif 1:
            from multiprocessing.managers import SharedMemoryManager


            smm = SharedMemoryManager()
            smm.start()
            sl = smm.ShareableList(range(10))
            smm.shutdown()
        r  )rL  r   r   r  r  r   r  s        r   >test_shared_memory_SharedMemoryManager_reuses_resource_trackerzP_TestSharedMemory.test_shared_memory_SharedMemoryManager_reuses_resource_tracker  sM     |1B4TTPSTTC 	r   c                    t           j                                        |                     t                    5                      d           d d d            n# 1 swxY w Y                                    fdt          dd          D             }fdt          ddd	          D             }t          j	        |d
         j
        j                  }|                     t          |          d           t          j        |d
         j                  }|                     t          |j                  d           |d
         j        }                                 t"          j        dk    rG|                     t&                    5  t          j        |          }d d d            n# 1 swxY w Y   t           j                                        5 }|	                    d          }|                    d          }	|j
        j        }d d d            n# 1 swxY w Y   t"          j        dk    rJ|                     t&                    5  t          j	        |          }
d d d            d S # 1 swxY w Y   d S d S )Nr  r  c                 T    g | ]$}                     t          |                    %S r_   )r;  rW  )r{  rZ  smm1s     r   r|  zS_TestSharedMemory.test_shared_memory_SharedMemoryManager_basics.<locals>.<listcomp>  s-    DDD""588,,DDDr   r   r:  c                 <    g | ]}                     |           S )r  )r  )r{  rG  rD  s     r   r|  zS_TestSharedMemory.test_shared_memory_SharedMemoryManager_basics.<locals>.<listcomp>  s*    GGGa!!q!))GGGr   r        r   r1   r5   howdy)r   r9  r:  rq   rJ   r  r   rW  r   r;  shmr1   rp   r   rB  r  r  r   r   r  )ru   lollomdoppleganger_list0doppleganger_shm0	held_name
absent_shmsmm2r=  rJ  	absent_slrD  s              @r   -test_shared_memory_SharedMemoryManager_basicsz?_TestSharedMemory.test_shared_memory_SharedMemoryManager_basics  sh   ';;==z** 	& 	&1%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&

DDDDeArllDDDGGGG5S"3E3EGGG*8c!fjoNNN/00!444)6CFKHHH$5$9 : :B???FK	<7"" ""#455 H H*7YGGG
H H H H H H H H H H H H H H H %99;; 	$t##G,,B###--CI	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ <7""""#455 H H)7YGGG	H H H H H H H H H H H H H H H H H H #"sG   AA!$A!F22F69F68HH#&H#I77I;>I;c                    t          j        g d          }|                     |j        j                   |                     |j        j        t          |                     |                     t          t          |                    t          |                     | 	                    t                    5  |d          d d d            n# 1 swxY w Y   | 	                    t                    5  d|d<   d d d            n# 1 swxY w Y   |                    d          }d|d<   |                     ||                    d                     |                     |j        d           |                     t          |          d           t          j                    5  t          j        d           | 	                    t$                    5  |                    d           d d d            n# 1 swxY w Y   |                     |                    d	          d
           d d d            n# 1 swxY w Y   |                     |d         d           |                     |d         d           |                     t)          |          d           d|d
<   |                     |d
         d           d|d<   |                     |d         d           |                     |j        d           |                     t$          d          5  d|d<   d d d            n# 1 swxY w Y   |                     |d         d           d|d<   |                     |d         d           |                     |d         d           |                     t$          d          5  d|d<   d d d            n# 1 swxY w Y   |                     |d         d           |                     t$          d          5  d|d<   d d d            n# 1 swxY w Y   |                     |d         d           t          j                    5  t          j        d           |                     |                    d          d           |                     |                    d          d           |                     |                    d          d           d d d            n# 1 swxY w Y   |                     d          }t          j        ||          }	 |                     |j        j        |j        j                   |                     ||j        j                   |                     t          |          t          |                     |                     |j        |j                   d|d<   |                     |d         d           |                     |d         d           |j                                         |j                                         n# |j                                         w xY wt          j        |j        j                  }|                     |j        j        |j        j                   d|d<   |                     |d         d           |j                                         |j                                         t          j                    }	 |                     t          |          d           |                     |j        d           |                     |                    d          d           | 	                    t$                    5  |                    d            d d d            n# 1 swxY w Y   |j                                         |j                                         d S # |j                                         w xY w) N)rI     HoWdYgX9vqr-  NTru  r  r  r   rI  z8s8sdqxxxxxx?xxxxxxxx?qignore100r-  r  r  Tru  somerf   z8s8sdq8sxxxxxxx?qzexceeds available storagezfar too manyu   encodésr   rU  u	   encodéess	   123456789s   adiostest03_duplicaterH  M   rF   ip  r  any)r   r;  rg  rJ  r  rr   r1   rs   r   rq   
IndexError_get_packing_formatrp   r   r   warningscatch_warningssimplefilterrJ   r  r   rc  r  r  r&  r"   )ru   r=  current_formatname_duplicatesl_copysl_tetheredempty_sls          r   'test_shared_memory_ShareableList_basicsz9_TestSharedMemory.test_shared_memory_ShareableList_basics  s[	   (>>>
 
 	&&& 	bfk3r77+++c$r((mmSWW--- z** 	 	qEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 z** 	 	BqE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 //221)?)?)B)BCCC 	$=>>> 	R!$$$ $&& 	/ 	/!(+++"":..                                 RXXc]]A...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	A(((B&&& 	"II>	
 	
 	
 1A###1A'''$7888##J$?A A 	# 	#"BqE	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	A'''1A
+++A)))##J$?A A 	  	 BqE	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	A)))##J$?A A 	! 	! BqE	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	A))) $&& 	4 	4!(+++RXXb\\1---RXXh//333RXXh//333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 ++,>??-b~FFF
	!W[-=>>>^W[-=>>>T"XXtG}}555RY777GBKWR["---2+++KK    GK     $1rv{CCCko&:;;;BB%%%
 !.00	"S]]A...X_b111X^^E22A666"":.. % %t$$$% % % % % % % % % % % % % % %L   L!!!!!HL!!!!s   :	CCC4DD
D
%/H6G6*H66G:	:H6=G:	>,H66H:=H:L&&L*-L*%N77N;>N;9PPPBS!!S%(S%C0X" "X=0B_ 1^_ ^_ ^_ _-c                 B   t          t          j        dz             D ] }|                     |          5  t	          j        t          d                    }|                     |j        j                   t          j	        ||          }t          j
        |          }|                     |t          j                   |                     |d         d           |                     ||           d|d<   |                     |d         d           d	|d
<   |                     |d
         d	           t	          j        t          d                    }|                     |j        j                   t          j	        ||          }|                     t          |          t          |                     |j                                         |j                                         |j                                         d d d            n# 1 swxY w Y   d S )Nr   r(  r:  r+  rF   r  changedrf   newvaluer  i  )rW  r-  r.  r   r   r;  rg  rJ  r  r/  r0  r   rp   assertIsNotr   r"   )ru   r)  r=  serialized_sldeserialized_sl	larger_slserialized_larger_sls          r   )test_shared_memory_ShareableList_picklingz;_TestSharedMemory.test_shared_memory_ShareableList_pickling'  s!   62Q677 	 	EE**  "0r;;... &R% @ @ @"(,}"="=%%#]%@B B B  !4a888  _555%."  A	222"1  !3Z@@@)7c

CC		 4555'-|I'N'N'N$  ]!3!3S9M5N5NOOO##%%%#))+++/              	 	s   GHH	H	c                    t          t          j        dz             D ]}|                     |          5  t	          j        t          d                    }t          j        ||          }|j                                         |j        	                                 | 
                    t                    5  t          j        |           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d S )Nr   r(  r:  r+  )rW  r-  r.  r   r   r;  r/  rJ  r"   r  rq   r  r0  )ru   r)  r=  rk  s       r   5test_shared_memory_ShareableList_pickling_dead_objectzG_TestSharedMemory.test_shared_memory_ShareableList_pickling_dead_objectB  sY   62Q677 	0 	0EE** 
0 
0"0r;; &R% @ @ @ &&'899 0 0L///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 
0 
0 
0 
0 
0 
0 
0 
0 
0 
0 
0 
0 
0 
0	0 	0s6   BC19CC1CC1!C"C11C5	8C5	c                 j   d}t          j        t          j        dd|gt           j        t           j                  5 }|j                                                                                                        }|	                                 |
                                 d}t          t          d          rKt          j        t          j        |          D ]*}	 t          j        |d          }# t"          $ r Y  nw xY wnt%          j                    t          j        z   }d	}t%          j                    |k     rft%          j        |           t+          |d
z  d          }	 t          j        |d          }n# t"          $ r Y n*w xY wt%          j                    |k     ft-          |          t.          j        dk    rYt3          j        d| d           |j                                                                        }	|                     d|	           d d d            d S # 1 swxY w Y   d S )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 terminatedsleeping_retryFr  r   r  r   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  r7   r;  r   rt  r  r   r  r  r   r   r  minr  rG   r1   r.   
unregisterr  r  rr   )
ru   r  r   r1   err_msgr  r<  deadliner   rv   s
             r   4test_shared_memory_cleaned_after_process_terminationzF_TestSharedMemory.test_shared_memory_cleaned_after_process_terminationP  s   	 s~tT3?%/_%/_6 6 6 -	J9:8$$&&,,..5577D KKMMMFFHHH;Gw 011 2 /0DgNN  A+8eLLL,     >++g.BBn&&11JqMMMAaCA+8eLLL,    n&&11 )111w'!! !+JJJHHH
 hmmoo,,..DEHJ J JW-	J -	J -	J -	J -	J -	J -	J -	J -	J -	J -	J -	J -	J -	J -	J -	J -	J -	Js\   BH(C21H(2
D <H(?D  A$H(%E<;H(<
F	H(F		BH((H,/H,N)rz   r{   r|   r   r\  r  r  rK   r~   r   
hexversionr  r  r#  r&  r3  r5  r7  rG   r1   r?  rA  rS  rf  ro  rq  r  r_   r   r   r  r  m  s        #M  \) ) ) X_S^y02CDD& & ED&n n n` X_T5663 3 763,B B BB B B4. . .  8 X_RW')NOO  PO. X_RW')IJJ  KJ(H H H<o" o" o"b  60 0 08J 8J 8J 8J 8Jr   r  c                   l    e Zd ZdZd Zd Zed             Zd Z e	j
        d          d             ZdS )	_TestFinalizer  c                     t           j                                        | _        t           j                                         d S r   )r   _finalizer_registryr   registry_backupr  r   s    r   r  z_TestFinalize.setUp  s4    #7<<>> &&(((((r   c                     t          j                     |                     t          j                   t          j                            | j                   d S r   )rq  rr  r   r   r  updater  r   s    r   r
  z_TestFinalize.tearDown  sD    

1222 ''(<=====r   c                     G d dt                     } |            }t          j        ||j        d           ~t	          j                      |            }t          j        ||j        d          } |              |             ~t	          j                      |            }t          j        ||j        d            |            }t          j        ||j        dd	            |            }t          j        ||j        d
d	            |            }	t          j        |	|j        dd	            |            }
t          j        |
|j        dd	           t          j        d |j        dd	           t          j        d |j        dd	           t          j                     |                                 t          j	        d           d S )Nc                       e Zd ZdS ))_TestFinalize._test_finalize.<locals>.FooNr  r_   r   r   r  r            Dr   r  )r   r  )r   )r   )d10r   )rV   exitpriority)d01r   )d02)d03)r  i)STOPi)
rK  r   Finalizer  rq  rr  _exit_functionr"   rG   _exit)r   rC  r  r   r   close_br   r  r  r  r  s              r   _test_finalizez_TestFinalize._test_finalize  s   	 	 	 	 	& 	 	 	 CEEa0000

CEE-496:::						

CEEa0000ceec498!DDDDceec498!DDDDceec498!DDDDceec498!DDDDdDIFEEEEdDIIDIIII 	


r   c                 :   |                                  \  }}|                     | j        |f          }d|_        |                                 |                                 d t          |j        d          D             }|                     |g d           d S )Nr   Tc                     g | ]}|S r_   r_   )r{  r0  s     r   r|  z/_TestFinalize.test_finalize.<locals>.<listcomp>  s    999##999r   r  )r   r   r  r  r  r  r  )	r   r   r  r   r   r   r  r   rp   )ru   rC  r  r   r^  s        r   test_finalizez_TestFinalize.test_finalize  s    99;;jLL 3:-LHH					99di!8!8999!L!L!LMMMMMr   r   c                   	 d  G fddt                     d	d 	fd}	fd}t          j                    }t          j                    }	 t          j        d           t          j        ddd           t          j        |	          t          j        |	          g}t          j
        |          5  t          j        d
           d	d d d            n# 1 swxY w Y   	 t          j        |           t          j        |  t          j                     d S # t          j        |           t          j        |  t          j                     w xY w)Nc                      d S r   r_   r_   r   r   cbz,_TestFinalize.test_thread_safety.<locals>.cb      Dr   c                       e Zd Z fdZdS )-_TestFinalize.test_thread_safety.<locals>.Fooc                 j    | | _         t          j        | t          j        dd                     d S )Nr   r-  )r  )rp  r   r  r  randint)ru   r  s    r   r   z6_TestFinalize.test_thread_safety.<locals>.Foo.__init__  s3    dBV^As5K5KLLLLLLr   N)rz   r{   r|   r   )r  s   r   r  r    s5        M M M M M M Mr   r  Fc                      sZt          j        t          j                    dz             	 t          j                     n# t
          $ r} | Y d } ~ nd } ~ ww xY wXd S d S rr  )r   r  r  r   _run_finalizersrm   )r  rN  finishs    r   run_finalizersz8_TestFinalize.test_thread_safety.<locals>.run_finalizers  s     
6=??T1222 (****    CCCCCC      s   A 
AAAc                      i } sc	 fdt          d          D             | t          j        d          <   n-# t          $ r }||                                  Y d }~nd }~ww xY wad S d S )Nc                 $    h | ]}             S r_   r_   )r{  rZ  r  s     r   	<setcomp>zL_TestFinalize.test_thread_safety.<locals>.make_finalizers.<locals>.<setcomp>  s    /I/I/I!/I/I/Ir   r:  r   )rW  r  getrandbitsrm   r  )rK  r  r  rN  r  s     r   make_finalizersz9_TestFinalize.test_thread_safety.<locals>.make_finalizers  s    A  0J/I/I/IuRyy/I/I/IAf(++,,    CGGIIIIIIII      s   08 
A"AA"gư>r   r   r  T)rK  r   getswitchintervalrq  r  setswitchintervalr  r"  r  r	   start_threadsr   r  rr  )
ru   r  r  old_intervalold_thresholdr   r  r  rN  r  s
         @@@@r   test_thread_safetyz _TestFinalize.test_thread_safety  s   	 	 		M 	M 	M 	M 	M 	M 	M& 	M 	M 	M 		 		 		 		 		 		
	 
	 
	 
	 
	 
	 
	 ,..(**	!$'''Q1%%% '~>>> '???AG!/88  
3               	  !,///m,,JLLLLL !,///m,,JLLLLs1   A(D' =C D'  C$$D' 'C$(D' '7EN)rz   r{   r|   r   r  r
  r  r  r  r   r  r  r_   r   r   r  r    s        "M) ) )> > >
 % % [%N	N 	N 	N Wu%%4 4 &%4 4 4r   r  c                       e Zd Zd Zd ZdS )_TestImportStarc                 t   dd l }t          j                            t          j                  }t          j                            |                    |          d          }|                     |          }d |D             }d |D             }|                    d           |	                    d           |S )Nr   z*.pyc                     g | ]J}t           j                            t           j                            |          d                    d         KS )r   r   )rG   r   splitextsplit)r{  r  s     r   r|  z4_TestImportStar.get_module_names.<locals>.<listcomp>  s@    KKK27##BGMM!$4$4Q$788;KKKr   c                     g | ]}d |z   S )zmultiprocess.r_   )r{  r  s     r   r|  z4_TestImportStar.get_module_names.<locals>.<listcomp>  s    8881?Q&888r   zmultiprocess.__init__r  )
globrG   r   dirnamer   __file__r   escaper  r]  )ru   r  folderpatternfilesmoduless         r   get_module_namesz _TestImportStar.get_module_names  s    !9::',,t{{622F;;		'""KKUKKK88888.///~&&&r   c                 b   |                                  }t          j        dk    r@|                    d           |                    d           |                    d           n1|                    d           t          s|                    d           t
          |                    d           |D ]z}t          |           t          j        |         }|                     t          |d          |           |j
        D ]+}|                     t          ||          |d|           ,{d S )	Nr5   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  rJ  rA   r=  r  r   r;  r  )ru   r  r1   modattrs        r   test_importz_TestImportStar.test_import  s@   ''))<7""NN4555NN:;;;NN;<<<<NN;<<<  @>???=NN6777 		 		Dt+d#COOGC33T:::  C&&7:ssDDA   		 		r   N)rz   r{   r|   r  r  r_   r   r   r  r  
  s2        	 	 	    r   r  c                   :    e Zd ZdZd Zed             Zd Zd ZdS )_TestLoggingr  c                     t          j                    }|                    t          j                   |                     |d u           |                    d           |                    d           |                    t                     d S )Nzthis will not be printedznor will this)	r   
get_loggersetLevelr   
SUBWARNINGr   debuginfo	LOG_LEVEL)ru   loggers     r   test_enable_loggingz _TestLogging.test_enable_logging9  sx     +--(((d*+++/000O$$$	"""""r   c                 z    t          j                    }|                    |                                           d S r   )r   r  r  getEffectiveLevel)r   rC  r  s      r   _test_levelz_TestLogging._test_levelA  s4     +--		&**,,-----r   c                    d}d}t          j                    }t          j                    }|j        }t          j        d          \  }}|                    |           |                     | j        |f          }|	                                 | 
                    ||                                           |                                 |                                 |                    t          j                   |                    |           |                     | j        |f          }|	                                 | 
                    ||                                           |                                 |                                 |                    |           |                    t                     d S )Nr  %   Fr   r   )level)r   r  logging	getLoggerr  r   r  r   r  r   rp   r   r   r"   NOTSETr  )	ru   LEVEL1LEVEL2r  root_logger
root_levelr  r  r   s	            r   
test_levelz_TestLogging.test_levelF  sm    +--')) &
(-U;;;LL 0yLAA				///					'''V$$$LL 0yLAA				///					Z(((i(((((r   c                    t          j                    }|j        }	 |                    t          j                   t          j                    }t          j	        |          }d}|
                    t          j        |                     |                    |           |                    d           t	          j        d           |                    d           t          j                            t$                    }|                                }|                     d| d|           |                     d| d|           |                     d| d	|           |                    |           |                    |           |                                 d S # |                    |           |                    |           |                                 w xY w)
Nz*[%(levelname)s] [%(filename)s] %(message)sr
  23z[INFO] [z] 1z] 2z	[DEBUG] [z] 3)r   r  r  r  r   DEBUGr  r  r  StreamHandlersetFormatter	Formatter
addHandlerr  r  rG   r   basenamer  rM  rr   removeHandlerr"   )ru   r  original_levelr  r9  logging_formatfilename
log_records           r   test_filenamez_TestLogging.test_filenameb  s    +--	OODJ'''[]]F+F33GIN  !2>!B!BCCCg&&&KKIcNNNLLw''11H**JMM2X222J???MM2X222J???MM3h333Z@@@OON+++  )))MMOOOOO OON+++  )))MMOOOOs   EF$ $A G$N)	rz   r{   r|   r   r  r  r  r  r  r_   r   r   r  r  5  sa        "M# # # . . [.) ) )8    r   r  c                   p    e Zd ZdZed             Z ej         ee	d          d          d             Z
dS )_TestPollEintrr  c                 l    t          j        d           t          j        |t          j                   d S rr  )r   r  rG   rH  r<  SIGUSR1)r   r   s     r   _killerz_TestPollEintr._killer  s)    
3
V^$$$$$r   r  requires SIGUSR1c                    dgfd}t          j                    }t          j        t          j        |          }	 |                     | j        |f          }|                                 	 |                     t          j        d          }|                                 |	                                 |	                                 n# |	                                 w xY w| 
                    d                    |                     |j        d           t          j        t          j        |           d S # t          j        t          j        |           w xY w)NFc                      dd<   d S )NTr   r_   )rV   
got_signals    r   recordz._TestPollEintr.test_poll_eintr.<locals>.record  s     JqMMMr   r   )r  r   )rG   r   r<  r  r   r  r   r   r  r   r   rp   r   )ru   r  r   
oldhandlerkillerr   r  s         @r   test_poll_eintrz_TestPollEintr.test_poll_eintr  s%   W
	! 	! 	! 	! 	!ikk]6>6::
	6\\SF\CCFLLNNNLL
L>>			OOJqM***QZ+++M&.*55555FM&.*5555s$   1D= /A	C 8D= C##9D= =!EN)rz   r{   r|   r   r  r  rK   r  r;  r<  r  r_   r   r   r  r    sk        "M% % [% X335GHH6 6 IH6 6 6r   r  c                   B    e Zd Z ej        ed          d             ZdS )TestInvalidHandleskipped on Windowsc                 *   t           j                            d          }	 |                                 n# t          t
          f$ r Y nw xY wd |_        n# d |_        w xY w|                     t          t
          ft           j        j        d           d S )NiMrF   )r   rP  
Connectionr
  rJ   r  _handlerq   rA  s     r   test_invalid_handlesz&TestInvalidHandle.test_invalid_handles  s    )44X>>	 IIKKKKG$ 	 	 	D	
  DLL4DL:w/)4?	E 	E 	E 	E 	Es&   6 A A
A 	A

A 	AN)rz   r{   r|   rK   r~   WIN32r  r_   r   r   r  r    sB        X_U011E E 21E E Er   r  c                       e Zd Zd Zd ZdS )	OtherTestc                      G d dt                     }|                     t          j        t          j        j         |            d           d S )Nc                       e Zd Zd Zd ZdS )FOtherTest.test_deliver_challenge_auth_failure.<locals>._FakeConnectionc                     dS )N   something bogusr_   ru   r  s     r   r  zQOtherTest.test_deliver_challenge_auth_failure.<locals>._FakeConnection.recv_bytes  s    ))r   c                     d S r   r_   ru   r/  s     r   r  zQOtherTest.test_deliver_challenge_auth_failure.<locals>._FakeConnection.send_bytes      r   N)rz   r{   r|   r  r  r_   r   r   _FakeConnectionr    s2        * * *    r   r     abc)rK  rq   r   AuthenticationErrorrP  deliver_challengeru   r  s     r   #test_deliver_challenge_auth_failurez-OtherTest.test_deliver_challenge_auth_failure  sk    	 	 	 	 	f 	 	 	
 	/=)4F)/++V	5 	5 	5 	5 	5r   c                      G d dt                     }|                     t          j        t          j        j         |            d           d S )Nc                        e Zd Zd Zd Zd ZdS )EOtherTest.test_answer_challenge_auth_failure.<locals>._FakeConnectionc                     d| _         d S r  )r  r   s    r   r   zNOtherTest.test_answer_challenge_auth_failure.<locals>._FakeConnection.__init__  s    


r   c                 x    | xj         dz  c_         | j         dk    rt          j        j        S | j         dk    rdS dS )Nr   r  r
  r   )r  r   rP  	CHALLENGEr  s     r   r  zPOtherTest.test_answer_challenge_auth_failure.<locals>._FakeConnection.recv_bytes  s>    

a

:??*5??Z1__--sr   c                     d S r   r_   r  s     r   r  zPOtherTest.test_answer_challenge_auth_failure.<locals>._FakeConnection.send_bytes  r  r   N)rz   r{   r|   r   r  r  r_   r   r   r  r    sA                r   r  r  )rK  rq   r   r  rP  answer_challenger  s     r   "test_answer_challenge_auth_failurez,OtherTest.test_answer_challenge_auth_failure  sk    	 	 	 	 	f 	 	 	 	/=)4E)/++V	5 	5 	5 	5 	5r   N)rz   r{   r|   r  r  r_   r   r   r  r    s2        5 5 55 5 5 5 5r   r  c                 &    | xj         dz  c_         d S r   )rL  )nss    r   initializerr     s    GGqLGGGGr   c                   &    e Zd Zd Zd Zd Zd ZdS )TestInitializersc                     t          j                    | _        | j                                        | _        d| j        _        d S r  )r   Managermgrr  r  rL  r   s    r   r  zTestInitializers.setUp  s4    "*,,($$&&r   c                 j    | j                                          | j                                          d S r   )r%  r  r   r   s    r   r
  zTestInitializers.tearDown  s)    r   c                 V   t           j                                        }|                     t          |j        d           |                    t          | j        f           |                     | j        j	        d           |
                                 |                                 d S r   )r   r9  SyncManagerrq   	TypeErrorr   r   r  rp   rL  r  r   )ru   r  s     r   test_manager_initializerz)TestInitializers.test_manager_initializer  s    $0022)QWa000	dgZ(((q)))	

	r   c                 &   |                      t          t          j        d           t          j        dt          | j        f          }|                                 |                                 |                     | j        j	        d           d S )Nr   )r   )
rq   r)  r   r  r   r  r"   r   rp   rL  rS  s     r   test_pool_initializerz&TestInitializers.test_pool_initializer  sr    )_%9qIII K$'<<					q)))))r   N)rz   r{   r|   r  r
  r*  r,  r_   r   r   r"  r"    sP          
    * * * * *r   r"  c                 `    	 |                      d          }d S # t          j        $ r Y d S w xY w)NF)block)r   r  r%  )r   items     r   _this_sub_processr0  
  sB    uu5u!!=   s    --c                      t          j                    } t          j        t          | f          }d|_        |                                 |                                 d S rQ  )r   r!   r   r0  r   r   r   )r$   subProcs     r   _test_processr3    sM    !##E%->eXNNNGGNMMOOOLLNNNNNr   c                     | | z  S r   r_   r  s    r   _afuncr5    r  r   c                      t          j        d          } |                     t          g d          }|                                  |                                  d S )Nrf   r  )r   r  r  rf   r   r  r  )r   r  r  r5  r"   r   )r  rP  s     r   pool_in_processr7    sM    !,,,D...//AJJLLLIIKKKKKr   c                   6    e Zd Zd Zed             Zd Zd ZdS )
_file_likec                 "    || _         d | _        d S r   )	_delegate_pid)ru   delegates     r   r   z_file_like.__init__!  s    !			r   c                 h    t          j                    }|| j        k    r|| _        g | _        | j        S r   )rG   r   r<  _cacher  s     r   cachez_file_like.cache%  s0    ikk$)DIDK{r   c                 :    | j                             |           d S r   )r@  r]  r  s     r   r:  z_file_like.write.  s    
$r   c                 x    | j                             d                    | j                             g | _        d S )Nr  )r;  r:  r   r@  r?  r   s    r   flushz_file_like.flush1  s1    RWWTZ00111r   N)rz   r{   r|   r   propertyr@  r:  rC  r_   r   r   r9  r9     s\             X         r   r9  c                        e Zd Zd Zd Zd ZdS )TestStdinBadfiledescriptorc                     t          j        t                    }|                                 |                                 d S Nr   )r   r   r3  r   r   )ru   r  s     r   test_queue_in_processz0TestStdinBadfiledescriptor.test_queue_in_process7  s3    &m<<<

		r   c                     t          j        t                    }|                                 |                                 d S rH  )r   r   r7  r   r   rS  s     r   test_pool_in_processz/TestStdinBadfiledescriptor.test_pool_in_process<  s3    #?;;;					r   c                    t          j                    }t          |                              d           t	          j        fd          }                                 |                                dk    sJ d S )Nrb  c                  ,                                      S r   )rC  )flikes   r   r  z:TestStdinBadfiledescriptor.test_flushing.<locals>.<lambda>E  s    ekkmm r   r   )r  r  r9  r:  r   r   rC  rM  )ru   sior  rN  s      @r   test_flushingz(TestStdinBadfiledescriptor.test_flushingA  st    kmm3E&.C.C.C.CDDD||~~&&&&&&r   N)rz   r{   r|   rI  rK  rP  r_   r   r   rF  rF  5  sA          
  
' ' ' ' 'r   rF  c                       e Zd Zed             ZddZed             ZddZd Zd Z	 e
j        d          d	             Zed
             Z e
j        d          d             Zd ZdS )TestWaitc                     t          d          D ]T}|r(t          j        t          j                    dz             |                    |t          j                    f           U|                                 d S )Nr:  r   )rW  r   r  r  r  rG   r   r"   )r   r  slowrZ  s       r   _child_test_waitzTestWait._child_test_waitL  sk    r 	% 	%A 4
6=??U2333FFAry{{#$$$$						r   Fc                 "   ddl m} g }g g }t          d          D ]}t          j        d          \  }}t          j        | j        ||f          }d|_        |                                 |	                                 |
                    |           
                    |           |                     |j                   |rs ||          D ]e}	 |                                }	|
                    |	           -# t          $ r, |                    |           |	                                 Y bw xY w|s|                                 t#          fdt          d	          D                       }
|                     ||
           d S )
Nr   r6   rf   Fr   r   Tc              3   4   K   | ]}D ]}||j         fV  d S r   r  )r{  rZ  r   r  s      r   r  z%TestWait.test_wait.<locals>.<genexpr>o  s6      GGGGA1ae*GGGGGGGr   r:  )multiprocess.connectionr7   rW  r   r   r   rU  r   r   r"   r]  rg  r   r   r  r  r  r  rp   )ru   rT  r7   readersmessagesrZ  rC  r  r   r	  r_  r  s              @r   	test_waitzTestWait.test_waitT  s   000000q 	$ 	$A"'u555DAq't/DAt9UUUAAHGGIIIGGIIINN1LLOOOOOAF#### 	)T']] ) ))&&((C
 OOC((((	     NN1%%%GGIIIII	  	) 	GGGGeBiiGGGGG8,,,,,s   D3D87D8c                 L   t          j                     }|                    |           t          d          D ]W}|r(t          j        t          j                    dz             |                    d|z                      d                     X|                                 d S )Nr:  r   %s
r  )	r  r  rW  r   r  r  r  r   r"   )r   r  rT  r   rZ  s        r   _child_test_wait_socketz TestWait._child_test_wait_socketr  s    MOO			'r 	4 	4A 4
6=??U2333IIvz))'223333						r   c                     ddl m} t          j        t          j        df          }|                                }g }g }i }t          d          D ]i}t          j	        | j
        ||f          }	d|	_        |	                                 |                    |	           |                     |	j                   jt          d          D ]3}|                                \  }
}|                    |
           g ||
<   4|                                 |rl ||          D ]^}
|
                    d          }|s*|                    |
           |
                                 C||
                             |           _|ld                    d t          d	          D                                           d
          }|                                D ]+}|                     d                    |          |           ,d S )Nr   r6   rf   r   Tr  r  c              3       K   | ]	}d |z  V  
dS )r]  Nr_   r  s     r   r  z,TestWait.test_wait_socket.<locals>.<genexpr>  s&      99!6A:999999r   r:  r  r   )rX  r7   r  r  r   r  r  rW  r   r   r^  r   r   r]  rg  r   rW  r"   r   r  r   rY  rp   )ru   rT  r7   r  r   rY  r  dicrZ  r   rC  r  r	  r_  vs                  r   test_wait_socketzTestWait.test_wait_socket|  s   000000 -"4a!899}}q 	$ 	$A't/K.2D\; ; ;AAHGGIIILLOOOOOAF####q 	 	A88::DAqNN1CFF				 	'T']] ' 'ffRjj 'NN1%%%GGIIIIFMM#&&&&  	' 7799uRyy99999@@II 	4 	4ASXXa[[(3333	4 	4r   c                 0    |                      d           d S rW  )r[  r   s    r   test_wait_slowzTestWait.test_wait_slow  s    tr   c                 0    |                      d           d S rW  )rc  r   s    r   test_wait_socket_slowzTestWait.test_wait_socket_slow  s    d#####r   rv  c                    ddl m} d}t          j                    \  }}t	          j                    } |||g|          }t	          j                    |z
  }|                     |g            |                     ||t          z
             |	                    d             |||gd          }|                     ||g           d S )Nr   r6   r  r  )
rX  r7   r   r   r   r   rp   rW  r  r  )ru   r7   r)   r   r   r   r   rC  s           r   test_wait_timeoutzTestWait.test_wait_timeout  s    000000#%%1  dAq67##  5(b!!!5'I"5666	tdAq62qc"""""r   c                 V    |                                  t          j        |           d S r   )rk  r   r  )r   rz  periods      r   signal_and_sleepzTestWait.signal_and_sleep  s%    
6r   c                 .   ddl m} d}d }t          j        d          }t          j                    \  }}t          j        | j        ||f          }|                                 |                     |j	        t                     |                     |                    d                     t          j                    } |||j	        |g|dz             }	t          j                    |z
  }
|                     |	|j	        g           |                     |
|dz              |                     |
|dz
             |                    d            t          j                    } |||j	        |gd          }	t          j                    |z
  }
|                      ||	           ||j	        |g                     |                     |
d	           |                    d            t          j                    } |||j	        |gd          }	t          j                    |z
  }
|                      ||	           |||j	        |g                     |                     |
d	           |                                 |                                 d S )
Nr   r6   r  c                 &    t          | d           S )Nc                      t          |           S r   )rY  r  s    r   r  z>TestWait.test_wait_integer.<locals>.<lambda>.<locals>.<lambda>  s    BqEE r   )rp  )r  )r  s    r   r  z,TestWait.test_wait_integer.<locals>.<lambda>  s    F1//::: r   r   r  r(   r  g?)rX  r7   r   r}  r   r   rl  r   r   rf  rM  r   rj  r   r   rp   r  rW  r  r  r   )ru   r7   r_  sorted_rz  r   r   r   r   r   rC  s              r   test_wait_integerzTestWait.test_wait_integer  sk   000000::'**#%%1#4+@*-x: : : 	
			aj#...B//000  dAqz1%x"}55  5(qzl+++x!|,,,5(Q,///	t  dAqz1%r**  5(ww
A'?'?@@@s###	t  dAqz1%r**  5(ww1:q/A'B'BCCCs###		r   c                 T   ddl m} t          j                    \  }}t	          j                    } ||gd          }t	          j                    |z
  }|                     |g            |                     |d           |                                 |                                 d S )Nr   r6   rF   r(   r   )	rX  r7   r   r   r   r   rp   r  r"   )ru   r7   r   r   r   r   s         r   test_neg_timeoutzTestWait.test_neg_timeout  s    000000#%%1NdA3###Nq b!!!1										r   Nr  )rz   r{   r|   r  rU  r[  r^  rc  re  rg  r   r  ri  rl  rq  rs  r_   r   r   rR  rR  J  s         [- - - -<   [!4 !4 !4 !4F  $ $ $ Wz**# # +*#"   [ Wz**) ) +*)V	 	 	 	 	r   rR  c                   v    e Zd Z ej        ed          d             Z ej        ed          d             ZdS )TestInvalidFamilyr  c                     |                      t                    5  t          j                            d           d d d            d S # 1 swxY w Y   d S )Nz\\.\testrq   rJ   r   rP  rR  r   s    r   test_invalid_familyz%TestInvalidFamily.test_invalid_family  s    z** 	= 	=&//<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=    AAAz skipped on non-Windows platformsc                     |                      t                    5  t          j                            d           d d d            d S # 1 swxY w Y   d S )Nz/var/test.piperw  r   s    r   test_invalid_family_win32z+TestInvalidFamily.test_invalid_family_win32  s    z** 	B 	B&//0@AAA	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	Bry  N)	rz   r{   r|   rK   r~   r  rx  r  r{  r_   r   r   ru  ru    so        X_U011= = 21= X BCCB B DCB B Br   ru  c                   @    e Zd Zed             Zed             Zd ZdS )	TestFlagsc                 ^    |                     t          t          j                             d S r   )r  r   r   flagsr   rC  s     r   run_in_grandchildzTestFlags.run_in_grandchild  s$    		%	""#####r   c                    dd l }t          j        d          \  }}t          j        | j        |f          }|                                 |                                }|                                 |                                 |                                 t          t          j                  |f}t          |                    |                     d S )Nr   Fr   r   )jsonr   r   r   r  r   r   r   r"   r   r   r  printr/  )r   r  rC  r  r   grandchild_flagsr  s          r   run_in_childzTestFlags.run_in_child  s    #51111#3+@tLLL				6688									sy!!#34djj     r   c                     dd l }d}t          j        t          j        dddd|g          }|                    |                    d                    \  }}|                     ||           d S )Nr   zBfrom multiprocess.tests import TestFlags; TestFlags.run_in_child()rs  z-Sz-Or  r  )r  rv  check_outputr   r   r0  r{  rp   )ru   r  progr/  child_flagsr  s         r   _test_flagszTestFlags._test_flags  sv    +&^T4tT:< <(,

4;;w3G3G(H(H%%&677777r   N)rz   r{   r|   r  r  r  r  r_   r   r   r}  r}    sW        $ $ [$ 
! 
! [
!8 8 8 8 8r   r}  c                   *    e Zd Zed             Zd ZdS )TestTimeoutsc                    t          j        d           |                    d           |                                 t          j                            |          }|                    d           |                                 d S )Nr   r  r  )r   r  r  r"   r   rP  rV  )r   childr  rC  s       r   _test_timeoutzTestTimeouts._test_timeout(  sa    
1

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

r   c                    t          j                    }	 t          j        d           t          j        d          \  }}t          j                            d          }t          j        | j        ||j	        f          }|
                                 |                                 |                     |                                d           |                                 |                                }|                     |                                d           |                                 |                                 t          |           t          j        |           d S # t          j        |           w xY w)	Nr   Tr   AF_INETrN  r   r  r  )r  getdefaulttimeoutsetdefaulttimeoutr   r   rP  rR  r   r  r  r   r"   rp   r   rW  r,   )ru   old_timeoutparentr  r  r   rC  s          r   rD  zTestTimeouts.test_timeout1  sB   .00	2$S)))+0===MFE*3393EEA't/A.3QY-?A A AAGGIIIKKMMMV[[]]C000LLNNN88::DTYY[[#...JJLLLGGIIIOOO$[11111F$[1111s   EE0 0FN)rz   r{   r|   r  r  rD  r_   r   r   r  r  '  s<          [2 2 2 2 2r   r  c                       e Zd Zd ZdS )TestNoForkBombc                 2   t          j                    }t          j                            t          j                            t                    d          }|dk    rWt          j        j	        
                    ||          \  }}}|                     |d           |                     d|           d S t          j        j	        j        ||fi t          \  }}}|                     |                                d           |                     |d           d S )Nzmp_fork_bomb.pyrl   r   s   RuntimeErrors   123)r   rU   rG   r   r   r  r  rL  r   r   assert_python_failurerp   rr   r  r  r  )ru   r  r1   rl  r  rv   s         r   test_noforkbombzTestNoForkBomb.test_noforkbombJ  s    -//w||BGOOH557HII<<<5KKDRTUULBSS#&&&MM/3/////<5FtRWWSVWWLBSSZZ\\6222S#&&&&&r   N)rz   r{   r|   r  r_   r   r   r  r  I  s#        
' 
' 
' 
' 
'r   r  c                   *    e Zd Zed             Zd ZdS )TestForkAwareThreadLockc                 B   |dk    rXt          j        | j        |dz
  |f          }|                                 |                                 t          |           n,|                    t          t          j	                             |                                 d S )Nr   r   )
r   r   r  r   r"   r,   r  r   r   _afterfork_registry)r   r  rC  r   s       r   r  zTestForkAwareThreadLock.child_  s    q55'sy!T{KKKAGGIIIJJLLLOOOOIIc$233444

r   c                    t          j        d          \  }}t          j                    }t	          t          j                  }t          j        | j        d|f          }|                                 |	                                 |
                                }t          |           |                     ||           d S )NFr   r   )r   r   r   ForkAwareThreadLockr   r  r   r  r   r"   r   r,   assertLessEqual)ru   rC  r  r  old_sizer   new_sizes          r   ro  z!TestForkAwareThreadLock.test_lockj  s    #E**1$&&t/00#4:QFCCC								6688QXx00000r   N)rz   r{   r|   r  r  ro  r_   r   r   r  r  Z  s>        
   [	1 	1 	1 	1 	1r   r  c                   6    e Zd Zd Zd Zed             Zd ZdS )TestCloseFdsc                 H   t           r%t          j                                                    S t          j                                                    }g }|dk     r/|                    |           t	          j        |          }|dk     /|D ]}t	          j        |           |S )Nr  )r  r  detachr]  rG   dupr"   )ru   r  to_closerP  s       r   get_high_socket_fdzTestCloseFds.get_high_socket_fd{  s     	 =??))+++ ''))BHr''###VBZZ r''   Ir   c                     t           r?t          j        t          j        t          j        |                                           d S t          j        |           d S )N)r  )r  r  r  SOCK_STREAMr"   rG   )ru   r  s     r   r"   zTestCloseFds.close  sI     	M&.&*<RHHHNNPPPPPHRLLLLLr   c                    	 t          j        |t           j        t           j                  }|                                 |                    d            d S # t          $ r }|                    |           Y d }~d S d }~ww xY wr   )r  fromfdr  r  r"   r  rm   )r   rC  r  r   r  s        r   _test_closefdszTestCloseFds._test_closefds  s}    	b&.&2DEEA GGIIIIIdOOOOO	  	 	 	IIaLLLLLLLLL	s   *A 
B!A<<Bc                 b   t           st          j        d          t          j                    \  }}|                                 }	 t          j        | j        ||f          }|                                 |	                                 |
                                }t          |           | 	                    |           |	                                 |	                                 nB# | 	                    |           |	                                 |	                                 w xY wt          j                    dk    r|                     |d            d S d}|                     |t                     |                     |j        t"          j        k    p
|j        |k    |           d S )Nzrequires fd picklingr   rl   i6'  )rJ  rK   rL   r   r   r  r   r  r   r"   r   r,   rU   rs  r   r  r   r  r(  winerror)ru   r  r  r  r   r  WSAENOTSOCKs          r   test_closefdzTestCloseFds.test_closefd  sz    	<#$:;;;(-//$$&&
	't/B.4b\; ; ;AGGIIILLNNNAOOOJJrNNNLLNNNLLNNNN JJrNNNLLNNNLLNNNN+--77MM!T"""""K!!!W---OOAGu{2 6J+5q: : : : :s   A(C- -?D,N)rz   r{   r|   r  r"   r  r  r  r_   r   r   r  r  y  s\          $     [: : : : :r   r  c                       e Zd Z eej        ej                  Zed             Z	 e
j         eed          d          d             Zed             Z e
j         eed          d          d             ZdS )TestIgnoreEINTRc                     d }t          j         t           j        |           |                    d           |                                }|                    |           |                    d| j        z             d S )Nc                     d S r   r_   r  frames     r   r9  z-TestIgnoreEINTR._test_ignore.<locals>.handler  r  r   ready   x)r<  r  r  r   r  CONN_MAX_SIZE)r   rC  r9  rP  s       r   _test_ignorezTestIgnoreEINTR._test_ignore  ss    	 	 	fng...		'IIKK		!s0011111r   r  r  c                    t          j                    \  }}	 t          j        | j        |f          }d|_        |                                 |                                 |                     |                                d           t          j
        d           t          j        |j        t          j                   t          j
        d           |                    d           |                     |                                d           t          j
        d           t          j        |j        t          j                   |                     |                                d| j        z             t          j
        d           |                                 |                                 d S # |                                 w xY w)Nr   Tr  r   i  r  )r   r   r   r  r   r   r"   rp   r   r   r  rG   rH  r   r<  r  r  r  r  r   rD  s       r   test_ignorezTestIgnoreEINTR.test_ignore  sd   */11j	't/@.8]< < <AAHGGIIITYY[['222JsOOOGAE6>***JsOOOIIdOOOTYY[[$///JsOOOGAE6>***T__..t7I0IJJJJsOOOFFHHHJJLLLLLDJJLLLLs   FF: :Gc                 >   d }t          j         t           j        |           t          j                                        5 }|                    |j                   |                                }|                    d           d d d            d S # 1 swxY w Y   d S )Nc                     d S r   r_   r  s     r   r9  z6TestIgnoreEINTR._test_ignore_listener.<locals>.handler  r  r   welcome)r<  r  r   rP  rR  r  r  rW  )r   rC  r9  r  r   s        r   _test_ignore_listenerz%TestIgnoreEINTR._test_ignore_listener  s    	 	 	fng...'0022 	aIIai   

AFF9	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   ABBBc                    t          j                    \  }}	 t          j        | j        |f          }d|_        |                                 |                                 |                                }t          j	        d           t          j        |j        t          j                   t          j	        d           t           j                            |          }|                     |                                d           |                                 |                                 d S # |                                 w xY w)Nr   Tr   r  )r   r   r   r  r   r   r"   r   r   r  rG   rH  r   r<  r  rP  rV  rp   r   )ru   rC  r  r   r  r\  s         r   test_ignore_listenerz$TestIgnoreEINTR.test_ignore_listener  s   */11j	't/I.8]< < <AAHGGIIIiikkGJsOOOGAE6>***JsOOO$/66w??FV[[]]I666FFHHHJJLLLLLDJJLLLLs   DD4 4E
N)rz   r{   r|   maxr   PIPE_MAX_SIZESOCK_MAX_SIZEr  r  r  rK   r  r;  r<  r  r  r  r_   r   r   r  r    s         C-w/DEEM2 2 [2 X335GHH  IH,   [ X335GHH  IH  r   r  c                       e Zd Zed             Zd Zd Zd Zd Zd Z	d Z
 ej        ej        dk    d	           ed
          d                         Zed             Zed             Zd ZdS )TestStartMethodc                 R    |                     t          j                               d S r   )r  r   rU   r  s     r   _check_contextzTestStartMethod._check_context  s#    		/24455555r   c                    |                     d          \  }}|                    | j        |f          }|                                 |                                 |                                }|                                 |                                 |                     ||                                           d S )NFr   r   )	r   r   r  r   r"   r   r   rp   rU   )ru   rx   rC  r  r   child_methods         r   check_contextzTestStartMethod.check_context  s    xxux%%1KKt2!K>>								vvxx					s';';'='=>>>>>r   c                    dD ]}	 t          j        |          }n# t          $ r Y $w xY w|                     |                                |           |                     |                                |           |                     t          |j        d           |                     t          |j        d            |                     |           d S )Nrl   rS   r  rS   )	r   r^  rJ   rp   rU   rs  rq   ro   r  )ru   methodrx   s      r   rD  zTestStartMethod.test_context  s    5 		$ 		$F%1&99   S1133V<<<MM#//++S111j#*>HHHj#*>EEEs####		$ 		$s   
((c                    	 t          j        d          }n"# t          $ r t          j        d          w xY w|                     t          d          5  |                    g d           d d d            d S # 1 swxY w Y   d S )Nr  zforkserver should be availablez&module_names must be a list of stringsr  )r   r^  rJ   rK   rL   rc  r)  set_forkserver_preload)ru   rx   s     r   test_context_check_module_typesz/TestStartMethod.test_context_check_module_types  s    	F!-l;;CC 	F 	F 	F#$DEEE	F##I/WXX 	2 	2&&yyy111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2s    6A99A= A=c                 v   t          j        t                     d}t          j                    }	 dD ]<}	 t          j        |d           n# t
          $ r Y 'w xY w|                     t          j                    |           t          j                    }|                     |                                |           |                     t          |          j
                                                            |                     |                     |j        j
                                                            |                     |                     t                      |dz  }>	 t          j        |d           n# t          j        |d           w xY w|                     |d           d S )Nr   r  Trj   r   )r   r  PRELOADrU   ro   rJ   rp   r^  r   r  rz   lower
startswithr   r  rB  )ru   r  
old_methodr  rx   s        r   test_set_getzTestStartMethod.test_set_get!  s   .w777$577
	E9  #4V4HHHHH!   H  !A!C!CVLLL%133  !5!5!7!7@@@S		 2 8 8 : : E Ef M MNNNK(..00;;FCCE E E""?333
 ,ZtDDDDDO,ZtDDDDDq)))))s/   F AF 
AF ADF F c                     t          j                    }t          j        dk    r|                     |dg           d S |                     |ddgk    p|ddgk    p|g dk    p|g dk               d S )Nr5   rS   rl   r  )rS   rl   r  )r   get_all_start_methodsr   r   rp   r   )ru   methodss     r   test_get_allzTestStartMethod.test_get_all7  s    !799<7""Wwi00000OOG'88 G#'88G#'F'F'FFG $'F'F'FFH H H H Hr   c                 "   t          j                    dk    r|                     d           t          j                            t          j                            t                    d          }t          j	        j
        j        |fi t          \  }}}|                                }|                                }|                                dk    s|dk    r5t          |           t          |           |                     d           d S d S )Nr  z*test only relevant for 'forkserver' methodzmp_preload.pyokr  z(failed spawning forkserver or grandchild)r   rU   r   rG   r   r   r  r  rL  r   r   r  r  r{  r  r  rn   )ru   r1   rl  r  rv   s        r   test_preload_resourcesz&TestStartMethod.test_preload_resourcesA  s    +--==MMFGGGw||BGOOH55GG|1B4OO3OOCjjlljjll::<<43"99#JJJ#JJJII@AAAAA $-9r   r5   z*Only Spawn on windows so no risk of mixingavoids redundant testing.c                    dD ]}t          j        d                                          }t          j        |          }|                    t          |f          }d}|                     t          |          5  |                                 d d d            n# 1 swxY w Y   dD ]}t          j                    D ]}t          j        |                                          }t          j        |          }|                    t          |f          }|                                 |	                                 d S )N)rS   r  rl   r   zA SemLock created in a fork)
r   r^  r!   r   r%   rc  r8  r   r  r   )ru   process_methodr$   process_ctxr   r~  queue_methods          r   test_mixed_startmethodz&TestStartMethod.test_mixed_startmethodM  sq   
 6 	 	N#/77==??E)5nEEK##;eX#FFA3G''g>>  			               4 	 	L"1"G"I"I  '3LAAGGII-9.II''{%'JJ				 	s   9BB	!B	c                 0    |                     d           d S r   r   )r   r$   s     r   _put_one_in_queuez!TestStartMethod._put_one_in_queuec  s    		!r   c                     |                     d           t          j        | j        |f          }|                                 |                                 d S rV  )r   r   r   r  r   r   )r   r$   r+   s      r   _put_two_and_nest_oncez&TestStartMethod._put_two_and_nest_onceg  sI    		!!)1FeXVVVr   c                    t          j                    }t          j        | j        |f          }|                                 |                                 g }|                                s;|                    |                                           |                                ;| 	                    t          |          t          ddg                     d S )Nr   r  r   )r   r!   r   r  r   r   r  r]  r   assertSetEqualrh  )ru   r$   r+   r  s       r   test_nested_startmethodz'TestStartMethod.test_nested_startmethodn  s      %''!)1LTYS[\\\++-- 	(NN599;;''' ++-- 	(
 	CLL#q!f++66666r   N)rz   r{   r|   r  r  r  rD  r  r  r  r  rK   r~   r   r   r`   r  r  r  r  r_   r   r   r  r    s%       6 6 [6? ? ?
$ 
$ 
$2 2 2* * *,H H H
B 
B 
B X_S\W,AC C  !<==  >=C C&   [   [7 7 7 7 7r   r  r:  c                   N    e Zd Zd Zd Zd Zd Zd Zed             Z	d Z
d Zd	S )
TestResourceTrackerc                    d}t           j        D ]s}|                     |          5  |dk    r	 d d d            -t          j                    \  }}t          j        t          j        dd|	                    ||          g|gt
          j
                  }t          j        |           t          |dd	
          5 }|                                                                                    d          }|                                                                                    d          }d d d            n# 1 swxY w Y   t!          ||           |                                 |                                 d| d}	t'          t(          d          r}t)          j        t(          j        |	          D ]\}
	 t!          ||           # t.          $ r<}|                     |j        t2          j        t2          j        f           Y d }~ nd }~ww xY wnt9          j                    t(          j        z   }t9          j                    |k     rt9          j        d           	 t!          ||           nH# t.          $ r;}|                     |j        t2          j        t2          j        f           Y d }~n.d }~ww xY wt9          j                    |k     tA          |	          |j!        "                                                    d          }|j!                                         d	                    |          }| #                    ||           | #                    |d|z             d d d            n# 1 swxY w Y   ud S )Na"  if 1:
            import time, os, tempfile
            import multiprocess as mp
            from multiprocess import resource_tracker
            from multiprocess.shared_memory import SharedMemory

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


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


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

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

            time.sleep(10)
        )r2   nooprs  r  )r  r2   )pass_fdsr  r6  T)r  r  zA z< resource was leaked after a process was abruptly terminatedrt  r  r  z8resource_tracker: There appear to be 2 leaked {} objectszresource_tracker: %r: \[Errno)$r.   r0   r   rG   piperv  rw  r   r   r   rx  r"   r  ry  r  r{  r3   r  r7   r;  r   rt  r  r  rr   r  ENOENTEINVALr   r   r  r  r  r  r  r  )ru   r  r2   rC  r  r   r  name1name2r~  r  r  r  rv   r_  s                  r   _test_resource_trackerz*TestResourceTracker._test_resource_tracker  s#   < &4 2	P 2	PEE** 1P 1PF??1P 1P 1P 1P 1P 1P 1P wyy1$cn%)4au1M1M&O/0c,6O= = = !T4000 BAJJLL//1188AAEJJLL//1188AAEB B B B B B B B B B B B B B B !...2 2 2 27$455 6$3G4I6=? ? " "",UE::::& " " " !MM!'EL%,3OPPP!EEEEE	"  $~//'2FFH.**X55
2",UE::::& " " " !MM!'EL%,3OPPP!EEEE	"	 .**X55 -W555hmmoo,,W55   &&,f!'# '#    h///  &F&NOOOc1P 1P 1P 1P 1P 1P 1P 1P 1P 1P 1P 1P 1P 1P 1P2	P 2	Ps   M7BM7=A3D<0M7<E  M7E A7M7<GM7
H	1H	M7H	AM7#I43M74
J9>1J4/M74J99B2M77M;	>M;	c                    ddl m} |j        }|@t          j        |t
          j                   t          j        |t
          j                    t          j
                    5  t          j        d           |                                 d d d            n# 1 swxY w Y   |j        }t          j        ||           t          j        d           t          j        d          }t          j
        d          5 }t          j        d	           |                                }|                                 |                                 t)          j        |          }~t-          j                     |                      |                       |r|                     t5          |          d
           |d         }	|                     t9          |	j        t<                               |                     dt?          |	j                   v            n#|                     t5          |          d           d d d            d S # 1 swxY w Y   d S )Nr   _resource_tracker)r   rV  r8  rS   T)r  alwaysr   zresource_tracker: process died)!multiprocess.resource_trackerr  r<  rG   rH  r<  rI  r   wait_processr^  r_  r`  r  r   r  r   r^  r}  rj  rk  ro  rp  rq  rr  r   rp   r   r   
issubclasscategoryUserWarningrs   message)
ru   r  
should_dier  r   rx   all_warnrz  rt  the_warns
             r   check_resource_tracker_deathz0TestResourceTracker.check_resource_tracker_death  s    	DCCCCC$?GC((( ????$&& 	/ 	/!(+++,,...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/  $
V
3)'22$D111 	3X!(+++--//CKKMMMKKMMMS!!B JLLLbbdd### 3  X222#A;
8+<k J JKKK @#&x'7#8#8!9 : : : :   X222%	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3s%   #)BBB<D=II
I
c                 F    |                      t          j        d           d S rS  )r	  r<  r  r   s    r   test_resource_tracker_sigintz0TestResourceTracker.test_resource_tracker_sigint  s     ))&-?????r   c                 F    |                      t          j        d           d S rS  )r	  r<  rB  r   s    r   test_resource_tracker_sigtermz1TestResourceTracker.test_resource_tracker_sigterm  s     ))&.%@@@@@r   c                 F    |                      t          j        d           d S rW  )r	  r<  rI  r   s    r   test_resource_tracker_sigkillz1TestResourceTracker.test_resource_tracker_sigkill  s     ))&.$?????r   c                     ddl m} |                                 |j        d |fv }||                                z  }|                     |           d S )Nr   r  )r   r  r  r<  _check_aliver  )rC  r   r  reuseds       r   _is_resource_tracker_reusedz/TestResourceTracker._is_resource_tracker_reused  sh    CCCCCC((*** #'D#;6#00222		&r   c                    ddl m} |                                 |j        }t	          j        d          \  }}t	          j        | j        ||f          }|                                 |	                                }|
                                 |                                 |                                 |                     |           d S )Nr   r  Fr   r   )r   r  r  r<  r   r   r   r  r   r   r   r"   r   )ru   r  r   rC  r  r   is_resource_tracker_reuseds          r   test_resource_tracker_reusedz0TestResourceTracker.test_resource_tracker_reused  s    CCCCCC((***$#51111#4+K*+S3 3 3				%&VVXX" 	
								233333r   c                     d}ddt          |          z
  z  }|                     t                    5  t          j        ||           d d d            d S # 1 swxY w Y   d S )Nr   r   r  )r   rq   rJ   r.   register)ru   r2   too_long_name_resources      r   test_too_long_name_resourcez/TestResourceTracker.test_too_long_name_resource'  s      !$c%jj(8!9z** 	E 	E%&<eDDD	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	Es   AAAN)rz   r{   r|   r  r	  r  r  r  r\  r  r  r  r_   r   r   r  r    s        TP TP TPl#3 #3 #3J@ @ @A A A@ @ @   \4 4 4$E E E E Er   r  c                   Z    e Zd Zed             Zd Zd Zej        j	        d             Z
dS )TestSimpleQueuec                 &   |                                  	 |                    |                                           |                    |                                           |                                 d S # |                                 w xY wr   )r7   r   r  rh  r!  s       r   _test_emptyzTestSimpleQueue._test_empty2  s~    	&IIekkmm$$$IIekkmm$$$##%%%%%##%%%%s   AA: :Bc                    t          j                    }t          j                    }t          j                    }t          j        | j        |||f          }d|_        |                                 |                     |                                           |	                                 |
                                 |                     |                                           |                     |                                d           |                     |                                d           |                     |                                           |                                 d S )Nr   TF)r   SimpleQueuer  r   r  r   r   r   r  rh  r7   r   rp   r   r   )ru   r$   r  r  r  s        r   
test_emptyzTestSimpleQueue.test_empty<  s,   +--)/11-355&#*=>
 
 
 

&&&  """'''d+++e,,,&&&		r   c                 |    t          j                    }|                                 |                                 d S r   )r   r   r"   ru   r$   s     r   ru  zTestSimpleQueue.test_closeT  s.    +--r   c                     t          j                    }|                                 |                     |j        j                   |                     |j        j                   d S r   )r   r   r"   r   _readerrI  _writerr#  s     r   test_closedzTestSimpleQueue.test_closed[  sQ    +--,---,-----r   N)rz   r{   r|   r  r  r!  ru  rL  r   cpython_onlyr'  r_   r   r   r  r  0  sl        & & [&  0   
\. . . . .r   r  c                       e Zd Zd ZdS )TestPoolNotLeakOnFailurec                    dg  G fdd          }|                      t          d          5  t          j                            dt
          j                            |                    }|                                 |	                                 d d d            n# 1 swxY w Y   | 
                    t          d D                                  d S )	Nr  c                   6    e Zd Z fdZfdZd Zd Zd ZdS )RTestPoolNotLeakOnFailure.test_release_unused_processes.<locals>.FailingForkProcessc                 \    d| _         d | _        d | _                            |            d S )NzFake Process)r1   r   r  r]  )ru   rW   forked_processess     r   r   z[TestPoolNotLeakOnFailure.test_release_unused_processes.<locals>.FailingForkProcess.__init__l  s2    *	 $!
 ''-----r   c                 J    dk    rt          d          dz  d| _        d S )Nr   Manually induced OSErrorr   r  )r  r  )ru   will_fail_ins    r   r   zXTestPoolNotLeakOnFailure.test_release_unused_processes.<locals>.FailingForkProcess.startr  s2    1$$!"<===!&


r   c                     d| _         d S )Nstoppingr  r   s    r   r  z\TestPoolNotLeakOnFailure.test_release_unused_processes.<locals>.FailingForkProcess.terminatey  s    '


r   c                 .    | j         dk    r	d| _         d S d S )Nr4  stoppedr  r   s    r   r   zWTestPoolNotLeakOnFailure.test_release_unused_processes.<locals>.FailingForkProcess.join|  s"    :++!*DJJJ ,+r   c                 .    | j         dk    p
| j         dk    S )Nr  r4  r  r   s    r   r   z[TestPoolNotLeakOnFailure.test_release_unused_processes.<locals>.FailingForkProcess.is_alive  s    zY.J$*
2JJr   N)rz   r{   r|   r   r   r  r   r   )r/  r2  s   r   FailingForkProcessr-  k  sy        . . . . .' ' ' ' '( ( (+ + +K K K K Kr   r8  r1  r   )r   )contextc              3   >   K   | ]}|                                 V  d S r   r  )r{  r+   s     r   r  zITestPoolNotLeakOnFailure.test_release_unused_processes.<locals>.<genexpr>  s.      CCw  ""CCCCCCr   )rc  r  r   r  r  rK   r  	MagicMockr"   r   r   r[  )ru   r8  r   r/  r2  s      @@r   test_release_unused_processesz6TestPoolNotLeakOnFailure.test_release_unused_processese  sY    	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K0 ##G-GHH 	 	$))!X]5L5L* 6M 6, 6,) - -AGGIIIFFHHH		 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 	CC2BCCCCC	E 	E 	E 	E 	Es   A(B&&B*-B*N)rz   r{   r|   r<  r_   r   r   r*  r*  c  s(        $E $E $E $E $Er   r*  c                      e Zd ZdZej        j        Zd Zd Z	e
d             ZeZd Zd Ze
d             Zd Ze
d	             Zd'dZe
d             Zd'dZe
d             Zd(dZd Ze
d             Zd Ze
d             Zd Ze
d             Zd Ze
d             Zd)dZd Z e
d             Z!d Z"e
d             Z#d Z$e
d              Z%d! Z&e
d"             Z'd# Z(e
d$             Z)d% Z*d&S )*TestSyncManagerTypesa}  Test all the types which can be shared between a parent and a
    child process by using a manager which acts as an intermediary
    between them.

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

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

    # The parent.
    def test_list(self):
        o = self.manager.list()
        o.append(5)
        self.run_worker(self._test_list, o)
        assert o[1] == 6
    c                 x    |                                  | _        | j                                         d | _        d S r   )manager_classr   r   r  r   s    r   r  zTestSyncManagerTypes.setUp  s4    ))++			r   c                     | j         K| j                                         r2| j                                          | j                                          | j                                         d | _        d | _         d S r   )r  r   r  r   r   r  r   s    r   r
  zTestSyncManagerTypes.tearDown  si    9 TY%7%7%9%9 I!!!INN			r   c                 ,    t          j                     d S r   )r   reap_childrenr/  s    r   r  zTestSyncManagerTypes.setUpClass  s    r   c                     t          | j                   t          j                    }t	          t
          d          rt          j        dd          D ])}t          t          j	                              dk    r d S *t          j                    |z
  }dt
          _
        t          j        dt          j	                     d|d	d
           d S d}t          t          j	                              dk    rt          j        |           |dz  }t          j                    |z
  }|dk    r?dt          j        _
        t          j        dt          j	                     d| d
           d S t          t          j	                              dk    d S d S )Nrt  r  Ferrorr   T"multiprocessing.Manager still has  active children after .1f secondsry  r  )r,   r  r   r   r;  r   rt  r   r   r  environment_alteredprint_warningr  rL  )ru   
start_timer  r  r   s        r   wait_proc_exitz#TestSyncManagerTypes.wait_proc_exit  s    	TY^%%
7,-- 	+Cu=== Q Q68899Q>>EE ? ^%%
2.2+% 'P)8)H)J)J'P 'P?A&O'P 'P 'P Q Q Q Q Q Ao577881<<
1Q^%%
2997;DL4) +P-<-L-N-N+P +PCE+P +P +P Q Q Q E o577881<<<<<<r   c                     t          j        ||f          | _        d| j        _        | j                                         |                                  |                     | j        j        d           d S )Nr   Tr   )r   r   r  r   r   rN  rp   r   )ru   workerr0  s      r   
run_workerzTestSyncManagerTypes.run_worker  sj    #+6HHH			+Q/////r   c                     |                                 sJ |                                 |                                 |                    d           d S Nr~  )r  r7   r  r   r0  s     r   r  z TestSyncManagerTypes._test_event  sC    zz||


		r   c                     | j                                         }|                                 |                     | j        |           |                                rJ |                    d           d S rS  )r   r  rh  rQ  r  r  r7   ru   r]  s     r   r  zTestSyncManagerTypes.test_event  s`    L  	(!,,,88::	ur   c                 .    |                                  d S r   rj  rT  s     r   
_test_lockzTestSyncManagerTypes._test_lock      r   ri  c                      t          | j        |                      }|                     | j        |           |                                 |                     t          |j                   d S r   )r  r   rQ  rY  rk  rq   r8  ru   lnamer]  s      r   ro  zTestSyncManagerTypes.test_lock  s\    (GDL%((**+++			,	22222r   c                 V    |                                  |                                 d S r   rj  rk  rT  s     r   _test_rlockz TestSyncManagerTypes._test_rlock       r   c                 v     t          | j        |                      }|                     | j        |           d S r   )r  r   rQ  r`  r\  s      r   rr  zTestSyncManagerTypes.test_rlock  s8    (GDL%((**(!,,,,,r   c                 .    |                                  d S r   rX  rT  s     r   r{  z$TestSyncManagerTypes._test_semaphore  rZ  r   r}  c                      t          | j        |                      }|                     | j        |           |                                 d S r   )r  r   rQ  r{  rk  )ru   snamer]  s      r   r~  z#TestSyncManagerTypes.test_semaphore  sC    (GDL%((**,a000			r   c                 2    |                      d           d S )Nr  )re  )r~  r   s    r   r  z+TestSyncManagerTypes.test_bounded_semaphore  s     "455555r   c                 V    |                                  |                                 d S r   r_  rT  s     r   _test_conditionz$TestSyncManagerTypes._test_condition  ra  r   c                 n    | j                                         }|                     | j        |           d S r   )r   r  rQ  rh  rV  s     r   test_conditionz#TestSyncManagerTypes.test_condition  s2    L""$$,a00000r   c                 H    |j         dk    sJ |                                 d S r   )r  r-  rT  s     r   _test_barrierz"TestSyncManagerTypes._test_barrier  s&    {a		r   c                 p    | j                             d          }|                     | j        |           d S r   )r   r  rQ  rl  rV  s     r   r  z!TestSyncManagerTypes.test_barrier  s4    L  ##*A.....r   c                 >    |5  	 d d d            d S # 1 swxY w Y   d S r   r_   rT  s     r   
_test_poolzTestSyncManagerTypes._test_pool  sq      	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   c                 r    | j                             d          }|                     | j        |           d S )Nrf   r  )r   r  rQ  ro  rV  s     r   	test_poolzTestSyncManagerTypes.test_pool#  s6    L**+++++r   c                 R   |                                 dk    sJ |                                sJ |                                rJ |                                dk    sJ |                                rJ |                                dk    sJ |                                sJ d S Nr  r   r  )r  r  r  r   rT  s     r   _test_queuez TestSyncManagerTypes._test_queue'  s    yy{{axxzz99;;wwyyA~~~~99;;wwyyA~~~~yy{{r   r!   c                 $    t          | j        |          d          }|                    d           |                    d           |                     | j        |           |                                sJ |                                rJ d S rs  )r  r   r   rQ  rt  r  r  )ru   qnamer]  s      r   
test_queuezTestSyncManagerTypes.test_queue1  s    (GDL%((++	a	a(!,,,wwyy6688r   c                 0    |                      d           d S )Nr4  )rw  r   s    r   test_joinable_queuez(TestSyncManagerTypes.test_joinable_queue9  s    (((((r   c                 H   |d         dk    sJ |                     d          dk    sJ |                    d          dk    sJ |                                 |                                 |D ]}t	          |          dk    sJ |                    d          dk    sJ d S )Nr   r   r   )r  r  r  reverser   r  )r   r0  rP  s      r   
_test_listzTestSyncManagerTypes._test_list<  s    1v{{{{yy||q    yy||q    


 	 	A3xx1}}}}wwqzzQr   c                     | j                                         }|                    d           |                     | j        |           |rJ |                     t          |          d           d S )Nr   r   )r   r   r]  rQ  r|  rp   r   rV  s     r   r  zTestSyncManagerTypes.test_listH  se    L	+++Q#####r   c                    t          |          dk    sJ |d         dk    sJ |                    d          dk    sJ t          |                                          dgk    sJ t          |                                          dgk    sJ t          |                                          dgk    sJ |                                ddik    sJ |                                dk    sJ d S )Nr   rb  r   )rb  r   )r   r   r   r  r  rY  r   popitemrT  s     r   
_test_dictzTestSyncManagerTypes._test_dictO  s    3xx1}}}}5zQwwu~~""""CIIKK  ZL0000CHHJJE7****CJJLL!!aS((((xxzzeQZ''''{{}}
******r   c                     | j                                         }d|d<   |                     | j        |           |rJ |                     t          |          d           d S )Nr   rb  r   )r   r  rQ  r  rp   r   rV  s     r   r  zTestSyncManagerTypes.test_dictZ  s_    L%+++Q#####r   c                 ~    |j         dk    sJ |                                dk    sJ |                    d           d S )Nr   r  )r   r   rh  rT  s     r   _test_valuez TestSyncManagerTypes._test_valuea  s9    yA~~~~wwyyA~~~~




r   c                     | j                             dd          }|                     | j        |           |                     |j        d           |                     |                                d           d S )NrZ  r   r  )r   r   rQ  r  rp   r   r   rV  s     r   rc  zTestSyncManagerTypes.test_valueg  sl    LsA&&(!,,,!$$$!$$$$$r   c                     |d         dk    sJ |d         dk    sJ t          |          dk    sJ t          |          ddgk    sJ d S )Nr   r   r  )r   r   rT  s     r   _test_arrayz TestSyncManagerTypes._test_arraym  sX    1v{{{{1v{{{{3xx1}}}}CyyQF""""""r   c                 v    | j                             dddg          }|                     | j        |           d S )NrZ  r   r   )r   r  rQ  r  rV  s     r   r  zTestSyncManagerTypes.test_arrayt  s:    LsQF++(!,,,,,r   c                 :    |j         dk    sJ |j        dk    sJ d S r  r  rT  s     r   _test_namespacez$TestSyncManagerTypes._test_namespacex  s$    uzzzzuzzzzzzr   c                     | j                                         }d|_        d|_        |                     | j        |           d S r  )r   r  rP  rQ  rQ  r  rV  s     r   r  z#TestSyncManagerTypes.test_namespace}  s@    L""$$,a00000r   Nrt  )r}  )r!   )+rz   r{   r|   r}   r   r9  r(  r@  r  r
  r  r  r  rN  rQ  r  r  rY  ro  r`  rr  r{  r~  r  rh  rj  rl  r  ro  rq  rt  rw  ry  r|  r  r  r  r  rc  r  r  r  r  r_   r   r   r>  r>    s        * $,8M  
       [  M  >0 0 0   [     [3 3 3 3   [- - - -   [   
6 6 6   [1 1 1   [/ / /   [
, , ,   [   ) ) ) 	 	 [	$ $ $ + + [+$ $ $   [
% % % # # [#- - -   [1 1 1 1 1r   r>  c                   d    e Zd Z ej        dd           ed          d                         ZdS )TestNamedResourceTModuleNotFoundErrorzspawn specific test.c                    t           j        }|                     t           j        |           t	          |dd          5 }|                    t          j        d                     d d d            n# 1 swxY w Y   t          j	        |          \  }}}| 
                    ||                    d                     d S )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  rg  r  r  r:  textwrapdedentr   r  r   r{  )ru   r  r  rl  r  rv   s         r    test_global_named_resource_spawnz2TestNamedResource.test_global_named_resource_spawn  s     !	(&111&#000 
	AGGHO 	% 	 	 	 	 	
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 %5f==C 	#**W"5"566666s   (A33A7:A7N)rz   r{   r|   rK   r~   r`   r  r_   r   r   r  r    sT        X_T011  !7887 7 98 217 7 7r   r  c                   j    e Zd Zd Z ej        dd           ed          d                         ZdS )MiscTestCasec                 X    t          j        | t          t          j        g d           d S )N)SUBDEBUGr  licensecitation)extranot_exported)r   check__all__r   r  r   s    r   test__all__zMiscTestCase.test__all__  sG    T?/:Q+B +B +B	C 	C 	C 	C 	C 	Cr   Tr  r  c                     t          j        dd          \  }}}|                     |d           |                     ||                    d                     d S )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  rp   r   r{  )ru   rl  r  rv   s       r   ,test_spawn_sys_executable_none_allows_importz9MiscTestCase.test_spawn_sys_executable_none_allows_import  sh     %5C
 
C 	Q#**W"5"566666r   N)rz   r{   r|   r  rK   r~   r`   r  r_   r   r   r  r    sh        C C C X_T011  !<==7 7 >= 217 7 7r   r  c                   :    e Zd Zed             Zed             ZdS )	BaseMixinc                     t           j        j                                        t          j                                        f| _        d S r   )r   r+   	_danglingr   r"  danglingr/  s    r   r  zBaseMixin.setUpClass  s6    '/9>>@@!+00224r   c                    t           j                                         t          t          j        j                  t          | j        d                   z
  }|r(dt           j        _        t          j	        d|            d }t          t          j                  t          | j        d                   z
  }|r(dt           j        _        t          j	        d|            d }d S )Nr   TDangling processes: r   Dangling threads: )rL  r   rk  rh  r   r+   r  r  rK  rL  r"  )r   r   r   s      r   r  zBaseMixin.tearDownClass  s     	!!!/9::Sa=Q=QQ	 	F/3DL,!"D"D"DEEE	i)**Sa-A-AA 	B/3DL,!"@w"@"@AAAr   N)rz   r{   r|   r  r  r  r_   r   r   r  r    sH        4 4 [4   [  r   r  c                      e Zd ZdZej        Zej        Z eej                  Z eej	                  Z	 eej
                  Z
 eej                  Z eej                  Z eej                  Z eej                  Z eej                  Z eej                  Z eej                  Z eej                  Z eej                  Z eej                  Z eej                  Z eej                  Z eej                  Z eej                  Z eej                  Z eej                  ZdS )r  r   N)rz   r{   r|   r   r   r   rP  r\  r   r   r  r   r  r   r!   r4  ri  rq  r}  r  r  r  r  r   r  r^  r  r_   r   r   r  r    sz       D%G +J"l?#BCCO!\/"@AAN"l?#BCCO!\/"@AAN<,--D<,--DL.//E L!>??M<,--DL.//E_677I#|O$DEE_677IL.//El?233GL.//EL.//E|O455H|O455HHHr   r  c                   ,    e Zd ZdZej        Z e ej        d                    Z	 e ej        d                    Z
 e ej        d                    Z e ej        d                    Z e ej        d                    Z e ej        d                    Z e ej        d                    Z e ej        d	                    Z e ej        d
                    Z e ej        d                    Z e ej        d                    Z e ej        d                    Z e ej        d                    Z e ej        d                    Zed             Ze fd            Ze fd            Z xZS )ManagerMixinr   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                 &     | j         j        |i |S r   )r   r  )r   rV   r   s      r   r  zManagerMixin.Pool  s    s{....r   c                 x    t                                                       t          j                    | _        d S r   )r  r  r   r$  r   r  s    r   r  zManagerMixin.setUpClass  s-    %-//r   c                    t          j                    }t          t          d          rt          j        dd          D ](}t          t          j                              dk    r nP)t          j                    |z
  }dt          _        t          j	        dt          j                     d|d	d
           nd}t          t          j                              dk    rt          j
        |           |dz  }t          j                    |z
  }|dk    r>dt          j        _        t          j	        dt          j                     d| d
           n$t          t          j                              dk    t          j                     | j                                        dk    rPdt          j        _        t          j	        d           t          j	        | j                                                   | j                                         | j                                         d | _        t'                                                       d S )Nrt  r  FrE  r   TrG  rH  rI  rJ  ry  r  r   z5Shared objects which still exist at manager shutdown:)r   r   r;  r   rt  r   r   r  rK  rL  r  rL  rq  rr  r   _number_of_objects_debug_infor  r   r  r  )r   rM  r  r  r   r  s        r   r  zManagerMixin.tearDownClass  sY   
 ^%%
7,-- 	+Cu=== Q Q68899Q>>E ? ^%%
2.2+% 'P)8)H)J)J'P 'P?A&O'P 'P 'P Q Q Q Ao577881<<
1Q^%%
2997;DL4) +P-<-L-N-N+P +PCE+P +P +P Q Q Q  o577881<< 	
;))++q00 04DL,! #9 : : :!#+"9"9";";<<<r   )rz   r{   r|   r   r   r   rD  operator
attrgetterr!   r4  ri  rq  r}  r  r  r  r  r   r  r   r  r  r  r  r  r  rm  rn  s   @r   r  r    s,       D%GH(X(99::EH0X01HIIJJM8'H'7788DH(X(99::E,,-@AABBIx 3 34N O OPP,,-@AABBIH(X(99::Eh*x*+<==>>GH(X(99::EH(X(99::E8'H'7788D8'H'7788D,,-@AABBI/ / [/ 0 0 0 0 [0 )  )  )  )  [)  )  )  )  ) r   r  c                      e Zd ZdZej        j        Zej        j        Z eej        j	                  Z	 eej        j
                  Z
 eej        j                  Z eej        j                  Z eej        j                  Z eej        j                  Z eej        j                  Z eej        j                  Z eej        j                  Z eej        j                  Z eej        j                  Z eej        j                  Z eej        j                  Z eej        j                  Z eej        j                  ZdS )ThreadsMixinr   N)rz   r{   r|   r   r   dummyr   rP  r\  r   r  r  r   r!   r4  ri  rq  r}  r  r  r  r  r   r  r_   r   r   r  r  8  se       D#+G &1J"l?#8#HIIO"l?#8#HIIO<-233D<-233DL.455E L!6!DEEM<-233DL.455E_2<==I#|O$9$JKK_2<==IL.455El?0899GL.455EL.455EEEr   r  c           	      `   | d         }t                      }h d}|                                D ]\\  }}t          |t                    st	          |t
                    r|t
          u r;t          |j                  |k    sJ |j                    |j        D ]}	|r|	|k    r|rd|	                                z   |dd          z   }
||	                                dz            } G d d||t          j
                  }|	dk    r t          j        d	          |          }|
x|_        |_        ||_        || |
<   t	          |t          j
                  r2|r. G d
 d|t                     }|x|_        |_        ||_        || |<   ^d d gd gfd}fd}|| d<   || d<   d S )Nrz   >   r   r   r   Withr   Mixinc                       e Zd ZdS *install_tests_in_module_dict.<locals>.TempNr  r_   r   r   Tempr  d  s        Dr   r  r   r  c                       e Zd ZdS r  r  r_   r   r   r  z*install_tests_in_module_dict.<locals>.Tempo  s        r   c                     t          j        t                     t           j                                         t           j        j                                        d<   t          j                                        d<   t          j        d          d<   	 t          j	        d           n%# t          $ r t          j        dz             w xY wt          j                            d          r7	 t          j                    } n"# t"          $ r t          j        d          w xY wt%                       t'          j                     t          j                                        t.                     d S )	Nr   r   Trh   rj   z start method not supportedlinuxz1OSError raises on RLock creation, see issue 3111!)r   r  r  r+   _cleanupr  r   r"  rU   ro   rJ   rK   rL   r   r   r  rq  r  rO   r   get_temp_dirr  r  r  )rn  r  old_start_methodrX   s    r   setUpModulez1install_tests_in_module_dict.<locals>.setUpModulex  sz   .w777((***%-7<<>>)..00->$OOO	C,\FFFFF 	C 	C 	C#L$A%B C C C	C <""7++ 	;;&,.. ; ; ;' ): ; ; ;; 	 !!!"$$--i88888s   B0 0"C5D	 	D(c                  f   d} t           j                                         t          j        d         d           t          t          j        j                  t          d                   z
  }|r*d} dt           j        _        t          j	        d|            d }t          t          j                  t          d                   z
  }|r*d} dt           j        _        t          j	        d|            d }| rt          j        d           t          j                                         d S )	NFr   Trj   r  r   r  r  )rL  r   rk  r   ro   rh  r+   r  rK  rL  r"  r   r  r   _cleanup_tests)
need_sleepr   r   r  r  s      r   tearDownModulez4install_tests_in_module_dict.<locals>.tearDownModule  s   
 	!!!()9!)<DIIII/9::S!=M=MM	 	FJ/3DL,!"D"D"DEEE	i)**S!-=-== 	BJ/3DL,!"@w"@"@AAA  	JsOOO++-----r   r  r  )globalsr  r   r  r  r   rh  r   
capitalizerK   TestCaser   requires_hashdigestrz   r|   r{   rK  )remote_globsrX   	only_typeexclude_typesr{   local_globs	ALL_TYPESr1   basetype_newnamer  r  r  r  r  r  s    `             @@r   install_tests_in_module_dictr  P  sj   j)J))K333I!'')) & &
d$%% 	dL)) 	&|##t)**i7779K777+ - - )!3!3   5#3#3#5#55QRR@#E$4$4$6$6$@A    4(9   I%%D>=eDDTJJD4;; 1",(,W%%- h/00 	&     tV   044DMD-(DO!%Ld|Hv9 9 9 9 9 9 9,. . . . . .: #.L%3L!"""r   SemLockzSemLock not availabler  z
Linux onlyc                       e Zd Zd ZdS )SemLockTestsc                      G d dt           j                  }dt          j                     } |ddd|d          }t                               |           d S )Nc                       e Zd ZdS )3SemLockTests.test_semlock_subclass.<locals>.SemLockNr  r_   r   r   r  r    r  r   r  ztest_semlock_subclass-r   r   r:  F)r   r  rG   r   
sem_unlink)ru   r  r1   r   s       r   test_semlock_subclassz"SemLockTests.test_semlock_subclass  st    	 	 	 	 	&. 	 	 	5	55GAq"dE**##D)))))r   N)rz   r{   r|   r  r_   r   r   r  r    s#        * * * * *r   r  )r9   NrS  )rK   unittest.mockr$   r  r  r   r  r   r   rG   rq  r  r\   r<  r  r  r  r  rv  r  r  r   r-  ro  r^  test.supportrL  test.support.script_helperr   r   r   r   r   r   r	   r
   import_moduler   r"  r  r   rX  multiprocess.dummymultiprocess.heapmultiprocess.managersr  multiprocess.queuesr   r   HAVE_SEND_HANDLErJ  ImportErrormultiprocess.sharedctypesr   r   r  r   	HAS_SHMEMr-  r;  r   rL   r  r  r  r  r   r*   r   r%   r,   r1   r.   r3   r  r  rR  r   r  r  r  r  r  r  HAVE_GETVALUEr   r  r7   r;   rH   r<  r  ctypesr@   rA   rB   rC   rK  rO   r`   r  rb   r   r   r   r   r   r   r  r  r	  r  r  rf  rw  r  r  r  r  r  r  r  rJ  ry  r  r  r  r  r  r  rJ   r  r  r  rr  rv  rx  r  r  r  r7  r  r  r  r  r  r  r!   r  r  r  r  r  r  r  r  r  r  rL  rc  rn  r  r  r  r  r  r  r  r  r  r  r  r  r   r"  r0  r3  r5  r7  r9  rF  rR  ru  r}  r  r  r  r  r  r  r~   r  r  r*  r>  r  r  r  r  r  r  r  r  r_   r   r   <module>r     sy  
            				     



 				 				                         ! ! ! !       ' ' ' ' ' ' & & & & & & " " " " " " & & & & & & & & & & & & ) ) ) ) ) ) ( ( ( ( ( ( /=./ABB   6 7 7 7     & & & &                              &&&&&&.MM   MMM55555555   ******II   IIIMMMM   FFF 77'(( _W-G _ (
]
^
^^
 	 dE222 :>>*--7444    ; ; ; 7g------5 5 5 O	 	  1#2 Hh#0 Hh ( G,6? ? ? 
	  ( ( ( ( ( (# # #
BJ}%%EEEEE 8
9)============= ) ) )I$((E(Hzzz)
K K K  2L L L L LX. L L L@0 0 0 0 0F 0 0 0"    6   6
* 
* 
*        N	8 N	8 N	8 N	8 N	8< N	8 N	8 N	8j         /)      ,Q7 Q7 Q7 Q7 Q7l Q7 Q7 Q7n  $ $ $@ @ @ @ @ @ @ @J
       03@ 3@ 3@ 3@ 3@\ 3@ 3@ 3@ld d d d d\ d d dN	5W 5W 5W 5W 5W 5W 5W 5W@& & & & & & & &.  
6 6 6 6 6F 6 6 6r       x1 x1 x1 x1 x1< x1 x1 x1|C3 C3 C3 C3 C3 C3 C3 C3LM3 M3 M3 M3 M3 M3 M3 M3fY/ Y/ Y/ Y/ Y/l Y/ Y/ Y/~     $ $ $  $ $ $ $ $F $ $ $ % $ $ $ $: $ $ $  w! w! w! w! w! w! w! w!r    & & & & &L & & &PB  B  B  B  B l B  B  B P F E E E E E E E E E    V     , , , , ,I , , ,	 	 	 	 	 	 	 	 
  56  * * * 	  56;  ? ? ? 	  53-  @ @ @4> 4> 4> 4> 4>\ 4> 4> 4>v 
  / / / / /; / / /   kI  6 6 6K K K K KK K K K   { # # # 
. . . . . . . .b $#E**22 22 22 22 22, 22 22 +*22p 599G/ G/ G/ G/ G/l G/ G/ G/R78 78 78 78 78L 78 78 78t. . . . ., . . .`L L L L L L L Ld ]$JKK##E**@ @ @ @ @| @ @ +* LK@Lb b b b b b b bP
 
 
 
 
9 
 
 
5) 5) 5) 5) 5) 5) 5) 5)p Y EFF##E**YJ YJ YJ YJ YJ YJ YJ +* GFYJ~u u u u uL u u ux% % % % %h' % % %VB B B B B< B B Bx6 6 6 6 6\ 6 6 6DE E E E E) E E E& $#E**5 5 5 5 5! 5 5 +*5B   $#E*** * * * *x( * * +**<               *' ' ' ' '!2 ' ' '*g g g g gx  g g gZ
B 
B 
B 
B 
B) 
B 
B 
B 8 8 8 8 8! 8 8 8@2 2 2 2 28$ 2 2 2D' ' ' ' 'X& ' ' '"1 1 1 1 1h/ 1 1 1><: <: <: <: <:8$ <: <: <:DA A A A Ah' A A AF7 7 7 7 7h' 7 7 7D (=? ?kE kE kE kE kE(+ kE kE? ?kE\0. 0. 0. 0. 0.h' 0. 0. 0.f&E &E &E &E &Ex0 &E &E &ER $#E**t1 t1 t1 t1 t18, t1 t1 +*t1n7 7 7 7 7) 7 7 767 7 7 7 78$ 7 7 7>       26 6 6 6 6Y 6 6 62E  E  E  E  E 9 E  E  E P6 6 6 6 69 6 6 62 @E\4 \4 \4 \4~ WW-y999;RSS(,77* * * * *8$ * * 87 TS* * *sf    C. .C87C8<
D DDD D('D(,D1 1D;:D;/H   HH H+*H+