
    z%i1Y              
          d Z ddlZddlZddlZddlZddlZdZdZdZdZ	dZ
dZd	Zd
ZdZe
eeeegZe
dedededediZ ej"                  d      Z G d de      Z G d de      ZeZ G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d d e      Zd! Zd" Zd.d#Z  ejB                  d$d%      Z"defd&Z#d.d'Z$ G d( d)e      Z% G d* d+e      Z& G d, d-e'      Z(y)/z"Brian Quinlan (brian@sweetapp.com)    NFIRST_COMPLETEDFIRST_EXCEPTIONALL_COMPLETED_AS_COMPLETEDPENDINGRUNNING	CANCELLEDCANCELLED_AND_NOTIFIEDFINISHEDpendingrunning	cancelledfinishedzconcurrent.futuresc                       e Zd Z	 y)ErrorN__name__
__module____qualname__     L/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/concurrent/futures/_base.pyr   r   -   s    7r   r   c                       e Zd Z	 y)CancelledErrorNr   r   r   r   r   r   1   s    #r   r   c                       e Zd Z	 y)InvalidStateErrorNr   r   r   r   r   r   7   s    5r   r   c                   &    e Zd Z	 d Zd Zd Zd Zy)_Waiterc                 D    t        j                         | _        g | _        y N)	threadingEventeventfinished_futuresselfs    r   __init__z_Waiter.__init__=   s    __&
 "r   c                 :    | j                   j                  |       y r    r$   appendr&   futures     r   
add_resultz_Waiter.add_resultA       $$V,r   c                 :    | j                   j                  |       y r    r)   r+   s     r   add_exceptionz_Waiter.add_exceptionD   r.   r   c                 :    | j                   j                  |       y r    r)   r+   s     r   add_cancelledz_Waiter.add_cancelledG   r.   r   N)r   r   r   r'   r-   r0   r2   r   r   r   r   r   ;   s    E#---r   r   c                   >     e Zd Z	  fdZ fdZ fdZ fdZ xZS )_AsCompletedWaiterc                 \    t         t        |           t        j                         | _        y r    )superr4   r'   r!   Locklock)r&   	__class__s    r   r'   z_AsCompletedWaiter.__init__M   s     $02NN$	r   c                     | j                   5  t        t        |   |       | j                  j                          d d d        y # 1 sw Y   y xY wr    )r8   r6   r4   r-   r#   setr&   r,   r9   s     r   r-   z_AsCompletedWaiter.add_resultQ   s=    YY 	$d6v>JJNN	 	 	   .AAc                     | j                   5  t        t        |   |       | j                  j                          d d d        y # 1 sw Y   y xY wr    )r8   r6   r4   r0   r#   r;   r<   s     r   r0   z _AsCompletedWaiter.add_exceptionV   =    YY 	$d9&AJJNN	 	 	r=   c                     | j                   5  t        t        |   |       | j                  j                          d d d        y # 1 sw Y   y xY wr    )r8   r6   r4   r2   r#   r;   r<   s     r   r2   z _AsCompletedWaiter.add_cancelled[   r?   r=   )r   r   r   r'   r-   r0   r2   __classcell__r9   s   @r   r4   r4   J   s    !%

 r   r4   c                   4     e Zd Z	  fdZ fdZ fdZ xZS )_FirstCompletedWaiterc                 X    t         |   |       | j                  j                          y r    )r6   r-   r#   r;   r<   s     r   r-   z _FirstCompletedWaiter.add_resultc   s    6"

r   c                 X    t         |   |       | j                  j                          y r    )r6   r0   r#   r;   r<   s     r   r0   z#_FirstCompletedWaiter.add_exceptiong       f%

