
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
U
    ¡ê,ab3  ã                   @   sö   d Z ddlZddlZddlZddlZddlmZ ddlmZ ddlm	Z	 ddlm
Z
 ejZejZejZejZejd ZG dd	„ d	ƒZeZd
d„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zddœdd„ZzddlZW n ek
ræ   Y nX ej ZZdS ))ÚFutureÚwrap_futureÚisfutureé    Né   )Úbase_futures)Úevents)Ú
exceptions)Úformat_helpersc                   @   sÐ   e Zd ZeZdZdZdZdZdZ	dZ
ddœdd„ZejZdd„ Zdd	„ Zed
d„ ƒZej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d„Zdd„ Zd d!„ Zd"d#„ Zd$d%„ ZeZ dS )&r   NF©Úloopc                C   s@   |d krt  ¡ | _n|| _g | _| j ¡ r<t t d¡¡| _	d S )Nr   )
r   Úget_event_loopÚ_loopÚ
_callbacksZ	get_debugr	   Úextract_stackÚsysÚ	_getframeÚ_source_traceback©Úselfr   © r   ú4/opt/alt/python38/lib64/python3.8/asyncio/futures.pyÚ__init__D   s    
ÿzFuture.__init__c                 C   s   d  | jjd |  ¡ ¡¡S )Nz<{} {}>ú )ÚformatÚ	__class__Ú__name__ÚjoinÚ
_repr_info©r   r   r   r   Ú__repr__V   s    
ÿzFuture.__repr__c                 C   sF   | j s
d S | j}| jj› d�|| dœ}| jr6| j|d< | j |¡ d S )Nz exception was never retrieved)ÚmessageÚ	exceptionÚfutureZsource_traceback)Ú_Future__log_tracebackÚ
_exceptionr   r   r   r   Zcall_exception_handler)r   ÚexcÚcontextr   r   r   Ú__del__Z   s    ü
zFuture.__del__c                 C   s   | j S ©N)r#   r   r   r   r   Ú_log_tracebackj   s    zFuture._log_tracebackc                 C   s   t |ƒrtdƒ‚d| _d S )Nz'_log_traceback can only be set to FalseF)ÚboolÚ
ValueErrorr#   )r   Úvalr   r   r   r)   n   s    c                 C   s   | j }|d krtdƒ‚|S )Nz!Future object is not initialized.)r   ÚRuntimeErrorr   r   r   r   Úget_loopt   s    zFuture.get_loopc                 C   s&   d| _ | jtkrdS t| _|  ¡  dS )NFT)r#   Ú_stateÚ_PENDINGÚ
_CANCELLEDÚ_Future__schedule_callbacksr   r   r   r   Úcancel{   s    
zFuture.cancelc                 C   sH   | j d d … }|sd S g | j d d …< |D ]\}}| jj|| |d� q(d S ©N©r&   )r   r   Ú	call_soon)r   Z	callbacksÚcallbackÚctxr   r   r   Z__schedule_callbacks‰   s    zFuture.__schedule_callbacksc                 C   s
   | j tkS r(   )r/   r1   r   r   r   r   Ú	cancelled—   s    zFuture.cancelledc                 C   s
   | j tkS r(   )r/   r0   r   r   r   r   Údone�   s    zFuture.donec                 C   s@   | j tkrtj‚| j tkr$t d¡‚d| _| jd k	r:| j‚| jS )NzResult is not ready.F)	r/   r1   r   ÚCancelledErrorÚ	_FINISHEDÚInvalidStateErrorr#   r$   Ú_resultr   r   r   r   Úresult¥   s    



zFuture.resultc                 C   s0   | j tkrtj‚| j tkr$t d¡‚d| _| jS )NzException is not set.F)r/   r1   r   r;   r<   r=   r#   r$   r   r   r   r   r!   µ   s    


zFuture.exceptionr5   c                C   sB   | j tkr| jj|| |d� n |d kr.t ¡ }| j ||f¡ d S r4   )r/   r0   r   r6   ÚcontextvarsZcopy_contextr   Úappend)r   Úfnr&   r   r   r   Úadd_done_callbackÄ   s
    
zFuture.add_done_callbackc                    s<   ‡ fdd„| j D ƒ}t| j ƒt|ƒ }|r8|| j d d …< |S )Nc                    s    g | ]\}}|ˆ kr||f‘qS r   r   )Ú.0Úfr8   ©rB   r   r   Ú
<listcomp>Ù   s   þz/Future.remove_done_callback.<locals>.<listcomp>)r   Úlen)r   rB   Zfiltered_callbacksZremoved_countr   rF   r   Úremove_done_callbackÔ   s    
ÿzFuture.remove_done_callbackc                 C   s8   | j tkr t | j › d| ›�¡‚|| _t| _ |  ¡  d S )Nú: )r/   r0   r   r=   r>   r<   r2   )r   r?   r   r   r   Ú
set_resultã   s
    
