a XC?h*Êã@sâddlZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl m Z ddl mZddl mZddl mZddl mZddl mZdd l mZdd l mZdd l mZdd l mZdd lmZdZe jdkrúedƒ‚dd„ZGdd„dejƒZGdd„dejƒZ Gdd„dej!ej"ƒZ#Gdd„dej$ƒZ%Gdd„dƒZ&Gdd„de&ƒZ'dd „Z(Gd!d"„d"e&ƒZ)Gd#d$„d$e)ƒZ*Gd%d&„d&e)ƒZ+Gd'd(„d(e&ƒZ,Gd)d*„d*e&ƒZ-Gd+d,„d,ej.ƒZ/eZ0e/Z1dS)-éNé)Ú base_events)Úbase_subprocess)Ú constants)Ú coroutines)Úevents)Ú exceptions)Úfutures)Úselector_events)Útasks)Ú transports)Úlogger)ÚSelectorEventLoopÚAbstractChildWatcherÚSafeChildWatcherÚFastChildWatcherÚPidfdChildWatcherÚMultiLoopChildWatcherÚThreadedChildWatcherÚDefaultEventLoopPolicyZwin32z+Signals are not really supported on WindowscCsdS©N©)ÚsignumÚframerrú8/opt/alt/python39/lib64/python3.9/asyncio/unix_events.pyÚ_sighandler_noop*srcsÆeZdZd(‡fdd„ Z‡fdd„Zdd„Zdd „Zd d „Zd d „Zdd„Z d)dd„Z d*dd„Z d+dd„Z dd„Z d,dddddœdd„Zd-ddddddœdd„Zd d!„Zd"d#„Zd$d%„Zd&d'„Z‡ZS).Ú_UnixSelectorEventLoopNcstƒ |¡i|_dSr)ÚsuperÚ__init__Ú_signal_handlers)ÚselfÚselector©Ú __class__rrr5s z_UnixSelectorEventLoop.__init__csZtƒ ¡t ¡s.t|jƒD]}| |¡qn(|jrVtjd|›d�t |d�|j  ¡dS)NzClosing the loop z@ on interpreter shutdown stage, skipping signal handlers removal©Úsource) rÚcloseÚsysÚ is_finalizingÚlistrÚremove_signal_handlerÚwarningsÚwarnÚResourceWarningÚclear©r Úsigr"rrr&9s üz_UnixSelectorEventLoop.closecCs|D]}|sq| |¡qdSr)Ú_handle_signal)r ÚdatarrrrÚ_process_self_dataGsz)_UnixSelectorEventLoop._process_self_datac GsRt |¡st |¡rtdƒ‚| |¡| ¡zt |j  ¡¡Wn4t t fyv}zt t |ƒƒ‚WYd}~n d}~00t |||d¡}||j|<zt |t¡t |d¡Wnžt �yL}z„|j|=|j�szt d¡Wn6t t f�y}zt d|¡WYd}~n d}~00|jtjk�r6t d|›d�ƒ‚n‚WYd}~n d}~00dS)Nz3coroutines cannot be used with add_signal_handler()Féÿÿÿÿúset_wakeup_fd(-1) failed: %súsig ú cannot be caught)rZ iscoroutineZiscoroutinefunctionÚ TypeErrorÚ _check_signalZ _check_closedÚsignalÚ set_wakeup_fdZ_csockÚfilenoÚ ValueErrorÚOSErrorÚ RuntimeErrorÚstrrZHandlerrÚ siginterruptr ÚinfoÚerrnoÚEINVAL)r r0ÚcallbackÚargsÚexcÚhandleZnexcrrrÚadd_signal_handlerNs2 ÿ "  "z)_UnixSelectorEventLoop.add_signal_handlercCs8|j |¡}|durdS|jr*| |¡n | |¡dSr)rÚgetZ _cancelledr*Z_add_callback_signalsafe)r r0rHrrrr1{s   z%_UnixSelectorEventLoop._handle_signalc Csè| |¡z |j|=Wnty*YdS0|tjkr>tj}ntj}zt ||¡WnDty˜}z,|jtj kr‚t d|›d�ƒ‚n‚WYd}~n d}~00|jsäzt  d¡Wn4t tfyâ}zt  d|¡WYd}~n d}~00dS)NFr6r7r4r5T)r9rÚKeyErrorr:ÚSIGINTÚdefault_int_handlerÚSIG_DFLr>rCrDr?r;r=r rB)r r0ÚhandlerrGrrrr*…s(     "z,_UnixSelectorEventLoop.remove_signal_handlercCs6t|tƒstd|›�ƒ‚|t ¡vr2td|›�ƒ‚dS)Nzsig must be an int, not zinvalid signal number )Ú isinstanceÚintr8r:Ú valid_signalsr=r/rrrr9¥s  z$_UnixSelectorEventLoop._check_signalcCst|||||ƒSr)Ú_UnixReadPipeTransport©r ÚpipeÚprotocolÚwaiterÚextrarrrÚ_make_read_pipe_transport±sz0_UnixSelectorEventLoop._make_read_pipe_transportcCst|||||ƒSr)Ú_UnixWritePipeTransportrTrrrÚ_make_write_pipe_transportµsz1_UnixSelectorEventLoop._make_write_pipe_transportc ËsÌt ¡�°} |  ¡stdƒ‚| ¡} t||||||||f| |dœ| ¤Ž} |  |  ¡|j| ¡z| IdHWn@t t fy€‚Yn*t y¨|   ¡|   ¡IdH‚Yn0Wdƒn1s¾0Y| S)NzRasyncio.get_child_watcher() is not activated, subprocess support is not installed.)rWrX)rÚget_child_watcherÚ is_activer?Ú create_futureÚ_UnixSubprocessTransportÚadd_child_handlerZget_pidÚ_child_watcher_callbackÚ SystemExitÚKeyboardInterruptÚ BaseExceptionr&Z_wait) r rVrFÚshellÚstdinÚstdoutÚstderrÚbufsizerXÚkwargsÚwatcherrWÚtransprrrÚ_make_subprocess_transport¹s.  ÿþý ÿ &z1_UnixSelectorEventLoop._make_subprocess_transportcCs| |j|¡dSr)Úcall_soon_threadsafeZ_process_exited)r ÚpidÚ returncoderlrrrra×sz._UnixSelectorEventLoop._child_watcher_callback)ÚsslÚsockÚserver_hostnameÚssl_handshake_timeoutc Ãs |r|dur6tdƒ‚n |dur&tdƒ‚|dur6tdƒ‚|dur¤|durNtdƒ‚t |¡}t tjtjd¡}z | d¡| ||¡IdHWqä| ¡‚Yqä0n@|dur´tdƒ‚|j tjksÌ|j tjkrÚtd|›�ƒ‚| d¡|j |||||d �IdH\}}||fS) Nz/you have to pass server_hostname when using sslz+server_hostname is only meaningful with sslú1ssl_handshake_timeout is only meaningful with sslú3path and sock can not be specified at the same timerFzno path and sock were specifiedú.A UNIX Domain Stream Socket was expected, got )rt) r=ÚosÚfspathÚsocketÚAF_UNIXÚ SOCK_STREAMÚ setblockingZ sock_connectr&ÚfamilyÚtypeZ_create_connection_transport) r Úprotocol_factoryÚpathrqrrrsrtÚ transportrVrrrÚcreate_unix_connectionÚsLÿÿÿ     ÿÿ þz-_UnixSelectorEventLoop.create_unix_connectionédT)rrÚbacklogrqrtÚ start_servingc ÃsÈt|tƒrtdƒ‚|dur&|s&tdƒ‚|du�rJ|dur@tdƒ‚t |¡}t tjtj¡}|ddvrÊz t   t  |¡j ¡r„t  |¡WnBt y˜Yn2tyÈ}zt d||¡WYd}~n d}~00z| |¡Wnnt�y2} z@| ¡| jtjk�rd|›d�} ttj| ƒd‚n‚WYd} ~ nd} ~ 0| ¡‚Yn0n<|du�r\td ƒ‚|jtjk�sx|jtjk�r†td |›�ƒ‚| d ¡t ||g||||¡} |�rÄ|  ¡t d¡IdH| S) Nz*ssl argument must be an SSLContext or Nonerurvr)rúz2Unable to check or remove stale UNIX socket %r: %rzAddress z is already in usez-path was not specified, and no sock specifiedrwF)rPÚboolr8r=rxryrzr{r|ÚstatÚS_ISSOCKÚst_modeÚremoveÚFileNotFoundErrorr>r ÚerrorZbindr&rCZ EADDRINUSEr~rr}rZServerZ_start_servingr Úsleep) r r€r�rrr…rqrtr†ÚerrrGÚmsgZserverrrrÚcreate_unix_serversh  ÿ ÿ   ÿ   ÿ ÿÿ  ÿz)_UnixSelectorEventLoop.create_unix_serverc ÃsÖz tjWnty&t d¡‚Yn0z | ¡}Wn4ttjfyh}zt d¡‚WYd}~n d}~00zt |¡j }Wnt y–t d¡‚Yn0|r |n|}|s¬dS|  ¡} |  | d|||||d¡| IdHS)Nzos.sendfile() is not availableznot a regular filer) rxÚsendfileÚAttributeErrorrÚSendfileNotAvailableErrorr<ÚioÚUnsupportedOperationÚfstatÚst_sizer>r^Ú_sock_sendfile_native_impl) r rrÚfileÚoffsetÚcountr<r�ZfsizeÚ blocksizeÚfutrrrÚ_sock_sendfile_nativeJs,  ÿ      ÿz,_UnixSelectorEventLoop._sock_sendfile_nativec Cs,| ¡} |dur| |¡| ¡r4| |||¡dS|rd||}|dkrd| |||¡| |¡dSzt | |||¡} W�nDttfyÄ|dur |  ||¡|  | |j || ||||||¡ Y�ndt �yj} zŽ|du�r| j t jk�rt| ƒtu�rtdt jƒ} | | _| } |dk�r>t d¡} | |||¡| | ¡n| |||¡| | ¡WYd} ~ nÆd} ~ 0ttf�y‚‚Yn¦t�y¾} z$| |||¡| | ¡WYd} ~ nrd} ~ 00| dk�rä| |||¡| |¡nD|| 7}|| 7}|du�r |  ||¡|  | |j || ||||||¡ dS)Nrzsocket is not connectedzos.sendfile call failed)r<Ú remove_writerÚ cancelledÚ_sock_sendfile_update_fileposZ set_resultrxr“ÚBlockingIOErrorÚInterruptedErrorÚ_sock_add_cancellation_callbackZ add_writerršr>rCZENOTCONNrÚConnectionErrorÚ __cause__rr•Z set_exceptionrbrcrd)r rŸZ registered_fdrrr<rœr�ržÚ total_sentÚfdZsentrGÚnew_excr�rrrršasp    þ   ÿ þÿ ÿ       þz1_UnixSelectorEventLoop._sock_sendfile_native_implcCs|dkrt ||tj¡dS©Nr)rxÚlseekÚSEEK_SET)r r<rœr©rrrr£§sz4_UnixSelectorEventLoop._sock_sendfile_update_fileposcs‡‡fdd„}| |¡dS)Ncs&| ¡r"ˆ ¡}|dkr"ˆ |¡dS)Nr4)r¢r<r¡)rŸrª©r rrrrÚcb¬szB_UnixSelectorEventLoop._sock_add_cancellation_callback..cb)Zadd_done_callback)r rŸrrr°rr¯rr¦«sz6_UnixSelectorEventLoop._sock_add_cancellation_callback)N)NN)NN)N)N)N)Ú__name__Ú __module__Ú __qualname__rr&r3rIr1r*r9rYr[rmrarƒr’r ršr£r¦Ú __classcell__rrr"rr/s@ -   ÿ ÿ þ ÿü .ÿü CFrcsŠeZdZdZd‡fdd„ Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z e jfdd„Zddd„Zdd„Zdd„Z‡ZS) rSiNcsÚtƒ |¡||jd<||_||_| ¡|_||_d|_d|_ t   |j¡j }t  |¡s„t  |¡s„t  |¡s„d|_d|_d|_tdƒ‚t  |jd¡|j |jj|¡|j |jj|j|j¡|durÖ|j tj|d¡dS)NrUFz)Pipe transport is for pipes/sockets only.)rrÚ_extraÚ_loopÚ_piper<Ú_filenoÚ _protocolÚ_closingÚ_pausedrxr˜r‹r‰ÚS_ISFIFOrŠÚS_ISCHRr=Ú set_blockingÚ call_soonÚconnection_madeÚ _add_readerÚ _read_readyr Ú_set_result_unless_cancelled)r ÚlooprUrVrWrXÚmoder"rrr¸s6    ÿþ ÿ ÿz_UnixReadPipeTransport.__init__cCsÀ|jjg}|jdur | d¡n|jr0| d¡| d|j›�¡t|jddƒ}|jdur�|dur�t  ||jt j ¡}|r„| d¡q°| d¡n |jdur¦| d¡n | d¡d  d   |¡¡S) NÚclosedÚclosingúfd=Ú _selectorÚpollingÚidleÚopenú<{}>ú )r#r±r·Úappendrºr¸Úgetattrr¶r Ú_test_selector_eventÚ selectorsZ EVENT_READÚformatÚjoin)r rBr!rÊrrrÚ__repr__Ös$     ÿ     z_UnixReadPipeTransport.__repr__c Csºzt |j|j¡}WnDttfy*YnŒtyX}z| |d¡WYd}~nfd}~00|rl|j  |¡nJ|j   ¡r‚t   d|¡d|_|j  |j¡|j  |jj¡|j  |jd¡dS)Nz"Fatal read error on pipe transportú%r was closed by peerT)rxÚreadr¸Úmax_sizer¤r¥r>Ú _fatal_errorr¹Z data_receivedr¶Ú get_debugr rBrºÚ_remove_readerr¿Z eof_receivedÚ_call_connection_lost)r r2rGrrrrÂës"  z"_UnixReadPipeTransport._read_readycCs>|js |jrdSd|_|j |j¡|j ¡r:t d|¡dS)NTz%r pauses reading)rºr»r¶rÛr¸rÚr Údebug©r rrrÚ pause_readingýs   z$_UnixReadPipeTransport.pause_readingcCsB|js |jsdSd|_|j |j|j¡|j ¡r>t d|¡dS)NFz%r resumes reading) rºr»r¶rÁr¸rÂrÚr rÝrÞrrrÚresume_readings   z%_UnixReadPipeTransport.resume_readingcCs ||_dSr©r¹©r rVrrrÚ set_protocol sz#_UnixReadPipeTransport.set_protocolcCs|jSrrárÞrrrÚ get_protocolsz#_UnixReadPipeTransport.get_protocolcCs|jSr©rºrÞrrrÚ is_closingsz!_UnixReadPipeTransport.is_closingcCs|js| d¡dSr)rºÚ_closerÞrrrr&sz_UnixReadPipeTransport.closecCs,|jdur(|d|›�t|d�|j ¡dS©Nzunclosed transport r$©r·r-r&©r Ú_warnrrrÚ__del__s z_UnixReadPipeTransport.__del__úFatal error on pipe transportcCsZt|tƒr4|jtjkr4|j ¡rLtjd||dd�n|j ||||j dœ¡|  |¡dS©Nz%r: %sT©Úexc_info)ÚmessageÚ exceptionr‚rV) rPr>rCZEIOr¶rÚr rÝÚcall_exception_handlerr¹rç©r rGrñrrrrÙs üz#_UnixReadPipeTransport._fatal_errorcCs(d|_|j |j¡|j |j|¡dS©NT)rºr¶rÛr¸r¿rÜ©r rGrrrrç-sz_UnixReadPipeTransport._closecCsPz,|j |¡W|j ¡d|_d|_d|_n|j ¡d|_d|_d|_0dSr©r¹Zconnection_lostr·r&r¶rörrrrÜ2s ý z,_UnixReadPipeTransport._call_connection_lost)NN)rí)r±r²r³rØrrÕrÂrßràrãrärær&r+r,rìrÙrçrÜr´rrr"rrS´s rScs¨eZdZd%‡fdd„ Zdd„Zdd„Zdd „Zd d „Zd d „Zdd„Z dd„Z dd„Z dd„Z dd„Z dd„Zejfdd„Zdd„Zd&dd „Zd'd!d"„Zd#d$„Z‡ZS)(rZNc sþtƒ ||¡||jd<||_| ¡|_||_tƒ|_d|_ d|_ t   |j¡j }t |¡}t |¡}t |¡} |s”|s”| s”d|_d|_d|_tdƒ‚t  |jd¡|j |jj|¡| sÈ|ràtj d¡sà|j |jj|j|j¡|durú|j tj|d¡dS)NrUrFz?Pipe transport is only for pipes, sockets and character devicesZaix)rrrµr·r<r¸r¹Ú bytearrayÚ_bufferÚ _conn_lostrºrxr˜r‹r‰r½r¼rŠr=r¾r¶r¿rÀr'ÚplatformÚ startswithrÁrÂr rÃ) r rÄrUrVrWrXrÅZis_charZis_fifoZ is_socketr"rrr?s6       ÿ ÿz _UnixWritePipeTransport.__init__cCsØ|jjg}|jdur | d¡n|jr0| d¡| d|j›�¡t|jddƒ}|jdur¨|dur¨t  ||jt j ¡}|r„| d¡n | d¡|  ¡}| d|›�¡n |jdur¾| d¡n | d¡d   d  |¡¡S) NrÆrÇrÈrÉrÊrËzbufsize=rÌrÍrÎ)r#r±r·rÏrºr¸rÐr¶r rÑrÒZ EVENT_WRITEÚget_write_buffer_sizerÓrÔ)r rBr!rÊrirrrrÕds(     ÿ     z _UnixWritePipeTransport.__repr__cCs t|jƒSr)ÚlenrùrÞrrrrý|sz-_UnixWritePipeTransport.get_write_buffer_sizecCs6|j ¡rt d|¡|jr*| tƒ¡n| ¡dS)NrÖ)r¶rÚr rBrùrçÚBrokenPipeErrorrÞrrrrÂs   z#_UnixWritePipeTransport._read_readyc Cs.t|tƒrt|ƒ}|sdS|js&|jrN|jtjkr|j  ¡|j d7_ |j   |j¡|  |d¡WYd}~nnd}~00|t|jƒkræ|j  ¡|j   |j¡| ¡|jrâ|j  |j¡| d¡dS|dkrú|jd|…=dS)Nrrr)rxrr¸rùr¤r¥rbrcrdr.rúr¶Ú_remove_writerrÙrþZ_maybe_resume_protocolrºrÛrÜ)r rrGrrrr«s* "  z$_UnixWritePipeTransport._write_readycCsdSrõrrÞrrrÚ can_write_eofÇsz%_UnixWritePipeTransport.can_write_eofcCs8|jr dSd|_|js4|j |j¡|j |jd¡dSrõ)rºrùr¶rÛr¸r¿rÜrÞrrrÚ write_eofÊs z!_UnixWritePipeTransport.write_eofcCs ||_dSrrárârrrrãÓsz$_UnixWritePipeTransport.set_protocolcCs|jSrrárÞrrrräÖsz$_UnixWritePipeTransport.get_protocolcCs|jSrrårÞrrrræÙsz"_UnixWritePipeTransport.is_closingcCs|jdur|js| ¡dSr)r·rºrrÞrrrr&Üsz_UnixWritePipeTransport.closecCs,|jdur(|d|›�t|d�|j ¡dSrèrérêrrrrìás z_UnixWritePipeTransport.__del__cCs| d¡dSr)rçrÞrrrÚabortæsz_UnixWritePipeTransport.abortrícCsNt|tƒr(|j ¡r@tjd||dd�n|j ||||jdœ¡| |¡dSrî) rPr>r¶rÚr rÝrór¹rçrôrrrrÙés  üz$_UnixWritePipeTransport._fatal_errorcCsFd|_|jr|j |j¡|j ¡|j |j¡|j |j|¡dSrõ) rºrùr¶rr¸r.rÛr¿rÜrörrrrç÷s  z_UnixWritePipeTransport._closecCsPz,|j |¡W|j ¡d|_d|_d|_n|j ¡d|_d|_d|_0dSrr÷rörrrrÜÿs ý z-_UnixWritePipeTransport._call_connection_lost)NN)rí)N)r±r²r³rrÕrýrÂrrrrrãrärær&r+r,rìr rÙrçrÜr´rrr"rrZ<s"% #   rZc@seZdZdd„ZdS)r_c Ks¢d}|tjkrt ¡\}}zhtj|f||||d|dœ|¤Ž|_|durh| ¡t| ¡d|d�|j_ d}W|durž| ¡| ¡n|durœ| ¡| ¡0dS)NF)rerfrgrhZuniversal_newlinesriÚwb)Ú buffering) Ú subprocessÚPIPErzZ socketpairÚPopenÚ_procr&rÌÚdetachrf) r rFrerfrgrhrirjZstdin_wrrrÚ_start s,  ÿþþ þz_UnixSubprocessTransport._startN)r±r²r³rrrrrr_ sr_c@sDeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dS)rcGs tƒ‚dSr©ÚNotImplementedError©r rorErFrrrr`9s z&AbstractChildWatcher.add_child_handlercCs tƒ‚dSrr©r rorrrÚremove_child_handlerDsz)AbstractChildWatcher.remove_child_handlercCs tƒ‚dSrr©r rÄrrrÚ attach_loopLsz AbstractChildWatcher.attach_loopcCs tƒ‚dSrrrÞrrrr&VszAbstractChildWatcher.closecCs tƒ‚dSrrrÞrrrr]]szAbstractChildWatcher.is_activecCs tƒ‚dSrrrÞrrrÚ __enter__fszAbstractChildWatcher.__enter__cCs tƒ‚dSrr©r ÚaÚbÚcrrrÚ__exit__lszAbstractChildWatcher.__exit__N) r±r²r³r`rrr&r]rrrrrrr"s   rc@sTeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dS)rcCsd|_i|_dSr©r¶Ú _callbacksrÞrrrr}szPidfdChildWatcher.__init__cCs|SrrrÞrrrr�szPidfdChildWatcher.__enter__cCsdSrr)r Úexc_typeÚ exc_valueÚ exc_tracebackrrrr„szPidfdChildWatcher.__exit__cCs|jduo|j ¡Sr©r¶Z is_runningrÞrrrr]‡szPidfdChildWatcher.is_activecCs| d¡dSr©rrÞrrrr&ŠszPidfdChildWatcher.closecCsd|jdur$|dur$|jr$t dt¡|j ¡D] \}}}|j |¡t |¡q.|j  ¡||_dS©NzCA loop is being detached from a child watcher with pending handlers) r¶r r+r,ÚRuntimeWarningÚvaluesrÛrxr&r.)r rÄÚpidfdÚ_rrrr�sý   zPidfdChildWatcher.attach_loopcGsZ|j |¡}|dur*|d||f|j|<n,t |¡}|j ||j|¡|||f|j|<dSr¬)r rJrxZ pidfd_openr¶rÁÚ_do_wait)r rorErFZexistingr)rrrr`™s   z#PidfdChildWatcher.add_child_handlercCs~|j |¡\}}}|j |¡zt |d¡\}}Wn"tyTd}t d|¡Yn 0t |ƒ}t  |¡|||g|¢RŽdS)NréÿzJchild process pid %d exit status already read: will report returncode 255) r Úpopr¶rÛrxÚwaitpidÚChildProcessErrorr rÚ_compute_returncoder&)r ror)rErFr*Ústatusrprrrr+¢s  ý  zPidfdChildWatcher._do_waitcCsFz|j |¡\}}}Wnty*YdS0|j |¡t |¡dS)NFT)r r-rKr¶rÛrxr&)r ror)r*rrrrµs   z&PidfdChildWatcher.remove_child_handlerN) r±r²r³rrrr]r&rr`r+rrrrrrqs   rcCs2t |¡rt |¡ St |¡r*t |¡S|SdSr)rxÚ WIFSIGNALEDÚWTERMSIGÚ WIFEXITEDÚ WEXITSTATUS)r1rrrr0¿s     r0c@sDeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dS)ÚBaseChildWatchercCsd|_i|_dSrrrÞrrrrÏszBaseChildWatcher.__init__cCs| d¡dSrr%rÞrrrr&ÓszBaseChildWatcher.closecCs|jduo|j ¡Srr$rÞrrrr]ÖszBaseChildWatcher.is_activecCs tƒ‚dSrr)r Ú expected_pidrrrÚ _do_waitpidÙszBaseChildWatcher._do_waitpidcCs tƒ‚dSrrrÞrrrÚ_do_waitpid_allÜsz BaseChildWatcher._do_waitpid_allcCsf|jdur$|dur$|jr$t dt¡|jdur<|j tj¡||_|durb| tj|j ¡|  ¡dSr&) r¶r r+r,r'r*r:ÚSIGCHLDrIÚ _sig_chldr9rrrrrßsý zBaseChildWatcher.attach_loopc Cs^z | ¡WnLttfy$‚Yn6tyX}z|j d|dœ¡WYd}~n d}~00dS)Nú$Unknown exception in SIGCHLD handler)rñrò)r9rbrcrdr¶rórörrrr;ós þzBaseChildWatcher._sig_chldN) r±r²r³rr&r]r8r9rr;rrrrr6Ísr6csLeZdZ‡fdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z ‡Z S)rcs|j ¡tƒ ¡dSr)r r.rr&rÞr"rrr& s zSafeChildWatcher.closecCs|SrrrÞrrrrszSafeChildWatcher.__enter__cCsdSrrrrrrrszSafeChildWatcher.__exit__cGs||f|j|<| |¡dSr)r r8rrrrr`sz"SafeChildWatcher.add_child_handlercCs(z|j|=WdSty"YdS0dS©NTF©r rKrrrrrs  z%SafeChildWatcher.remove_child_handlercCst|jƒD]}| |¡q dSr©r)r r8rrrrr9$sz SafeChildWatcher._do_waitpid_allcCsÂzt |tj¡\}}Wn&ty<|}d}t d|¡Yn.0|dkrJdSt|ƒ}|j ¡rjt  d||¡z|j   |¡\}}Wn,t yª|j ¡r¦tjd|dd�Yn0|||g|¢RŽdS)Nr,ú8Unknown child process pid %d, will report returncode 255rú$process %s exited with returncode %sú'Child watcher got an unexpected pid: %rTrï) rxr.ÚWNOHANGr/r rr0r¶rÚrÝr r-rK)r r7ror1rprErFrrrr8)s0 þ  ÿ  ÿ zSafeChildWatcher._do_waitpid) r±r²r³r&rrr`rr9r8r´rrr"rrs rcsPeZdZ‡fdd„Z‡fdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z ‡Z S)rcs$tƒ ¡t ¡|_i|_d|_dSr¬)rrÚ threadingZLockÚ_lockÚ_zombiesÚ_forksrÞr"rrrVs  zFastChildWatcher.__init__cs"|j ¡|j ¡tƒ ¡dSr)r r.rFrr&rÞr"rrr&\s  zFastChildWatcher.closecCs<|j�"|jd7_|WdƒS1s.0YdS)Nr)rErGrÞrrrraszFastChildWatcher.__enter__cCst|j�N|jd8_|js"|js2WdƒdSt|jƒ}|j ¡Wdƒn1sZ0Yt d|¡dS)Nrz5Caught subprocesses termination from unknown pids: %s)rErGrFr@r.r r)r rrrZcollateral_victimsrrrrgs  (þzFastChildWatcher.__exit__c Gs||j�Pz|j |¡}Wn.tyF||f|j|<YWdƒdS0Wdƒn1s\0Y|||g|¢RŽdSr)rErFr-rKr )r rorErFrprrrr`us 2z"FastChildWatcher.add_child_handlercCs(z|j|=WdSty"YdS0dSr=r>rrrrrƒs  z%FastChildWatcher.remove_child_handlerc Cszt dtj¡\}}Wnty*YdS0|dkr8dSt|ƒ}|j�Œz|j |¡\}}WnNtyª|j r¢||j |<|j   ¡r’t  d||¡YWdƒqd}Yn0|j   ¡rÄt  d||¡Wdƒn1sØ0Y|durút  d||¡q|||g|¢RŽqdS)Nr4rz,unknown process %s exited with returncode %srAz8Caught subprocess termination from unknown pid: %d -> %d)rxr.rCr/r0rEr r-rKrGrFr¶rÚr rÝr)r ror1rprErFrrrr9Šs:    þ  ÿ"þz FastChildWatcher._do_waitpid_all) r±r²r³rr&rrr`rr9r´rrr"rrLs  rc@sdeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dd„Z dS)rcCsi|_d|_dSr)r Ú_saved_sighandlerrÞrrrrÈszMultiLoopChildWatcher.__init__cCs |jduSr)rHrÞrrrr]ÌszMultiLoopChildWatcher.is_activecCsT|j ¡|jdurdSt tj¡}||jkr:t d¡nt tj|j¡d|_dS)Nz+SIGCHLD handler was changed by outside code) r r.rHr:Ú getsignalr:r;r r)r rOrrrr&Ïs     zMultiLoopChildWatcher.closecCs|SrrrÞrrrrÛszMultiLoopChildWatcher.__enter__cCsdSrr©r r!Zexc_valZexc_tbrrrrÞszMultiLoopChildWatcher.__exit__cGs&t ¡}|||f|j|<| |¡dSr)rÚget_running_loopr r8)r rorErFrÄrrrr`ász'MultiLoopChildWatcher.add_child_handlercCs(z|j|=WdSty"YdS0dSr=r>rrrrrès  z*MultiLoopChildWatcher.remove_child_handlercCsN|jdurdSt tj|j¡|_|jdurKsÿz6ThreadedChildWatcher._join_threads..)r)rPr(rÔ)r ÚthreadsrVrrrrQIsz"ThreadedChildWatcher._join_threadscCs|SrrrÞrrrrPszThreadedChildWatcher.__enter__cCsdSrrrJrrrrSszThreadedChildWatcher.__exit__cCs6dd„t|j ¡ƒDƒ}|r2||j›d�t|d�dS)NcSsg|]}| ¡r|‘qSr)rRrTrrrrWWsÿz0ThreadedChildWatcher.__del__..z0 has registered but not finished child processesr$)r)rPr(r#r-)r rërXrrrrìVs  þzThreadedChildWatcher.__del__cGsFt ¡}tj|jdt|jƒ›�||||fdd�}||j|<| ¡dS)Nzwaitpid-T)ÚtargetÚnamerFrS) rrKrDZThreadr8ÚnextrOrPÚstart)r rorErFrÄrVrrrr`^s ý z&ThreadedChildWatcher.add_child_handlercCsdSrõrrrrrrgsz)ThreadedChildWatcher.remove_child_handlercCsdSrrrrrrrmsz ThreadedChildWatcher.attach_loopcCs˜zt |d¡\}}Wn&ty:|}d}t d|¡Yn 0t|ƒ}| ¡rZt d||¡| ¡rrt d||¡n|j |||g|¢RŽ|j   |¡dS)Nrr,r@rArL) rxr.r/r rr0rÚrÝrMrnrPr-)r rÄr7rErFror1rprrrr8ps$ þ ÿz ThreadedChildWatcher._do_waitpidN)r±r²r³rr]r&rQrrr+r,rìr`rrr8rrrrr2s  rcsDeZdZeZ‡fdd„Zdd„Z‡fdd„Zdd„Zd d „Z ‡Z S) Ú_UnixDefaultEventLoopPolicycstƒ ¡d|_dSr)rrÚ_watcherrÞr"rrr�s z$_UnixDefaultEventLoopPolicy.__init__cCs\tj�B|jdur:tƒ|_t ¡t ¡ur:|j |jj ¡Wdƒn1sN0YdSr) rrEr^rrDÚcurrent_threadÚ main_threadrÚ_localr¶rÞrrrÚ _init_watcher“s  z)_UnixDefaultEventLoopPolicy._init_watchercs6tƒ |¡|jdur2t ¡t ¡ur2|j |¡dSr)rÚset_event_loopr^rDr_r`rrr"rrrcšs   ÿz*_UnixDefaultEventLoopPolicy.set_event_loopcCs|jdur| ¡|jSr)r^rbrÞrrrr\¨s z-_UnixDefaultEventLoopPolicy.get_child_watchercCs|jdur|j ¡||_dSr)r^r&)r rkrrrÚset_child_watcher²s  z-_UnixDefaultEventLoopPolicy.set_child_watcher) r±r²r³rZ _loop_factoryrrbrcr\rdr´rrr"rr]‹s    r])2rCr–rNrxrÒr:rzr‰r r'rDr+Úrrrrrrr r r r Úlogr Ú__all__rûÚ ImportErrorrZBaseSelectorEventLooprZ ReadTransportrSZ_FlowControlMixinZWriteTransportrZZBaseSubprocessTransportr_rrr0r6rrrrZBaseDefaultEventLoopPolicyr]rrrrrrÚs`             ÿNON5Ji}Y2