o
     JAfXj                     @   s  	 d Z ddlZddlZddlZddlZddlZddlZddlmZ G dd dZ	G dd de	Z
G d	d
 d
ZG dd dZG dd dZG dd deZdae ZG dd dejZe 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% Zd&d' Zd(d) Zd*d+ Z eZ!eZ"eZ#eZ$eZ%zdd,l&mZmZmZmZmZ W n
 e'y   Y dS w eZ(eZ)eZ*eZ+eZ,dS ).)AbstractEventLoopPolicyAbstractEventLoopAbstractServerHandleTimerHandleget_event_loop_policyset_event_loop_policyget_event_loopset_event_loopnew_event_loopget_child_watcherset_child_watcher_set_running_loopget_running_loop_get_running_loop    N   )format_helpersc                   @   sD   e Zd Z	 dZdddZdd Zdd Zd	d
 Zdd Zdd Z	dS )r   )	_callback_args
_cancelled_loop_source_traceback_repr__weakref___contextNc                 C   s^   |d u rt  }|| _|| _|| _|| _d| _d | _| j r*t	
td| _d S d | _d S )NFr   )contextvarsZcopy_contextr   r   r   r   r   r   	get_debugr   extract_stacksys	_getframer   )selfcallbackargsloopcontext r%   %/usr/lib/python3.10/asyncio/events.py__init__   s   


zHandle.__init__c                 C   sl   | j jg}| jr|d | jd ur|t| j| j | jr4| jd }|d|d  d|d   |S )N	cancelledzcreated at r   :r   )		__class____name__r   appendr   r   _format_callback_sourcer   r   )r    infoframer%   r%   r&   
_repr_info.   s   



zHandle._repr_infoc                 C   s(   | j d ur| j S |  }dd|S )Nz<{}> )r   r1   formatjoin)r    r/   r%   r%   r&   __repr__:   s   
zHandle.__repr__c                 C   s4   | j sd| _ | j rt| | _d | _d | _d S d S NT)r   r   r   reprr   r   r   r    r%   r%   r&   cancel@   s   


zHandle.cancelc                 C   s   | j S N)r   r8   r%   r%   r&   r(   K   s   zHandle.cancelledc              
   C   s   z| j j| jg| jR   W d } d S  ttfy     tyP } z*t| j| j}d| }||| d}| j	r=| j	|d< | j
| W Y d }~d } d S d }~ww )NzException in callback )message	exceptionhandleZsource_traceback)r   runr   r   
SystemExitKeyboardInterruptBaseExceptionr   r.   r   r   call_exception_handler)r    exccbmsgr$   r%   r%   r&   _runN   s(   

zHandle._runr:   )
r,   
__module____qualname__	__slots__r'   r1   r5   r9   r(   rF   r%   r%   r%   r&   r      s    
r   c                       sx   e Zd Z	 ddgZd fdd	Z fddZdd	 Zd
d Zdd Zdd Z	dd Z
dd Z fddZdd Z  ZS )r   
_scheduled_whenNc                    s0   t  |||| | jr| jd= || _d| _d S )Nr)   F)superr'   r   rK   rJ   )r    whenr!   r"   r#   r$   r+   r%   r&   r'   g   s
   
zTimerHandle.__init__c                    s0   t   }| jr
dnd}||d| j  |S )N   r   zwhen=)rL   r1   r   insertrK   )r    r/   posrN   r%   r&   r1   o   s   
zTimerHandle._repr_infoc                 C   s
   t | jS r:   )hashrK   r8   r%   r%   r&   __hash__u   s   
zTimerHandle.__hash__c                 C   s   t |tr| j|jk S tS r:   
isinstancer   rK   NotImplementedr    otherr%   r%   r&   __lt__x      
zTimerHandle.__lt__c                 C   s$   t |tr| j|jk p| |S tS r:   rU   r   rK   __eq__rV   rW   r%   r%   r&   __le__}      
zTimerHandle.__le__c                 C   s   t |tr| j|jkS tS r:   rT   rW   r%   r%   r&   __gt__   rZ   zTimerHandle.__gt__c                 C   s$   t |tr| j|jkp| |S tS r:   r[   rW   r%   r%   r&   __ge__   r^   zTimerHandle.__ge__c                 C   s>   t |tr| j|jko| j|jko| j|jko| j|jkS tS r:   )rU   r   rK   r   r   r   rV   rW   r%   r%   r&   r\      s   



