
    rp0j1                        S SK r S SKrS SKrS SKrS SKJrJr  S SKJrJ	r	  S SK
Jr  SSKJr  SSKJr  SSKJr  SS	KJr  SS
KJr  \(       a  S SKJr  O S SKJr  Sr " S S\5      rS S jr " S S\5      r " S S\5      r " S S\5      r " S S\5      r  " S S\5      r! " S S\5      r" " S S\"5      r# " S S\"5      r$g! \ a    \r Nuf = f)!    N)ABCabstractmethod)TYPE_CHECKINGAny)URL   )AbstractAccessLogger)PathLike)Application)AccessLogger)Server)
SSLContext)	BaseSiteTCPSiteUnixSiteNamedPipeSiteSockSite
BaseRunner	AppRunnerServerRunnerGracefulExitc                       \ rS rSrSrSrg)r   %   r    N)__name__
__module____qualname____firstlineno__code__static_attributes__r       L/home/wildlama/miniconda3/lib/python3.13/site-packages/aiohttp/web_runner.pyr   r   %   s    Dr!   r   c                      [        5       eN)r   r   r!   r"   _raise_graceful_exitr%   )   s
    
.r!   c                       \ rS rSrSrSSSS.SSS	\S
\S-  S\SS4
S jjr\	\
S\4S j5       5       r\
SS j5       rSS jrSrg)r   -   )_runner_ssl_context_backlog_server      N@N   shutdown_timeoutssl_contextbacklogrunnerr   r/   r0   r1   returnc                    UR                   c  [        S5      eUS:w  a"  Sn[        R                  " U[        SS9  X!l        Xl        X0l        X@l        S U l	        g )Nz(Call runner.setup() before making a siter,   z,shutdown_timeout should be set on BaseRunner   )
stacklevel)
serverRuntimeErrorwarningswarnDeprecationWarning_shutdown_timeoutr(   r)   r*   r+   )selfr2   r/   r0   r1   msgs         r"   __init__BaseSite.__init__0   sU     == IJJt#@CMM#1a@'7$'6:r!   c                     g r$   r   r=   s    r"   nameBaseSite.nameC   s     	r!   c                 B   #    U R                   R                  U 5        g 7fr$   )r(   	_reg_siterB   s    r"   startBaseSite.startH   s     t$s   c                    #    U R                   R                  U 5        U R                  b  U R                  R                  5         U R                   R	                  U 5        g 7fr$   )r(   _check_siter+   close_unreg_siterB   s    r"   stopBaseSite.stopL   sC       &<<#LL   &s   AA!)r*   r(   r+   r)   r3   N)r   r   r   r   	__slots__floatr   intr?   propertyr   strrC   rG   rM   r    r   r!   r"   r   r   -   s    BI #')-;;  	;
  $&; ; 
;& c    % %'r!   r   c                      ^  \ rS rSrSr  SSSSSSS.SSS	\S-  S
\S-  S\S\S-  S\S\	S-  S\	S-  SS4U 4S jjjjr
\S\4S j5       r\S\4S j5       rSU 4S jjrSrU =r$ )r   T   )_host_port_bound_port_reuse_address_reuse_portNr,   r-   )r/   r0   r1   reuse_address
reuse_portr2   r   hostportr/   r0   r1   r\   r]   r3   c                   > [         T	U ]  UUUUS9  X l        Uc  U R                  (       a  SOSnX0l        S U l        Xpl        Xl        g )Nr.   i   i  )superr?   rW   r)   rX   rY   rZ   r[   )
r=   r2   r^   r_   r/   r0   r1   r\   r]   	__class__s
            r"   r?   TCPSite.__init__W   sW     	-#	 	 	
 
<,,4$D
'++%r!   c                 L    U R                   b  U R                   $ U R                  $ )aV  The port the server is listening on.

If the server hasn't been started yet, this returns the requested port
(which might be 0 for a dynamic port).
After the server starts, it returns the actual bound port. This is
especially useful when port=0 was requested, as it allows retrieving the
dynamically assigned port after the site has started.
)rY   rX   rB   s    r"   r_   TCPSite.portq   s&     '###zzr!   c                     U R                   (       a  SOSnU R                  (       d  SOU R                  n[        [        R                  " XU R
                  S95      $ )Nhttpshttpz0.0.0.0schemer^   r_   )r)   rW   rT   r   buildr_   )r=   rj   r^   s      r"   rC   TCPSite.name   s<     --6 $

y

