+
    i  c                   s*   R t ^ RIt^ RIHt ^ RIt^ RIt^ RIt^ RIH	t	 ^ RI
t
^ RIt^ RIHt ^ RIt^ RIt^ RIHt ]P$                  ! 4       tRs ! R R4      tR	 t]
P.                  ! ]4       ^t^=t ! R
 R]4      t ! R R4      tR t ! R R]4      t ! R R]4      t  ! R R]4      t! ! R R]	4      t"R t#R$R lt$R%R lt% ! R R]
PL                  4      t'Rs(Rs)R t*R t+ ! R R]PX                  4      t-R t.R!t/].]/0t0 ! R" R#]Pb                  4      t2R# )&z"Brian Quinlan (brian@sweetapp.com)N)_base)Queue)partial)format_exceptionFc                   s8   a  ] tR t^Dt o R tR tR tR tRtV t	R# )_ThreadWakeupc                s    R V n         \        P                  ! 4       V n        \        P
                  ! R R7      w  V n        V n        R# )F)ZduplexN)_closed	threadingLock_lockmpZPipe_reader_writerself   &3/usr/lib64/python3.14/concurrent/futures/process.py__init__Z_ThreadWakeup.__init__E   s.    ^^%
%'WWE%:"dl    c                s   V P                   ;_uu_ 4        V P                  '       g<   R V n        V P                  P                  4        V P                  P                  4        RRR4       R#   + '       g   i     R# ; iTN)r   r   r   closer
   r   r   r   r   Z_ThreadWakeup.closeJ   sI     ZZZ<<<#""$""$	 ZZZs   AA--A>	c                s    V P                   ;_uu_ 4        V P                  '       g   V P                  P                  R 4       RRR4       R#   + '       g   i     R# ; i)r   N)r   r   r   Z
send_bytesr   r   r   wakeupZ_ThreadWakeup.wakeupV   s2    ZZZ<<<'', ZZZs   .AA	c                s    V P                   '       d   \        R 4      hV P                  P                  4       '       d   V P                  P	                  4        K<  R# )z!operation on closed _ThreadWakeupN)r   RuntimeErrorr
   ZpollZ
recv_bytesr   r   r   clearZ_ThreadWakeup.clear[   s?    <<<BCCll!!LL##% "r   )r   r   r
   r   N)
__name__
__module____qualname____firstlineno__r   r   r   r   __static_attributes____classdictcell____classdict__   @r   r   r   D   s     ;

%-
& &r   r   c                  s    R s \        \        P                  4       4      p V  F  w  rVP	                  4        K  	  V  F  w  r1VP                  4        K  	  R# r   )_global_shutdownlist_threads_wakeupsitemsr   join)r#   _thread_wakeupZts       r   _python_exitr'   b   sL    !'')*E! " 	 r   c                   s,   a  ] tR t^t o R tR tRtV tR# )_RemoteTracebackc                s    Wn         R # Ntb)r   r+      &&r   r   Z_RemoteTraceback.__init__   s    r   c                s    V P                   # r)   r*   r   r   r   __str__Z_RemoteTraceback.__str__   s    wwr   r*   N)r   r   r   r   r   r-   r   r   r   r   r   r(   r(      s      r   r(   c                   s,   a  ] tR t^t o R tR tRtV tR# )_ExceptionWithTracebackc                s    R P                  \        \        V4      W4      4      pWn        RV P                  n        RV,          V n        R# ) Nz