zTimerHandle.__eq__c                    s    | j s	| j|  t   d S r:   )r   r   _timer_handle_cancelledrL   r9   r8   rN   r%   r&   r9      s   zTimerHandle.cancelc                 C   s   	 | j S r:   )rK   r8   r%   r%   r&   rM      s   zTimerHandle.whenr:   )r,   rG   rH   rI   r'   r1   rS   rY   r]   r_   r`   r\   r9   rM   __classcell__r%   r%   rN   r&   r   b   s    r   c                   @   sN   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S )r   c                 C      	 t r:   NotImplementedErrorr8   r%   r%   r&   close      zAbstractServer.closec                 C   rc   r:   rd   r8   r%   r%   r&   get_loop   rg   zAbstractServer.get_loopc                 C   rc   r:   rd   r8   r%   r%   r&   
is_serving   rg   zAbstractServer.is_servingc                       	 t r:   rd   r8   r%   r%   r&   start_serving   s   zAbstractServer.start_servingc                    rj   r:   rd   r8   r%   r%   r&   serve_forever   s   zAbstractServer.serve_foreverc                    rj   r:   rd   r8   r%   r%   r&   wait_closed      zAbstractServer.wait_closedc                    s   | S r:   r%   r8   r%   r%   r&   
__aenter__      zAbstractServer.__aenter__c                    s   |    |  I d H  d S r:   )rf   rm   )r    rC   r%   r%   r&   	__aexit__   s   zAbstractServer.__aexit__N)r,   rG   rH   rf   rh   ri   rk   rl   rm   ro   rq   r%   r%   r%   r&   r      s    r   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dZddddZddddZdd Zdd Zddd d!Zddd"d#Zd$d% Zd&d' Zd(d(d(d(d)d*d+Zdzd,d-Z	d{dd(d(d(ddddddd.
d/d0Z	d{ejejdd1ddddd2d3	d4d5Zd|d2d6d7d8Zd9ddd:d;d<Z	d}ddddd=d>d?Z	d}dd1ddd2d@dAdBZdddCdDdEZ 	d{d(d(d(dddddFdGdHZ!dIdJ Z"dKdL Z#e$j%e$j%e$j%dMdNdOZ&e$j%e$j%e$j%dMdPdQZ'dRdS Z(dTdU Z)dVdW Z*dXdY Z+dZd[ Z,d\d] Z-d^d_ Z.d`da Z/dbdc Z0d|dd6dddeZ1dfdg Z2dhdi Z3djdk Z4dldm Z5dndo Z6dpdq Z7drds Z8dtdu Z9dvdw Z:dxdy Z;dS )~r   c                 C   rc   r:   rd   r8   r%   r%   r&   run_forever   rg   zAbstractEventLoop.run_foreverc                 C   rc   r:   rd   )r    futurer%   r%   r&   run_until_complete   s   z$AbstractEventLoop.run_until_completec                 C   rc   r:   rd   r8   r%   r%   r&   stop   s   zAbstractEventLoop.stopc                 C   rc   r:   rd   r8   r%   r%   r&   
is_running   rg   zAbstractEventLoop.is_runningc                 C   rc   r:   rd   r8   r%   r%   r&   	is_closed   rg   zAbstractEventLoop.is_closedc                 C   rc   r:   rd   r8   r%   r%   r&   rf      s   zAbstractEventLoop.closec                    rj   r:   rd   r8   r%   r%   r&   shutdown_asyncgens   rn   z$AbstractEventLoop.shutdown_asyncgensc                    rj   r:   rd   r8   r%   r%   r&   shutdown_default_executor   rn   z+AbstractEventLoop.shutdown_default_executorc                 C   rc   r:   rd   )r    r=   r%   r%   r&   ra     rg   z)AbstractEventLoop._timer_handle_cancelledN)r$   c                G   s   | j d|g|R d|iS )Nr   r$   )
call_laterr    r!   r$   r"   r%   r%   r&   	call_soon  s   zAbstractEventLoop.call_soonc                G      t r:   rd   )r    delayr!   r$   r"   r%   r%   r&   rz        zAbstractEventLoop.call_laterc                G   r}   r:   rd   )r    rM   r!   r$   r"   r%   r%   r&   call_at  r   zAbstractEventLoop.call_atc                 C   r}   r:   rd   r8   r%   r%   r&   time  r   zAbstractEventLoop.timec                 C   r}   r:   rd   r8   r%   r%   r&   create_future  r   zAbstractEventLoop.create_future)namec                C   r}   r:   rd   )r    coror   r%   r%   r&   create_task  r   zAbstractEventLoop.create_taskc                G   r}   r:   rd   r{   r%   r%   r&   call_soon_threadsafe  r   z&AbstractEventLoop.call_soon_threadsafec                 G   r}   r:   rd   )r    executorfuncr"   r%   r%   r&   run_in_executor  r   z!AbstractEventLoop.run_in_executorc                 C   r}   r:   rd   )r    r   r%   r%   r&   set_default_executor!  r   z&AbstractEventLoop.set_default_executorr   )familytypeprotoflagsc                      t r:   rd   )r    hostportr   r   r   r   r%   r%   r&   getaddrinfo&     zAbstractEventLoop.getaddrinfoc                    r   r:   rd   )r    Zsockaddrr   r%   r%   r&   getnameinfo*  rp   zAbstractEventLoop.getnameinfo)
sslr   r   r   sock
local_addrserver_hostnamessl_handshake_timeouthappy_eyeballs_delay
interleavec       
            r   r:   rd   )r    protocol_factoryr   r   r   r   r   r   r   r   r   r   r   r   r%   r%   r&   create_connection-  s   z#AbstractEventLoop.create_connectiond   T)	r   r   r   backlogr   reuse_address
