
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
U
    ¡ê,a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   ú=/opt/alt/python38/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|ƒ}z¬t||| fd�E d H  |�r|d kr�d }n(|t  ¡  }|dk r¸t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r¤t||ƒ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]