B
    0*\ei                 @   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e	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$ Zd%d& Zd'd( Z d)d* Z!eZ"eZ#eZ$eZ%ydd+l&mZmZmZmZ W n e'k
rf   Y nX eZ(eZ)eZ*eZ+dS ),)AbstractEventLoopPolicyAbstractEventLoopAbstractServerHandleTimerHandleSendfileNotAvailableError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               @   s   e Zd ZdS )r   N)__name__
__module____qualname__ r   r   9C:\ALexclude\prg\programme\Python37\Lib\asyncio\events.pyr      s   r   c               @   sB   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 krt  }|| _|| _|| _|| _d| _d | _| j rRt	
td| _nd | _d S )NFr   )contextvarsZcopy_contextr    r   r   r   r   r   	get_debugr   extract_stacksys	_getframer   )selfcallbackargsloopcontextr   r   r   __init__'   s    
zHandle.__init__c             C   sl   | j jg}| jr|d | jd k	r:|t| j| j | jrh| jd }|d|d  d|d   |S )N	cancelledzcreated at r   :r   )		__class__r   r   appendr   r   _format_callback_sourcer   r   )r&   infoframer   r   r   
_repr_info6   s    



zHandle._repr_infoc             C   s(   | j d k	r| j S |  }dd|S )Nz<{}> )r   r4   formatjoin)r&   r2   r   r   r   __repr__B   s    
zHandle.__repr__c             C   s0   | j s,d| _ | j r t| | _d | _d | _d S )NT)r   r   r"   reprr   r   r   )r&   r   r   r   cancelH   s    

zHandle.cancelc             C   s   | j S )N)r   )r&   r   r   r   r,   S   s    zHandle.cancelledc          
   C   s   y| j j| jf| j  W nd tk
r~ } zFt| j| j}d| }||| d}| jrb| j|d< | j	| W d d }~X Y nX d } d S )NzException in callback )messageZ	exceptionhandleZsource_traceback)
r    runr   r   	Exceptionr   r1   r   r   call_exception_handler)r&   exccbmsgr*   r   r   r   _runV   s    

zHandle._run)N)
r   r   r   	__slots__r+   r4   r8   r:   r,   rC   r   r   r   r   r       s   
r   c                   s~   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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   rF   rE   )r&   whenr'   r(   r)   r*   )r/   r   r   r+   m   s
    zTimerHandle.__init__c                s0   t   }| jrdnd}||d| j  |S )N   r   zwhen=)rG   r4   r   insertrF   )r&   r2   pos)r/   r   r   r4   u   s    
zTimerHandle._repr_infoc             C   s
   t | jS )N)hashrF   )r&   r   r   r   __hash__{   s    zTimerHandle.__hash__c             C   s   | j |j k S )N)rF   )r&   otherr   r   r   __lt__~   s    zTimerHandle.__lt__c             C   s   | j |j k rdS | |S )NT)rF   __eq__)r&   rN   r   r   r   __le__   s    zTimerHandle.__le__c             C   s   | j |j kS )N)rF   )r&   rN   r   r   r   __gt__   s    zTimerHandle.__gt__c             C   s   | j |j krdS | |S )NT)rF   rP   )r&   rN   r   r   r   __ge__   s    zTimerHandle.__ge__c             C   s>   t |tr:| j|jko8| j|jko8| j|jko8| j|jkS tS )N)