399FDIIFGGr!   c           
        >#    [         TU ]  5       I S h  vN   [        R                  " 5       nU R                  R
                  nUc   eUR                  UU R                  U R                  U R                  U R                  U R                  U R                  S9I S h  vN U l        U R                  R                  (       a0  U R                  R                  S   R                  5       S   U l        g U R                  U l        g  N Nh7f)N)sslr1   r\   r]   r   r   )ra   rG   asyncioget_event_loopr(   r7   create_serverrW   rX   r)   r*   rZ   r[   r+   socketsgetsocknamerY   r=   loopr7   rb   s      r"   rG   TCPSite.start   s     gmo%%'$$!!!!//JJJJ!!MM--'' 0 
 
 <<#||33A6BBDQGD#zzD! 	
s#   D	DBD	DA'D	D	)rY   rW   rX   rZ   r[   r+   )NNrO   )r   r   r   r   rP   rT   rR   rQ   r   boolr?   rS   r_   rC   rG   r    __classcell__rb   s   @r"   r   r   T   s    RI
  	& #')-%)"&&& Dj& Dj	&  &  $&& & d{& 4K& 
& &4 c   Hc H H
* *r!   r   c                      ^  \ rS rSrSrSSSS.SSS	\S
\S\S-  S\SS4U 4S jjjr	\
S\4S j5       rSU 4S jjrSrU =r$ )r      _pathr,   Nr-   r.   r2   r   pathr/   r0   r1   r3   c                2   > [         TU ]  UUUUS9  X l        g )Nr.   )ra   r?   r}   )r=   r2   r~   r/   r0   r1   rb   s         r"   r?   UnixSite.__init__   s*     	-#	 	 	
 
r!   c                 P    U R                   (       a  SOSnU SU R                   S3$ )Nrg   rh   ://unix::)r)   r}   )r=   rj   s     r"   rC   UnixSite.name   s(     --6$**Q//r!   c                   >#    [         TU ]  5       I S h  vN   [        R                  " 5       nU R                  R
                  nUc   eUR                  UU R                  U R                  U R                  S9I S h  vN U l
        g  Nr N7f)N)rn   r1   )ra   rG   ro   rp   r(   r7   create_unix_serverr}   r)   r*   r+   rt   s      r"   rG   UnixSite.start   s~     gmo%%'$$!!!!44JJ!!MM	 5 
 
	 	
s"   BBA'B=B
>B
Br}   r+   rO   )r   r   r   r   rP   r
   rQ   r   rR   r?   rS   rT   rC   rG   r    rx   ry   s   @r"   r   r      s    I #')- 
    $&  
 " 0c 0 0

 

r!   r   c            	       p   ^  \ rS rSrSrSS.SSS\S\S	S
4U 4S jjjr\S	\4S j5       r	SU 4S jjr
SrU =r$ )r      r|   r,   r/   r2   r   r~   r/   r3   Nc                   > [         R                  " 5       n[        U[         R                  5      (       d  [	        S5      e[
        TU ]  XS9  X l        g )Nz9Named Pipes only available in proactor loop under windowsr   )ro   rp   
isinstanceProactorEventLoopr8   ra   r?   r}   )r=   r2   r~   r/   ru   rb   s        r"   r?   NamedPipeSite.__init__   sT     %%''++
 
 K  	C
r!   c                     U R                   $ r$   r|   rB   s    r"   rC   NamedPipeSite.name       zzr!   c                    >#    [         TU ]  5       I S h  vN   [        R                  " 5       nU R                  R
                  nUc   eUR                  X R                  5      I S h  vN nUS   U l        g  Nb N7fNr   )	ra   rG   ro   rp   r(   r7   start_serving_piper}   r+   )r=   ru   r7   r+   rb   s       r"   rG   NamedPipeSite.start   sq     gmo%%'$$!!!//JJ
 
 qz 	
s"   A<A8AA<(A:)A<:A<r   rO   )r   r   r   r   rP   rT   rQ   r?   rS   rC   rG   r    rx   ry   s   @r"   r   r      s^    I MQ"*-DI	  c  " "r!   r   c                      ^  \ rS rSrSrSSSS.SSS	\R
                  S
