
    ;e7                     6   	 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dS # e$ r Y dS 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#dS )r   NFloopc                    	 |t          j                    | _        n|| _        g | _        | j                                        r-t          j        t          j        d                    | _	        d S d S )Nr   )
r	   _get_event_loop_loop
_callbacks	get_debugr   extract_stacksys	_getframe_source_tracebackselfr   s     &/usr/lib/python3.11/asyncio/futures.py__init__zFuture.__init__H   sv    	 </11DJJDJ:!! 	"%3%Aa  &" &"D"""	" 	"    c                 *    t          j        |           S N)r   _future_reprr   s    r   __repr__zFuture.__repr__X   s    (...r   c                     | j         sd S | j        }| j        j         d|| d}| j        r
| j        |d<   | j                            |           d S )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__[   sx    # 	 Fo >*JJJ	
 
 ! 	A*.*@G&'
))'22222r   c                     | j         S r   )r'   r    s    r   _log_tracebackzFuture._log_tracebackm   s    ##r   c                 6    |rt          d          d| _        d S )Nz'_log_traceback can only be set to FalseF)
ValueErrorr'   )r   vals     r   r0   zFuture._log_tracebackq   s(     	HFGGG$r   c                 8    	 | j         }|t          d          |S )Nz!Future object is not initialized.)r   RuntimeErrorr   s     r   get_loopzFuture.get_loopw   s%    ;z<BC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~   sj    	
 *%C"&DJ'+--CC+D,@AAC-"
r   c                     	 d| _         | j        t          k    rdS t          | _        || _        |                                  dS )NFT)r'   _state_PENDING
_CANCELLEDr9   _Future__schedule_callbacks)r   msgs     r   cancelzFuture.cancel   sI    	  %;(""5 "!!###tr   c                     	 | j         d d          }|sd S g | j         d d <   |D ]"\  }}| j                            || |           #d S Nr-   )r   r   	call_soon)r   	callbackscallbackctxs       r   __schedule_callbackszFuture.__schedule_callbacks   ss    	
 OAAA&	 	F& 	> 	>MHcJ  4 ====	> 	>r   c                 $    	 | j         t          k    S r   )r?   rA   r    s    r   	cancelledzFuture.cancelled   s    6{j((r   c                 $    	 | j         t          k    S r   )r?   r@   r    s    r   donezFuture.done   s    	
 {h&&r   c                     	 | j         t          k    r|                                 }|| j         t          k    rt	          j        d          d| _        | j        | j                            | j	                  | j
        S )NzResult is not ready.F)r?   rA   r=   	_FINISHEDr
   InvalidStateErrorr'   r(   with_traceback_exception_tb_resultr<   s     r   resultzFuture.result   s|    	 ;*$$,,..CI;)##./EFFF$?&/001CDDD|r   c                     	 | j         t          k    r|                                 }|| j         t          k    rt	          j        d          d| _        | j        S )NzException is not set.F)r?   rA   r=   rR   r
   rS   r'   r(   r<   s     r   r$   zFuture.exception   s[    	 ;*$$,,..CI;)##./FGGG$r   rG   c                    	 | j         t          k    r| j                            || |           d S |t	          j                    }| j                            ||f           d S rF   )r?   r@   r   rH   contextvarscopy_contextr   append)r   fnr-   s      r   add_done_callbackzFuture.add_done_callback   sl    	 ;(""J  T7 ;;;;;%244O""B=11111r   c                     	 fd| j         D             }t          | j                   t          |          z
  }|r|| j         d d <   |S )Nc                 *    g | ]\  }}|k    ||fS  ra   ).0frK   r]   s      r   
<listcomp>z/Future.remove_done_callback.<locals>.<listcomp>   s2     * * *"*1c!"b  !#h!(r   )r   len)r   r]   filtered_callbacksremoved_counts    `  r   remove_done_callbackzFuture.remove_done_callback   sp    	* * * *.2o* * * DO,,s3E/F/FF 	4!3DOAAAr   c                     	 | j         t          k    rt          j        | j          d|           || _        t
          | _         |                                  d S )N: )r?   r@   r
   rS   rV   rR   rB   )r   rW   s     r   
set_resultzFuture.set_result   s]    	
 ;("".$+/I/I/I/IJJJ!!#####r   c                 `   	 | j         t          k    rt          j        | j          d|           t	          |t
                    r
 |            }t          |          t          u rt          d          || _        |j	        | _
        t          | _         |                                  d| _        d S )Nrj   zPStopIteration interacts badly with generators and cannot be raised into a FutureT)r?   r@   r
   rS   
