<!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>

]:N              
   @   s  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 j d  Z Gd d   d e  Z Gd d   d e  Z Gd d   d e  Z Gd d   d e  Z Gd d   d e  Z Gd d   d e  Z Gd d   d e  Z Gd d    d  e  Z d! d"   Z d d# d$  Z e j d% d&  Z d e d' d(  Z  Gd) d*   d* e  Z! Gd+ d,   d, e  Z" d S)-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               @   s   e  Z d  Z d S)ErrorN)__name__
__module____qualname__ r   r   */opt/alt/python35/lib64/python3.5/_base.pyr   ,   s   r   c               @   s   e  Z d  Z d S)CancelledErrorN)r   r   r   r   r   r   r   r   0   s   r   c               @   s   e  Z d  Z d S)TimeoutErrorN)r   r   r   r   r   r   r   r   4   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  j   |  _ g  |  _ d  S)N)	threadingEventeventfinished_futures)selfr   r   r   __init__:   s    z_Waiter.__init__c             C   s   |  j  j |  d  S)N)r   append)r   futurer   r   r   
add_result>   s    z_Waiter.add_resultc             C   s   |  j  j |  d  S)N)r   r   )r   r   r   r   r   add_exceptionA   s    z_Waiter.add_exceptionc             C   s   |  j  j |  d  S)N)r   r   )r   r   r   r   r   add_cancelledD   s    z_Waiter.add_cancelledN)r   r   r   r   r    r!   r"   r   r   r   r   r   8   s   r   c                   sX   e  Z d  Z   f d d   Z   f d d   Z   f d d   Z   f d d   Z   S)	_AsCompletedWaiterc                s&   t  t |   j   t j   |  _ d  S)N)superr#   r   r   Locklock)r   )	__class__r   r   r   J   s    z_AsCompletedWaiter.__init__c          
      s8   |  j  ( t t |   j |  |  j j   Wd  QRXd  S)N)r&   r$   r#   r    r   set)r   r   )r'   r   r   r    N   s    
z_AsCompletedWaiter.add_resultc          
      s8   |  j  ( t t |   j |  |  j j   Wd  QRXd  S)N)r&   r$   r#   r!   r   r(   )r   r   )r'   r   r   r!   S   s    
z _AsCompletedWaiter.add_exceptionc          
      s8   |  j  ( t t |   j |  |  j j   Wd  QRXd  S)N)r&   r$   r#   r"   r   r(   )r   r   )r'   r   r   r"   X   s    
z _AsCompletedWaiter.add_cancelled)r   r   r   r   r    r!   r"   r   r   )r'   r   r#   G   s   r#   c                   sF   e  Z d  Z   f d d   Z   f d d   Z   f d d   Z   S)_FirstCompletedWaiterc                s!   t    j |  |  j j   d  S)N)r$   r    r   r(   )r   r   )r'   r   r   r    `   s    z _FirstCompletedWaiter.add_resultc                s!   t    j |  |  j j   d  S)N)r$   r!   r   r(   )r   r   )r'   r   r   r!   d   s    z#_FirstCompletedWaiter.add_exceptionc                s!   t    j |  |  j j   d  S)N)r$   r"   r   r(   )r   r   )r'   r   r   r"   h   s    z#_FirstCompletedWaiter.add_cancelled)r   r   r   r    r!   r"   r   r   )r'   r   r)   ]   s   r)   c                   sd   e  Z d  Z   f d d   Z d d   Z   f d d   Z   f d d   Z   f d	 d
   Z   S)_AllCompletedWaiterc                s2   | |  _  | |  _ t j   |  _ t   j   d  S)N)num_pending_callsstop_on_exceptionr   r%   r&   r$   r   )r   r+   r,   )r'   r   r   r   o   s    		z_AllCompletedWaiter.__init__c          
   C   s:   |  j  * |  j d 8_ |  j s/ |  j j   Wd  QRXd  S)N   )r&   r+   r   r(   )r   r   r   r   _decrement_pending_callsu   s    
	z,_AllCompletedWaiter._decrement_pending_callsc                s   t    j |  |  j   d  S)N)r$   r    r.   )r   r   )r'   r   r   r    {   s    z_AllCompletedWaiter.add_resultc                s7   t    j |  |  j r) |  j j   n
 |  j   d  S)N)r$   r!   r,   r   r(   r.   )r   r   )r'   r   r   r!      s    	z!_AllCompletedWaiter.add_exceptionc                s   t    j |  |  j   d  S)N)r$   r"   r.   )r   r   )r'   r   r   r"      s    z!_AllCompletedWaiter.add_cancelled)r   r   r   r   r.   r    r!   r"   r   r   )r'   r   r*   l   s
   r*   c               @   s4   e  Z d  Z d d   Z d d   Z d d   Z d S)_AcquireFuturesc             C   s   t  | d t |  _ d  S)Nkey)sortedidfutures)r   r3   r   r   r   r      s    z_AcquireFutures.__init__c             C   s%   x |  j  D] } | j j   q
 Wd  S)N)r3   