isinstancer   rF   r   r   r   NotImplemented)r&   rN   r   r   r   rP      s    
zTimerHandle.__eq__c             C   s   |  |}|tkrtS | S )N)rP   rU   )r&   rN   Zequalr   r   r   __ne__   s    
zTimerHandle.__ne__c                s    | j s| j|  t   d S )N)r   r   _timer_handle_cancelledrG   r:   )r&   )r/   r   r   r:      s    zTimerHandle.cancelc             C   s   | j S )N)rF   )r&   r   r   r   rH      s    zTimerHandle.when)N)r   r   r   rD   r+   r4   rM   rO   rQ   rR   rS   rP   rV   r:   rH   __classcell__r   r   )r/   r   r   h   s   r   c               @   sL   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   s   t d S )N)NotImplementedError)r&   r   r   r   close   s    zAbstractServer.closec             C   s   t d S )N)rY   )r&   r   r   r   get_loop   s    zAbstractServer.get_loopc             C   s   t d S )N)rY   )r&   r   r   r   
is_serving   s    zAbstractServer.is_servingc                s   t d S )N)rY   )r&   r   r   r   start_serving   s    zAbstractServer.start_servingc                s   t d S )N)rY   )r&   r   r   r   serve_forever   s    zAbstractServer.serve_foreverc                s   t d S )N)rY   )r&   r   r   r   wait_closed   s    zAbstractServer.wait_closedc                s   | S )Nr   )r&   r   r   r   
__aenter__   s    zAbstractServer.__aenter__c                s   |    |  I d H  d S )N)rZ   r_   )r&   r@   r   r   r   	__aexit__   s    zAbstractServer.__aexit__N)r   r   r   rZ   r[   r\   r]   r^   r_   r`   ra   r   r   r   r   r      s   r   c               @   sH  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 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#d$d%d&Zdsd'd(Zdtd)d#d#d#d)d)d)d)d*d+d,Zduejejd)d-d)d)d)d)d.d/	d0d1Zdvd.d2d3d4Zd5d)d)d6d7d8Zdwd)d)d)d)d9d:d;Zdxd)d-d)d)d.d<d=d>Zdyd#d#d#d)d)d)d)d?d@dAZdBdC Z dDdE Z!e"j#e"j#e"j#dFdGdHZ$e"j#e"j#e"j#dFdIdJZ%dKdL Z&dMdN Z'dOdP Z(dQdR Z)dSdT Z*dUdV Z+dWdX Z,dYdZ Z-d[d\ Z.dzd)d2d]d^Z/d_d` Z0dadb Z1dcdd Z2dedf Z3dgdh Z4didj Z5dkdl Z6dmdn Z7dodp Z8dqdr Z9d)S ){r   c             C   s   t d S )N)rY   )r&   r   r   r   run_forever   s    zAbstractEventLoop.run_foreverc             C   s   t d S )N)rY   )r&   Zfuturer   r   r   run_until_complete   s    z$AbstractEventLoop.run_until_completec             C   s   t d S )N)rY   )r&   r   r   r   stop   s    zAbstractEventLoop.stopc             C   s   t d S )N)rY   )r&   r   r   r   
is_running   s    zAbstractEventLoop.is_runningc             C   s   t d S )N)rY   )r&   r   r   r   	is_closed   s    zAbstractEventLoop.is_closedc             C   s   t d S )N)rY   )r&   r   r   r   rZ      s    	zAbstractEventLoop.closec                s   t d S )N)rY   )r&   r   r   r   shutdown_asyncgens   s    z$AbstractEventLoop.shutdown_asyncgensc             C   s   t d S )N)rY   )r&   r<   r   r   r   rW     s    z)AbstractEventLoop._timer_handle_cancelledc             G   s   | j d|f| S )Nr   )
call_later)r&   r'   r(   r   r   r   	call_soon  s    zAbstractEventLoop.call_soonc             G   s   t d S )N)rY   )r&   Zdelayr'   r(   r   r   r   rh   
  s    zAbstractEventLoop.call_laterc             G   s   t d S )N)rY   )r&   rH   r'   r(   r   r   r   call_at  s    zAbstractEventLoop.call_atc             C   s   t d S )N)rY   )r&   r   r   r   time  s    zAbstractEventLoop.timec             C   s   t d S )N)rY   )r&   r   r   r   create_future  s    zAbstractEventLoop.create_futurec             C   s   t d S )N)rY   )r&   coror   r   r   create_task  s    zAbstractEventLoop.create_taskc             G   s   t d S )N)rY   )r&   r'   r(   r   r   r   call_soon_threadsafe  s    z&AbstractEventLoop.call_soon_threadsafec                s   t d S )N)rY   )r&   executorfuncr(   r   r   r   run_in_executor   s    z!AbstractEventLoop.run_in_executorc             C   s   t d S )N)rY   )r&   rp   r   r   r   set_default_executor#  s    z&AbstractEventLoop.set_default_executorr   )familytypeprotoflagsc               s   t d S )N)rY   )r&   hostportrt   ru   rv   rw   r   r   r   getaddrinfo(  s    zAbstractEventLoop.getaddrinfoc                s   t d S )N)rY   )r&   Zsockaddrrw   r   r   r   getnameinfo,  s    zAbstractEventLoop.getnameinfoN)sslrt   rv   rw   sock