"""
%s""")r$   r   typeexc__traceback__r+   )r   r1   r+      &&&r   r   Z _ExceptionWithTraceback.__init__   s;    WW%d3i9: "& 2%r   c                s>    \         V P                  V P                  33# r)   )_rebuild_excr1   r+   r   r   r   
__reduce__Z"_ExceptionWithTraceback.__reduce__   s    dhh000r   r1   r+   N)r   r   r   r   r   r5   r   r   r   r   r   r.   r.      s     &1 1r   r.   c                 s&    \        V4      V n        V # r)   )r(   	__cause__r6   r,   r   r4   r4      s    $R(CMJr   c                   s&   a  ] tR t^t o R tRtV tR# )	_WorkItemc                6    Wn         W n        W0n        W@n        R # r)   )futurefnargskwargs)r   r:   r;   r<   r=      &&&&&r   r   Z_WorkItem.__init__   s    	r   )r<   r;   r:   r=   Nr   r   r   r   r   r   r   r   r   r   r8   r8            r   r8   c                   s*   a  ] tR t^t o RR ltRtV tR# )_ResultItemNc                r9   r)   )work_id	exceptionresultexit_pid)r   rB   rC   rD   rE   r>   r   r   Z_ResultItem.__init__   s    " r   )rC   rE   rD   rB   NNNr?   r   r   r   rA   rA      s     ! !r   rA   c                   s&   a  ] tR t^t o R tRtV tR# )	_CallItemc                r9   r)   )rB   r;   r<   r=   )r   rB   r;   r<   r=   r>   r   r   Z_CallItem.__init__   s    	r   )r<   r;   r=   rB   Nr?   r   r   r   rG   rG      r@   r   rG   c                   sB   a a ] tR t^t oRV 3R lltV 3R ltRtVtV ;t# )
_SafeQueuec               s@   < W0n         W@n        \        SV `  WR 7       R# ))ctxN)pending_work_itemsr&   superr   )r   max_sizerI   rJ   r&   	__class__s   &&$$$r   r   Z_SafeQueue.__init__   s    "4*+r   c                s  < \        V\        4      '       d   \        \        V4      WP                  4      p\        R P                  RP                  V4      4      4      Vn        V P                  P                  VP                  R4      pV P                  P                  4        Ve   VP                  P                  V4       R# R# \         SV `E  W4       R# )z

"""
{}"""r/   N)
isinstancerG   r   r0   r2   r(   Zformatr$   r7   rJ   poprB   r&   r   r:   set_exceptionrK   _on_queue_feeder_error)r   eZobjr+   	work_itemrM   s   &&&  r   rQ   Z!_SafeQueue._on_queue_feeder_error   s    c9%%!$q'1oo>B*>+@+@+MNAK//33CKKFI%%' $  ..q1 % G*12r   )rJ   r&   )    )	r   r   r   r   r   rQ   r   r   __classcell__rM   r      @@r   rH   rH      s     ,
3 3r   rH   c                 s6    V Uu. uF  q ! V!  NK
  	  up# u upi r)    )r;   Zchunkr<      && r   _process_chunkrZ      s      #((%$BI%(((s   c           	      s     V P                  \        WW4R 7      4       R#   \         d=   p\        YUP                  4      pT P                  \        YTR7      4        Rp?R# Rp?ii ; i))rD   rC   rE   rC   rE   N)putrA   BaseExceptionr.   r2   )result_queuerB   rD   rC   rE   rR   r1   s   &&&&&  r   _sendback_resultr_      s`    9W/8M 	N 9%a9W.68 	9 	99s     A'1A""A'c                 sl   Ve    V! V!   ^ pR p V P	                  RR7      pVf'   VP                  \        P                  ! 4       4       R # Ve%   V^,          pWT8  d   \        P                  ! 4       p VP                  ! VP                  / VP                  B p\        WP                  VVR7       ??Vf   K  R #   \          d&    \        P                  P                  RRR7        R # i ; i  \          d8   p	\        YP                  4      p