_conditionacquire)r   r   r   r   r   	__enter__   s    z_AcquireFutures.__enter__c             G   s%   x |  j  D] } | j j   q
 Wd  S)N)r3   r4   release)r   argsr   r   r   r   __exit__   s    z_AcquireFutures.__exit__N)r   r   r   r   r6   r9   r   r   r   r   r/      s   r/   c             C   s   | t  k r t   } n | t k r0 t   } nk t d d   |  D  } | t k rj t | d d } n1 | t k r t | d d } n t d |   x |  D] } | j	 j
 |  q W| S)Nc             s   s$   |  ] } | j  t t g k Vq d  S)N)_stater	   r
   ).0fr   r   r   	<genexpr>   s    z._create_and_install_waiters.<locals>.<genexpr>r,   TFzInvalid return condition: %r)r   r#   r   r)   sumr   r*   r   
ValueError_waitersr   )fsreturn_whenwaiterpending_countr<   r   r   r   _create_and_install_waiters   s    rE   c       	      c   sx  | d  k	 r | t  j    } t |   }  t |   7 t d d   |  D  } |  | } t |  t  } Wd  QRXz | Ed  Hx | r<| d  k r d  } n> | t  j    } | d k  r t d t |  t |   f   | j j |  | j	 $ | j
 } g  | _
 | j j   Wd  QRXx  | D] } | V| j |  qWq} WWd  x/ |  D]' } | j  | j j |  Wd  QRXqHWXd  S)Nc             s   s*   |  ]  } | j  t t g k r | Vq d  S)N)r:   r	   r
   )r;   r<   r   r   r   r=      s    zas_completed.<locals>.<genexpr>r   z%d (of %d) futures unfinished)timer(   r/   rE   r   r   lenr   waitr&   r   clearremover4   r@   )	rA   timeoutend_timer   r   rC   wait_timeoutr   r<   r   r   r   as_completed   s:    
			
		
rN   DoneAndNotDoneFutureszdone not_donec             C   s1  t  |    t d d   |  D  } t |   | } | t k rU | rU t | |  S| t k r | r t d d   | D  r t | |  St |  t |   k r t | |  St |  |  } Wd  QRX| j j	 |  x/ |  D]' } | j
  | j j |  Wd  QRXq W| j | j  t | t |   |  S)Nc             s   s*   |  ]  } | j  t t g k r | Vq d  S)N)r:   r	   r
   )r;   r<   r   r   r   r=     s    zwait.<locals>.<genexpr>c             s   s4   |  ]* } | j    r | j   d  k	 r | Vq d  S)N)r   	exception)r;   r<   r   r   r   r=   	  s    )r/   r(   r   rO   r   anyrG   rE   r   rH   r4   r@   rJ   updater   )rA   rK   rB   donenot_donerC   r<   r   r   r   rH      s"    
rH   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  j   |  _ t |  _ d  |  _ d  |  _ g  |  _ g  |  _ d  S)N)	r   	Conditionr4   r   r:   _result
_exceptionr@   _done_callbacks)r   r   r   r   r     s    				zFuture.__init__c             C   sK   xD |  j  D]9 } y | |   Wq
 t k
 rB t j d |   Yq
 Xq
 Wd  S)Nz!exception calling callback for %r)rY   	ExceptionLOGGERrP   )r   callbackr   r   r   _invoke_callbacks&  s
    zFuture._invoke_callbacksc             C   s   |  j   |  j t k r |  j rR d |  j j t |   t |  j |  j j j f Sd |  j j t |   t |  j |  j j j f Sd |  j j t |   t |  j f SWd  QRXd  S)Nz<%s at %#x state=%s raised %s>z <%s at %#x state=%s returned %s>z<%s at %#x state=%s>)	r4   r:   r
   rX   r'   r   r2   _STATE_TO_DESCRIPTION_MAPrW   )r   r   r   r   __repr__-  s"    
			
		
		zFuture.__repr__c          
   C   sg   |  j  M |  j t t g k r# d S|  j t t g k r< d St |  _ |  j  j   Wd  QRX|  j   d S)NFT)r4   r:   r   r
   r   r	   
notify_allr]   )r   r   r   r   cancelA  s    
	
