£Á°èZ¨Ä…–K§‚«“ô4“ÒÙ´dîfUÙÃÅ WKbyÊ¦•êŽ…È®FÒ¿ÊÎóCozá¬S@6{Í:›œêZÌ:Š•_%:¢¾¾~;‘Ã~èŠ©ÊÇí`ÔÑ©úë™µ'5I¿fš×WO%ø9¾«¾DK|€ùÍD”Ýs]nHÕ¶ê×Ó¼ãžªéUWŸÈË%DÒÕ¬ï‘]/Åcx  ‰ï2ß]ä6G[]S£ÔÏ¯rs{úëóµmÒï#UQxo·õÞCe]"±/aÙ&Eã4ú9Jé_ÞåëdãöKë)AÞ                  ¯¹ægƒÛowÐø^d™ý½ßB7áyMä9ÜÖUã
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
<html>
B
    YI~d                @   s  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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Zd dlZyd dlZW n ek
r   dZY nX 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 ddlmZ dd	lmZ dd
lmZ ddlmZ dZdZdZe edZ!dZ"e# Z$dd Z%dd Z&dd Z'd%ddZ(dd Z)e edrjdd Z*ndd Z*G dd  d ej+Z,G d!d" d"ej-Z.G d#d$ d$ej/Z0dS )&    N   )	constants)
coroutines)events)futures)	protocols)sslproto)tasks)
transports)logger)BaseEventLoopd   g      ?AF_INET6iQ c             C   s0   | j }tt|dd tjr$t|jS t| S d S )N__self__)Z	_callback
isinstancegetattrr	   Taskreprr   str)handlecb r   8/opt/alt/python37/lib64/python3.7/asyncio/base_events.py_format_handleE   s    
r   c             C   s(   | t jkrdS | t jkrdS t| S d S )Nz<pipe>z<stdout>)
subprocessPIPESTDOUTr   )fdr   r   r   _format_pipeN   s
    

r   c             C   sL   t tdstdn4y| tjtjd W n tk
rF   tdY nX d S )NSO_REUSEPORTz)reuse_port not supported by socket moduler   zTreuse_port not supported by socket module, SO_REUSEPORT defined but not implemented.)hasattrsocket
ValueError
setsockopt
SOL_SOCKETr   OSError)sockr   r   r   _set_reuseportW   s    

r'   c       	   	   C   sz  t tdsd S |dtjtjhks(| d kr,d S |tjkr>tj}n|tjkrPtj}nd S |d krbd}nVt|trz|dkrzd}n>t|tr|dkrd}n&yt	|}W n t
tfk
r   d S X |tjkrtjg}tr|tj n|g}t| tr| d} d| krd S xp|D ]h}yJt||  trD|tjkrD|||d| |||ffS |||d| |ffS W n tk
rn   Y nX q
W d S )N	inet_ptonr        Zidna%)r    r!   IPPROTO_TCPZIPPROTO_UDPSOCK_STREAM
SOCK_DGRAMr   bytesr   int	TypeErrorr"   	AF_UNSPECAF_INET	_HAS_IPv6appendr   decoder(   r%   )	hostportfamilytypeprotoZflowinfoZscopeidZafsafr   r   r   _ipaddr_infob   sL    







r=   c             C   s:   |   s(|  }t|tr(t|ts(d S t|   d S )N)	cancelled	exceptionr   BaseException	Exceptionr   Z	_get_loopstop)futexcr   r   r   _run_until_complete_cb   s
    rE   TCP_NODELAYc             C   s@   | j tjtjhkr<| jtjkr<| jtjkr<| tjtj	d d S )Nr   )
r9   r!   r3   r   r:   r-   r;   r,   r#   rF   )r&   r   r   r   _set_nodelay   s    rG   c             C   s   d S )Nr   )r&   r   r   r   rG      s    c               @   sT   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S )_SendfileFallbackProtocolc             C   sh   t |tjstd|| _| | _| | _|j	| _
|  ||  | j
r^| jj | _nd | _d S )Nz.transport should be _FlowControlMixin instance)r   r
   Z_FlowControlMixinr1   
_transportZget_protocol_protoZ
is_reading_should_resume_readingZ_protocol_paused_should_resume_writingpause_readingset_protocol_loopcreate_future_write_ready_fut)selftranspr   r   r   __init__   s    


z"_SendfileFallbackProtocol.__init__c                s2   | j  rtd| j}|d kr$d S |I d H  d S )NzConnection closed by peer)rI   
is_closingConnectionErrorrQ   )rR   rC   r   r   r   drain   s    
z_SendfileFallbackProtocol.drainc             C   s   t dd S )Nz?Invalid state: connection should have been established already.)RuntimeError)rR   	transportr   r   r   connection_made   s    z)_SendfileFallbackProtocol.connection_madec             C   s@   | j d k	r0|d kr$| j td n| j | | j| d S )NzConnection is closed by peer)rQ   Zset_exceptionrV   rJ   connection_lost)rR   rD   r   r   r   r[      s    
z)_SendfileFallbackProtocol.connection_lostc             C   s    | j d k	rd S | jj | _ d S )N)rQ   rI   rO   rP   )rR   r   r   r   pause_writing   s    
z'_SendfileFallbackProtocol.pause_writingc             C   s$   | j d krd S | j d d | _ d S )NF)rQ   
set_result)rR   r   r   r   resume_writing   s    
z(_SendfileFallbackProtocol.resume_writingc             C   s   t dd S )Nz'Invalid state: reading should be paused)rX   )rR   datar   r   r   data_received   s    z'_SendfileFallbackProtocol.data_receivedc             C   s   t dd S )Nz'Invalid state: reading should be paused)rX   )rR   r   r   r   eof_received   s    z&_SendfileFallbackProtocol.eof_receivedc                sF   | j | j | jr| j   | jd k	r2| j  | jrB| j  d S )N)	rI   rN   rJ   rK   resume_readingrQ   cancelrL   r^   )rR   r   r   r   restore   s    


z!_SendfileFallbackProtocol.restoreN)__name__
__module____qualname__rT   rW   rZ   r[   r\   r^   r`   ra   rd   r   r   r   r   rH      s   rH   c               @   sx   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
edd Zdd Zdd Zdd Zdd ZdS )Serverc             C   s@   || _ || _d| _g | _|| _|| _|| _|| _d| _d | _	d S )Nr   F)
rO   _sockets_active_count_waiters_protocol_factory_backlog_ssl_context_ssl_handshake_timeout_serving_serving_forever_fut)rR   loopsocketsprotocol_factoryZssl_contextbacklogssl_handshake_timeoutr   r   r   rT      s    zServer.__init__c             C   s   d| j j d| jdS )N<z	 sockets=>)	__class__re   rs   )rR   r   r   r   __repr__  s    zServer.__repr__c             C   s   |  j d7  _ d S )Nr   )rj   )rR   r   r   r   _attach  s    zServer._attachc             C   s.   |  j d8  _ | j dkr*| jd kr*|   d S )Nr   r   )rj   ri   _wakeup)rR   r   r   r   _detach  s    zServer._detachc             C   s0   | j }d | _ x|D ]}| s|| qW d S )N)rk   doner]   )rR   waiterswaiterr   r   r   r|     s
    
