B `+@s4ddlZddlZddlZddlmZmZddlmZmZm Z m Z ddl m Z ddl mZddlmZyddlmZWnek reZYnXd ZGd d d eZdd d dZGdddeZGdddeZGdddeZGdddeZGdddeZGdddeZGdddeZGdddeZ dS)N)ABCabstractmethod)AnyListOptionalSet)URL) Application)Server) SSLContext) BaseSiteTCPSiteUnixSite NamedPipeSiteSockSite BaseRunner AppRunner ServerRunner GracefulExitc@seZdZdZdS)rr N)__name__ __module__ __qualname__coderrm/private/var/folders/7j/8686xlfs15q3tgljmghtvg0r0000gn/T/pip-target-isidps9b/lib/python/aiohttp/web_runner.pyrsr)returncCs tdS)N)rrrrr_raise_graceful_exit#src@sjeZdZdZdddddeeeedddd Ze e e d d d Z e dd d dZ dd ddZdS)r )_runner_shutdown_timeout _ssl_context_backlog_servergN@N)shutdown_timeout ssl_contextbacklogr)runnerr$r%r&rcCs4|jdkrtd||_||_||_||_d|_dS)Nz(Call runner.setup() before making a site)server RuntimeErrorrrr r!r")selfr'r$r%r&rrr__init__*s zBaseSite.__init__)rcCsdS)Nr)r*rrrname:sz BaseSite.namecs|j|dS)N)r _reg_site)r*rrrstart?szBaseSite.startcs|j||jdkr&|j|dS|jt|jdrL|jIdH|jIdH|jjsht |jj|j IdH|j|dS)N wait_closed) r _check_siter" _unreg_siteclosehasattrr/shutdownr(AssertionErrorr)r*rrrstopCs      z BaseSite.stop)rrr __slots__floatrr intr+propertyrstrr,r.r6rrrrr 's r c s~eZdZdZddddddddeeeeeeeeee ee dd fdd Z e ed d d Z dd fd d Z ZS)r)_host_port_reuse_address _reuse_portNgN@r#)r$r%r& reuse_address reuse_portr) r'hostportr$r%r&r@rArc sFtj||||d||_|dkr0|jr,dnd}||_||_||_dS)N)r$r%r&i i)superr+r<r r=r>r?) r*r'rBrCr$r%r&r@rA) __class__rrr+Us zTCPSite.__init__)rcCs8|jr dnd}|jdkrdn|j}ttj|||jdS)Nhttpshttpz0.0.0.0)schemerBrC)r r<r;rbuildr=)r*rHrBrrrr,nsz TCPSite.namec s\tIdHt}|jj}|dk s,t|j||j|j |j |j |j |j dIdH|_dS)N)sslr&r@rA)rDr.asyncioget_event_looprr(r5 create_serverr<r=r r!r>r?r")r*loopr()rErrr.ts z TCPSite.start)NN)rrrr7rr;r9r8r boolr+r:r,r. __classcell__rr)rErrRs*rcsbeZdZdZdddddeeeeeddfdd Z e ed d d Z dd fd d Z Z S)r)_pathgN@Nr#)r$r%r&r)r'pathr$r%r&rcstj||||d||_dS)N)r$r%r&)rDr+rQ)r*r'rRr$r%r&)rErrr+s zUnixSite.__init__)rcCs |jr dnd}|d|jdS)NrFrGz://unix::)r rQ)r*rHrrrr,sz UnixSite.namecsPtIdHt}|jj}|dk s,t|j||j|j |j dIdH|_ dS)N)rJr&) rDr.rKrLrr(r5Zcreate_unix_serverrQr r!r")r*rNr()rErrr.s  zUnixSite.start)rrrr7r;r8rr r9r+r:r,r.rPrr)rErrs rcsVeZdZdZdddeeddfddZeed d d Zdd fd d Z Z S)r)rQgN@)r$rN)r'rRr$rcs6t}t|tjstdtj||d||_dS)Nz8Named Pipes only available in proactorloop under windows)r$)rKrL isinstanceZProactorEventLoopr)rDr+rQ)r*r'rRr$rN)rErrr+s  zNamedPipeSite.__init__)rcCs|jS)N)rQ)r*rrrr,szNamedPipeSite.namecsNtIdHt}|jj}|dk s,t|||jIdH}|d|_ dS)Nr) rDr.rKrLrr(r5Zstart_serving_piperQr")r*rNr(r")rErrr.s  zNamedPipeSite.start) rrrr7r;r8r+r:r,r.rPrr)rErrs   rcsdeZdZdZdddddejeeeeddfdd Z e e d d d Z dd fd d Z ZS)r)_sock_namegN@Nr#)r$r%r&r)r'sockr$r%r&rc stj||||d||_|jr$dnd}ttdrT|jtjkrT|d|d}n(|dd\}} t t j ||| d}||_ dS) N)r$r%r&rFrGAF_UNIXz://unix:rS)rHrBrC) rDr+rUr r3socketfamilyrX getsocknamer;rrIrV) r*r'rWr$r%r&rHr,rBrC)rErrr+s zSockSite.__init__)rcCs|jS)N)rV)r*rrrr,sz SockSite.namecsPtIdHt}|jj}|dk s,t|j||j|j |j dIdH|_ dS)N)rWrJr&) rDr.rKrLrr(r5rMrUr r!r")r*rNr()rErrr.s  zSockSite.start)rrrr7rZr8rr r9r+r:r;r,r.rPrr)rErrsrc@seZdZdZddeeddddZeee dd d Z ee edd d Z ee edd dZddddZeddddZddddZee dddZeddddZeddddZeddddZeddddZdS) r)_handle_signals_kwargsr"_sitesF)handle_signalsN)r`kwargsrcKs||_||_d|_g|_dS)N)r]r^r"r_)r*r`rarrrr+szBaseRunner.__init__)rcCs|jS)N)r")r*rrrr(szBaseRunner.servercCsPg}xF|jD]<}|j}|dk r |j}|dk r x|D]}||q2Wq W|S)N)r_r"socketsappendr\)r*retsiter(rbrWrrr addressess  zBaseRunner.addressescCs t|jS)N)setr_)r*rrrsitesszBaseRunner.sitescsXt}|jrDy |tjt|tjtWntk rBYnX| IdH|_ dS)N) rKrLr]Zadd_signal_handlersignalSIGINTrSIGTERMNotImplementedError _make_serverr")r*rNrrrsetupszBaseRunner.setupcsdS)Nr)r*rrrr4szBaseRunner.shutdowncst}|jdkrdSx t|jD]}|IdHq"W|IdHd|_|jry|t j |t j Wnt k rYnXdS)N) rKrLr"listr_r6_cleanup_serverr]Zremove_signal_handlerrirjrkrl)r*rNrerrrcleanups  zBaseRunner.cleanupcsdS)Nr)r*rrrrm0szBaseRunner._make_servercsdS)Nr)r*rrrrp4szBaseRunner._cleanup_server)rercCs.||jkrtd|d||j|dS)NzSite z! is already registered in runner )r_r)rc)r*rerrrr-8s zBaseRunner._reg_sitecCs"||jkrtd|d|dS)NzSite z is not registered in runner )r_r))r*rerrrr0=s zBaseRunner._check_sitecCs.||jkrtd|d||j|dS)NzSite z is not registered in runner )r_r)remove)r*rerrrr1As zBaseRunner._unreg_site)rrrr7rOrr+r:rr r(rrfrr rhrnrr4rqrmrpr-r0r1rrrrrs&  rcs`eZdZdZdZddeeeddfddZdd d d Z ed d d Z dd ddZ Z S)rzLow-level web server runner) _web_serverF)r`N) web_serverr`rarc s tjfd|i|||_dS)Nr`)rDr+rs)r*rtr`ra)rErrr+LszServerRunner.__init__)rcsdS)Nr)r*rrrr4RszServerRunner.shutdowncs|jS)N)rs)r*rrrrmUszServerRunner._make_servercsdS)Nr)r*rrrrpXszServerRunner._cleanup_server) rrr__doc__r7r rOrr+r4rmrprPrr)rErrGs rcsreZdZdZdZddeeeddfddZe ed d d Z dd d d Z e d ddZ dd ddZZS)rzWeb Application runner)_appF)r`N)appr`rarc s8tjfd|i|t|ts.td|||_dS)Nr`z?The first argument should be web.Application instance, got {!r})rDr+rTr TypeErrorformatrv)r*rwr`ra)rErrr+as  zAppRunner.__init__)rcCs|jS)N)rv)r*rrrrwlsz AppRunner.appcs|jIdHdS)N)rvr4)r*rrrr4pszAppRunner.shutdowncsRt}|j||jj|jIdH|j|jjfd|i|jS)NrN) rKrLrvZ _set_loopZ on_startupfreezeZstartupZ _make_handlerr^)r*rNrrrrmss    zAppRunner._make_servercs|jIdHdS)N)rvrq)r*rrrrp|szAppRunner._cleanup_server)rrrrur7r rOrr+r:rwr4r rmrprPrr)rErr\s   r)!rKrirZabcrrtypingrrrrZyarlrZweb_appr rtr rJr ImportErrorobject__all__ SystemExitrrr rrrrrrrrrrrs,     +2#)\