zFuture.cancelc          
   C   s(   |  j   |  j t t g k SWd  QRXd  S)N)r4   r:   r   r	   )r   r   r   r   r   T  s    
zFuture.cancelledc          	   C   s"   |  j   |  j t k SWd  QRXd  S)N)r4   r:   r   )r   r   r   r   r   Y  s    
zFuture.runningc             C   s+   |  j   |  j t t t g k SWd  QRXd  S)N)r4   r:   r   r	   r
   )r   r   r   r   rS   ^  s    
zFuture.donec             C   s    |  j  r |  j   n |  j Sd  S)N)rX   rW   )r   r   r   r   __get_resultc  s    	zFuture.__get_resultc             C   sK   |  j  1 |  j t t t g k r6 |  j j |  d  SWd  QRX| |   d  S)N)r4   r:   r   r	   r
   rY   r   )r   fnr   r   r   add_done_callbacki  s
    
zFuture.add_done_callbackNc          
   C   s   |  j   |  j t t g k r+ t    n |  j t k rD |  j   S|  j  j |  |  j t t g k ru t    n" |  j t k r |  j   St    Wd  QRXd  S)N)	r4   r:   r   r	   r   r
   _Future__get_resultrH   r   )r   rK   r   r   r   resultz  s    


zFuture.resultc          
   C   s   |  j   |  j t t g k r+ t    n |  j t k rA |  j S|  j  j |  |  j t t g k rr t    n |  j t k r |  j St    Wd  QRXd  S)N)	r4   r:   r   r	   r   r
   rX   rH   r   )r   rK   r   r   r   rP     s    
zFuture.exceptionc             C   s   |  j   |  j t k rG t |  _ x |  j D] } | j |   q, Wd S|  j t k rc t |  _ d St j	 d t
 |   |  j  t d   Wd  QRXd  S)NFTz!Future %s in unexpected state: %szFuture in unexpected state)r4   r:   r   r	   r@   r"   r   r   r[   criticalr2   RuntimeError)r   rC   r   r   r   set_running_or_notify_cancel  s    
				
z#Future.set_running_or_notify_cancelc          
   C   s_   |  j  E | |  _ t |  _ x |  j D] } | j |   q& W|  j  j   Wd  QRX|  j   d  S)N)r4   rW   r
   r:   r@   r    r`   r]   )r   rf   rC   r   r   r   
set_result  s    
		zFuture.set_resultc          
   C   s_   |  j  E | |  _ t |  _ x |  j D] } | j |   q& W|  j  j   Wd  QRX|  j   d  S)N)r4   rX   r
   r:   r@   r!   r`   r]   )r   rP   rC   r   r   r   set_exception  s    
		zFuture.set_exception)r   r   r   r   r]   r_   ra   r   r   rS   re   rd   rf   rP   ri   rj   rk   r   r   r   r   rU     s   	"(rU   c               @   s[   e  Z d  Z d d   Z d d d d d d  Z d	 d
 d  Z d d   Z d d   Z d S)Executorc             O   s   t     d  S)N)NotImplementedError)r   rc   r8   kwargsr   r   r   submit   s    	zExecutor.submitrK   N	chunksizer-   c               s]    d  k	 r  t  j        f d d   t |   D      f d d   } |   S)Nc                s"   g  |  ] }  j    |   q Sr   )ro   )r;   r8   )rc   r   r   r   
<listcomp>$  s   	 z Executor.map.<locals>.<listcomp>c              3   sj   zG x@  D]8 }   d  k r* |  j    Vq
 |  j    t j    Vq
 WWd  x  D] }  |  j   qQ WXd  S)N)rf   rF   ra   )r   )rL   rA   rK   r   r   result_iterator(  s     z%Executor.map.<locals>.result_iterator)rF   zip)r   rc   rK   rp   	iterablesrr   r   )rL   rc   rA   r   rK   r   map  s
    "
zExecutor.mapTc             C   s   d  S)Nr   )r   rH   r   r   r   shutdown4  s    zExecutor.shutdownc             C   s   |  S)Nr   )r   r   r   r   r6   A  s    zExecutor.__enter__c             C   s   |  j  d d  d S)NrH   TF)rv   )r   exc_typeexc_valexc_tbr   r   r   r9   D  s    zExecutor.__exit__)r   r   r   ro   ru   rv   r6   r9   r   r   r   r   rl     s
   )rl   )#
__author__collectionsloggingr   rF   r   r   r   r   r   r   r   r	   r
   _FUTURE_STATESr^   	getLoggerr[   rZ   r   r   r   objectr   r#   r)   r*   r/   rE   rN   
namedtuplerO   rH   rU   rl   r   r   r   r   <module>   sN   	:1