zServer._wakeupc          	   C   sN   | j r
d S d| _ x8| jD ].}|| j | j| j|| j| | j| j qW d S )NT)	rp   ri   Zlistenrm   rO   _start_servingrl   rn   ro   )rR   r&   r   r   r   r     s    
zServer._start_servingc             C   s   | j S )N)rO   )rR   r   r   r   get_loop#  s    zServer.get_loopc             C   s   | j S )N)rp   )rR   r   r   r   
is_serving&  s    zServer.is_servingc             C   s   | j d krg S t| j S )N)ri   list)rR   r   r   r   rs   )  s    
zServer.socketsc             C   sr   | j }|d krd S d | _ x|D ]}| j| qW d| _| jd k	r\| j s\| j  d | _| jdkrn|   d S )NFr   )	ri   rO   Z_stop_servingrp   rq   r~   rc   rj   r|   )rR   rs   r&   r   r   r   close/  s    




zServer.closec                s"   |    tjd| jdI d H  d S )Nr   )rr   )r   r	   sleeprO   )rR   r   r   r   start_servingB  s    zServer.start_servingc          	      s   | j d k	rtd| d| jd kr4td| d|   | j | _ zLy| j I d H  W n6 tjk
r   z|   | 	 I d H  W d  X Y nX W d d | _ X d S )Nzserver z, is already being awaited on serve_forever()z
 is closed)
rq   rX   ri   r   rO   rP   r   ZCancelledErrorr   wait_closed)rR   r   r   r   serve_foreverH  s    

zServer.serve_foreverc                s<   | j d ks| jd krd S | j }| j| |I d H  d S )N)ri   rk   rO   rP   r5   )rR   r   r   r   r   r   ]  s
    
zServer.wait_closedN)re   rf   rg   rT   rz   r{   r}   r|   r   r   r   propertyrs   r   r   r   r   r   r   r   r   rh      s   
rh   c               @   s*  e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZddddddZ	ddddddddddZ
dddZdddZdddZdd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d0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 Zd:d; Zdd<d=d>Zdd<d?d@Zdd<dAdBZ dCdD Z!dEdF Z"dGdH Z#dd<dIdJZ$dKdL Z%dMdN Z&dOdP Z'dQdQdQdQdRdSdTZ(ddUdVZ)dddWdXdYZ*dZd[ Z+d\d] Z,d^d_ Z-dddQdQdQddddd`dadbZ.ddcddZ/dddWdedfZ0dgdh Z1didj Z2ddddkdldmZ3ddQdQdQe4ddddndodpZ5dQe6j7dQdQdRdqdrZ8dsdt Z9de6j:e6j;dduddddddv	dwdxZ<dddydzd{Z=d|d} Z>d~d Z?dd Z@eAjBeAjBeAjBdddQdddZCeAjBeAjBeAjBdddQdddZDdd ZEdd ZFdd ZGdd ZHdd ZIdd ZJdd ZKdd ZLdd ZMdd ZNdd ZOdS )r   c             C   s   d| _ d| _d| _t | _g | _d | _d| _d | _	t
dj| _d | _| t  d| _d | _d | _d| _d | _t | _d| _d S )Nr   F	monotonicg?)_timer_cancelled_count_closed	_stoppingcollectionsdeque_ready
_scheduled_default_executorZ_internal_fds
_thread_idtimeZget_clock_infoZ
resolution_clock_resolution_exception_handler	set_debugr   Z_is_debug_modeslow_callback_duration_current_handle_task_factory"_coroutine_origin_tracking_enabled&_coroutine_origin_tracking_saved_depthweakrefZWeakSet
_asyncgens_asyncgens_shutdown_called)rR   r   r   r   rT   g  s$    

