<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
U
    e5dY                  
   @   sp  d 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dZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd  d eZG d!d" d"eZd#d$ Zd%d& Zd3d'd(Ze d)d*Z!defd+d,Z"G d-d. d.eZ#G d/d0 d0eZ$G d1d2 d2e%Z&dS )4z"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                   @   s   e Zd ZdS )ErrorN__name__
__module____qualname__ r   r   0/usr/lib64/python3.8/concurrent/futures/_base.pyr   ,   s   r   c                   @   s   e Zd ZdS )CancelledErrorNr   r   r   r   r   r   0   s   r   c                   @   s   e Zd ZdS )TimeoutErrorNr   r   r   r   r   r   4   s   r   c                   @   s   e Zd ZdS )InvalidStateErrorNr   r   r   r   r   r   8   s   r   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
_Waiterc                 C   s   t  | _g | _d S N)	threadingZEventeventfinished_futuresselfr   r   r   __init__>   s    
z_Waiter.__init__c                 C   s   | j | d S r   r   appendr   futurer   r   r   
add_resultB   s    z_Waiter.add_resultc                 C   s   | j | d S r   r!   r#   r   r   r   add_exceptionE   s    z_Waiter.add_exceptionc                 C   s   | j | d S r   r!   r#   r   r   r   add_cancelledH   s    z_Waiter.add_cancelledN)r   r   r   r    r%   r&   r'   r   r   r   r   r   <   s   r   c                       s@   e Zd Z fddZ fddZ fddZ fddZ  ZS )	_AsCompletedWaiterc                    s   t t|   t | _d S r   )superr(   r    r   Locklockr   	__class__r   r   r    N   s    z_AsCompletedWaiter.__init__c              	      s0   | j   tt| | | j  W 5 Q R X d S r   )r+   r)   r(   r%   r   setr#   r,   r   r   r%   R   s    z_AsCompletedWaiter.add_resultc              	      s0   | j   tt| | | j  W 5 Q R X d S r   )r+   r)   r(   r&   r   r.   r#   r,   r   r   r&   W   s    z _AsCompletedWaiter.add_exceptionc              	      s0   | j   tt| | | j  W 5 Q R X d S r   )r+   r)   r(   r'   r   r.   r#   r,   r   r   r'   \   s    z _AsCompletedWaiter.add_cancelled)r   r   r   r    r%   r&   r'   __classcell__r   r   r,   r   r(   K   s   r(   c                       s4   e Zd Z fddZ fddZ fddZ  ZS )_FirstCompletedWaiterc                    s   t  | | j  d S r   )r)   r%   r   r.   r#   r,   r   r   r%   d   s    z _FirstCompletedWaiter.add_resultc                    s   t  | | j  d S r   )r)   r&   r   r.   r#   r,   r   r   r&   h   s    z#_FirstCompletedWaiter.add_exceptionc                    s   t  | | j  d S r   )r)   r'   r   r.   r#   r,   r   r   r'   l   s    z#_FirstCompletedWaiter.add_cancelled)r   r   r   r%   r&   r'   r/   r   r   r,   r   r0   a   s   r0   c                       sH   e Zd Z fddZdd Z fddZ fddZ fd	d
Z  ZS )_AllCompletedWaiterc                    s$   || _ || _t | _t   d S r   )num_pending_callsstop_on_exceptionr   r*   r+   r)   r    )r   r2   r3   r,   r   r   r    s   s    
z_AllCompletedWaiter.__init__c              	   C   s4   | j $ |  jd8  _| js&| j  W 5 Q R X d S )N   )r+   r2   r   r.   r   r   r   r   _decrement_pending_callsy   s    z,_AllCompletedWaiter._decrement_pending_callsc                    s   t  | |   d S r   )r)   r%   r5   r#   r,   r   r   r%      s    z_AllCompletedWaiter.add_resultc                    s*   t  | | jr| j  n|   d S r   )r)   r&   r3   r   r.   r5   r#   r,   r   r   r&      s    z!_AllCompletedWaiter.add_exceptionc                    s   t  | |   d S r   )r)   r'   r5   r#   r,   r   r   r'      s    z!_AllCompletedWaiter.add_cancelled)	r   r   r   r    r5   r%   r&   r'   r/   r   r   r,   r   r1   p   s
   r1   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )_AcquireFuturesc                 C   s   t |td| _d S )N)key)sortedidfutures)r   r:   r   r   r   r       s    z_AcquireFutures.__init__c                 C   s   | j D ]}|j  qd S r   )r:   