\S\S-  S\SS4U 4S jjjr	\
S\4S j5       rSU 4S jjrSrU =r$ )r      )_sock_namer,   Nr-   r.   r2   r   sockr/   r0   r1   r3   c                b  > [         T
U ]  UUUUS9  X l        U R                  (       a  SOSn[	        [
        S5      (       a5  UR                  [
        R                  :X  a  U SUR                  5        S3nO3UR                  5       S S u  p[        [        R                  " XhU	S95      nXpl        g )	Nr.   rg   rh   AF_UNIXr   r   r5   ri   )ra   r?   r   r)   hasattrsocketfamilyr   rs   rT   r   rk   r   )r=   r2   r   r/   r0   r1   rj   rC   r^   r_   rb   s             r"   r?   SockSite.__init__   s     	-#	 	 	
 
 --669%%$++*GXXd&6&6&8%9;D))+BQ/JDsyyEFD
r!   c                     U R                   $ r$   )r   rB   s    r"   rC   SockSite.name   r   r!   c                   >#    [         TU ]  5       I S h  vN   [        R                  " 5       nU R                  R
                  nUc   eUR                  X R                  U R                  U R                  S9I S h  vN U l
        g  Nq N7f)N)r   rn   r1   )ra   rG   ro   rp   r(   r7   rq   r   r)   r*   r+   rt   s      r"   rG   SockSite.start   sy     gmo%%'$$!!!!//):):DMM 0 
 
	 	
s"   BBA&B<B	=B	B)r   r+   r   rO   )r   r   r   r   rP   r   rQ   r   rR   r?   rS   rT   rC   rG   r    rx   ry   s   @r"   r   r      s    "I #')- mm
    $&  
 0 c  
 
r!   r   c            	           \ rS rSrSrSSS.S\S\S\S	S
4S jjr\	S	\
S
-  4S j5       r\	S	\\   4S j5       r\	S	\\   4S j5       rSS jr\SS j5       rSS jr\S	\
4S j5       r\SS j5       rS\S	S
4S jrS\S	S
4S jrS\S	S
4S jrSrg
)r   i  _handle_signals_kwargsr+   _sitesr<   Fr,   )handle_signalsr/   r   r/   kwargsr3   Nc                D    Xl         X0l        S U l        / U l        X l        g r$   r   )r=   r   r/   r   s       r"   r?   BaseRunner.__init__
  s#      .&*&(!1r!   c                     U R                   $ r$   )r+   rB   s    r"   r7   BaseRunner.server  s    ||r!   c                     / nU R                    HM  nUR                  nUc  M  UR                  nUc  M%  U H"  nUR                  UR	                  5       5        M$     MO     U$ r$   )r   r+   rr   appendrs   )r=   retsiter7   rr   r   s         r"   	addressesBaseRunner.addresses  sY    KKD\\F! ..& '