zBaseEventLoop.__init__c          	   C   s.   d| j j d|   d|   d|   d	S )Nrw   z	 running=z closed=z debug=rx   )ry   re   
is_running	is_closed	get_debug)rR   r   r   r   rz     s    zBaseEventLoop.__repr__c             C   s   t j| dS )N)rr   )r   ZFuture)rR   r   r   r   rP     s    zBaseEventLoop.create_futurec             C   s@   |    | jd kr0tj|| d}|jr<|jd= n| | |}|S )N)rr   )_check_closedr   r	   r   _source_traceback)rR   coroZtaskr   r   r   create_task  s    

zBaseEventLoop.create_taskc             C   s"   |d k	rt |std|| _d S )Nz'task factory must be a callable or None)callabler1   r   )rR   factoryr   r   r   set_task_factory  s    
zBaseEventLoop.set_task_factoryc             C   s   | j S )N)r   )rR   r   r   r   get_task_factory  s    zBaseEventLoop.get_task_factoryN)extraserverc            C   s   t d S )N)NotImplementedError)rR   r&   protocolr   r   r   r   r   r   _make_socket_transport  s    z$BaseEventLoop._make_socket_transportFT)server_sideserver_hostnamer   r   rv   call_connection_madec            C   s   t d S )N)r   )rR   Zrawsockr   
sslcontextr   r   r   r   r   rv   r   r   r   r   _make_ssl_transport  s    z!BaseEventLoop._make_ssl_transportc             C   s   t d S )N)r   )rR   r&   r   addressr   r   r   r   r   _make_datagram_transport  s    z&BaseEventLoop._make_datagram_transportc             C   s   t d S )N)r   )rR   piper   r   r   r   r   r   _make_read_pipe_transport  s    z'BaseEventLoop._make_read_pipe_transportc             C   s   t d S )N)r   )rR   r   r   r   r   r   r   r   _make_write_pipe_transport  s    z(BaseEventLoop._make_write_pipe_transportc	       
         s   t d S )N)r   )
rR   r   argsshellstdinstdoutstderrbufsizer   kwargsr   r   r   _make_subprocess_transport  s    z(BaseEventLoop._make_subprocess_transportc             C   s   t d S )N)r   )rR   r   r   r   _write_to_self  s    zBaseEventLoop._write_to_selfc             C   s   t d S )N)r   )rR   
event_listr   r   r   _process_events  s    zBaseEventLoop._process_eventsc             C   s   | j rtdd S )NzEvent loop is closed)r   rX   )rR   r   r   r   r     s    zBaseEventLoop._check_closedc             C   s*   | j | |  s&| | j|  d S )N)r   discardr   call_soon_threadsafer   aclose)rR   agenr   r   r   _asyncgen_finalizer_hook  s    z&BaseEventLoop._asyncgen_finalizer_hookc             C   s.   | j rtjd|dt| d | j| d S )Nzasynchronous generator z3 was scheduled after loop.shutdown_asyncgens() call)source)r   warningswarnResourceWarningr   add)rR   r   r   r   r   _asyncgen_firstiter_hook  s
    

z&BaseEventLoop._asyncgen_firstiter_hookc                s   d| _ t| jsd S t| j}| j  tjdd |D d| dI d H }x8t||D ]*\}}t|t	rV| 
d|||d qVW d S )NTc             S   s   g | ]}|  qS r   )r   ).0Zagr   r   r   
<listcomp>  s    z4BaseEventLoop.shutdown_asyncgens.<locals>.<listcomp>)Zreturn_exceptionsrr   z;an error occurred during closing of asynchronous generator )messager?   Zasyncgen)r   lenr   r   clearr	   gatherzipr   rA   call_exception_handler)rR   Zclosing_agensresultsresultr   r   r   r   shutdown_asyncgens  s    



z BaseEventLoop.shutdown_asyncgensc             C   s(   |   rtdt d k	r$tdd S )Nz"This event loop is already runningz7Cannot run the event loop while another loop is running)r   rX   r   Z_get_running_loop)rR   r   r   r   _check_runnung	  s
    zBaseEventLoop._check_runnungc          	   C   s   |    |   | | j t | _t }tj	| j