reuse_portr   rk   c       	            rj   r:   rd   )r    r   r   r   r   r   r   r   r   r   r   r   rk   r%   r%   r&   create_server6  s   ,zAbstractEventLoop.create_server)fallbackc                   rj   r:   rd   )r    	transportfileoffsetcountr   r%   r%   r&   sendfilek  s   zAbstractEventLoop.sendfileF)server_sider   r   c                   rj   r:   rd   )r    r   protocolZ
sslcontextr   r   r   r%   r%   r&   	start_tlss  s   zAbstractEventLoop.start_tls)r   r   r   r   c                   r   r:   rd   )r    r   pathr   r   r   r   r%   r%   r&   create_unix_connection~     z(AbstractEventLoop.create_unix_connection)r   r   r   r   rk   c                   rj   r:   rd   )r    r   r   r   r   r   r   rk   r%   r%   r&   create_unix_server  s   z$AbstractEventLoop.create_unix_server)r   r   c                   rj   r:   rd   )r    r   r   r   r   r%   r%   r&   connect_accepted_socket  s   z)AbstractEventLoop.connect_accepted_socket)r   r   r   r   r   allow_broadcastr   c                   rj   r:   rd   )r    r   r   Zremote_addrr   r   r   r   r   r   r   r%   r%   r&   create_datagram_endpoint  s   z*AbstractEventLoop.create_datagram_endpointc                    rj   r:   rd   r    r   piper%   r%   r&   connect_read_pipe     
z#AbstractEventLoop.connect_read_pipec                    rj   r:   rd   r   r%   r%   r&   connect_write_pipe  r   z$AbstractEventLoop.connect_write_pipe)stdinstdoutstderrc                   r   r:   rd   )r    r   cmdr   r   r   kwargsr%   r%   r&   subprocess_shell  r   z"AbstractEventLoop.subprocess_shellc                   r   r:   rd   )r    r   r   r   r   r"   r   r%   r%   r&   subprocess_exec  r   z!AbstractEventLoop.subprocess_execc                 G   r}   r:   rd   r    fdr!   r"   r%   r%   r&   
add_reader  r   zAbstractEventLoop.add_readerc                 C   r}   r:   rd   r    r   r%   r%   r&   remove_reader  r   zAbstractEventLoop.remove_readerc                 G   r}   r:   rd   r   r%   r%   r&   
add_writer  r   zAbstractEventLoop.add_writerc                 C   r}   r:   rd   r   r%   r%   r&   remove_writer  r   zAbstractEventLoop.remove_writerc                    r   r:   rd   )r    r   nbytesr%   r%   r&   	sock_recv  rp   zAbstractEventLoop.sock_recvc                    r   r:   rd   )r    r   bufr%   r%   r&   sock_recv_into  rp   z AbstractEventLoop.sock_recv_intoc                    r   r:   rd   )r    r   datar%   r%   r&   sock_sendall  rp   zAbstractEventLoop.sock_sendallc                    r   r:   rd   )r    r   addressr%   r%   r&   sock_connect  rp   zAbstractEventLoop.sock_connectc                    r   r:   rd   )r    r   r%   r%   r&   sock_accept  rp   zAbstractEventLoop.sock_acceptc                   r   r:   rd   )r    r   r   r   r   r   r%   r%   r&   sock_sendfile"  r   zAbstractEventLoop.sock_sendfilec                 G   r}   r:   rd   )r    sigr!   r"   r%   r%   r&   add_signal_handler(  r   z$AbstractEventLoop.add_signal_handlerc                 C   r}   r:   rd   )r    r   r%   r%   r&   remove_signal_handler+  r   z'AbstractEventLoop.remove_signal_handlerc                 C   r}   r:   rd   )r    factoryr%   r%   r&   set_task_factory0  r   z"AbstractEventLoop.set_task_factoryc                 C   r}   r:   rd   r8   r%   r%   r&   get_task_factory3  r   z"AbstractEventLoop.get_task_factoryc                 C   r}   r:   rd   r8   r%   r%   r&   get_exception_handler8  r   z'AbstractEventLoop.get_exception_handlerc                 C   r}   r:   rd   )r    handlerr%   r%   r&   set_exception_handler;  r   z'AbstractEventLoop.set_exception_handlerc                 C   r}   r:   rd   r    r$   r%   r%   r&   default_exception_handler>  r   z+AbstractEventLoop.default_exception_handlerc                 C   r}   r:   rd   r   r%   r%   r&   rB   A  r   z(AbstractEventLoop.call_exception_handlerc                 C   r}   r:   rd   r8   r%   r%   r&   r   F  r   zAbstractEventLoop.get_debugc                 C   r}   r:   rd   )r    Zenabledr%   r%   r&   	set_debugI  r   zAbstractEventLoop.set_debug)r   NN)r   Nr:   )<r,   rG   rH   rr   rt   ru   rv   rw   rf   rx   ry   ra   r|   rz   r   r   r   r   r   r   r   r   r   r   socket	AF_UNSPEC
AI_PASSIVEr   r   r   r   r   r   r   r   r   
subprocessPIPEr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rB   r   r   r%   r%   r%   r&   r      s    