\        YP                  T
TR7        R p	?	LyR p	?	ii ; i)NzException in initializer:T)Zexc_infoZblock)rD   rE   r[   )r]   r    ZLOGGERZcriticalgetr\   osZgetpidr;   r<   r=   r_   rB   r.   r2   )
call_queuer^   initializerinitargsZ	max_tasksZ	num_tasksrE   Z	call_itemZrrR   r1   s   &&&&&      r   _process_workerrf      s%    	" IH
NNN.	RYY[) NI%99;		innA	0@0@AA \+<+<Q&.0 G  	LL!!"=!M 		*  	0)!__=C\+<+<&.0 0	0s)   B> 6&C1 >,C.-C.1D3<-D..D3c                   s~   a a ] tR tRt oV 3R ltR tR tR tR tR t	R t
R	 tR
 tR tR tRR ltR tRtVtV ;t# )_ExecutorManagerThreadi  c                s  < VP                   V n        VP                  V n        V P                  \        P
                  P                  3R  lp\        P                  ! W4      V n	        VP                  V n        VP                  V n        VP                  V n        VP                   V n        VP$                  V n        VP(                  V n        \,        SV `]  4        R# )c                 s6    V! R 4       VP                  4        R# )z?Executor collected: triggering callback for QueueManager wakeupN)r   )r%   r&   Zmp_util_debugr3   r   
weakref_cbZ3_ExecutorManagerThread.__init__.<locals>.weakref_cb*  s      1 2  "r   N)_executor_manager_thread_wakeupr&   _shutdown_lockshutdown_lockr	   ZutilZdebugweakrefZrefexecutor_reference
_processes	processes_call_queuerc   _result_queuer^   	_work_idswork_ids_queue_max_tasks_per_childmax_tasks_per_child_pending_work_itemsrJ   rK   r   )r   executorrh   rM   s   && r   r   Z_ExecutorManagerThread.__init__  s    
 &EE%44 &*%7%7%'WW]]	# #*++h"C ",, #.. %22 '00 $,#@#@  #+">">r   c                sf     V P                  4        T P	                  4       w  r4pT'       d   T P                  T4       R# Te   T P                  T4       TP                  RJpT'       d6   T P                  P                  TP                  4      pTP                  4        ?T P                  4       ;p'       dR   T'       d/   T P                  ;_uu_ 4        TP                  4        RRR4       MTP                  P                  4        ?T P                  4       '       g   EK#  T P!                  4        T P                  4        T P"                  '       d   EKX  T P%                  4        R#   \         d(   p\        T4      pT P                  T4        Rp?R# Rp?ii ; i  + '       g   i     L; ir   )add_call_item_to_queuer]   r   terminate_brokenwait_result_broken_or_wakeupprocess_result_itemrE   ro   rO   r$   rm   rk   _adjust_process_count_idle_worker_semaphoreZreleaseis_shutting_downflag_executor_shutting_downrJ   join_executor_internals)r   r1   causeresult_item	is_brokenZprocess_exitedprw   s   &       r   runZ_ExecutorManagerThread.runJ  s[    ++- -1,M,M,O)KE%%e,&((5!,!5!5T!A!**;+?+?@AFFH  #668888%!///$::< 0/ !77??A $$&&002
 ++- ...002U ! (-%%e,0 0/s#   E+ F +F6FF F0	c                s    V P                   P                  4       '       d   R#  V P                  P                  RR7      pV P                  V,          pVP
                  P                  4       '       dJ   V P                   P                  \        VVP                  VP                  VP                  4      R R7       K  V P                  V K    \        P                   d     R# i ; i)TNFr`   )rc   Zfullrs   ra   rJ   r:   Zset_running_or_notify_cancelr\   rG   r;   r<   r=   queueEmpty)r   rB   rS   s   &  r   rx   Z-_ExecutorManagerThread.add_call_item_to_queue~  s     ##%%--111> !33G<	##@@BBOO''	'2;,,2;..2;2B2B)D /3	 ( 4 //8 ;; s   C C%$C%c                s   V P                   P                  pV P                  P                  pW.p\        V P                  P                  4       4       Uu. uF  qDP                  NK  	  pp\        P                  P                  W5,           4      pR pRpR p	W9   d    VP                  4       p	RpMW&9   d   RpV P                  P                  4        WV3# u upi   \         d   p