| jd z$t|  x|   | jrNP qNW W d d| _d | _td  | d tj	|  X d S )N)	firstiter	finalizerF)r   r   _set_coroutine_origin_tracking_debug	threading	get_identr   sysget_asyncgen_hooksset_asyncgen_hooksr   r   r   Z_set_running_loop	_run_oncer   )rR   Zold_agen_hooksr   r   r   run_forever  s$    





zBaseEventLoop.run_foreverc          	   C   s   |    |   t| }tj|| d}|r4d|_|t z<y| 	  W n*   |rp|
 rp| sp|   Y nX W d |t X |
 std| S )N)rr   Fz+Event loop stopped before Future completed.)r   r   r   Zisfuturer	   Zensure_futureZ_log_destroy_pendingZadd_done_callbackrE   r   r~   r>   r?   Zremove_done_callbackrX   r   )rR   ZfutureZnew_taskr   r   r   run_until_complete'  s"    
z BaseEventLoop.run_until_completec             C   s
   d| _ d S )NT)r   )rR   r   r   r   rB   M  s    zBaseEventLoop.stopc             C   sj   |   rtd| jrd S | jr,td|  d| _| j  | j  | j	}|d k	rfd | _	|j
dd d S )Nz!Cannot close a running event loopzClose %rTF)wait)r   rX   r   r   r   debugr   r   r   r   Zshutdown)rR   executorr   r   r   r   U  s    

zBaseEventLoop.closec             C   s   | j S )N)r   )rR   r   r   r   r   k  s    zBaseEventLoop.is_closedc             C   s2   |   s.tjd| t| d |  s.|   d S )Nzunclosed event loop )r   )r   r   r   r   r   r   )rR   r   r   r   __del__o  s
    zBaseEventLoop.__del__c             C   s
   | j d k	S )N)r   )rR   r   r   r   r   v  s    zBaseEventLoop.is_runningc             C   s   t  S )N)r   r   )rR   r   r   r   r   z  s    zBaseEventLoop.time)contextc            G   s2   | j |  | |f|d|i}|jr.|jd= |S )Nr   r   )call_atr   r   )rR   Zdelaycallbackr   r   timerr   r   r   
call_later  s
    zBaseEventLoop.call_laterc            G   sZ   |    | jr"|   | |d t|||| |}|jrB|jd= t| j	| d|_	|S )Nr   r   T)
r   r   _check_thread_check_callbackr   ZTimerHandler   heapqheappushr   )rR   whenr   r   r   r   r   r   r   r     s    zBaseEventLoop.call_atc            G   sB   |    | jr"|   | |d | |||}|jr>|jd= |S )N	call_soonr   )r   r   r   r   
_call_soonr   )rR   r   r   r   r   r   r   r   r     s    
zBaseEventLoop.call_soonc             C   sD   t |st |r$td| dt|s@td| d|d S )Nzcoroutines cannot be used with z()z"a callable object was expected by z(), got )r   ZiscoroutineZiscoroutinefunctionr1   r   )rR   r   methodr   r   r   r     s    

zBaseEventLoop._check_callbackc             C   s.   t ||| |}|jr|jd= | j| |S )Nr   )r   ZHandler   r   r5   )rR   r   r   r   r   r   r   r   r     s
    zBaseEventLoop._call_soonc             C   s,   | j d krd S t }|| j kr(tdd S )NzMNon-thread-safe operation invoked on an event loop other than the current one)r   r   r   rX   )rR   Z	thread_idr   r   r   r     s    	

zBaseEventLoop._check_threadc            G   sB   |    | jr| |d | |||}|jr6|jd= |   |S )Nr   r   )r   r   r   r   r   r   )rR   r   r   r   r   r   r   r   r     s    z"BaseEventLoop.call_soon_threadsafec             G   sZ   |    | jr| |d |d kr@| j}|d kr@tj }|| _tj|j|f| | dS )Nrun_in_executor)rr   )	r   r   r   r   
concurrentr   ZThreadPoolExecutorZwrap_futureZsubmit)rR   r   funcr   r   r   r   r     s    
zBaseEventLoop.run_in_executorc             C   s
   || _ d S )N)r   )rR   r   r   r   r   set_default_executor  s    z"BaseEventLoop.set_default_executorc             C   s   | d|g}|r$| d| |r8| d| |rL| d| |r`| d| d|}td| |  }t||||||}	|  | }
d| d	|
d
 dd|	}|
| jkrt| n
t| |	S )N:zfamily=ztype=zproto=zflags=z, zGet address info %szGetting address info z took g     @@z.3fzms: )	r5   joinr   r   r   r!   getaddrinfor   info)rR   r7   r8   r9   r:   r;   flagsmsgt0Zaddrinfodtr   r   r   _getaddrinfo_debug  s&    


z BaseEventLoop._getaddrinfo_debugr   )r9   r:   r;   r  c         
      s2   | j r| j}ntj}| d |||||||I d H S )N)r   r  r!   r  r   )rR   r7   r8   r9   r:   r;   r  Zgetaddr_funcr   r   r   r    s
    zBaseEventLoop.getaddrinfoc                s   |  d tj||I d H S )N)r   r!   getnameinfo)rR   Zsockaddrr  r   r   r   r    s    zBaseEventLoop.getnameinfo)fallbackc         
      s   | j r| dkrtd| |||| y| ||||I d H S  tjk