4#3#3#56 !(   
r!   c                 ,    [        U R                  5      $ r$   )setr   rB   s    r"   sitesBaseRunner.sites'  s    4;;r!   c                 H  #    [         R                  " 5       nU R                  (       aI   UR                  [        R
                  [        5        UR                  [        R                  [        5        U R                  5       I S h  vN U l
        g ! [         a     N*f = f N7fr$   )ro   rp   r   add_signal_handlersignalSIGINTr%   SIGTERMNotImplementedError_make_serverr+   r=   ru   s     r"   setupBaseRunner.setup+  sy     %%'''7KL''8LM
 "..00	 '  1s5   'B"AB 2B"B 
B"
BB"BB"c                    #    g7f)z8Call any shutdown hooks to help server close gracefully.Nr   rB   s    r"   shutdownBaseRunner.shutdown8  s        c                   #    [        U R                  5       H  nUR                  5       I S h  vN   M     U R                  (       a}  [        R
                  " S5      I S h  vN   U R                  R                  5         U R                  5       I S h  vN   U R                  R                  U R                  5      I S h  vN   U R                  5       I S h  vN   S U l        U R                  (       aU  [        R                  " 5       n UR                  [        R                  5        UR                  [        R                  5        g g  GN N N N N{! [          a     g f = f7fr   )listr   rM   r+   ro   sleeppre_shutdownr   r<   _cleanup_serverr   get_running_loopremove_signal_handlerr   r   r   r   )r=   r   ru   s      r"   cleanupBaseRunner.cleanup<  s    
 %D))+ & << --"""LL%%'--/!!,,''(>(>???""$$$++-D**6==9**6>>:	   
 #!?$ ' s{   ,E&E2E&!E"1E&E,E& EE&E1E&>E 	E&E&E&E&E&
E# E&"E##E&c                    #    g 7fr$   r   rB   s    r"   r   BaseRunner._make_serverW       r   c                    #    g 7fr$   r   rB   s    r"   r   BaseRunner._cleanup_server[  r   r   r   c                 z    XR                   ;   a  [        SU SU  35      eU R                   R                  U5        g )NSite z! is already registered in runner )r   r8   r   r=   r   s     r"   rF   BaseRunner._reg_site_  s7    ;;tf,MdVTUU4 r!   c                 D    XR                   ;  a  [        SU SU  35      eg Nr   z is not registered in runner )r   r8   r   s     r"   rJ   BaseRunner._check_sited  s*    {{"tf,I$PQQ #r!   c                 z    XR                   ;  a  [        SU SU  35      eU R                   R                  U5        g r   )r   r8   remover   s     r"   rL   BaseRunner._unreg_siteh  s7    {{"tf,I$PQQ4 r!   )r   r   r+   r<   r   rO   )r   r   r   r   rP   rw   rQ   r   r?   rS   r   r7   r   r   r   r   r   r   r   r   r   r   r   rF   rJ   rL   r    r   r!   r"   r   r     s$   XI
  %"&	2 2  	2
 2 
2    	49 	 	  s8}    1 G G6 F    !h !4 !
R RT R! !T !r!   r   c            	       n   ^  \ rS rSrSrSrSS.S\S\S\S	S
4U 4S jjjr	SS jr
S	\4S jrSS jrSrU =r$ )r   in  zLow-level web server runner_web_serverF)r   
web_serverr   r   r3   Nc                6   > [         TU ]  " SSU0UD6  Xl        g )Nr   r   )ra   r?   r   )r=   r   r   r   rb   s       r"   r?   ServerRunner.__init__s  s      	AA&A%r!   c                    #    g 7fr$   r   rB   s    r"   r   ServerRunner.shutdowny       r   c                 "   #    U R                   $ 7fr$   r   rB   s    r"   r   ServerRunner._make_server|  s     s   c                    #    g 7fr$   r   rB   s    r"   r   ServerRunner._cleanup_server  r   r   rO   )r   r   r   r   __doc__rP   r   rw   r   r?   r   r   r   r    rx   ry   s   @r"   r   r   n  sV    % I =B& &59&MP&	& & F   r!   r   c                      ^  \ rS rSrSrSrS\S.S\S\S\	\
   S	\S
S4
U 4S jjjr\S
\4S j5       rSS jrS
\4S jrSS jrSrU =r$ )r   i  zWeb Application runner_appF)r   access_log_classappr   r   r   r3   Nc                   > [         TU ]  " SSU0UD6  [        U[        5      (       d  [	        SU< 35      eX0R
                  S'   Xl        g )Nr   z;The first argument should be web.Application instance, got r   r   )ra   r?   r   r   	TypeErrorr   r   )r=   r   r   r   r   rb   s        r"   r?   AppRunner.__init__  sR     	AA&A#{++McWU  ,<'(	r!   c                     U R                   $ r$   r   rB   s    r"   r   AppRunner.app  s    yyr!   c                 T   #    U R                   R                  5       I S h  vN   g  N7fr$   )r   r   rB   s    r"   r   AppRunner.shutdown  s     ii  """   (&(c                 ~  #    [         R                  " 5       nU R                  R                  U5        U R                  R                  R                  5         U R                  R                  5       I S h  vN   U R                  R                  5         U R                  R                  " SSU0U R                  D6$  NF7f)Nru   r   )	ro   rp   r   	_set_loop
on_startupfreezestartup_make_handlerr   r   s     r"   r   AppRunner._make_server  s     %%'		D!		##%ii!!!		yy&&ADADLLAA 	"s   A2B=4B;5AB=c                 T   #    U R                   R                  5       I S h  vN   g  N7fr$   )r   r   rB   s    r"   r   AppRunner._cleanup_server  s     ii!!!r   rO   )r   r   r   r   r   rP   r   r   rw   typer	   r   r?   rS   r   r   r   r   r   r    rx   ry   s   @r"   r   r     s     I  %7C 	
 34  
   [  #BF B" "r!   r   rO   )%ro   r   r   r9   abcr   r   typingr   r   yarlr   r	   typedefsr
   web_appr   web_logr   r   r   rn   r   ImportErrorobject__all__
SystemExitr   r%   r   r   r   r   r   r   r   r   r   r!   r"   <module>r     s        # %  %    ! "
: $'s $'NB*h B*J#
x #
L"H ">&
x &
Rd! d!N: *&"
 &"]  
s   C CC