local_addrserver_hostnamessl_handshake_timeoutc               s   t d S )N)rY   )r&   protocol_factoryrx   ry   r|   rt   rv   rw   r}   r~   r   r   r   r   r   create_connection/  s    z#AbstractEventLoop.create_connectiond   T)	rt   rw   r}   backlogr|   reuse_address
reuse_portr   r]   c   	            s   t d S )N)rY   )r&   r   rx   ry   rt   rw   r}   r   r|   r   r   r   r]   r   r   r   create_server7  s    3zAbstractEventLoop.create_server)fallbackc               s   t d S )N)rY   )r&   	transportfileoffsetcountr   r   r   r   sendfilel  s    zAbstractEventLoop.sendfileF)server_sider   r   c               s   t d S )N)rY   )r&   r   ZprotocolZ
sslcontextr   r   r   r   r   r   	start_tlst  s    	zAbstractEventLoop.start_tls)r|   r}   r   r   c               s   t d S )N)rY   )r&   r   pathr|   r}   r   r   r   r   r   create_unix_connection  s    z(AbstractEventLoop.create_unix_connection)r}   r   r|   r   r]   c               s   t d S )N)rY   )r&   r   r   r}   r   r|   r   r]   r   r   r   create_unix_server  s    z$AbstractEventLoop.create_unix_server)rt   rv   rw   r   r   allow_broadcastr}   c               s   t d S )N)rY   )r&   r   r~   Zremote_addrrt   rv   rw   r   r   r   r}   r   r   r   create_datagram_endpoint  s    !z*AbstractEventLoop.create_datagram_endpointc                s   t d S )N)rY   )r&   r   piper   r   r   connect_read_pipe  s    z#AbstractEventLoop.connect_read_pipec                s   t d S )N)rY   )r&   r   r   r   r   r   connect_write_pipe  s    z$AbstractEventLoop.connect_write_pipe)stdinstdoutstderrc               s   t d S )N)rY   )r&   r   cmdr   r   r   kwargsr   r   r   subprocess_shell  s    z"AbstractEventLoop.subprocess_shellc               s   t d S )N)rY   )r&   r   r   r   r   r(   r   r   r   r   subprocess_exec  s    z!AbstractEventLoop.subprocess_execc             G   s   t d S )N)rY   )r&   fdr'   r(   r   r   r   
add_reader  s    zAbstractEventLoop.add_readerc             C   s   t d S )N)rY   )r&   r   r   r   r   remove_reader  s    zAbstractEventLoop.remove_readerc             G   s   t d S )N)rY   )r&   r   r'   r(   r   r   r   
add_writer  s    zAbstractEventLoop.add_writerc             C   s   t d S )N)rY   )r&   r   r   r   r   remove_writer  s    zAbstractEventLoop.remove_writerc                s   t d S )N)rY   )r&   r}   nbytesr   r   r   	sock_recv  s    zAbstractEventLoop.sock_recvc                s   t d S )N)rY   )r&   r}   bufr   r   r   sock_recv_into	  s    z AbstractEventLoop.sock_recv_intoc                s   t d S )N)rY   )r&   r}   datar   r   r   sock_sendall  s    zAbstractEventLoop.sock_sendallc                s   t d S )N)rY   )r&   r}   Zaddressr   r   r   sock_connect  s    zAbstractEventLoop.sock_connectc                s   t d S )N)rY   )r&   r}   r   r   r   sock_accept  s    zAbstractEventLoop.sock_acceptc               s   t d S )N)rY   )r&   r}   r   r   r   r   r   r   r   sock_sendfile  s    zAbstractEventLoop.sock_sendfilec             G   s   t d S )N)rY   )r&   sigr'   r(   r   r   r   add_signal_handler  s    z$AbstractEventLoop.add_signal_handlerc             C   s   t d S )N)rY   )r&   r   r   r   r   remove_signal_handler  s    z'AbstractEventLoop.remove_signal_handlerc             C   s   t d S )N)rY   )r&   factoryr   r   r   set_task_factory#  s    z"AbstractEventLoop.set_task_factoryc             C   s   t d S )N)rY   )r&   r   r   r   get_task_factory&  s    z"AbstractEventLoop.get_task_factoryc             C   s   t d S )N)rY   )r&   r   r   r   get_exception_handler+  s    z'AbstractEventLoop.get_exception_handlerc             C   s   t d S )N)rY   )r&   Zhandlerr   r   r   set_exception_handler.  s    z'AbstractEventLoop.set_exception_handlerc             C   s   t d S )N)rY   )r&   r*   r   r   r   default_exception_handler1  s    z+AbstractEventLoop.default_exception_handlerc             C   s   t d S )N)rY   )r&   r*   r   r   r   r?   4  s    z(AbstractEventLoop.call_exception_handlerc             C   s   t d S )N)rY   )r&   r   r   r   r"   9  s    zAbstractEventLoop.get_debugc             C   s   t d S )N)rY   )r&   Zenabledr   r   r   	set_debug<  s    zAbstractEventLoop.set_debug)r   )NN)NN)r   N)N)N)NN)r   N):r   r   r   rb   rc   rd   re   rf   rZ   rg   rW   ri   rh   rj   rk   rl   rn   ro   rr   rs   rz   r{   r   socketZ	AF_UNSPECZ
AI_PASSIVEr   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   r?   r"   r   r   r   r   r   r      s   
/	!	r   c               @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )r   c             C   s   t d S )N)rY   )r&   r   r   r   r	   C  s    z&AbstractEventLoopPolicy.get_event_loopc             C   s   t d S )N)rY   )r&   r)   r   r   r   r
   M  s    z&AbstractEventLoopPolicy.set_event_loopc             C   s   t d S )N)rY   )r&   r   r   r   r   Q  s    z&AbstractEventLoopPolicy.new_event_loopc             C   s   t d S )N)rY   )r&   r   r   r   r   Y  s    z)AbstractEventLoopPolicy.get_child_watcherc             C   s   t d S )N)rY   )r&   watcherr   r   r   r   ]  s    z)AbstractEventLoopPolicy.set_child_watcherN)r   r   r   r	   r
   r   r   r   r   r   r   r   r   @  s
   