5	"%r   c                   @   s6   e Zd Z	 dd Zdd Zdd Zdd Zd	d
 ZdS )r   c                 C   rc   r:   rd   r8   r%   r%   r&   r   P  s   z&AbstractEventLoopPolicy.get_event_loopc                 C   rc   r:   rd   r    r#   r%   r%   r&   r	   Z  rg   z&AbstractEventLoopPolicy.set_event_loopc                 C   rc   r:   rd   r8   r%   r%   r&   r
   ^  s   z&AbstractEventLoopPolicy.new_event_loopc                 C   rc   r:   rd   r8   r%   r%   r&   r   f  rg   z)AbstractEventLoopPolicy.get_child_watcherc                 C   rc   r:   rd   )r    watcherr%   r%   r&   r   j  rg   z)AbstractEventLoopPolicy.set_child_watcherN)r,   rG   rH   r   r	   r
   r   r   r%   r%   r%   r&   r   M  s    
r   c                   @   sD   e Zd Z	 dZG dd dejZdd Zdd Zdd	 Z	d
d Z
dS )BaseDefaultEventLoopPolicyNc                   @   s   e Zd ZdZdZdS )z!BaseDefaultEventLoopPolicy._LocalNF)r,   rG   rH   r   _set_calledr%   r%   r%   r&   _Local~  s    r   c                 C   s   |   | _d S r:   )r   _localr8   r%   r%   r&   r'     s   z#BaseDefaultEventLoopPolicy.__init__c                 C   sZ   	 | j jd u r| j jst t u r| |   | j jd u r)tdt j	 | j jS )Nz,There is no current event loop in thread %r.)
r   r   r   	threadingcurrent_threadmain_threadr	   r
   RuntimeErrorr   r8   r%   r%   r&   r     s   z)BaseDefaultEventLoopPolicy.get_event_loopc                 C   s   	 d| j _|| j _d S r6   )r   r   r   r   r%   r%   r&   r	     s   z)BaseDefaultEventLoopPolicy.set_event_loopc                 C   s
   	 |   S r:   )_loop_factoryr8   r%   r%   r&   r
        z)BaseDefaultEventLoopPolicy.new_event_loop)r,   rG   rH   r   r   localr   r'   r   r	   r
   r%   r%   r%   r&   r   o  s    r   c                   @   s   e Zd ZdZdS )_RunningLoopr   N)r,   rG   rH   loop_pidr%   r%   r%   r&   r     s    r   c                  C   s   	 t  } | d u rtd| S )Nzno running event loop)r   r   r#   r%   r%   r&   r     s
   r   c                  C   s,   	 t j\} }| d ur|t kr| S d S d S r:   )_running_loopr   osgetpid)Zrunning_looppidr%   r%   r&   r     s
   