_conditionacquirer#   r   r   r   	__enter__   s    
z_AcquireFutures.__enter__c                 G   s   | j D ]}|j  qd S r   )r:   r;   release)r   argsr$   r   r   r   __exit__   s    
z_AcquireFutures.__exit__N)r   r   r   r    r=   r@   r   r   r   r   r6      s   r6   c                 C   s   |t krt }nZ|tkr t }nJtdd | D }|tkrHt|dd}n"|tkr^t|dd}ntd| | D ]}|j	
| qn|S )Nc                 s   s   | ]}|j ttfkV  qd S r   _stater	   r
   .0fr   r   r   	<genexpr>   s    z._create_and_install_waiters.<locals>.<genexpr>T)r3   FzInvalid return condition: %r)r   r(   r   r0   sumr   r1   r   
ValueError_waitersr"   )fsreturn_whenwaiterZpending_countrE   r   r   r   _create_and_install_waiters   s    rM   c              	   c   sP   | rL| d }|D ]}| | q|j |j | W 5 Q R X ~|  V  q d S )N)remover;   rI   pop)rJ   rL   ref_collectrE   Zfutures_setr   r   r   _yield_finished_futures   s    rR   c           	      c   sB  |d k	r|t   }t| } t| }t| * tdd | D }| | }t| t}W 5 Q R X t|}zt||| fdE d H  |r|d krd }n(|t   }|dk rtdt||f |j| |j |j}g |_|j  W 5 Q R X |  t||| |fdE d H  q|W 5 | D ]$}|j |j	
| W 5 Q R X qX d S )Nc                 s   s    | ]}|j ttfkr|V  qd S r   rA   rC   r   r   r   rF      s   zas_completed.<locals>.<genexpr>)rQ   r   z%d (of %d) futures unfinished)time	monotonicr.   lenr6   rM   r   listr;   rI   rO   rR   r   r   waitr+   r   clearreverse)	rJ   timeoutend_timeZtotal_futuresr   r   rL   rE   Zwait_timeoutr   r   r   as_completed   sL    
 r\   DoneAndNotDoneFutureszdone not_donec              
   C   s
  t |  tdd | D }t| | }|tkrJ|rJt||W  5 Q R  S |tkr~|r~tdd |D r~t||W  5 Q R  S t|t| krt||W  5 Q R  S t| |}W 5 Q R X |j	| | D ]"}|j
 |j| W 5 Q R X q||j t|t| | S )Nc                 s   s    | ]}|j ttfkr|V  qd S r   rA   rC   r   r   r   rF   !  s    zwait.<locals>.<genexpr>c                 s   s&   | ]}|  s| d k	r|V  qd S r   )r   	exceptionrC   r   r   r   rF   (  s     )r6   r.   r   r]   r   anyrU   rM   r   rW   r;   rI   rO   updater   )rJ   rZ   rK   doneZnot_donerL   rE   r   r   r   rW     s"    
rW   c                   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd ZdddZdddZdd Zdd Zdd ZdS ) Futurec                 C   s,   t  | _t| _d | _d | _g | _g | _d S r   )	r   Z	Conditionr;   r   rB   _result
_exceptionrI   _done_callbacksr   r   r   r   r    <  s    
zFuture.__init__c              	   C   s>   | j D ]2}z||  W q tk
r6   td|  Y qX qd S Nz!exception calling callback for %r)re   	ExceptionLOGGERr^   )r   callbackr   r   r   _invoke_callbacksE  s
    
zFuture._invoke_callbacksc              
   C   s   | j  | jtkrx| jrHd| jjt| t| j | jjjf W  5 Q R  S d| jjt| t| j | jjjf W  5 Q R  S d| jjt| t| j f W  5 Q R  S Q R X d S )Nz<%s at %#x state=%s raised %s>z <%s at %#x state=%s returned %s>z<%s at %#x state=%s>)	r;   rB   r
   rd   r-   r   r9   _STATE_TO_DESCRIPTION_MAPrc   r   r   r   r   __repr__L  s(    
zFuture.__repr__c              	   C   sf   | j N | jttfkr$W 5 Q R  dS | jttfkr@W 5 Q R  dS t| _| j   W 5 Q R X |   dS )NFT)r;   rB   r   r
   r   r	   