zFuture.set_resultc                 C   sb   | j tkr t | j › d| ›�¡‚t|tƒr0|ƒ }t|ƒtkrDtdƒ‚|| _t	| _ |  
¡  d| _d S )NrJ   zPStopIteration interacts badly with generators and cannot be raised into a FutureT)r/   r0   r   r=   Ú
isinstanceÚtypeÚStopIterationÚ	TypeErrorr$   r<   r2   r#   )r   r!   r   r   r   Úset_exceptionï   s    

zFuture.set_exceptionc                 c   s,   |   ¡ sd| _| V  |   ¡ s$tdƒ‚|  ¡ S )NTzawait wasn't used with future)r:   Ú_asyncio_future_blockingr-   r?   r   r   r   r   Ú	__await__  s    zFuture.__await__)!r   Ú
__module__Ú__qualname__r0   r/   r>   r$   r   r   rQ   r#   r   r   Z_future_repr_infor   r   r'   Úpropertyr)   Úsetterr.   r3   r2   r9   r:   r?   r!   rC   rI   rK   rP   rR   Ú__iter__r   r   r   r   r      s8   

r   c                 C   s,   z
| j }W n tk
r   Y nX |ƒ S | jS r(   )r.   ÚAttributeErrorr   )Úfutr.   r   r   r   Ú	_get_loop  s    
rZ   c                 C   s   |   ¡ rd S |  |¡ d S r(   )r9   rK   )rY   r?   r   r   r   Ú_set_result_unless_cancelled  s    r[   c                 C   sX   t | ƒ}|tjjkr tj| jŽ S |tjjkr8tj| jŽ S |tjjkrPtj| jŽ S | S d S r(   )rM   Ú
concurrentÚfuturesr;   r   ÚargsÚTimeoutErrorr=   )r%   Z	exc_classr   r   r   Ú_convert_future_exc#  s    r`   c                 C   sR   |  ¡ r|  ¡  |  ¡ sd S | ¡ }|d k	r<|  t|ƒ¡ n| ¡ }|  |¡ d S r(   )r9   r3   Zset_running_or_notify_cancelr!   rP   r`   r?   rK   )r\   Úsourcer!   r?   r   r   r   Ú_set_concurrent_future_state/  s    rb   c                 C   sT   |  ¡ rd S |   ¡ r| ¡  n2|  ¡ }|d k	r>| t|ƒ¡ n|  ¡ }| |¡ d S r(   )r9   r3   r!   rP   r`   r?   rK   )ra   Údestr!   r?   r   r   r   Ú_copy_future_state>  s    
rd   c                    s¦   t ˆƒstˆtjjƒstdƒ‚t ˆƒs<tˆtjjƒs<tdƒ‚t ˆƒrLtˆƒnd ‰t ˆƒr`tˆƒnd ‰dd„ ‰ ‡‡‡fdd„}‡ ‡‡‡fdd„}ˆ |¡ ˆ |¡ d S )	Nz(A future is required for source argumentz-A future is required for destination argumentc                 S   s"   t | ƒrt|| ƒ n
t| |ƒ d S r(   )r   rd   rb   )r"   Úotherr   r   r   Ú
_set_stateb  s    z!_chain_future.<locals>._set_statec                    s2   |   ¡ r.ˆd ksˆˆ kr"ˆ ¡  nˆ ˆj¡ d S r(   )r9   r3   Úcall_soon_threadsafe)Údestination)Ú	dest_loopra   Úsource_loopr   r   Ú_call_check_cancelh  s    
z)_chain_future.<locals>._call_check_cancelc                    sJ   ˆ  ¡ rˆd k	rˆ ¡ rd S ˆd ks,ˆˆkr8ˆ ˆ| ƒ nˆ ˆ ˆ| ¡ d S r(   )r9   Z	is_closedrg   )ra   )rf   ri   rh   rj   r   r   Ú_call_set_stateo  s    ÿÿz&_chain_future.<locals>._call_set_state)r   rL   r\   r]   r   rO   rZ   rC   )ra   rh   rk   rl   r   )rf   ri   rh   ra   rj   r   Ú_chain_futureR  s    ÿÿ	
rm   r
   c                C   s2   t | ƒr| S |d krt ¡ }| ¡ }t| |ƒ |S r(   )r   r   r   Zcreate_futurerm   )r"   r   Z
new_futurer   r   r   r   |  s    
r   )Ú__all__Zconcurrent.futuresr\   r@   Zloggingr   Ú r   r   r   r	   r   r0   r1   r<   ÚDEBUGZSTACK_DEBUGr   Z	_PyFuturerZ   r[   r`   rb   rd   rm   r   Z_asyncioÚImportErrorZ_CFuturer   r   r   r   Ú<module>   s8   
 q*