rj } z
|sZ W d d }~X Y nX | ||||I d H S )Nr   zthe socket must be non-blocking)r   Z
gettimeoutr"   _check_sendfile_params_sock_sendfile_nativer   SendfileNotAvailableError_sock_sendfile_fallback)rR   r&   fileoffsetcountr	  rD   r   r   r   sock_sendfile  s    zBaseEventLoop.sock_sendfilec                s   t d|dd S )Nz-syscall sendfile is not available for socket z and file {file!r} combination)r   r  )rR   r&   r  r  r  r   r   r   r  ,  s    z#BaseEventLoop._sock_sendfile_nativec       
   
      s   |r| | |rt|tjntj}t|}d}ztxn|rPt|| |}|dkrPP t|d | }| d |j|I d H }	|	s|P | ||d |	 I d H  ||	7 }q4W |S |dkrt	|dr| ||  X d S )Nr   seek)
r  minr   Z!SENDFILE_FALLBACK_READBUFFER_SIZE	bytearray
memoryviewr   readintoZsock_sendallr    )
rR   r&   r  r  r  	blocksizebuf
total_sentviewreadr   r   r   r  3  s(    
z%BaseEventLoop._sock_sendfile_fallbackc             C   s   dt |ddkrtd|jtjks,td|d k	rbt|tsLtd||dkrbtd|t|tsztd||dk rtd|d S )Nbmodez$file should be opened in binary modez+only SOCK_STREAM type sockets are supportedz+count must be a positive integer (got {!r})r   z0offset must be a non-negative integer (got {!r}))	r   r"   r:   r!   r-   r   r0   r1   format)rR   r&   r  r  r  r   r   r   r
  M  s&    

z$BaseEventLoop._check_sendfile_params)sslr9   r;   r  r&   
local_addrr   rv   c               s   |
d k	r|st d|
d kr0|r0|s,t d|}
|d k	rD|sDt d|d k	sV|d k	r|d k	rft d| j||f|tj||| dI d H }|std|	d k	r| j|	|tj||| dI d H }|stdg }x|D ]J\}}}}}ytj|||d}|d |	d k	rx|D ]r\}}}}}y|| P W nP tk
r| } z0d	|d
|j  }t|j	|}|
| W d d }~X Y nX qW |  d }w| jrtd|| | ||I d H  W n^ tk
r } z |d k	r|  |
| W d d }~X Y q   |d k	r|   Y qX P qW t|dkr:|d nJt|d  t fdd|D rf|d tdddd |D n.|d krt d|jtjkrt d|| j||||
|dI d H \}}| jr|d}td||||| ||fS )Nz+server_hostname is only meaningful with sslz:You must set server_hostname when using ssl without a hostz1ssl_handshake_timeout is only meaningful with sslz8host/port and sock can not be specified at the same time)r9   r:   r;   r  rr   z!getaddrinfo() returned empty list)r9   r:   r;   Fz*error while attempting to bind on address z: zconnect %r to %rr   r   c             3   s   | ]}t | kV  qd S )N)r   )r   rD   )modelr   r   	<genexpr>  s    z2BaseEventLoop.create_connection.<locals>.<genexpr>zMultiple exceptions: {}z, c             s   s   | ]}t |V  qd S )N)r   )r   rD   r   r   r   r"    s    z5host and port was not specified and no sock specifiedz"A Stream Socket was expected, got )rv   r!   z%r connected to %s:%r: (%r, %r))r"   _ensure_resolvedr!   r-   r%   setblockingbindstrerrorlowererrnor5   r   r   r   r   sock_connectr   r   allr  r   r:   _create_connection_transportget_extra_info)rR   rt   r7   r8   r  r9   r;   r  r&   r   r   rv   infosZladdr_infos
exceptionsr:   Zcnamer   _ZladdrrD   r  rY   r   r   )r!  r   create_connectionb  s    


"




zBaseEventLoop.create_connectionc          	      s   | d | }|  }|rHt|tr*d n|}	| j|||	||||d}
n| |||}
y|I d H  W n   |
   Y nX |
|fS )NF)r   r   rv   )r$  rP   r   boolr   r   r   )rR   r&   rt   r  r   r   rv   r   r   r   rY   r   r   r   r+    s     

z*BaseEventLoop._create_connection_transportc         
      s   |  rtdt|dtjj}|tjjkr:td||tjjkry| ||||I d H S  tj	k
r } z
|sv W d d }~X Y nX |std|| 
||||I d H S )NzTransport is closingZ_sendfile_compatiblez(sendfile is not supported for transport zHfallback is disabled and native sendfile is not supported for transport )rU   rX   r   r   Z_SendfileModeZUNSUPPORTEDZ
TRY_NATIVE_sendfile_nativer   r  _sendfile_fallback)rR   rY   r  r  r  r	  r  rD   r   r   r   sendfile   s&    
zBaseEventLoop.sendfilec                s   t dd S )Nz!sendfile syscall is not supported)r   r  )rR   rS   r  r  r  r   r   r   r2  /  s    zBaseEventLoop._sendfile_nativec          
      s   |r| | |rt|dnd}t|}d}t|}z~xx|rVt|| |}|dkrV|S t|d | }	| d |j|	I d H }