notify_allrj   r   r   r   r   cancel`  s    zFuture.cancelc              
   C   s,   | j  | jttfkW  5 Q R  S Q R X d S r   )r;   rB   r   r	   r   r   r   r   r   s  s    zFuture.cancelledc              
   C   s(   | j  | jtkW  5 Q R  S Q R X d S r   )r;   rB   r   r   r   r   r   r   x  s    zFuture.runningc              
   C   s.   | j  | jtttfkW  5 Q R  S Q R X d S r   )r;   rB   r   r	   r
   r   r   r   r   ra   }  s    zFuture.donec                 C   s$   | j rz
| j W 5 d } X n| jS d S r   )rd   rc   r   r   r   r   Z__get_result  s
    
zFuture.__get_resultc              	   C   sn   | j 0 | jtttfkr2| j| W 5 Q R  d S W 5 Q R X z||  W n  tk
rh   t	d|  Y nX d S rf   )
r;   rB   r   r	   r
   re   r"   rg   rh   r^   )r   fnr   r   r   add_done_callback  s    zFuture.add_done_callbackNc              
   C   s   z| j  | jttfkr t n"| jtkrB|  W  5 Q R  W ZS | j | | jttfkrdt n(| jtkr|  W  5 Q R  W S t W 5 Q R X W 5 d } X d S r   )	r;   rB   r   r	   r   r
   _Future__get_resultrW   r   r   rZ   r   r   r   result  s    

zFuture.resultc              
   C   s   | j | | jttfkrt n| jtkr:| jW  5 Q R  S | j | | jttfkr\t n"| jtkrx| jW  5 Q R  S t W 5 Q R X d S r   )	r;   rB   r   r	   r   r
   rd   rW   r   rr   r   r   r   r^     s    

zFuture.exceptionc              	   C   s   | j t | jtkr<t| _| jD ]}||  qW 5 Q R  dS | jtkrZt| _W 5 Q R  dS t	dt
| | j tdW 5 Q R X d S )NFTz!Future %s in unexpected state: %szFuture in unexpected state)r;   rB   r   r	   rI   r'   r   r   rh   Zcriticalr9   RuntimeError)r   rL   r   r   r   set_running_or_notify_cancel  s    


z#Future.set_running_or_notify_cancelc              	   C   sl   | j T | jttthkr*td| j| || _t| _| jD ]}|	|  q<| j 
  W 5 Q R X |   d S Nz{}: {!r})r;   rB   r   r	   r
   r   formatrc   rI   r%   rm   rj   )r   rs   rL   r   r   r   
set_result  s    
zFuture.set_resultc              	   C   sl   | j T | jttthkr*td| j| || _t| _| jD ]}|	|  q<| j 
  W 5 Q R X |   d S rv   )r;   rB   r   r	   r
   r   rw   rd   rI   r&   rm   rj   )r   r^   rL   r   r   r   set_exception  s    
zFuture.set_exception)N)N)r   r   r   r    rj   rl   rn   r   r   ra   rq   rp   rs   r^   ru   rx   ry   r   r   r   r   rb   9  s   	

#
"(rb   c                   @   sD   e Zd Zdd Zde_dddddZdd
dZdd Zdd ZdS )Executorc                  O   s\   t | dkrnD| stdn6d|kr>dd l}|jdtdd ntdt | d  t d S )	N   z:descriptor 'submit' of 'Executor' object needs an argumentro   r   z.Passing 'fn' as keyword argument is deprecated)
stacklevelz6submit expected at least 1 positional argument, got %dr4   )rU   	TypeErrorwarningswarnDeprecationWarningNotImplementedError)r?   kwargsr~   r   r   r   submit.  s    	
 
zExecutor.submitz($self, fn, /, *args, **kwargs)Nr4   )rZ   	chunksizec                   sB   d k	rt    fddt| D  fdd}| S )Nc                    s   g | ]}j  f| qS r   )r   )rD   r?   )ro   r   r   r   
<listcomp>`  s     z Executor.map.<locals>.<listcomp>c               	   3   s\   zB  r@d kr&  V  q
  t  V  q
W 5 D ]} |    qHX d S r   )rn   rY   rP   rs   rS   rT   )r$   )r[   rJ   rZ   r   r   result_iteratord  s    z%Executor.map.<locals>.result_iterator)rS   rT   zip)r   ro   rZ   r   	iterablesr   r   )r[   ro   rJ   r   rZ   r   mapG  s
    zExecutor.mapTc                 C   s   d S r   r   )r   rW   r   r   r   shutdowns  s    zExecutor.shutdownc                 C   s   | S r   r   r   r   r   r   r=     s    zExecutor.__enter__c                 C   s   | j dd dS )NT)rW   F)r   )r   exc_typeZexc_valZexc_tbr   r   r   r@     s    zExecutor.__exit__)T)	r   r   r   r   __text_signature__r   r   r=   r@   r   r   r   r   rz   +  s   ,
rz   c                   @   s   e Zd ZdS )BrokenExecutorNr   r   r   r   r   r     s   r   )N)'
__author__collectionsZloggingr   rS   r   r   r   r   r   r   r   r	   r
   Z_FUTURE_STATESrk   Z	getLoggerrh   rg   r   r   r   r   objectr   r(   r0   r1   r6   rM   rR   r\   
namedtupler]   rW   rb   rz   rt   r   r   r   r   r   <module>   sh   	     	

> 1 s]