r   c                 X    t         |   |       | j                  j                          y r    )r6   r2   r#   r;   r<   s     r   r2   z#_FirstCompletedWaiter.add_cancelledk   rG   r   )r   r   r   r-   r0   r2   rA   rB   s   @r   rD   rD   `   s    4 r   rD   c                   D     e Zd Z	  fdZd Z fdZ fdZ fdZ xZS )_AllCompletedWaiterc                 p    || _         || _        t        j                         | _        t
        |           y r    )num_pending_callsstop_on_exceptionr!   r7   r8   r6   r'   )r&   rL   rM   r9   s      r   r'   z_AllCompletedWaiter.__init__r   s,    !2!2NN$	r   c                     | j                   5  | xj                  dz  c_        | j                  s| j                  j                          d d d        y # 1 sw Y   y xY w)N   )r8   rL   r#   r;   r%   s    r   _decrement_pending_callsz,_AllCompletedWaiter._decrement_pending_callsx   sF    YY 	!""a'"))

 	! 	! 	!s   <AAc                 D    t         |   |       | j                          y r    )r6   r-   rP   r<   s     r   r-   z_AllCompletedWaiter.add_result~   s    6"%%'r   c                     t         |   |       | j                  r| j                  j	                          y | j                          y r    )r6   r0   rM   r#   r;   rP   r<   s     r   r0   z!_AllCompletedWaiter.add_exception   s3    f%!!JJNN))+r   c                 D    t         |   |       | j                          y r    )r6   r2   rP   r<   s     r   r2   z!_AllCompletedWaiter.add_cancelled   s    f%%%'r   )	r   r   r   r'   rP   r-   r0   r2   rA   rB   s   @r   rJ   rJ   o   s$    F!(,( (r   rJ   c                        e Zd Z	 d Zd Zd Zy)_AcquireFuturesc                 0    t        |t              | _        y )N)key)sortedidfutures)r&   rZ   s     r   r'   z_AcquireFutures.__init__   s    g2.r   c                 Z    | j                   D ]  }|j                  j                           y r    )rZ   
_conditionacquirer+   s     r   	__enter__z_AcquireFutures.__enter__   '    ll 	(F%%'	(r   c                 Z    | j                   D ]  }|j                  j                           y r    )rZ   r\   release)r&   argsr,   s      r   __exit__z_AcquireFutures.__exit__   r_   r   N)r   r   r   r'   r^   rc   r   r   r   rU   rU      s    N/((r   rU   c                 6   |t         k(  rt               }nb|t        k(  rt               }nNt	        d | D              }|t
        k(  rt        |d      }n%|t        k(  rt        |d      }nt        d|z        | D ]  }|j                  j                  |        |S )Nc              3   L   K   | ]  }|j                   t        t        fv  y wr    _stater
   r   .0fs     r   	<genexpr>z._create_and_install_waiters.<locals>.<genexpr>   s&      PGH!7 BBPs   "$T)rM   FzInvalid return condition: %r)r   r4   r   rD   sumr   rJ   r   
ValueError_waitersr*   )fsreturn_whenwaiterpending_countrj   s        r   _create_and_install_waitersrs      s    m##%		'&( PLNP P /)($OFM)(%PF;kIJJ "	