\        T
4      p R p
?
L>R p
?
ii ; iNTF)r^   r
   r&   r!   ro   valuesZsentinelr	   Z
connectionwaitZrecvr]   r   r   )r   Zresult_readerZwakeup_readerZreadersr   Zworker_sentinelsZreadyr   r   r   r1   s   &          r   rz   Z3_ExecutorManagerThread.wait_result_broken_or_wakeup  s     ))11**22 004T^^5J5J5L0MN0M1JJ0MN""7#=>	!.+002!	 #I  "u,,% O ! .(-.s   CC C;&C66C;c                s   V P                   P                  VP                  R 4      pVe]   VP                  e(   VP                  P                  VP                  4       R # VP                  P                  VP                  4       R # R # r)   )rJ   rO   rB   rC   r:   rP   Z
set_resultrD   )r   r   rS   rY   r   r{   Z*_ExecutorManagerThread.process_result_item  sm    
 ++//0C0CTJ	 $$0  ..{/D/DE  ++K,>,>?	 !r   c                sn    V P                  4       p\        ;'       g    VR J ;'       g    VP                  # r)   )rm   r    _shutdown_thread)r   rw      & r   r~   Z'_ExecutorManagerThread.is_shutting_down  s>    **,
 ! - -H$4 - -,,	.r   c                sV   V P                  4       pVe   RVn        RVn        R p\        R4      pVe$   \	        RRP                  V4       R24      Vn        V P                  P                  4        F"  w  rE VP                  P                  V4       ?K$  	  V P                  P                  4        V P                  P                  4        F  pVP!                  4        K  	  V P"                  P%                  4        V P'                  RR7       R #   \        P                   d     Li ; i)NzKA child process terminated abruptly, the process pool is not usable anymoreTz^A process in the process pool was terminated abruptly while the future was running or pending.z
'''
r/   z''')broken)rm   _brokenr   BrokenProcessPoolr(   r$   r7   rJ   r#   r:   rP   r    ZInvalidStateErrorr   ro   r   	terminaterc   _terminate_broken_join_executor_internals)r   r   rw   ZbperB   rS   r   s   &&     r   r   Z(_ExecutorManagerThread._terminate_broken  s    **,!1H )-H%H   !6 7 ,"''%.)-/CM #'"9"9"?"?"AG  ..s3  #B 	%%' &&(AKKM ) 	))+ 	%%T%2% ** 
 s   7DD('D(c                s    V P                   ;_uu_ 4        V P                  V4       R R R 4       R #   + '       g   i     R # ; ir)   )rk   r   )r   r   r,   r   ry   Z'_ExecutorManagerThread.terminate_broken  s+    ""5)  s	   1A	c                s   V P                  4       pVe   RVn        VP                  '       dp   / pV P                  P	                  4        F+  w  r4VP
                  P                  4       '       d   K'  WBV&   K-  	  W n          V P                  P                  4        K  R # R #   \        P                   d     Mi ; iRTn        R # r   )rm   r   _cancel_pending_futuresrJ   r#   r:   Zcancelrs   Z
get_nowaitr   r   )r   rw   Znew_pending_work_itemsrB   rS   s   &    r   r   Z2_ExecutorManagerThread.flag_executor_shutting_down  s     **,(,H%/// *,&*.*A*A*G*G*I&G$++2244:Cw7 +J +A' ++668 0    !;;  490s   B! !B98B9c                s   V P                  4       p^ pW!8  dW   V P                  4       ^ 8  d@   \        W,
          4       F(  p V P                  P                  R4       V^,          pK*  	  KZ  R# R#   \        P
                   d      Kw  i ; i)rT   N)get_n_children_aliverangerc   Z
put_nowaitr   ZFull)r   Zn_children_to_stopZn_sentinels_sentZis   &   r   shutdown_workersZ'_ExecutorManagerThread.shutdown_workers  s    !668  4--/!3-@AOO..t4$)$ B 4 5 zz s   $A11B
Bc                s    V P                   ;_uu_ 4        V P                  4        R R R 4       R #   + '       g   i     R # ; ir)   )rk   r   r   r   r   r   Z._ExecutorManagerThread.join_executor_internals%  s)    ))+  s	   0A	c                sd   V'       g   V P                  4        V P                  P                  4        V P                  P                  4        V P                  P                  4        V P
                  P                  4        F+  pV'       d   VP                  4        VP                  4        K-  	  R # r)   )	r   rc   r   Zjoin_threadr&   ro   r   r   r$   )r   r   r   rY   r   r   Z/_ExecutorManagerThread._join_executor_internals)  ss    !!# 	##%  " &&(AFFH )r   c                sV    \        R  V P                  P                  4        4       4      # )c              3   s@   "   T F  qP                  4       x  K  	  R # 5ir)   )is_alive)Z.0r   r   r   Z	<genexpr>Z>_ExecutorManagerThread.get_n_children_alive.<locals>.<genexpr><  s     A)@A::<<)@s   )Zsumro   r   r   r   r   r   Z+_ExecutorManagerThread.get_n_children_alive:  s     A)>)>)@AAAr   )	rc   rm   ru   rJ   ro   r^   rk   r&   rs   )F)r   r   r   r   r   r   rx   rz   r{   r~   r   ry   r   r   r   r   r   r   r   rU   rV   rW   r   rg   rg     sQ     ,\2h.-<@.-3^*94,"B Br   rg   c                  sP   \         '       d   \        '       d   \        \        4      hR s  ^ RIp  \
        P                  ! R4      pTR8X  d   R# TR8  d   R# RT,          s\        \        4      h  \         d    Rs\        \        4      hi ; i  \        \        3 d     R# i ; i)TNzxThis Python build lacks multiprocessing.synchronize, usually due to named semaphores being unavailable on this platform.ZSC_SEM_NSEMS_MAXi   z@system provides too few semaphores (%d available, 256 necessary)i)	_system_limits_checked_system_limitedZNotImplementedErrorZmultiprocessing.synchronizeZImportErrorrb   ZsysconfZAttributeError