|
s|S | I d H  ||	d |
  ||
7 }q8W W d |dkrt	|dr| ||  |
 I d H  X d S )Ni @  r   r  )r  r  r  rH   r  r   r  rW   writer    rd   )rR   rS   r  r  r  r  r  r  r;   r  r  r   r   r   r3  3  s,    
z BaseEventLoop._sendfile_fallback)r   r   rv   c         
      s   t d krtdt|t js*td|t|ddsFtd|d|  }tj| ||||||dd}|	  |
| | |j|}	| |j}
y|I d H  W n. tk
r   |  |	  |
   Y nX |jS )Nz"Python ssl module is not availablez@sslcontext is expected to be an instance of ssl.SSLContext, got Z_start_tls_compatibleFz
transport z  is not supported by start_tls())rv   r   )r  rX   r   Z
SSLContextr1   r   rP   r   ZSSLProtocolrM   rN   r   rZ   rb   rA   r   rc   Z_app_transport)rR   rY   r   r   r   r   rv   r   Zssl_protocolZ
conmade_cbZ	resume_cbr   r   r   	start_tlsL  s4    	
zBaseEventLoop.start_tls)r9   r;   r  reuse_address
reuse_portallow_broadcastr&   c               s  |
d k	r|
j tjkr"td|
 s>s>|s>|s>|s>|s>|	r~t ||||||	d}ddd | D }td| d|
d d }n ss|d	krtd
||fdff}n ttdr|tj	krx* fD ]}|d k	rt
|tstdqW ||f fff}nt }xd	 fdffD ]\}}|d k	r,| j||tj||| dI d H }|sjtdxB|D ]:\}}}}}||f}||krd d g||< ||| |< qpW q,W  fdd| D }|stdg }|tk	r|rtdntjdtdd x|D ]\\}}\}}d }
d }yxtj|tj|d}
|rJt|
 |	rb|
tjtjd |
d  r||
| r|	s| |
|I d H  |}W n^ tk
r } z |
d k	r|
  || W d d }~X Y n"   |
d k	r|
   Y nX P qW |d	 | }|  }| |