isinstancetypeStopIteration	TypeErrorr(   __traceback__rU   rR   rB   r'   )r   r$   s     r   set_exceptionzFuture.set_exception	  s    	
 ;("".$+/I/I/I/IJJJi&& 	$!	I	??m++ A B B B#&4!!####r   c              #      K   |                                  sd| _        | V  |                                  st          d          |                                 S )NTzawait wasn't used with future)rP   _asyncio_future_blockingr5   rW   r    s    r   	__await__zFuture.__await__  sU      yy{{ 	,0D)JJJyy{{ 	@>???{{}}r   r   )$r*   
__module____qualname__r@   r?   rV   r(   r   r   r9   r8   rt   r'   r   r!   r.   classmethodr   __class_getitem__propertyr0   setterr6   r=   rD   rB   rN   rP   rW   r$   r^   rh   rk   rr   ru   __iter__ra   r   r   r   r      s       & FGJEON  %O# " " " " " / / /3 3 3  $L11$ $ X$ % % %
    (   > > >) ) )' ' '  "    04 2 2 2 2 2   
$ 
$ 
$$ $ $&   HHHr   r   c                 T    	 | j         } |            S # t          $ r Y nw xY w| j        S r   )r6   AttributeErrorr   )futr6   s     r   	_get_loopr   +  sH    < xzz     9s    
  c                 ^    	 |                                  rd S |                     |           d S r   )rN   rk   )r   rW   s     r   _set_result_unless_cancelledr   7  s2    I
}} NN6r   c                    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   )rn   
concurrentfuturesr:   r
   argsTimeoutErrorrS   )r,   	exc_classs     r   _convert_future_excr   >  su    S		IJ&555(#(33	j(5	5	5&11	j(:	:	:+SX66
r   c                 "   	 |                                 r | j                      | j                    sd S |                                }| | j        t          |                     d S |                                } | j        |           d S r   )rN   rD   set_running_or_notify_cancelr$   rr   r   rW   rk   )r   sourcer$   rW   s       r   _set_concurrent_future_stater   J  s    B 
2:244   ""I 
 !4Y!?!?@@@@@
f%%%%%r   c                 N   	 |                                 rd S |                                  r|                                 d S |                                 }|$|                    t	          |                     d S |                                 }|                    |           d S r   )rN   rD   r$   rr   r   rW   rk   )r   destr$   rW   s       r   _copy_future_stater   Y  s    
 ~~  $$$&&	 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}                    |                                |           d S )Nz(A future is required for source argumentz-A future is required for destination argumentc                 h    t          |           rt          ||            d S t          | |           d S r   )r   r   r   )r%   others     r   
_set_statez!_chain_future.<locals>._set_state}  s>    F 	8uf-----(77777r   c                     |                                  r8u r                                 d S                     j                   d S d S r   )rN   rD   call_soon_threadsafe)destination	dest_loopr   source_loops    r   _call_check_cancelz)_chain_future.<locals>._call_check_cancel  sa      "" 	@"kY&>&>00?????		@ 	@r   c                                                      r                                rd S u r |            d S                                 rd S                     |            d S r   )rN   	is_closedr   )r   r   r   r   r   s    r   _call_set_statez&_chain_future.<locals>._call_set_state  s    !!## 	%)*=*=*?*?%F	[ 8 8J{F+++++""$$ **:{FKKKKKr   )r   rm   r   r   r   rp   r   r^   )r   r   r   r   r   r   r   s   ``  @@@r   _chain_futurer   m  sd    F DJv/9/A/H%J %J DBCCCK   IK4>4F4M*O *O IGHHH'/'7'7A)F###TK*2;*?*?I	+&&&TI8 8 8@ @ @ @ @ @ @	L 	L 	L 	L 	L 	L 	L 	L !!"4555
_-----r   r   c                    	 t          |           r| S |t          j                    }|                                }t	          | |           |S r   )r   r	   r   create_futurer   )r%   r   
new_futures      r   r   r     sV    0  |%''##%%J&*%%%r   )__all__concurrent.futuresr   rZ   loggingr   typesr    r   r	   r
   r   r   r@   rA   rR   DEBUGSTACK_DEBUGr   	_PyFuturer   r   r   r   r   r   r   _asyncio_CFutureImportErrorra   r   r   <module>r      s   4          



                                  $
"	 maF F F F F F F FT 		 	 	  	 	 	& & &$ $ $(). ). ).X !% 
 
 
 
 
(OOO
 !'FXXX	  	 	 	DD	s    B BB