3 \��@s�ddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlZddlZddlmZddlmZddlmZddlmZddlmZddlmZdd lmZd gZd Zd ZeeefZe ed �Z!d(Z"dd�Z#dd�Z$dd�Z%dd�Z&dd�Z'dd�Z(dej)ddd�dd�Z*e ed��rNd d!�Z+nd"d!�Z+d#d$�Z,Gd%d&�d&ej-�Z.Gd'd �d ej/�Z0dS))�N�)�compat)� coroutines)�events)�futures)�tasks)� coroutine)�logger� BaseEventLoop�dg�?�AF_INET6�icCs0|j}tt|dd�tj�r$t|j�St|�SdS)N�__self__)Z _callback� isinstance�getattrr�Task�reprr�str)�handle�cb�r�+/usr/lib64/python3.6/asyncio/base_events.py�_format_handle?s rcCs(|tjkrdS|tjkrdSt|�SdS)Nzz)� subprocess�PIPE�STDOUTr)�fdrrr� _format_pipeHs   rc CsLttd�std��n4y|jtjtjd�Wntk rFtd��YnXdS)N� SO_REUSEPORTz)reuse_port not supported by socket modulerzTreuse_port not supported by socket module, SO_REUSEPORT defined but not implemented.)�hasattr�socket� ValueError� setsockopt� SOL_SOCKETr�OSError)�sockrrr�_set_reuseportQs   r&cCs&ttd�r|d@tjkS|tjkSdS)N� SOCK_NONBLOCK�)rr � SOCK_STREAM)� sock_typerrr�_is_stream_socket\s r+cCs&ttd�r|d@tjkS|tjkSdS)Nr'r()rr � SOCK_DGRAM)r*rrr�_is_dgram_sockeths r-cCsvttd�sdS|dtjtjhks(|dkr,dSt|�rt|t�r�|dkr�d}n&y t |�}Wnt t fk r�dSX|tj kr�tj g}tr�|jtj�n|g}t|t�r�|jd�}d|k�rdSxp|D]h}yJtj||�t�r@|tjk�r@|||d||ddffS|||d||ffSWntk �rjYnX�qWdS)N� inet_ptonr��Zidna�%)rr � IPPROTO_TCPZ IPPROTO_UDPr+r-r�bytesr�int� TypeErrorr!� AF_UNSPEC�AF_INET� _HAS_IPv6�appendr �decoder.r$)�host�port�family�type�protoZafs�afrrr� _ipaddr_infopsL         rA)r=r>r?�flagsc CsZ|dd�\}}t|||||�}|dk r@|j�} | j|g�| S|j||||||d�SdS)N�)r=r>r?rB)rA� create_future� set_result� getaddrinfo) �addressr=r>r?rB�loopr;r<�info�futrrr�_ensure_resolved�s  rK� TCP_NODELAYcCs>|jtjtjhkr:t|j�r:|jtjkr:|jtjtj d�dS)Nr) r=r r7r r+r>r?r2r"rL)r%rrr� _set_nodelay�s  rMcCsdS)Nr)r%rrrrM�scCs.|j}t|t�r t|t� r dS|jj�dS)N)Z _exceptionr� BaseException� Exception�_loop�stop)rJ�excrrr�_run_until_complete_cb�s   rSc@sHeZdZdd�Zdd�Zdd�Zdd�Zd d �Zd d �Ze d d��Z dS)�ServercCs||_||_d|_g|_dS)Nr)rP�sockets� _active_count�_waiters)�selfrHrUrrr�__init__�szServer.__init__cCsd|jj|jfS)Nz<%s sockets=%r>)� __class__�__name__rU)rXrrr�__repr__�szServer.__repr__cCs|jd7_dS)Nr)rV)rXrrr�_attach�szServer._attachcCs.|jd8_|jdkr*|jdkr*|j�dS)Nrr)rVrU�_wakeup)rXrrr�_detach�szServer._detachcCsH|j}|dkrdSd|_x|D]}|jj|�qW|jdkrD|j�dS)Nr)rUrPZ _stop_servingrVr^)rXrUr%rrr�close�s  z Server.closecCs0|j}d|_x|D]}|j�s|j|�qWdS)N)rW�donerE)rX�waiters�waiterrrrr^�s  zServer._wakeupccs<|jdks|jdkrdS|jj�}|jj|�|EdHdS)N)rUrWrPrDr9)rXrcrrr� wait_closed�s   zServer.wait_closedN) r[� __module__� __qualname__rYr\r]r_r`r^rrdrrrrrT�s rTc @s�eZdZdd�Zdd�Zdd�Zdd�Zd d �Zd d �Zd�d d d�dd�Z d�dd d d d�dd�Z d�dd�Z d�dd�Z d�dd�Z ed�dd��Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zed'd(��Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zej�r�d3d4�Zd5d6�Zd7d8�Zd9d:�Z d;d<�Z!d=d>�Z"d?d@�Z#dAdB�Z$dCdD�Z%dEdF�Z&dGdH�Z'dIdJ�Z(dKdL�Z)dMdMdMdMdN�dOdP�Z*d�dQdR�Z+ed�d dMdMdMd d d dS�dTdU��Z,ed�dVdW��Z-ed�dMdMdMd d d d dX�dYdZ��Z.ed[d\��Z/ed�e0j1e0j2d d]d d d d^�d_d`��Z3ed da�dbdc��Z4eddde��Z5edfdg��Z6dhdi�Z7ee8j9e8j9e8j9ddjdMdk�dldm��Z:ee8j9e8j9e8j9dddMdk�dndo��Z;dpdq�Zdvdw�Z?dxdy�Z@dzd{�ZAd|d}�ZBd~d�ZCd�d��ZDd�d��ZEd�d��ZFd S)�r cCs�d|_d|_d|_tj�|_g|_d|_d|_d|_ t j d�j |_ d|_|jtjj odttjjd���d|_d|_d|_d|_ttd�r�tj�|_nd|_d|_dS)NrF� monotonicZPYTHONASYNCIODEBUGg�������?�get_asyncgen_hooks) �_timer_cancelled_count�_closed� _stopping� collections�deque�_ready� _scheduled�_default_executorZ _internal_fds� _thread_id�timeZget_clock_infoZ resolution�_clock_resolution�_exception_handler� set_debug�sysrB�ignore_environment�bool�os�environ�get�slow_callback_duration�_current_handle� _task_factory�_coroutine_wrapper_setr�weakref�WeakSet� _asyncgens�_asyncgens_shutdown_called)rXrrrrY�s(   zBaseEventLoop.__init__cCs d|jj|j�|j�|j�fS)Nz"<%s running=%s closed=%s debug=%s>)rZr[� is_running� is_closed� get_debug)rXrrrr\ s zBaseEventLoop.__repr__cCs tj|d�S)N)rH)rZFuture)rXrrrrD%szBaseEventLoop.create_futurecCs@|j�|jdkr0tj||d�}|jr<|jd=n |j||�}|S)N)rHr�����)� _check_closedr~rr�_source_traceback)rX�coroZtaskrrr� create_task)s   zBaseEventLoop.create_taskcCs$|dk rt|� rtd��||_dS)Nz'task factory must be a callable or None)�callabler5r~)rX�factoryrrr�set_task_factory7s zBaseEventLoop.set_task_factorycCs|jS)N)r~)rXrrr�get_task_factoryEszBaseEventLoop.get_task_factoryN)�extra�servercCst�dS)N)�NotImplementedError)rXr%�protocolrcr�r�rrr�_make_socket_transportIsz$BaseEventLoop._make_socket_transportF)� server_side�server_hostnamer�r�c Cst�dS)N)r�) rXZrawsockr�� sslcontextrcr�r�r�r�rrr�_make_ssl_transportNsz!BaseEventLoop._make_ssl_transportcCst�dS)N)r�)rXr%r�rGrcr�rrr�_make_datagram_transportTsz&BaseEventLoop._make_datagram_transportcCst�dS)N)r�)rX�piper�rcr�rrr�_make_read_pipe_transportYsz'BaseEventLoop._make_read_pipe_transportcCst�dS)N)r�)rXr�r�rcr�rrr�_make_write_pipe_transport^sz(BaseEventLoop._make_write_pipe_transportc Kst�dS)N)r�) rXr��args�shell�stdin�stdout�stderr�bufsizer��kwargsrrr�_make_subprocess_transportcsz(BaseEventLoop._make_subprocess_transportcCst�dS)N)r�)rXrrr�_write_to_selfjszBaseEventLoop._write_to_selfcCst�dS)N)r�)rX� event_listrrr�_process_eventssszBaseEventLoop._process_eventscCs|jrtd��dS)NzEvent loop is closed)rj� RuntimeError)rXrrrr�wszBaseEventLoop._check_closedcCs*|jj|�|j�s&|j|j|j��dS)N)r��discardr��call_soon_threadsafer��aclose)rX�agenrrr�_asyncgen_finalizer_hook{s z&BaseEventLoop._asyncgen_finalizer_hookcCs,|jrtjdj|�t|d�|jj|�dS)NzNasynchronous generator {!r} was scheduled after loop.shutdown_asyncgens() call)�source)r��warnings�warn�format�ResourceWarningr��add)rXr�rrr�_asyncgen_firstiter_hook�s  z&BaseEventLoop._asyncgen_firstiter_hookccs�d|_|jdkst|j� r dSt|j�}|jj�tjdd�|D�d|d��}|EdH}x8t||�D]*\}}t|t �rf|j dj |�||d��qfWdS)NTcSsg|] }|j��qSr)r�)�.0Zagrrr� �sz4BaseEventLoop.shutdown_asyncgens..)Zreturn_exceptionsrHz?an error occurred during closing of asynchronous generator {!r})�message� exceptionZasyncgen) r�r��len�list�clearr�gather�ziprrO�call_exception_handlerr�)rXZ closing_agensZ shutdown_coroZresults�resultr�rrr�shutdown_asyncgens�s"      z BaseEventLoop.shutdown_asyncgensc Cs�|j�|j�rtd��tj�dk r,td��|j|j�tj�|_ |j dk rft j �}t j |j|jd�z$tj|�x|j�|jrtPqtWWdd|_d|_ tjd�|jd�|j dk r�t j |�XdS)Nz"This event loop is already runningz7Cannot run the event loop while another loop is running)� firstiter� finalizerF)r�r�r�rZ_get_running_loop�_set_coroutine_wrapper�_debug� threading� get_identrqr�rvrh�set_asyncgen_hooksr�r�Z_set_running_loop� _run_oncerk)rXZold_agen_hooksrrr� run_forever�s0          zBaseEventLoop.run_forevercCs�|j�tj|� }tj||d�}|r,d|_|jt�z>y |j�Wn,|rj|j �rj|j � rj|j ��YnXWd|j t�X|j �s�t d��|j�S)N)rHFz+Event loop stopped before Future completed.)r�rZisfuturerZ ensure_futureZ_log_destroy_pendingZadd_done_callbackrSr�raZ cancelledr�Zremove_done_callbackr�r�)rXZfutureZnew_taskrrr�run_until_complete�s      z BaseEventLoop.run_until_completecCs d|_dS)NT)rk)rXrrrrQ�szBaseEventLoop.stopcCsj|j�rtd��|jrdS|jr,tjd|�d|_|jj�|jj�|j }|dk rfd|_ |j dd�dS)Nz!Cannot close a running event loopzClose %rTF)�wait) r�r�rjr�r �debugrnr�rorpZshutdown)rX�executorrrrr`�s   zBaseEventLoop.closecCs|jS)N)rj)rXrrrr�szBaseEventLoop.is_closedcCs0|j�s,tjd|t|d�|j�s,|j�dS)Nzunclosed event loop %r)r�)r�r�r�r�r�r`)rXrrr�__del__ s  zBaseEventLoop.__del__cCs |jdk S)N)rq)rXrrrr�szBaseEventLoop.is_runningcCstj�S)N)rrrg)rXrrrrrszBaseEventLoop.timecGs,|j|j�||f|��}|jr(|jd=|S)Nrr�)�call_atrrr�)rXZdelay�callbackr��timerrrr� call_later szBaseEventLoop.call_latercGsX|j�|jr"|j�|j|d�tj||||�}|jr@|jd=tj|j |�d|_ |S)Nr�rTr�) r�r�� _check_thread�_check_callbackrZ TimerHandler��heapq�heappushro)rX�whenr�r�r�rrrr�5s zBaseEventLoop.call_atcGs@|j�|jr"|j�|j|d�|j||�}|jr<|jd=|S)N� call_soonrr�)r�r�r�r�� _call_soonr�)rXr�r�rrrrr�Es   zBaseEventLoop.call_sooncCs>tj|�stj|�r"tdj|���t|�s:tdj||���dS)Nz#coroutines cannot be used with {}()z0a callable object was expected by {}(), got {!r})rZ iscoroutineZiscoroutinefunctionr5r�r�)rXr��methodrrrr�Xs   zBaseEventLoop._check_callbackcCs,tj|||�}|jr|jd=|jj|�|S)Nrr�)rZHandler�rnr9)rXr�r�rrrrr�cs  zBaseEventLoop._call_sooncCs,|jdkrdStj�}||jkr(td��dS)NzMNon-thread-safe operation invoked on an event loop other than the current one)rqr�r�r�)rXZ thread_idrrrr�js  zBaseEventLoop._check_threadcGs@|j�|jr|j|d�|j||�}|jr4|jd=|j�|S)Nr�rr�)r�r�r�r�r�r�)rXr�r�rrrrr�{s  z"BaseEventLoop.call_soon_threadsafecGsZ|j�|jr|j|d�|dkr@|j}|dkr@tjj�}||_tj|j|f|��|d�S)N�run_in_executor)rH) r�r�r�rp� concurrentrZThreadPoolExecutorZ wrap_futureZsubmit)rXr��funcr�rrrr��s  zBaseEventLoop.run_in_executorcCs ||_dS)N)rp)rXr�rrr�set_default_executor�sz"BaseEventLoop.set_default_executorc Cs�d||fg}|r |jd|�|r2|jd|�|rD|jd|�|rV|jd|�dj|�}tjd|�|j�}tj||||||�} |j�|} d|| d | f}| |jkr�tj|�n tj|�| S) Nz%s:%rz family=%rztype=%rzproto=%rzflags=%rz, zGet address info %sz(Getting address info %s took %.3f ms: %rg@�@) r9�joinr r�rrr rFr|rI) rXr;r<r=r>r?rB�msg�t0Zaddrinfo�dtrrr�_getaddrinfo_debug�s(      z BaseEventLoop._getaddrinfo_debugr)r=r>r?rBc Cs>|jr |jd|j||||||�S|jdtj||||||�SdS)N)r�r�r�r rF)rXr;r<r=r>r?rBrrrrF�s   zBaseEventLoop.getaddrinfocCs|jdtj||�S)N)r�r � getnameinfo)rXZsockaddrrBrrrr��szBaseEventLoop.getnameinfo)�sslr=r?rBr%� local_addrr�c#s| dk r| rtd��| dkr2|r2|s.td��|} |dk sD|dk �r�|dk rTtd��t||f|tj|||d�} | g} | dk r�t| |tj|||d�} | j| �nd} tj| |d�EdH| j�}|s�td��| dk r�| j�}|s�td��g}�x�|D�]B\}}}}}y�tj|||d�}|j d�| dk �r�x�|D]j\}}}}}y|j |�PWnHtk �r�}z*t|j d j ||j j���}|j|�WYdd}~XnX�q.W|j�d}w�|j�r�tjd ||�|j||�EdHWn^tk �r}z"|dk �r�|j�|j|�WYdd}~Xq�|dk �r,|j��Yq�XPq�Wt|�d k�rR|d �nJt|d ��t�fd d�|D���r~|d �tdj djdd�|D�����n,|dk�r�td��t|j��s�tdj |���|j|||| �EdH\}}|j�r |jd�}tjd|||||�||fS)Nz+server_hostname is only meaningful with sslz:You must set server_hostname when using ssl without a hostz8host/port and sock can not be specified at the same time)r=r>r?rBrH)rHz!getaddrinfo() returned empty list)r=r>r?Fz2error while attempting to bind on address {!r}: {}zconnect %r to %rrrc3s|]}t|��kVqdS)N)r)r�rR)�modelrr� sz2BaseEventLoop.create_connection..zMultiple exceptions: {}z, css|]}t|�VqdS)N)r)r�rRrrrr�#sz5host and port was not specified and no sock specifiedz&A Stream Socket was expected, got {!r}r z%r connected to %s:%r: (%r, %r))r!rKr r)r9rr�r�r$� setblocking�bind�errnor��strerror�lowerr`r�r r�� sock_connectr�r�allr�r+r>�_create_connection_transport�get_extra_info)rX�protocol_factoryr;r<r�r=r?rBr%r�r��f1�fs�f2�infosZ laddr_infos� exceptionsr>ZcnamerG�_ZladdrrR� transportr�r)r�r�create_connection�s�        "        zBaseEventLoop.create_connectionc cs�|jd�|�}|j�}|rFt|t�r*dn|}|j||||||d�} n|j|||�} y|EdHWn| j��YnX| |fS)NF)r�r�)r�rDrrxr�r�r`) rXr%r�r�r�r�r�rcr�r�rrrr�=s  z*BaseEventLoop._create_connection_transport)r=r?rB� reuse_address� reuse_port�allow_broadcastr%c#s8| dk r�t| j�s tdj| ����s@�s@|s@|s@|s@|s@|s@| r~t��|||||| d�} djdd�| j�D��} tdj| ���| jd�d} �n*�p��s�|dkr�td ��||fdff}n�tj �}x�d�fd �ffD]~\}}|dk r�t ||t j |||d �EdH}|�s t d ��xB|D]:\}}}}}||f}||k�r>ddg||<||||<�qWq�W��fd d�|j�D�}|�sztd��g}|dk�r�tjdk�o�tjdk}�x|D�]\\}}\}}d} d} y�t j |t j |d�} |�r�| jt jt jd �|�r�t| �| �r| jt jt jd �| jd���r,| j|���rH|j| |�EdH|} Wn^t k �r�}z"| dk �rp| j�|j|�WYdd}~Xn"| dk �r�| j��YnXP�q�W|d�|�}|j�}|j| || |�}|j�r ��r�tjd��||�ntj d�||�y|EdHWn|j��YnX||fS)Nz#A UDP Socket was expected, got {!r})r�� remote_addrr=r?rBr�r�r�z, css"|]\}}|rdj||�VqdS)z{}={}N)r�)r��k�vrrrr�isz9BaseEventLoop.create_datagram_endpoint..zNsocket modifier keyword arguments can not be used when sock is specified. ({})Frzunexpected address familyr)r=r>r?rBrHz!getaddrinfo() returned empty listcs8g|]0\}}�r|ddkp*�o*|ddks||f�qS)rNrr)r��keyZ addr_pair)r�r�rrr��sz:BaseEventLoop.create_datagram_endpoint..zcan not get address information�posix�cygwin)r=r>r?z@Datagram endpoint local_addr=%r remote_addr=%r created: (%r, %r)z2Datagram endpoint remote_addr=%r created: (%r, %r))NN)!r-r>r!r��dictr��itemsr�rl� OrderedDictrKr r,r$ry�namerv�platformr"r#� SO_REUSEADDRr&Z SO_BROADCASTr�r�r`r9rDr�r�r rIr�)rXr�r�r�r=r?rBr�r�r�r%ZoptsZproblemsZr_addrZaddr_pairs_infoZ addr_infos�idxZaddrr�Zfamr�ZprorGrr�Z local_addressZremote_addressrRr�rcr�r)r�r�r�create_datagram_endpointUs�              z&BaseEventLoop.create_datagram_endpointccs4t||f|tj||d�EdH}|s0tdj|���|S)N)r=r>rBrHz%getaddrinfo({!r}) returned empty list)rKr r)r$r�)rXr;r<r=rBr�rrr�_create_server_getaddrinfo�s  z(BaseEventLoop._create_server_getaddrinfor )r=rBr%�backlogr�r�r�c #s�t|t�rtd��|dk s$�dk �r|dk r4td��| dkrPtjdkoNtjdk} g} |dkrddg} n$t|t�s|t|t j � r�|g} n|} ����fdd�| D�} t j | d�i�EdH}t tjj|��}d }�z �x|D�] }|\}}}}}ytj|||�}Wn6tjk �r2�j�r,tjd |||d d �w�YnX| j|�| �rV|jtjtjd �| �rdt|�t�r�|tjk�r�ttd ��r�|jtjtjd �y|j |�Wq�t!k �r�}z t!|j"d||j#j$�f��WYdd}~Xq�Xq�Wd }Wd|�s x| D]}|j%��q�WXn2|dk�r"td��t&|j'��s.rHFz: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}z %r is serving).rrxr5r!ryrrvrrrl�Iterablerr��set� itertools�chain� from_iterabler �errorr�r �warningr9r"r#r r&r8r rrZ IPV6_V6ONLYr�r$r�r�r�r`r+r>r�rTZlistenr�Z_start_servingrI)rXr�r;r<r=rBr%r r�r�r�rUZhostsr�r�Z completed�resr@Zsocktyper?Z canonnameZsa�errr�r)r=rBr<rXr� create_server�s�     (         zBaseEventLoop.create_server)r�ccs^t|j�stdj|���|j|||ddd�EdH\}}|jrV|jd�}tjd|||�||fS)Nz&A Stream Socket was expected, got {!r}r0T)r�r z%r handled: (%r, %r)) r+r>r!r�r�r�r�r r�)rXr�r%r�r�r�rrr�connect_accepted_socketAs   z%BaseEventLoop.connect_accepted_socketc csd|�}|j�}|j|||�}y|EdHWn|j��YnX|jr\tjd|j�||�||fS)Nz Read pipe %r connected: (%r, %r))rDr�r`r�r r��fileno)rXr�r�r�rcr�rrr�connect_read_pipeXszBaseEventLoop.connect_read_pipec csd|�}|j�}|j|||�}y|EdHWn|j��YnX|jr\tjd|j�||�||fS)Nz!Write pipe %r connected: (%r, %r))rDr�r`r�r r�r)rXr�r�r�rcr�rrr�connect_write_pipeisz BaseEventLoop.connect_write_pipecCs�|g}|dk r |jdt|��|dk rF|tjkrF|jdt|��n4|dk r`|jdt|��|dk rz|jdt|��tjdj|��dS)Nzstdin=%szstdout=stderr=%sz stdout=%sz stderr=%s� )r9rrrr r�r�)rXr�r�r�r�rIrrr�_log_subprocesszszBaseEventLoop._log_subprocessT)r�r�r��universal_newlinesr�r�c ks�t|ttf�std��|r"td��|s.td��|dkr>td��|�} d} |jrfd|} |j| |||�|j| |d||||f| �EdH} |jr�| dk r�tjd| | �| | fS) Nzcmd must be a stringz universal_newlines must be Falsezshell must be Truerzbufsize must be 0zrun shell command %rTz%s: %r) rr3rr!r�rr�r rI) rXr��cmdr�r�r�r r�r�r�r�� debug_logr�rrr�subprocess_shell�s$zBaseEventLoop.subprocess_shellcos�|r td��|rtd��|dkr(td��|f| } x,| D]$} t| ttf�s8tdt| �j��q8W|�} d}|jr�d|}|j||||�|j | | d||||f| �EdH}|jr�|dk r�t j d||�|| fS) Nz universal_newlines must be Falsezshell must be Falserzbufsize must be 0z8program arguments must be a bytes or text string, not %szexecute program %rFz%s: %r) r!rrr3r5r>r[r�rr�r rI)rXr�Zprogramr�r�r�r r�r�r�r�Z popen_args�argr�r"r�rrr�subprocess_exec�s,   zBaseEventLoop.subprocess_execcCs|jS)N)rt)rXrrr�get_exception_handler�sz#BaseEventLoop.get_exception_handlercCs*|dk r t|� r tdj|���||_dS)Nz/A callable object or None is expected, got {!r})r�r5r�rt)rXZhandlerrrr�set_exception_handler�s z#BaseEventLoop.set_exception_handlerc Cs|jd�}|sd}|jd�}|dk r6t|�||jf}nd}d|kr`|jdk r`|jjr`|jj|d<|g}x�t|�D]�}|d kr~qp||}|dkr�djtj|��}d}||j �7}n2|dkr�djtj|��}d }||j �7}nt |�}|j d j ||��qpWt jd j|�|d �dS)Nr�z!Unhandled exception in event loopr�FZsource_tracebackZhandle_tracebackr0z+Object created at (most recent call last): z+Handle created at (most recent call last): z{}: {}� )r>r�r�)r{r>� __traceback__r}r��sortedr�� traceback� format_list�rstriprr9r�r r) rX�contextr�r�rZ log_linesr�value�tbrrr�default_exception_handler�s6    z'BaseEventLoop.default_exception_handlercCs�|jdkr>y|j|�Wq�tk r:tjddd�Yq�Xnny|j||�Wn\tk r�}z@y|jd||d��Wn"tk r�tjddd�YnXWYdd}~XnXdS)Nz&Exception in default exception handlerT)rz$Unhandled error in exception handler)r�r�r.zeException in default exception handler while handling an unexpected error in custom exception handler)rtr1rOr r)rXr.rRrrrr�s" z$BaseEventLoop.call_exception_handlercCs|jr dS|jj|�dS)N)� _cancelledrnr9)rXrrrr� _add_callback9szBaseEventLoop._add_callbackcCs|j|�|j�dS)N)r3r�)rXrrrr�_add_callback_signalsafeAs z&BaseEventLoop._add_callback_signalsafecCs|jr|jd7_dS)Nr)rori)rXrrrr�_timer_handle_cancelledFsz%BaseEventLoop._timer_handle_cancelledc Cs�t|j�}|tkrd|j|tkrdg}x&|jD]}|jr>d|_q,|j|�q,Wtj|�||_d|_n8x6|jr�|jdjr�|jd8_tj |j�}d|_qfWd}|j s�|j r�d}n*|jr�|jdj }t td||j��t�}|jo�|dk�r�|j�}|jj|�}|j�|}|dk�rtj} ntj} t|�} |dk�rLtj| d|d| �nD| �rntj| d|d|d| �n"|dk�r�tj| d|d|d�n |jj|�}|j|�|j�|j} xD|j�r�|jd}|j | k�r�Ptj |j�}d|_|j j|��q�Wt|j �} x�t| �D]|} |j j�}|j�r*�q|j�r�zD||_|j�}|j�|j�|}||jk�rttj d t!|�|�Wdd|_Xn|j��qWd}dS) NFrrg�?zpoll took %.3f ms: %s eventsg@�@z$poll %.3f ms took %.3f ms: %s eventsz"poll %.3f ms took %.3f ms: timeoutzExecuting %s took %.3f seconds)"r�ro�_MIN_SCHEDULED_TIMER_HANDLESri�%_MIN_CANCELLED_TIMER_HANDLES_FRACTIONr2r9r��heapify�heappoprnrkZ_when�min�maxrr�MAXIMUM_SELECT_TIMEOUTr�Z _selectorZselect�logging�INFO�DEBUGr �logr�rs�range�popleftr}Z_runr|rr)rXZ sched_countZ new_scheduledrZtimeoutr�r�r�r��levelZneventZend_timeZntodo�irrrr�Ks�                       zBaseEventLoop._run_oncec Cs�ytj}tj}Wntk r$dSXt|�}|j|krsT            ;   /