&!" Mr   c              #      K   	 | rd| d   }|D ]  }|j                  |        |j                  5  |j                  j                  |       d d d        ~| j                          | rcy y # 1 sw Y   !xY ww)N)remover\   rn   pop)ro   rq   ref_collectrj   futures_sets        r   _yield_finished_futuresrz      sv     	 rF& 	"Kq!	"\\ 	&JJf%	&ffh 	& 	&s"   -A7A+A7)A7+A40A7c           	   #     K   	 ||t        j                         z   }t        |       } t        |       }t	        |       5  t        d | D              }| |z
  }t        | t              }d d d        t              }	 t        || f      E d {    r|d }n5t        j                         z
  }|dk  rt        dt        |      |fz        |j                  j                  |       |j                  5  |j                  }g |_        |j                  j                          d d d        |j                          t        ||| |f      E d {    |r| D ]2  }|j                   5  |j"                  j%                  |       d d d        4 y # 1 sw Y   )xY w7 # 1 sw Y   |xY w7 [# 1 sw Y   ]xY w# | D ]>  }|j                   5  |j"                  j%                         d d d        4# 1 sw Y   =xY w w xY ww)Nc              3   P   K   | ]  }|j                   t        t        fv r|   y wr    rf   rh   s     r   rk   zas_completed.<locals>.<genexpr>   s,      C88 6AA Cs   $&)rx   r   z%d (of %d) futures unfinished)time	monotonicr;   lenrU   rs   r   listrz   TimeoutErrorr#   waitr8   r$   clearreverser\   rn   rv   )	ro   timeoutend_timetotal_futuresr   r   rq   wait_timeoutrj   s	            r   as_completedr      s    " T^^--	RBGM		 @ CC C x-,R?@ H~H**8V8:u> 	> 	> #'$..*::!#&;L-?9 9: : LLl+ %!22*,'""$% .x<>=J J J' 0  	*A *

!!&)* *	*G@ @	>% %J* *  	*A *

!!&)* * *	*s   <G?(F&G?:F7 FA'F7 4.F"+F7 F)F7 G?&F+G?FG?F7 F&"F7 +F4	0G?7G<	G.	%	G<.G73	G<<G?DoneAndNotDoneFutureszdone not_donec                    	 t        |       } t        |       5  | D ch c]  }|j                  t        t        fv r| }}| |z
  }|t
        k(  r|rt        ||      cd d d        S |t        k(  r)|r't        d |D              rt        ||      cd d d        S t        |      t        |       k(  rt        ||      cd d d        S t        | |      }d d d        j                  j                  |       | D ]2  }|j                  5  |j                  j                  |       d d d        4 j!                  |j"                         t        || |z
        S c c}w # 1 sw Y   xY w# 1 sw Y   yxY w)Nc              3   `   K   | ]&  }|j                         s|j                         | ( y wr    )r   	exceptionrh   s     r   rk   zwait.<locals>.<genexpr>(  s-      G++-AKKM,E  Gs   ,.)r;   rU   rg   r
   r   r   r   r   anyr   rs   r#   r   r\   rn   rv   updater$   )ro   r   rp   rj   donenot_donerq   s          r   r   r     ss   0 
RB		 > Fahh#98"DD  F F9?*(x8> > _,$ Gd G G,T8<> > t9B(x8> > -R=>  LLg &\\ 	&JJf%	& 	&& 	KK''( rDy11+F> >$	& 	&s9   E!EE%(E"EEE$EE!$E-	c                     	 	 | j                  |      | j                          ~ S # | j                          w xY w# ~ w xY wr    )resultcancel)futr   s     r   _result_or_cancelr   :  s9    	::g&JJL  JJL s   % : 7: =c                       e Zd Z	 d Zd Zd Zd Zd Zd Zd Z	d Z
d	 ZddZddZd Zd Zd Z eej&                        Zy
)Futurec                     	 t        j                         | _        t        | _        d | _        d | _        g | _        g | _        y r    )	r!   	Conditionr\   r   rg   _result
_exceptionrn   _done_callbacksr%   s    r   r'   zFuture.__init__H  s9    F#--/!r   c                     | j                   D ]  }	  ||         y # t        $ r t        j                  d|        Y 0w xY wNz!exception calling callback for %r)r   	ExceptionLOGGERr   )r&   callbacks     r   _invoke_callbackszFuture._invoke_callbacksQ  sJ    ,, 	LHL	L  L  !DdKLs   >>c                 h   | j                   5  | j                  t        k(  r| j                  r^d| j                  j
                  t        |       t        | j                     | j                  j                  j
                  fz  cd d d        S d| j                  j
                  t        |       t        | j                     | j                  j                  j
                  fz  cd d d        S d| j                  j
                  t        |       t        | j                     fz  cd d d        S # 1 sw Y   y xY w)Nz<%s at %#x state=%s raised %s>z <%s at %#x state=%s returned %s>z<%s at %#x state=%s>)	r\   rg   r   r   r9   r   rY   _STATE_TO_DESCRIPTION_MAPr   r%   s    r   __repr__zFuture.__repr__X  s    __ 	;{{h&??;//41$++>11::	?< <	; 	; >//41$++>..77	A9 9	; 	; *NN++tH,T[[9-; ;	; 	; 	;s   A4D(AD()5D((D1c                 :   	 | j                   5  | j                  t        t        fv r
	 d d d        y| j                  t        t
        fv r
	 d d d        yt        | _        | j                   j                          d d d        | j                          y# 1 sw Y   xY w)NFT)r\   rg   r   r   r	   r
   
