o ?Ogj@sdZdZddlZddlZddlZddlZddlZddlZddlm Z GdddZ Gdd d e Z Gd d d Z Gd d d Z GdddZGdddeZdaeZGdddejZeZddZddZddZddZddZddZd d!Zd.d#d$Zd%d&Zd'd(Zd)d*Z d+d,Z!eZ"eZ#eZ$eZ%eZ&zdd-l'mZmZmZmZmZWn e(yYdSweZ)eZ*eZ+eZ,eZ-dS)/z!Event loop and event loop policy.)AbstractEventLoopPolicyAbstractEventLoopAbstractServerHandle TimerHandleget_event_loop_policyset_event_loop_policyget_event_loopset_event_loopnew_event_loopget_child_watcherset_child_watcher_set_running_loopget_running_loop_get_running_loopN)format_helpersc@sFeZdZdZdZdddZddZdd Zd d Zd d Z ddZ dS)rz1Object returned by callback registration methods.) _callback_args _cancelled_loop_source_traceback_repr __weakref___contextNcCs^|durt}||_||_||_||_d|_d|_|jr*t t d|_ dSd|_ dS)NFr) contextvarsZ copy_contextrrrrrr get_debugr extract_stacksys _getframer)selfcallbackargsloopcontextr%5/opt/alt/python310/lib64/python3.10/asyncio/events.py__init__s  zHandle.__init__cCsl|jjg}|jr |d|jdur|t|j|j|jr4|jd}|d|dd|d|S)N cancelledz created at r:r) __class____name__rappendrr_format_callback_sourcerr)r infoframer%r%r& _repr_info.s    zHandle._repr_infocCs(|jdur|jS|}dd|S)Nz<{}> )rr1formatjoin)r r/r%r%r&__repr__:s zHandle.__repr__cCs4|jsd|_|jrt||_d|_d|_dSdS)NT)rrrreprrrrr r%r%r&cancel@s   z Handle.cancelcC|jSN)rr7r%r%r&r(KszHandle.cancelledc Csz|jj|jg|jRWd}dSttfytyP}z*t|j|j}d|}|||d}|j r=|j |d<|j |WYd}~d}dSd}~ww)NzException in callback )messageZ exceptionhandleZsource_traceback) rrunrr SystemExitKeyboardInterrupt BaseExceptionrr.rrcall_exception_handler)r exccbmsgr$r%r%r&_runNs(  z Handle._runr:) r, __module__ __qualname____doc__ __slots__r'r1r5r8r(rEr%r%r%r&rs   rcszeZdZdZddgZdfdd ZfddZd d Zd d Zd dZ ddZ ddZ ddZ fddZ ddZZS)rz7Object returned by timed callback registration methods. _scheduled_whenNcs0t|||||jr|jd=||_d|_dS)Nr)F)superr'rrKrJ)r whenr!r"r#r$r+r%r&r'gs  zTimerHandle.__init__cs0t}|jr dnd}||d|j|S)Nrzwhen=)rLr1rinsertrK)r r/posrNr%r&r1os zTimerHandle._repr_infocCs t|jSr:)hashrKr7r%r%r&__hash__us zTimerHandle.__hash__cCst|tr |j|jkStSr: isinstancerrKNotImplementedr otherr%r%r&__lt__x  zTimerHandle.__lt__cCs$t|tr|j|jkp||StSr:rUrrK__eq__rVrWr%r%r&__le__} zTimerHandle.__le__cCst|tr |j|jkStSr:rTrWr%r%r&__gt__rZzTimerHandle.__gt__cCs$t|tr|j|jkp||StSr:r[rWr%r%r&__ge__r^zTimerHandle.__ge__cCs>t|tr|j|jko|j|jko|j|jko|j|jkStSr:)rUrrKrrrrVrWr%r%r&r\s     zTimerHandle.__eq__cs |js |j|tdSr:)rr_timer_handle_cancelledrLr8r7rNr%r&r8s zTimerHandle.cancelcCr9)zReturn a scheduled callback time. The time is an absolute timestamp, using the same time reference as loop.time(). )rKr7r%r%r&rMszTimerHandle.whenr:)r,rFrGrHrIr'r1rSrYr]r_r`r\r8rM __classcell__r%r%rNr&rbs  rc@sPeZdZdZddZddZddZdd Zd d Zd d Z ddZ ddZ dS)rz,Abstract server returned by create_server().cCt)z5Stop serving. This leaves existing connections open.NotImplementedErrorr7r%r%r&closezAbstractServer.closecCrc)z4Get the event loop the Server object is attached to.rdr7r%r%r&get_looprgzAbstractServer.get_loopcCrc)z3Return True if the server is accepting connections.rdr7r%r%r& is_servingrgzAbstractServer.is_servingct)zStart accepting connections. This method is idempotent, so it can be called when the server is already being serving. rdr7r%r%r& start_servingzAbstractServer.start_servingcrj)zStart accepting connections until the coroutine is cancelled. The server is closed when the coroutine is cancelled. rdr7r%r%r& serve_foreverzAbstractServer.serve_forevercrj)z*Coroutine to wait until service is closed.rdr7r%r%r& wait_closedzAbstractServer.wait_closedcs|Sr:r%r7r%r%r& __aenter__zAbstractServer.__aenter__cs||IdHdSr:)rfro)r rBr%r%r& __aexit__szAbstractServer.__aexit__N) r,rFrGrHrfrhrirkrmrorqrsr%r%r%r&rs rc @seZdZdZddZddZddZdd Zd d Zd d Z ddZ ddZ ddZ ddddZ ddddZddddZddZddZdd d!d"Zddd#d$Zd%d&Zd'd(Zd)d)d)d)d*d+d,Zd{d-d.Z d|dd)d)d)ddddddd/ d0d1Z d|ejejdd2ddddd3d4 d5d6Zd}d3d7d8d9Zd:ddd;dd?d@Z d~dd2ddd3dAdBdCZ dddDdEdFZ! d|d)d)d)dddddGdHdIZ"dJdKZ#dLdMZ$e%j&e%j&e%j&dNdOdPZ'e%j&e%j&e%j&dNdQdRZ(dSdTZ)dUdVZ*dWdXZ+dYdZZ,d[d\Z-d]d^Z.d_d`Z/dadbZ0dcddZ1d}dd7dedfZ2dgdhZ3didjZ4dkdlZ5dmdnZ6dodpZ7dqdrZ8dsdtZ9dudvZ:dwdxZ;dydzZr~z+AbstractEventLoop.default_exception_handlercCrcr:rdrr%r%r&rAAr~z(AbstractEventLoop.call_exception_handlercCrcr:rdr7r%r%r&rFr~zAbstractEventLoop.get_debugcCrcr:rd)r Zenabledr%r%r& set_debugIr~zAbstractEventLoop.set_debug)rNN)rNr:)=r,rFrGrHrtrurvrwrxrfryrzrar}r{rrrrrrrrrrsocketZ AF_UNSPECZ AI_PASSIVErrrrrrrrr subprocessPIPErrrrrrrrrrrrrrrrrrrrArrr%r%r%r&rs     5      "  %      rc@s8eZdZdZddZddZddZdd Zd d Zd S) rz-Abstract policy for accessing the event loop.cCrc)a:Get the event loop for the current context. Returns an event loop object implementing the BaseEventLoop interface, or raises an exception in case no event loop has been set for the current context and the current policy does not specify to create one. It should never return None.rdr7r%r%r&rPsz&AbstractEventLoopPolicy.get_event_loopcCrc)z3Set the event loop for the current context to loop.rdr r#r%r%r&r Zrgz&AbstractEventLoopPolicy.set_event_loopcCrc)zCreate and return a new event loop object according to this policy's rules. If there's need to set this loop as the event loop for the current context, set_event_loop must be called explicitly.rdr7r%r%r&r ^sz&AbstractEventLoopPolicy.new_event_loopcCrc)z$Get the watcher for child processes.rdr7r%r%r&r frgz)AbstractEventLoopPolicy.get_child_watchercCrc)z$Set the watcher for child processes.rd)r watcherr%r%r&r jrgz)AbstractEventLoopPolicy.set_child_watcherN) r,rFrGrHrr r r r r%r%r%r&rMs  rc@sFeZdZdZdZGdddejZddZddZ d d Z d d Z dS) BaseDefaultEventLoopPolicyaDefault policy implementation for accessing the event loop. In this policy, each thread has its own event loop. However, we only automatically create an event loop by default for the main thread; other threads by default have no event loop. Other policies may have different rules (e.g. a single global event loop, or automatically creating an event loop per thread, or using some other notion of context to which an event loop is associated). Nc@seZdZdZdZdS)z!BaseDefaultEventLoopPolicy._LocalNF)r,rFrGr _set_calledr%r%r%r&_Local~srcCs||_dSr:)r_localr7r%r%r&r'sz#BaseDefaultEventLoopPolicy.__init__cCsX|jjdur|jjsttur|||jjdur(tdtj |jjS)zvGet the event loop for the current context. Returns an instance of EventLoop or raises an exception. Nz,There is no current event loop in thread %r.) rrr threadingZcurrent_threadZ main_threadr r RuntimeErrorrr7r%r%r&rs  z)BaseDefaultEventLoopPolicy.get_event_loopcCsd|j_||j_dS)zSet the event loop.TN)rrrrr%r%r&r s z)BaseDefaultEventLoopPolicy.set_event_loopcCs|S)zvCreate a new event loop. You must call set_event_loop() to make this the current event loop. ) _loop_factoryr7r%r%r&r z)BaseDefaultEventLoopPolicy.new_event_loop) r,rFrGrHrrlocalrr'rr r r%r%r%r&ros  rc@seZdZdZdS) _RunningLooprN)r,rFrGloop_pidr%r%r%r&rsrcCst}|dur td|S)zrReturn the running event loop. Raise a RuntimeError if there is none. This function is thread-specific. Nzno running event loop)rrr#r%r%r&rsrcCs*tj\}}|dur|tkr|SdSdS)zReturn the running event loop or None. This is a low-level function intended to be used by event loops. This function is thread-specific. N) _running_looprosgetpid)Z running_looppidr%r%r&rs rcCs|tft_dS)zSet the running event loop. This is a low-level function intended to be used by event loops. This function is thread-specific. N)rrrrrr%r%r&r sr cCsTttdurddlm}|aWddSWddS1s#wYdS)NrDefaultEventLoopPolicy)_lock_event_loop_policyrrr%r%r&_init_event_loop_policys "rcCstdurttS)z"Get the current event loop policy.N)rrr%r%r%r&rsrcCs|adS)zZSet the current event loop policy. If policy is None, the default policy is restored.N)r)Zpolicyr%r%r&rrrcCstS)aGReturn an asyncio event loop. When called from a coroutine or a callback (e.g. scheduled with call_soon or similar API), this function will always return the running event loop. If there is no running event loop set, the function will return the result of `get_event_loop_policy().get_event_loop()` call. )_py__get_event_loopr%r%r%r&rs rcCst}|dur |StSr:)rrr) stacklevelZ current_loopr%r%r&_get_event_loops rcCst|dS)zCEquivalent to calling get_event_loop_policy().set_event_loop(loop).N)rr rr%r%r&r sr cC tS)z?Equivalent to calling get_event_loop_policy().new_event_loop().)rr r%r%r%r&r  r cCr)zBEquivalent to calling get_event_loop_policy().get_child_watcher().)rr r%r%r%r&r rr cCs t|S)zMEquivalent to calling get_event_loop_policy().set_child_watcher(watcher).)rr )rr%r%r&r s r )rr rrr)r).rH__all__rrrrrrrrrrrrrrrZLockrrrrrrr rrrrrr r r r Z_py__get_running_loopZ_py__set_running_loopZ_py_get_running_loopZ_py_get_event_looprZ_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&sb  J@*"9