|||}| jr` rPt !d || nt "d|| y|I d H  W n   |   Y nX ||fS )NzA UDP Socket was expected, got )r   remote_addrr9   r;   r  r7  r8  r9  z, c             s   s$   | ]\}}|r| d | V  qdS )=Nr   )r   kvr   r   r   r"    s    z9BaseEventLoop.create_datagram_endpoint.<locals>.<genexpr>zKsocket modifier keyword arguments can not be used when sock is specified. ()Fr   zunexpected address family)NNAF_UNIXzstring is expectedr   )r9   r:   r;   r  rr   z!getaddrinfo() returned empty listc                s8   g | ]0\}} r|d  dksr,|d dks||fqS )r   Nr   r   )r   keyZ	addr_pair)r   r:  r   r   r     s    z:BaseEventLoop.create_datagram_endpoint.<locals>.<listcomp>zcan not get address informationz~Passing `reuse_address=True` is no longer supported, as the usage of SO_REUSEPORT in UDP poses a significant security concern.zcThe *reuse_address* parameter has been deprecated as of 3.7.6 and is scheduled for removal in 3.11.   )
stacklevel)r9   r:   r;   z@Datagram endpoint local_addr=%r remote_addr=%r created: (%r, %r)z2Datagram endpoint remote_addr=%r created: (%r, %r))#r:   r!   r.   r"   dictr   itemsr$  r    r?  r   r   r1   r   OrderedDictr#  r%   _unsetr   r   DeprecationWarningr'   r#   r$   ZSO_BROADCASTr%  r)  r   r5   rP   r   r   r   r  r   )rR   rt   r   r:  r9   r;   r  r7  r8  r9  r&   ZoptsZproblemsZr_addrZaddr_pairs_infoZaddrZ
addr_infosidxr-  Zfamr/  Zpror   r@  r.  Zlocal_addressZremote_addressrD   r   r   rY   r   )r   r:  r   create_datagram_endpointz  s    









z&BaseEventLoop.create_datagram_endpointc      
         s\   |d d \}}t |||||f|dd   }	|	d k	r<|	gS |j||||||dI d H S d S )NrA  )r9   r:   r;   r  )r=   r  )
rR   r   r9   r:   r;   r  rr   r7   r8   r  r   r   r   r#     s    zBaseEventLoop._ensure_resolvedc                s8   | j ||f|tj|| dI d H }|s4td|d|S )N)r9   r:   r  rr   zgetaddrinfo(z) returned empty list)r#  r!   r-   r%   )rR   r7   r8   r9   r  r-  r   r   r   _create_server_getaddrinfo  s    z(BaseEventLoop._create_server_getaddrinfor   )	r9   r  r&   ru   r  r7  r8  rv   r   c   	            s  t |trtd|d k	r*|d kr*td|d k	s<d k	r*|d k	rLtd|	d krhtjdkoftjdk}	g }|dkr|d g}n$t |tst |t	j
js|g}n|} fdd|D }tj|d	iI d H }ttj|}d
}z"x|D ]}|\}}}}}yt|||}W n6 tjk
rJ   jrDtjd|||dd wY nX || |	rn|tjtjd |
r|t| tr|tjkrttdr|tjtj d y|!| W q t"k
r } z t"|j#d||j$% f d W d d }~X Y qX qW d}W d |s&x|D ]}|&  qW X n4|d kr<td|j'tj(krXtd||g}x|D ]}|)d
 qdW t*|||||}|r|+  tj,ddI d H  jrt-d| |S )Nz*ssl argument must be an SSLContext or Nonez1ssl_handshake_timeout is only meaningful with sslz8host/port and sock can not be specified at the same timeposixcygwinr*   c                s   g | ]}j | d qS ))r9   r  )rJ  )r   r7   )r9   r  r8   rR   r   r   r   F  s   z/BaseEventLoop.create_server.<locals>.<listcomp>rr   Fz:create_server() failed to create socket.socket(%r, %r, %r)T)exc_infoIPPROTO_IPV6z0error while attempting to bind on address %r: %sz)Neither host/port nor sock were specifiedz"A Stream Socket was expected, got r   )rr   z%r is serving).r   r1  r1   r"   osnamer   platformr   r   abcIterabler	   r   set	itertoolschainfrom_iterabler!   errorr   r   warningr5   r#   r$   ZSO_REUSEADDRr'   r4   r   r    rN  ZIPV6_V6ONLYr%  r%   r(  r&  r'  r   r:   r-   r$  rh   r   r   r  )rR   rt   r7   r8   r9   r  r&   ru   r  r7  r8  rv   r   rs   ZhostsZfsr-  Z	completedZresr<   Zsocktyper;   Z	canonnameZsaerrr   r   )r9   r  r8   rR   r   create_server  s    


*



zBaseEventLoop.create_server)r  rv   c               sv   |j tjkrtd||d k	r.|s.td| j|||dd|dI d H \}}| jrn|d}td||| ||fS )Nz"A Stream Socket was expected, got z1ssl_handshake_timeout is only meaningful with sslr*   T)r   rv   r!   z%r handled: (%r, %r))	r:   r!   r-   r"   r+  r   r,  r   r   )rR   rt   r&   r  rv   rY   r   r   r   r   connect_accepted_socket  s    

z%BaseEventLoop.connect_accepted_socketc                sd   | }|   }| |||}y|I d H  W n   |   Y nX | jr\td| || ||fS )Nz Read pipe %r connected: (%r, %r))rP   r   r   r   r   r   fileno)rR   rt   r   r   r   rY   r   r   r   connect_read_pipe  s    zBaseEventLoop.connect_read_pipec                sd   | }|   }| |||}y|I d H  W n   |   Y nX | jr\td| || ||fS )Nz!Write pipe %r connected: (%r, %r))rP   r   r   r   r   r   r]  )rR   rt   r   r   r   rY   r   r   r   connect_write_pipe  s    z BaseEventLoop.connect_write_pipec             C   s   |g}|d k	r"| dt|  |d k	rJ|tjkrJ| dt|  n8|d k	rf| dt|  |d k	r| dt|  td| d S )Nzstdin=zstdout=stderr=zstdout=zstderr= )r5   r   r   r   r   r   r   )rR   r  r   r   r   r  r   r   r   _log_subprocess  s    zBaseEventLoop._log_subprocess)r   r   r   universal_newlinesr   r   c               s   t |ttfstd|r"td|s.td|dkr>td| }
d }| jrfd| }| |||| | j|
|d||||f|	I d H }| jr|d k	rtd|| ||
fS )	Nzcmd must be a stringz universal_newlines must be Falsezshell must be Truer   zbufsize must be 0zrun shell command %rTz%s: %r)	r   r/   r   r"   r   ra  r   r   r  )rR   rt   cmdr   r   r   rb  r   r   r   r   	debug_logrY   r   r   r   subprocess_shell  s$    zBaseEventLoop.subprocess_shellc               s   |rt d|rt d|dkr(t d|f|	 }x.|D ]&}t|ttfs8tdt|j q8W | }d }| jrd|}| |||| | j	||d||||f|
I d H }| jr|d k	rt
d|| ||fS )	Nz universal_newlines must be Falsezshell must be Falser   zbufsize must be 0z6program arguments must be a bytes or text string, not zexecute program Fz%s: %r)r"   r   r   r/   r1   r:   re   r   ra  r   r   r  )rR   rt   Zprogramr   r   r   rb  r   r   r   r   Z
popen_argsargr   rd  rY   r   r   r   subprocess_exec  s,    


zBaseEventLoop.subprocess_execc             C   s   | j S )N)r   )rR   r   r   r   get_exception_handler  s    z#BaseEventLoop.get_exception_handlerc             C   s(   |d k	rt |std||| _d S )Nz+A callable object or None is expected, got )r   r1   r   )rR   Zhandlerr   r   r   set_exception_handler  s    z#BaseEventLoop.set_exception_handlerc       	      C   s  | d}|sd}| d}|d k	r6t|||jf}nd}d|kr`| jd k	r`| jjr`| jj|d< |g}xt|D ]}|dkr~qp|| }|dkrdt|}d	}||	 7 }n2|dkrdt|}d
}||	 7 }nt
|}|| d|  qpW tjd||d d S )Nr   z!Unhandled exception in event loopr?   FZsource_tracebackZhandle_traceback>   r   r?   r*   z+Object created at (most recent call last):
z+Handle created at (most recent call last):
z: 
)rM  )getr:   __traceback__r   r   sortedr   	tracebackformat_listrstripr   r5   r   rX  )	rR   r   r   r?   rM  Z	log_linesr@  valuetbr   r   r   default_exception_handler#  s6    