r   c                 C   s   	 | t  ft_d S r:   )r   r   r   r   r   r%   r%   r&   r     s   r   c                  C   sT   t  td u rddlm}  |  aW d    d S W d    d S 1 s#w   Y  d S )Nr   DefaultEventLoopPolicy)_lock_event_loop_policy r   r   r%   r%   r&   _init_event_loop_policy  s   "r   c                   C   s   	 t d u rt  t S r:   )r   r   r%   r%   r%   r&   r     s   r   c                 C   s
   	 | a d S r:   )r   )Zpolicyr%   r%   r&   r     r   r   c                   C   s   	 t  S r:   )_py__get_event_loopr%   r%   r%   r&   r     s   	r      c                 C   s4   t  }|d ur	|S dd l}|jdt| d t  S )Nr   zThere is no current event loop)
stacklevel)r   warningswarnDeprecationWarningr   r   )r   Zcurrent_loopr   r%   r%   r&   _get_event_loop  s   
r  c                 C   s   	 t  |  d S r:   )r   r	   r   r%   r%   r&   r	     s   r	   c                   C      	 t   S r:   )r   r
   r%   r%   r%   r&   r
        
r
   c                   C   r  r:   )r   r   r%   r%   r%   r&   r     r  r   c                 C   s   	 t  | S r:   )r   r   )r   r%   r%   r&   r     s   r   )r   r   r   r   r  )r   )-__all__r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Lockr   r   r   r   r   r   r   r   r   r   r   r  r	   r
   r   r   Z_py__get_running_loopZ_py__set_running_loopZ_py_get_running_loopZ_py_get_event_loopr   Z_asyncioImportErrorZ_c__get_running_loopZ_c__set_running_loopZ_c_get_running_loopZ_c_get_event_loopZ_c__get_event_loopr%   r%   r%   r&   <module>   sb    J@*   "9
	

 