ValueError)multiprocessingZ	nsems_maxs     r   _check_system_limitsr   C  s    ?%o66!3*JJ12	 B 	C 	46?@O
o
..+  3F 	 "/223 J' s   A0 B 0BB%$B%c              #   sx   "   V  F/  pVP                  4        V'       g   K  VP                  4       x  K  	  R # 5ir)   )ZreverserO   )ZiterableZelementr   r   _chain_from_iterable_of_listsr   c  s,      g++- s   ::c                   s    ] tR tRtRtR# )r   io  rX   N)r   r   r   r   r   rX   r   r   r   r   o  s    r   r   r   killc                   s*  a a ] tR tRt oRRR/R lltR tR tR tR tR	 t	]
P                  P                  P                  ]	n        R
RR^RR/V 3R lltRRR/R llt]
P                  P                  P                  ]n        R tR tR tRtVtV ;t# )ProcessPoolExecutori~  Nru   c               sH   \        4        VfZ   \        P                  ! 4       ;'       g    ^V n        \        P
                  R8X  d    \        \        V P                  4      V n        MJV^ 8:  d   \        R4      h\        P
                  R8X  d   V\        8  d   \        R\         24      hWn        Vf1   Ve   \        P                  ! R4      pM\        P                  ! 4       pW n        V P                  P                  RR7      R8g  V n        Ve   \        V4      '       g   \        R4      hW0n        W@n        Ve`   \%        V\&        4      '       g   \        R	4      hV^ 8:  d   \        R