notify_allr   r%   s    r   r   zFuture.cancell  s    	
 __ 	){{w11	) 	) {{y*@AA	) 	) $DKOO&&(	) 	 	) 	)s   BB%BBc                 x    	 | j                   5  | j                  t        t        fv cd d d        S # 1 sw Y   y xY wr    )r\   rg   r	   r
   r%   s    r   r   zFuture.cancelled  s7    6__ 	F;;9.D"EE	F 	F 	Fs   09c                 n    	 | j                   5  | j                  t        k(  cd d d        S # 1 sw Y   y xY wr    )r\   rg   r   r%   s    r   r   zFuture.running  s-    ?__ 	*;;')	* 	* 	*s   +4c                     	 | j                   5  | j                  t        t        t        fv cd d d        S # 1 sw Y   y xY wr    )r\   rg   r	   r
   r   r%   s    r   r   zFuture.done  s9    L__ 	P;;9.Dh"OO	P 	P 	Ps   5>c                 Z    | j                   r	 | j                   | j                  S # d } w xY wr    )r   r   r%   s    r   __get_resultzFuture.__get_result  s-    ??oo%
 << s   & *c                 *   	 | j                   5  | j                  t        t        t        fvr%| j
                  j                  |       	 d d d        y 	 d d d        	  ||        y # 1 sw Y   xY w# t        $ r t        j                  d|        Y y w xY wr   )