r   c               @   sB   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   r   r   r   _set_calledr   r   r   r   _Localq  s   r   c             C   s   |   | _d S )N)r   _local)r&   r   r   r   r+   u  s    z#BaseDefaultEventLoopPolicy.__init__c             C   sX   | j jd kr2| j js2tt tjr2| |   | j jd krPt	dt j
 | j jS )Nz,There is no current event loop in thread %r.)r   r   r   rT   	threadingZcurrent_threadZ_MainThreadr
   r   RuntimeErrorname)r&   r   r   r   r	   x  s    z)BaseDefaultEventLoopPolicy.get_event_loopc             C   s   d| j _|| j _d S )NT)r   r   r   )r&   r)   r   r   r   r
     s    z)BaseDefaultEventLoopPolicy.set_event_loopc             C   s   |   S )N)_loop_factory)r&   r   r   r   r     s    z)BaseDefaultEventLoopPolicy.new_event_loop)r   r   r   r   r   localr   r+   r	   r
   r   r   r   r   r   r   b  s   r   c               @   s   e Zd ZdZdS )_RunningLoop)NNN)r   r   r   loop_pidr   r   r   r   r     s   r   c              C   s   t  } | d krtd| S )Nzno running event loop)r   r   )r)   r   r   r   r     s    r   c              C   s&   t j\} }| d k	r"|t kr"| S d S )N)_running_loopr   osgetpid)Zrunning_loopZpidr   r   r   r     s    
r   c             C   s   | t  ft_d S )N)r   r   r   r   )r)   r   r   r   r     s    r   c           	   C   s.   t   td kr ddlm}  |  aW d Q R X d S )Nr   )DefaultEventLoopPolicy)_lock_event_loop_policy r   )r   r   r   r   _init_event_loop_policy  s    r   c               C   s   t d krt  t S )N)r   r   r   r   r   r   r     s    r   c             C   s   | a d S )N)r   )Zpolicyr   r   r   r     s    r   c              C   s   t  } | d k	r| S t  S )N)r   r   r	   )Zcurrent_loopr   r   r   r	     s    
r	   c             C   s   t  |  d S )N)r   r
   )r)   r   r   r   r
     s    r
   c               C   s
   t   S )N)r   r   r   r   r   r   r     s    r   c               C   s
   t   S )N)r   r   r   r   r   r   r     s    r   c             C   s   t  | S )N)r   r   )r   r   r   r   r     s    r   )r   r   r   r	   ),__all__r!   r   r   r   r$   r   r   r   r   r   r   r   r   r   r   r   r   ZLockr   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_loopZ_asyncioImportErrorZ_c__get_running_loopZ_c__set_running_loopZ_c_get_running_loopZ_c_get_event_loopr   r   r   r   <module>   sV   
H@*  p"9
	