
    4bh8                     h   	 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 ddlmZ e	j                  Ze	j                  Ze	j                  Ze	j                   Zej"                  dz
  Z G d	 d
      ZeZd Zd Zd Zd Zd Zd ZdddZ	 ddlZej&                  xZZy# e$ r Y yw xY w))Futurewrap_futureisfuture    N)GenericAlias   )base_futures)events)
exceptions)format_helpersc                       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Zd Zd Z ee      Zed        Zej*                  d        Zd	 Zd
 ZddZd Zd Zd Zd Zd ZdddZd Zd Z d Z!d Z"e"Z#y)r   NFloopc                    	 |t        j                         | _        n|| _        g | _        | j                  j	                         r.t        j                  t        j                  d            | _	        y y )Nr   )
r	   get_event_loop_loop
_callbacks	get_debugr   extract_stacksys	_getframe_source_tracebackselfr   s     9/opt/python-3.12.12/usr/lib/python3.12/asyncio/futures.py__init__zFuture.__init__H   s`    	 <..0DJDJ::!%3%A%Aa &"D" "    c                 ,    t        j                  |       S N)r   _future_reprr   s    r   __repr__zFuture.__repr__X   s    ((..r   c                     | j                   sy | j                  }| j                  j                   d|| d}| j                  r| j                  |d<   | j
                  j                  |       y )Nz exception was never retrieved)message	exceptionfuturesource_traceback)_Future__log_traceback
_exception	__class____name__r   r   call_exception_handler)r   exccontexts      r   __del__zFuture.__del__[   sl    ## oo >>**++IJ	
 !!*.*@*@G&'

))'2r   c                     | j                   S r   )r'   r    s    r   _log_tracebackzFuture._log_tracebackm   s    ###r   c                 ,    |rt        d      d| _        y )Nz'_log_traceback can only be set to FalseF)
ValueErrorr'   )r   vals     r   r0   zFuture._log_tracebackq   s    FGG$r   c                 :    	 | j                   }|t        d      |S )Nz!Future object is not initialized.)r   RuntimeErrorr   s     r   get_loopzFuture.get_loopw   s$    ;zz<BCCr   c                     	 | j                   | j                   }d | _         |S | j                  t        j                         }nt        j                  | j                        }| j                   |_        d | _         |S r   )_cancelled_exc_cancel_messager
   CancelledError__context__)r   r,   s     r   _make_cancelled_errorzFuture._make_cancelled_error~   sw    	
 *%%C"&DJ'++-C++D,@,@AC--"
r   c                     	 d| _         | j                  t        k7  ryt        | _        || _        | j                          y)NFT)r'   _state_PENDING
_CANCELLEDr9   _Future__schedule_callbacks)r   msgs     r   cancelzFuture.cancel   s>    	  %;;(" "!!#r   c                     	 | j                   d d  }|sy g | j                   d d  |D ]#  \  }}| j                  j                  || |       % y Nr-   )r   r   	call_soon)r   	callbackscallbackctxs       r   __schedule_callbackszFuture.__schedule_callbacks   sR    	
 OOA&	&MHcJJ  4 = 'r   c                 *    	 | j                   t        k(  S r   )r>   r@   r    s    r   	cancelledzFuture.cancelled   s    6{{j((r   c                 *    	 | j                   t        k7  S r   )r>   r?   r    s    r   donezFuture.done   s    	
 {{h&&r   c                 "   	 | j                   t        k(  r| j                         | j                   t        k7  rt	        j
                  d      d| _        | j                  %| j                  j                  | j                        | j                  S )NzResult is not ready.F)r>   r@   r<   	_FINISHEDr
   InvalidStateErrorr'   r(   with_traceback_exception_tb_resultr    s    r   resultzFuture.result   sy    	 ;;*$,,..;;)#../EFF$??&//001C1CDD||r   c                     	 | j                   t        k(  r| j                         | j                   t        k7  rt	        j
                  d      d| _        | j                  S )NzException is not set.F)r>   r@   r<   rQ   r
   rR   r'   r(   r    s    r   r$   zFuture.exception   sT    	 ;;*$,,..;;)#../FGG$r   rF   c                    	 | j                   t        k7  r| j                  j                  || |       y |t	        j
                         }| j                  j                  ||f       y rE   )r>   r?   r   rG   contextvarscopy_contextr   append)r   fnr-   s      r   add_done_callbackzFuture.add_done_callback   sW    	 ;;("JJ  T7 ;%224OO""B=1r   c                     	 | j                   D cg c]  \  }}||k7  r||f }}}t        | j                         t        |      z
  }|r|| j                   d d  |S c c}}w r   )r   len)r   r\   frJ   filtered_callbacksremoved_counts         r   remove_done_callbackzFuture.remove_done_callback   ss    	
 /3oo*.=(1c!"b  !#h.= 	 * DOO,s3E/FF!3DOOA*s   Ac                     	 | j                   t        k7  r$t        j                  | j                    d|       || _        t
        | _         | j                          y )N: )r>   r?   r
   rR   rU   rQ   rA   )r   rV   s     r   
set_resultzFuture.set_result   sO    	
 ;;("..$++b/IJJ!!#r   c                 l   	 | j                   t        k7  r$t        j                  | j                    d|       t	        |t
              r |       }t	        |t              rt        d      }||_        ||_	        |}|| _
        |j                  | _        t        | _         | j                          d| _        y )Nre   zPStopIteration interacts badly with generators and cannot be raised into a FutureT)r>   r?   r
   rR   
isinstancetypeStopIterationr5   	__cause__r;   r(   __traceback__rT   rQ   rA   r'   )r   r$   new_excs      r   set_exceptionzFuture.set_exception  s    	
 ;;("..$++b/IJJi&!Ii/" $, -G !*G"+GI#&44!!##r   c              #      K   | j                         sd| _        |  | j                         st        d      | j                         S w)NTzawait wasn't used with future)rO   _asyncio_future_blockingr5   rV   r    s    r   	__await__zFuture.__await__  s=     yy{,0D)Jyy{>??{{}s   AA	r   )$r*   
__module____qualname__r?   r>   rU   r(   r   r   r9   r8   rp   r'   r   r!   r.   classmethodr   __class_getitem__propertyr0   setterr6   r<   rC   rA   rM   rO   rV   r$   r]   rc   rf   rn   rq   __iter__ r   r   r   r      s    & FGJEON  %O# " /3  $L1$ $ % %
(>)'  04 2 
$$. Hr   r   c                 ^    	 | j                   } |       S # t        $ r Y | j                  S w xY wr   )r6   AttributeErrorr   )futr6   s     r   	_get_loopr}   -  s:    << z   99	s    	,,c                 J    	 | j                         ry | j                  |       y r   )rM   rf   )r|   rV   s     r   _set_result_unless_cancelledr   9  s    I
}}NN6r   c                 l   t        |       }|t        j                  j                  u rt	        j                  | j
                   S |t        j                  j                  u rt	        j                  | j
                   S |t        j                  j                  u rt	        j                  | j
                   S | S r   )ri   
concurrentfuturesr:   r
   argsTimeoutErrorrR   )r,   	exc_classs     r   _convert_future_excr   @  s    S	IJ&&555((#((33	j((55	5&&11	j((::	:++SXX66
r   c                    	 |j                         r | j                           | j                         sy |j                         }| | j                  t        |             y |j                         } | j                  |       y r   )rM   rC   set_running_or_notify_cancelr$   rn   r   rV   rf   )r   sourcer$   rV   s       r   _set_concurrent_future_stater   L  su    B
2:224  "I 
  !4Y!?@
f%r   c                    	 |j                         ry | j                         r|j                          y | j                         }||j                  t	        |             y | j                         }|j                  |       y r   )rM   rC   r$   rn   r   rV   rf   )r   destr$   rV   s       r   _copy_future_stater   [  sj    
 ~~$$&	 29=>]]_FOOF#r   c                     	 t               s/t         t        j                  j                        st        d      t              s/t        t        j                  j                        st        d      t               rt               nd t              rt              nd d  fd}fd}j                  |        j                  |       y )Nz(A future is required for source argumentz-A future is required for destination argumentc                 L    t        |       rt        ||        y t        | |       y r   )r   r   r   )r%   others     r   
_set_statez!_chain_future.<locals>._set_state  s    Fuf-(7r   c                     | j                         r3u rj                          y j                  j                         y y r   )rM   rC   call_soon_threadsafe)destination	dest_loopr   source_loops    r   _call_check_cancelz)_chain_future.<locals>._call_check_cancel  s<      ""kY&>00?	 #r   c                     j                         rj                         ry u r
 |        y j                         ry j                  |        y r   )rM   	is_closedr   )r   r   r   r   r   s    r   _call_set_statez&_chain_future.<locals>._call_set_state  s[    !!#%)*=*=*?	[ 8{F+""$**:{FKr   )r   rh   r   r   r   	TypeErrorr}   r]   )r   r   r   r   r   r   r   s   ``  @@@r   _chain_futurer   o  s     FJv/9/A/A/H/H%JBCCK K4>4F4F4M4M*OGHH'/'7)F#TK*2;*?	+&TI8@	L !!"45
_-r   r   c                    	 t        |       r| S |t        j                         }|j                         }t	        | |       |S r   )r   r	   r   create_futurer   )r%   r   
new_futures      r   r   r     sE    0 |$$&##%J&*%r   )__all__concurrent.futuresr   rY   loggingr   typesr    r   r	   r
   r   r   r?   r@   rQ   DEBUGSTACK_DEBUGr   	_PyFuturer}   r   r   r   r   r   r   _asyncio_CFutureImportErrorry   r   r   <module>r      s    4    
           $$
""	 mmaH HX 			&$().X !% 
(
 !'FX	  		s   B) )B10B1