r\   rg   r	   r
   r   r   r*   r   r   r   )r&   fns     r   add_done_callbackzFuture.add_done_callback  s    		 __ 	{{9.Dh"OO$$++B/	 	O		HtH	 	  	H@$G	Hs   :A$A0 $A-0BBNc                    	 	 | j                   5  | j                  t        t        fv r
t	               | j                  t
        k(  r| j                         cd d d        d } S | j                   j                  |       | j                  t        t        fv r
t	               | j                  t
        k(  r| j                         cd d d        d } S t               # 1 sw Y   d } y xY w# d } w xY wr    )	r\   rg   r	   r
   r   r   _Future__get_resultr   r   r&   r   s     r   r   zFuture.result  s    		 );;9.D"EE(**[[H,,,.	) )  D $$W-;;9.D"EE(**[[H,,,.) )  D '.()  D4Ds<   C# AC	C#  AC?	C# 
CC C#  C# #C'c                    	 | j                   5  | j                  t        t        fv r
t	               | j                  t
        k(  r| j                  cd d d        S | j                   j                  |       | j                  t        t        fv r
t	               | j                  t
        k(  r| j                  cd d d        S t               # 1 sw Y   y xY wr    )	r\   rg   r	   r
   r   r   r   r   r   r   s     r   r   zFuture.exception  s    	" __ 	%{{y*@AA$&&(		% 	% OO  ){{y*@AA$&&(	% 	% #n$	% 	%s   ACAC>
CCc                    	 | j                   5  | j                  t        k(  r7t        | _        | j                  D ]  }|j                  |         	 d d d        y| j                  t        k(  rt        | _        	 d d d        yt        j                  dt        |       | j                         t        d      # 1 sw Y   y xY w)NFTz!Future %s in unexpected state: %szFuture in unexpected state)r\   rg   r	   r
   rn   r2   r   r   r   criticalrY   RuntimeError)r&   rq   s     r   set_running_or_notify_cancelz#Future.set_running_or_notify_cancel  s    	, __ 	A{{i'4"mm /F((./ 	A 	A '%	A 	A  C "4 $- ##?@@	A 	As   AB6B65B66B?c                    	 | j                   5  | j                  t        t        t        hv r%t        dj                  | j                  |             || _        t        | _        | j                  D ]  }|j                  |         | j                   j                          d d d        | j                          y # 1 sw Y   xY wNz{}: {!r})r\   rg   r	   r
   r   r   formatr   rn   r-   r   r   )r&   r   rq   s      r   
set_resultzFuture.set_result  s    	 __ 	){{y*@(KK'
(9(9$++t(LMM!DL"DK-- (!!$'(OO&&(	) 	 	) 	)   BB88Cc                    	 | j                   5  | j                  t        t        t        hv r%t        dj                  | j                  |             || _        t        | _        | j                  D ]  }|j                  |         | j                   j                          d d d        | j                          y # 1 sw Y   xY wr   )r\   rg   r	   r
   r   r   r   r   rn   r0   r   r   )r&   r   rq   s      r   set_exceptionzFuture.set_exception(  s    	 __ 	){{y*@(KK'
(9(9$++t(LMM'DO"DK-- +$$T*+OO&&(	) 	 	) 	)r   r    )r   r   r   r'   r   r   r   r   r   r   r   r   r   r   r   r   r   classmethodtypesGenericAlias__class_getitem__r   r   r   r   r   E  sf    ?"L;(&F
*
P
 H(!F%D&AP!! $E$6$67r   r   c                   <    e Zd Z	 d ZddddZddddZd	 Zd
 Zy)Executorc                    	 t               r    )NotImplementedError)r&   r   rb   kwargss       r   submitzExecutor.submit<  s    	 "##r   NrO   )r   	chunksizec                    	 t        j                         z   t        | D cg c]  } | j                  |g|  c}fd} |       S c c}w )Nc               3   >  K   	 j                          rRt        j                                n1t        j                         t        j                         z
         rRD ]  } | j                           y # D ]  } | j                           w xY wwr    )r   r   rw   r}   r~   r   )r,   r   ro   r   s    r   result_iteratorz%Executor.map.<locals>.result_iteratord  s     $

/99/(T^^EU:UVV  ! $FMMO$b $FMMO$s   BA#B )BBB)r}   r~   zipr   )	r&   r   r   r   	iterablesrb   r   r   ro   s	     `    @@r   mapzExecutor.mapG  s[    	* !11H14iAkdkk"$t$A	$   # Bs   AF)cancel_futuresc                     	 y r    r   )r&   r   r   s      r   shutdownzExecutor.shutdowns  s    	 	r   c                     | S r    r   r%   s    r   r^   zExecutor.__enter__  s    r   c                 (    | j                  d       y)NT)r   F)r   )r&   exc_typeexc_valexc_tbs       r   rc   zExecutor.__exit__  s    4 r   )T)r   r   r   r   r   r   r^   rc   r   r   r   r   r   9  s-    M	$ +/! *!XE  r   r   c                       e Zd Zy)BrokenExecutorNr   r   r   r   r   r     s    r   r   r    ))
__author__collectionsloggingr!   r}   r   r   r   r   r   r   r   r	   r
   r   _FUTURE_STATESr   	getLoggerr   r   r   r   r   r   objectr   r4   rD   rJ   rU   rs   rz   r   
namedtupler   r   r   r   r   r   r   r   r   r   <module>r      sf   2
     ## 
	1   YY{Kj  
		/	0	I 		U 	 	 	-f - ,G (' (<(f (,,<*| /..2 } 02fr8V r8hOv Od\ r   