4      hV P                  P                  RR7      R8X  d   \        R4      hWPn        R V n        / V n        RV n        \0        P2                  ! 4       V n        \0        P6                  ! ^ 4      V n        RV n        ^ V n        / V n        RV n         \C        4       V n"        V P                  \F        ,           p\I        W`P                  V P>                  V PD                  R7      V n%        RV PJ                  n&        VPO                  4       V n(        \R        PT                  ! 4       V n+        R # )NZwin32z"max_workers must be greater than 0zmax_workers must be <= ZspawnF)Z
allow_noneZforkzinitializer must be a callablez&max_tasks_per_child must be an integerz max_tasks_per_child must be >= 1zpmax_tasks_per_child is incompatible with the 'fork' multiprocessing start method; supply a different mp_context.)rL   rI   rJ   r&   T),r   rb   Zprocess_cpu_count_max_workerssysZplatformZmin_MAX_WINDOWS_WORKERSr   r	   Zget_context_mp_contextZget_start_method#_safe_to_dynamically_spawn_childrenZcallableZ	TypeError_initializer	_initargsrN   Zintrt   _executor_manager_threadrn   r   r   r   rj   Z	Semaphorer}   r   _queue_countrv   r   r   ri   EXTRA_QUEUED_CALLSrH   rp   Z_ignore_epipeZSimpleQueuerq   r   r   rr   )r   Zmax_workersZ
mp_contextrd   re   ru   Z
queue_sizes   &&&&&$ r   r   ZProcessPoolExecutor.__init__  sY   ( 	 " 4 4 6 ; ;!D||w&$'(<(,(9(9%;! a !EFF,,')22 -.B-CDF F !,".^^G4
^^-
%   11U1CvM 	0 "8K+@+@<=='!*1377 HII$) !CDD00E0BfL  "C D D %8! )-%  !&'nn.&/&9&9!&<##% ',$ 0=, &&);;
%%5%5#77>>@ *.&'335r   c                s    V P                   fl   V P                  '       g   V P                  4        \        V 4      V n         V P                   P	                  4        V P
                  \        V P                   &   R # R # r)   )r   r   _launch_processesrg   startri   r"   r   r   r   _start_executor_manager_threadZ2ProcessPoolExecutor._start_executor_manager_thread  sc    ((0;;;&&(,B4,HD)))//144 T::; 1r   c                s    V P                   f   R # V P                  P                  RR7      '       d   R # \        V P                   4      pWP                  8  d   V P                  4        R # R # )NF)Zblocking)rn   r}   Zacquirelenr   _spawn_process)r   Zprocess_countr   r   r|   Z)ProcessPoolExecutor._adjust_process_count  s]     ??" &&...>>DOO,,,, ! -r   c                s    \        \        V P                  4      V P                  4       F  pV P	                  4        K  	  R # r)   )r   r   rn   r   r   )r   r%   r   r   r   Z%ProcessPoolExecutor._launch_processes	  s1    
 s4??+T->->?A! @r   c                s   V P                   P                  \        V P                  V P                  V P
                  V P                  V P                  3R 7      pVP                  4        WP                  VP                  &   R# ))Ztargetr<   N)r   ZProcessrf   rp   rq   r   r   rt   r   rn   Zpid)r   r   r   r   r   Z"ProcessPoolExecutor._spawn_process  sk    $$"""$$##..++	- % . 	
	!"r   c               s   V P                   ;_uu_ 4        V P                  '       d   \        V P                  4      hV P                  '       d   \	        R 4      h\
        '       d   \	        R4      h\        P                  ! 4       p\        WAW#4      pWPP                  V P                  &   V P                  P                  V P                  4       V ;P                  ^,          un
        V P                  P                  4        V P                  '       d   V P!                  4        V P#                  4        VuuRRR4       #   + '       g   i     R# ; i)z*cannot schedule new futures after shutdownz6cannot schedule new futures after interpreter shutdownN)rj   r   r   r   r   r    r    ZFuturer8   rv   r   rr   r\   ri   r   r   r|   r   )r   r;   r<   r=   ZfZws   ""*,  r   submitZProcessPoolExecutor.submit  s       |||'55$$$"#OPP" $: ; ; A!.A:;$$T%6%67NNt001"00779777**,//1+ !   s   9E E &CE  E	timeout	chunksize