z'BaseEventLoop.default_exception_handlerc             C   s   | j d kr>y| | W q tk
r:   tjddd Y qX nny|  | | W n\ tk
r } z>y| d||d W n" tk
r   tjddd Y nX W d d }~X Y nX d S )Nz&Exception in default exception handlerT)rM  z$Unhandled error in exception handler)r   r?   r   zeException in default exception handler while handling an unexpected error in custom exception handler)r   rs  rA   r   rX  )rR   r   rD   r   r   r   r   U  s"    
z$BaseEventLoop.call_exception_handlerc             C   s   |j r
d S | j| d S )N)
_cancelledr   r5   )rR   r   r   r   r   _add_callback  s    zBaseEventLoop._add_callbackc             C   s   |  | |   d S )N)ru  r   )rR   r   r   r   r   _add_callback_signalsafe  s    
z&BaseEventLoop._add_callback_signalsafec             C   s   |j r|  jd7  _d S )Nr   )r   r   )rR   r   r   r   r   _timer_handle_cancelled  s    z%BaseEventLoop._timer_handle_cancelledc          	   C   s  t | j}|tkrd| j| tkrdg }x&| jD ]}|jr>d|_q,|| q,W t| || _d| _n8x6| jr| jd jr|  jd8  _t	| j}d|_qfW d }| j
s| jrd}n*| jr| jd j}ttd||   t}| jr|dkr|  }| j|}|  | }|dkr tj}	ntj}	t |}
|d krNt|	d|d |
 nD|
rpt|	d|d |d |
 n"|dkrt|	d|d |d  n| j|}| | |  | j }xD| jr| jd }|j|krP t	| j}d|_| j
| qW t | j
}xt|D ]|}| j
 }|jr,q| jrzD|| _|  }|  |  | }|| jkrvt d	t!|| W d d | _X n|  qW d }d S )
NFr   r   g      ?zpoll took %.3f ms: %s eventsg     @@z$poll %.3f ms took %.3f ms: %s eventsz"poll %.3f ms took %.3f ms: timeoutzExecuting %s took %.3f seconds)"r   r   _MIN_SCHEDULED_TIMER_HANDLESr   %_MIN_CANCELLED_TIMER_HANDLES_FRACTIONrt  r5   r   heapifyheappopr   r   Z_whenr  maxr   MAXIMUM_SELECT_TIMEOUTr   Z	_selectorZselectloggingINFODEBUGr   logr   r   rangepopleftr   Z_runr   rY  r   )rR   Zsched_countZnew_scheduledr   Ztimeoutr   r  r   r  levelZneventZend_timeZntodoir   r   r   r     s    











zBaseEventLoop._run_oncec             C   sH   t |t | jkrd S |r2t | _ttj nt| j || _d S )N)r1  r   r   #get_coroutine_origin_tracking_depthr   #set_coroutine_origin_tracking_depthr   ZDEBUG_STACK_DEPTH)rR   enabledr   r   r   r     s    

z,BaseEventLoop._set_coroutine_origin_trackingc             C   s   | j S )N)r   )rR   r   r   r   r     s    zBaseEventLoop.get_debugc             C   s    || _ |  r| | j| d S )N)r   r   r   r   )rR   r  r   r   r   r     s    zBaseEventLoop.set_debug)N)N)NNN)NN)NN)N)r   )r   N)NN)FN)r   N)NN)NN)Pre   rf   rg   rT   rz   rP   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   r   r   r   r   r   r   r   r  r  r  r  r  r  r
  r0  r+  r4  r2  r3  r6  rF  rI  r!   r-   r#  rJ  r2   Z
AI_PASSIVEr[  r\  r^  r_  ra  r   r   re  rg  rh  ri  rs  r   ru  rv  rw  r   r   r   r   r   r   r   r   r   e  s   
 
 

		&	
	
  
., 
	l23cr   )r   r   )1r   Zcollections.abcconcurrent.futuresr   r   rU  r~  rO  r!   r   r   r   rn  r   r   r   r  ImportErrorr*   r   r   r   r   r   r   r	   r
   r  r   __all__rx  ry  r    r4   r}  objectrF  r   r   r'   r=   rE   rG   ZProtocolrH   ZAbstractServerrh   ZAbstractEventLoopr   r   r   r   r   <module>   sX   

		
;

Do