a
    	3j6                     @   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y   Y n0 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ZdZddddZejZdd Zdd	 Zd
d Zedd Zejdd Zdd Zdd Zd*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 u 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   K/www/server/python_manager/versions/3.9.10/lib/python3.9/asyncio/futures.py__init__G   s    
zFuture.__init__c                 C   s   d | jjd|  S )Nz<{} {}> )format	__class____name__join
_repr_infor   r   r   r   __repr__Y   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__]   s    
zFuture.__del__c                 C   s   | S Nr   )clstyper   r   r   __class_getitem__m   s    zFuture.__class_getitem__c                 C   s   | j S r(   )r#   r   r   r   r   _log_tracebackp   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,   t   s    c                 C   s   | j }|d u rtd|S )Nz!Future object is not initialized.)r   RuntimeErrorr   r   r   r   get_loopz   s    zFuture.get_loopc                 C   s2   | j d u rt }nt| j }| j|_d | _|S r(   )_cancel_messager   CancelledError_cancelled_exc__context__r   r%   r   r   r   _make_cancelled_error   s    

zFuture._make_cancelled_errorc                 C   s,   d| _ | jtkrdS t| _|| _|   dS )NFT)r#   _state_PENDING
_CANCELLEDr2   _Future__schedule_callbacks)r   msgr   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(   )r8   r:   r   r   r   r   	cancelled   s    zFuture.cancelledc                 C   s
   | j tkS r(   )r8   r9   r   r   r   r   done   s    zFuture.donec                 C   sF   | j tkr|  }|| j tkr*tdd| _| jd ur@| j| jS )NzResult is not ready.F)	r8   r:   r7   	_FINISHEDr   InvalidStateErrorr#   r$   _resultr6   r   r   r   result   s    



zFuture.resultc                 C   s6   | j tkr|  }|| j tkr*tdd| _| jS )NzException is not set.F)r8   r:   r7   rE   r   rF   r#   r$   r6   r   r   r   r!      s    


zFuture.exceptionr?   c                C   sB   | j tkr| jj|| |d n |d u r.t }| j||f d S r>   )r8   r9   r   r@   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frB   rK   r   r   
<listcomp>   s   z/Future.remove_done_callback.<locals>.<listcomp>)r   len)r   rK   Zfiltered_callbacksZremoved_countr   rO   r   remove_done_callback   s    
zFuture.remove_done_callbackc                 C   s8   | j tkr t| j  d| || _t| _ |   d S )N: )r8   r9   r   rF   rG   rE   r;   )r   rH   r   r   r   
set_result   s
    
zFuture.set_resultc                 C   sb   | j tkr t| j  d| t|tr0| }t|tu rDtd|| _t	| _ | 
  d| _d S )NrS   zPStopIteration interacts badly with generators and cannot be raised into a FutureT)r8   r9   r   rF   
isinstancer*   StopIteration	TypeErrorr$   rE   r;   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)rD   _asyncio_future_blockingr0   rH   r   r   r   r   	__await__  s    zFuture.__await__)N)%r   
__module____qualname__r9   r8   rG   r$   r   r   r2   r4   rY   r#   r   r   Z_future_repr_infor   r   r'   r+   propertyr,   setterr1   r7   r=   r;   rC   rD   rH   r!   rL   rR   rT   rX   rZ   __iter__r   r   r   r   r      s@   


r   c                 C   s*   z
| j }W n ty   Y n0 | S | jS r(   )r1   AttributeErrorr   )futr1   r   r   r   	_get_loop(  s    
rb   c                 C   s   |   rd S | | d S r(   )rC   rT   )ra   rH   r   r   r   _set_result_unless_cancelled4  s    rc   c                 C   sX   t | }|tjju r tj| j S |tjju r8tj| j S |tjju rPtj| j S | S d S r(   )r*   
concurrentfuturesr3   r   argsTimeoutErrorrF   )r%   Z	exc_classr   r   r   _convert_future_exc;  s    rh   c                 C   sR   |  r|   |  sd S | }|d ur<| t| n| }| | d S r(   )rC   r=   set_running_or_notify_cancelr!   rX   rh   rH   rT   )rd   sourcer!   rH   r   r   r   _set_concurrent_future_stateG  s    rk   c                 C   sT   |  rd S |   r|  n2|  }|d ur>|t| n|  }|| d S r(   )rC   r=   r!   rX   rh   rH   rT   )rj   destr!   rH   r   r   r   _copy_future_stateV  s    
rm   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   rm   rk   )r"   otherr   r   r   
_set_statez  s    z!_chain_future.<locals>._set_statec                    s2   |   r.d u s u r"  nj d S r(   )rC   r=   call_soon_threadsafe)destination)	dest_looprj   source_loopr   r   _call_check_cancel  s    
z)_chain_future.<locals>._call_check_cancelc                    sJ     rd ur rd S d u s,u r8 |  n |  d S r(   )rC   Z	is_closedrp   )rj   )ro   rr   rq   rs   r   r   _call_set_state  s    z&_chain_future.<locals>._call_set_state)r   rU   rd   re   r   rW   rb   rL   )rj   rq   rt   ru   r   )ro   rr   rq   rj   rs   r   _chain_futurej  s    	
rv   r
   c                C   s2   t | r| S |d u rt }| }t| | |S r(   )r   r   r   Zcreate_futurerv   )r"   r   Z
new_futurer   r   r   r     s    
r   )__all__concurrent.futuresrd   rI   loggingr    r   r   r   r	   r   r9   r:   rE   DEBUGZSTACK_DEBUGr   Z	_PyFuturerb   rc   rh   rk   rm   rv   r   Z_asyncioImportErrorZ_CFuturer   r   r   r   <module>   s:   
  
*