buffersizec          	     s   < V^8  d   \        R4      h\        SV `	  \        \        V4      \
        P                  ! \        V!  V4      VVR7      p\        V4      # )i   zchunksize must be >= 1.)r   r   )	r   rK   mapr   rZ   	itertoolsZbatchedZzipr   )r   r;   r   r   r   Z	iterablesZresultsrM   s   &&$$$* r   r   ZProcessPoolExecutor.map5  s[    4 q=677'+gnb9'//YK&-)3  5 -W55r   cancel_futuresFc               s   V P                   ;_uu_ 4        W n        R V n        V P                  e   V P                  P	                  4        RRR4       V P
                  e#   V'       d   V P
                  P                  4        RV n        RV n        V P                  e#   V'       d   V P                  P                  4        RV n        RV n
        RV n        R#   + '       g   i     L; ir   )rj   r   r   ri   r   r   r$   rp   rq   r   rn   )r   r   r   s   &&$r   shutdownZProcessPoolExecutor.shutdownX  s       +9($(D!33?44;;= ! ((4))..0 )-%)d$$&!/3,# ! s   6CC(	c                s   V\         9  d   \        R V: 24      h/ pV P                  '       d   V P                  P                  4       pV P	                  RRR7       V'       g   R# VP                  4        FX  p VP                  4       '       g   K    T\        8X  d   TP                  4        K;  T\        8X  d   TP                  4        KX  KZ  	  R#   \         d     Kl  i ; i  \         d     K~  i ; i)zUnsupported operation: FT)r   r   N)_SHUTDOWN_CALLBACK_OPERATIONr   rn   Zcopyr   r   r   
_TERMINATEr   _KILLr   ZProcessLookupError)r   	operationro   Zprocs   &&  r   _force_shutdownZ#ProcessPoolExecutor._force_shutdownn  s     886ymDEE	???,,.I
 	56$$&D}} '
*NN$%'IIK ( '   & s*   :CC&1C&C#"C#&C54C5c                .    V P                  \        R 7      # )r   )r   r   r   r   r   terminate_workersZ%ProcessPoolExecutor.terminate_workers  s     ##j#99r   c                r   r   )r   r   r   r   r   kill_workersZ ProcessPoolExecutor.kill_workers  s     ##e#44r   )r   rp   r   r   ri   r}   r   r   rt   r   r   rv   rn   r   rq   r   rj   r   rr   )NNNrX   )T)r   r   r   r   r   r   r|   r   r   r   r    ExecutorZ__doc__r   r   r   r   r   r   r   rU   rV   rW   r   r   r   ~  s     j'GKj'X5"("	#. ^^**22FN!6$ !6! !6 !6F4E 4( ~~..66H'R	:	5 	5r   r   rF   r)   )3Z
__author__rb   Zconcurrent.futuresr    r   r   r	   Zmultiprocessing.connectionZmultiprocessing.queuesr   r   rl   Z	functoolsr   r   r   Z	tracebackr   ZWeakKeyDictionaryr"   r    r   r'   Z_register_atexitr   r   Z	Exceptionr(   r.   r4   Zobjectr8   rA   rG   rH   rZ   r_   rf   ZThreadrg   r   r   r   r   ZBrokenExecutorr   r   r   r   r   r   rX   r   r   <module>r      sC  \ 2
 	 $   " (     
 & ,,.  & &< 
  < (    y 	1 	1 !& ! 3 3,	)	93llBY-- lB^	  /@	 ,,  
 	  m5%.. m5r   