
    *Gj1                        d dl Z d dlZd dlZd dlZd dlmZmZ d dlmZm	Z	 d dl
mZ ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZ erd dlmZ n	 d dlmZ n# e$ r eZY nw xY wdZ G d de          Zd!dZ G d de          Z G d de          Z G d de          Z G d de          Z  G d de          Z! G d de          Z" G d de"          Z# G d d e"          Z$dS )"    N)ABCabstractmethod)TYPE_CHECKINGAny)URL   )AbstractAccessLogger)PathLike)Application)AccessLogger)Server)
SSLContext)	BaseSiteTCPSiteUnixSiteNamedPipeSiteSockSite
BaseRunner	AppRunnerServerRunnerGracefulExitc                       e Zd ZdZdS )r   r   N)__name__
__module____qualname__code     Z/home/rurouni/.hermes/hermes-agent/venv/lib/python3.11/site-packages/aiohttp/web_runner.pyr   r   %   s        DDDr   r   returnc                      t                      N)r   r   r   r   _raise_graceful_exitr#   )   s    
..r   c                       e Zd ZdZddddddded	edz  d
eddf
dZee	de
fd                        Ze	dd            ZddZdS )r   )_runner_ssl_context_backlog_server      N@N   shutdown_timeoutssl_contextbacklogrunnerr   r,   r-   r.   r    c                    |j         t          d          |dk    r%d}t          j        |t          d           ||_        || _        || _        || _        d | _	        d S )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(   )selfr/   r,   r-   r.   msgs         r   __init__zBaseSite.__init__0   sl     = IJJJt##@CM#1a@@@@'7F$'6:r   c                     d S r"   r   r9   s    r   namezBaseSite.nameC   s	     	r   c                 >   K   | j                             |            d S r"   )r%   	_reg_siter=   s    r   startzBaseSite.startH   s"      t$$$$$r   c                    K   | j                             |            | j        | j                                         | j                             |            d S r"   )r%   _check_siter(   close_unreg_siter=   s    r   stopzBaseSite.stopL   sT        &&&<#L     &&&&&r   r    N)r   r   r   	__slots__floatr   intr;   propertyr   strr>   rA   rF   r   r   r   r   r   -   s        BI #')-; ; ;;  	;
  $&; ; 
; ; ; ;& c    ^ X % % % ^%' ' ' ' ' 'r   r   c                        e Zd ZdZ	 	 ddddddddddedz  d	edz  d
ededz  dededz  dedz  ddf fdZ	e
defd            Ze
defd            Zd fdZ xZS )r   )_host_port_bound_port_reuse_address_reuse_portNr)   r*   )r,   r-   r.   reuse_address
reuse_portr/   r   hostportr,   r-   r.   rS   rT   r    c                    t                                          ||||           || _        || j        rdnd}|| _        d | _        || _        || _        d S )Nr+   i   i  )superr;   rN   r&   rO   rP   rQ   rR   )
r9   r/   rU   rV   r,   r-   r.   rS   rT   	__class__s
            r   r;   zTCPSite.__init__W   sv     	-#	 	 	
 	
 	
 
<,644$D
'++%r   c                 ,    | j         | j         S | j        S )a  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.
        )rP   rO   r=   s    r   rV   zTCPSite.portq   s     '##zr   c                     | j         rdnd}| j        sdn| j        }t          t          j        ||| j                            S )Nhttpshttpz0.0.0.0schemerU   rV   )r&   rN   rL   r   buildrV   )r9   r_   rU   s      r   r>   zTCPSite.name   sF     -96 $
:yy
39FDIFFFGGGr   c           	        K   t                                                       d {V  t          j                    }| j        j        }|J |                    || j        | j        | j	        | j
        | j        | j                   d {V | _        | j        j        r1| j        j        d                                         d         | _        d S | j        | _        d S )N)sslr.   rS   rT   r   r   )rX   rA   asyncioget_event_loopr%   r3   create_serverrN   rO   r&   r'   rQ   rR   r(   socketsgetsocknamerP   r9   loopr3   rY   s      r   rA   zTCPSite.start   s      ggmmoo%''$!!!!//JJ!M-' 0 
 
 
 
 
 
 
 
 < 	*#|3A6BBDDQGD#zDr   )NNrG   )r   r   r   rH   rL   rJ   rI   r   boolr;   rK   rV   r>   rA   __classcell__rY   s   @r   r   r   T   sH       RI
  	& #')-%)"&& & && Dj& Dj	&  &  $&& & d{& 4K& 
& & & & & &4 c    X Hc H H H XH
* * * * * * * * * *r   r   c                   t     e Zd ZdZddddddded	ed
edz  deddf fdZe	de
fd            Zd fdZ xZS )r   _pathr)   Nr*   r+   r/   r   pathr,   r-   r.   r    c                `    t                                          ||||           || _        d S )Nr+   )rX   r;   ro   )r9   r/   rp   r,   r-   r.   rY   s         r   r;   zUnixSite.__init__   s?     	-#	 	 	
 	
 	
 


r   c                 2    | j         rdnd}| d| j         dS )Nr\   r]   ://unix::)r&   ro   )r9   r_   s     r   r>   zUnixSite.name   s,     -96//$*////r   c                   K   t                                                       d {V  t          j                    }| j        j        }|J |                    || j        | j        | j	                   d {V | _
        d S )N)rb   r.   )rX   rA   rc   rd   r%   r3   create_unix_serverro   r&   r'   r(   rh   s      r   rA   zUnixSite.start   s      ggmmoo%''$!!!!44J!M	 5 
 
 
 
 
 
 
 
r   rG   )r   r   r   rH   r
   rI   r   rJ   r;   rK   rL   r>   rA   rk   rl   s   @r   r   r      s        I #')-   
    $&  
     " 0c 0 0 0 X0

 

 

 

 

 

 

 

 

 

r   r   c            	       b     e Zd ZdZdddddededd	f fd
Zedefd            Zd fdZ	 xZ
S )r   rn   r)   r,   r/   r   rp   r,   r    Nc                    t          j                    }t          |t           j                  st	          d          t                                          ||           || _        d S )Nz9Named Pipes only available in proactor loop under windowsrx   )rc   rd   
isinstanceProactorEventLoopr4   rX   r;   ro   )r9   r/   rp   r,   ri   rY   s        r   r;   zNamedPipeSite.__init__   so     %'''+
 
 	 K   	2BCCC


r   c                     | j         S r"   rn   r=   s    r   r>   zNamedPipeSite.name   
    zr   c                    K   t                                                       d {V  t          j                    }| j        j        }|J |                    || j                   d {V }|d         | _        d S Nr   )	rX   rA   rc   rd   r%   r3   start_serving_pipero   r(   )r9   ri   r3   r(   rY   s       r   rA   zNamedPipeSite.start   s      ggmmoo%''$!!!//DJ
 
 
 
 
 
 
 
 qzr   rG   )r   r   r   rH   rL   rI   r;   rK   r>   rA   rk   rl   s   @r   r   r      s        I MQ  "*-DI	      c    X" " " " " " " " " "r   r   c                   ~     e Zd ZdZdddddddej        d	ed
edz  deddf fdZe	de
fd            Zd fdZ xZS )r   )_sock_namer)   Nr*   r+   r/   r   sockr,   r-   r.   r    c                   t                                          ||||           || _        | j        rdnd}t	          t
          d          r0|j        t
          j        k    r| d|                                 d}nC|                                d d         \  }}	t          t          j        |||	                    }|| _        d S )	Nr+   r\   r]   AF_UNIXrs   rt   r1   r^   )rX   r;   r   r&   hasattrsocketfamilyr   rg   rL   r   r`   r   )r9   r/   r   r,   r-   r.   r_   r>   rU   rV   rY   s             r   r;   zSockSite.__init__   s     	-#	 	 	
 	
 	
 
 -9669%% 	G$+*G*G;;d&6&6&8&8;;;DD))++BQB/JD$syTEEEFFD


r   c                     | j         S r"   )r   r=   s    r   r>   zSockSite.name   r}   r   c                   K   t                                                       d {V  t          j                    }| j        j        }|J |                    || j        | j        | j	                   d {V | _
        d S )N)r   rb   r.   )rX   rA   rc   rd   r%   r3   re   r   r&   r'   r(   rh   s      r   rA   zSockSite.start   s      ggmmoo%''$!!!!//):DM 0 
 
 
 
 
 
 
 
r   rG   )r   r   r   rH   r   rI   r   rJ   r;   rK   rL   r>   rA   rk   rl   s   @r   r   r      s        "I #')-   m
    $&  
     0 c    X
 
 
 
 
 
 
 
 
 
r   r   c            	       0   e Zd ZdZddddedededd	fd
Zede	d	z  fd            Z
edee         fd            Zedee         fd            ZddZedd            ZddZede	fd            Zedd            Zdedd	fdZdedd	fdZdedd	fdZd	S )r   _handle_signals_kwargsr(   _sitesr8   Fr)   )handle_signalsr,   r   r,   kwargsr    Nc                L    || _         || _        d | _        g | _        || _        d S r"   r   )r9   r   r,   r   s       r   r;   zBaseRunner.__init__
  s/      .&*&(!1r   c                     | j         S r"   )r(   r=   s    r   r3   zBaseRunner.server  s
    |r   c                     g }| j         D ]@}|j        }|5|j        }|,|D ])}|                    |                                           *A|S r"   )r   r(   rf   appendrg   )r9   retsiter3   rf   r   s         r   	addresseszBaseRunner.addresses  sh    K 	7 	7D\F! .& ' 7 7

4#3#3#5#56666
r   c                 *    t          | j                  S r"   )setr   r=   s    r   siteszBaseRunner.sites'  s    4;r   c                 4  K   t          j                    }| j        r\	 |                    t          j        t                     |                    t          j        t                     n# t          $ r Y nw xY w| 	                                 d {V | _
        d S r"   )rc   rd   r   add_signal_handlersignalSIGINTr#   SIGTERMNotImplementedError_make_serverr(   r9   ri   s     r   setupzBaseRunner.setup+  s      %'' 	''7KLLL''8LMMMM&    "..00000000s   A
A) )
A65A6c                 
   K   dS )z8Call any shutdown hooks to help server close gracefully.Nr   r=   s    r   shutdownzBaseRunner.shutdown8  s
        r   c                 x  K   t          | j                  D ]}|                                 d {V  | j        rrt	          j        d           d {V  | j                                         |                                  d {V  | j                            | j                   d {V  | 	                                 d {V  d | _        | j
        ret	          j                    }	 |                    t          j                   |                    t          j                   d S # t           $ r Y d S w xY wd S r   )listr   rF   r(   rc   sleeppre_shutdownr   r8   _cleanup_serverr   get_running_loopremove_signal_handlerr   r   r   r   )r9   r   ri   s      r   cleanupzBaseRunner.cleanup<  sy     
 %% 	 	D))++< 	@ -"""""""""L%%'''--//!!!!!!!,''(>?????????""$$$$$$$$$ 	+--D**6=999**6>:::::&   	 	s   )>D) )
D76D7c                 
   K   d S r"   r   r=   s    r   r   zBaseRunner._make_serverW        r   c                 
   K   d S r"   r   r=   s    r   r   zBaseRunner._cleanup_server[  r   r   r   c                 v    || j         v rt          d| d|            | j                             |           d S )NSite z! is already registered in runner )r   r4   r   r9   r   s     r   r@   zBaseRunner._reg_site_  sJ    4;TtTTdTTUUU4     r   c                 B    || j         vrt          d| d|            d S Nr   z is not registered in runner )r   r4   r   s     r   rC   zBaseRunner._check_sited  s6    t{""PtPP$PPQQQ #"r   c                 v    || j         vrt          d| d|            | j                             |           d S r   )r   r4   remover   s     r   rE   zBaseRunner._unreg_siteh  sJ    t{""PtPP$PPQQQ4     r   rG   )r   r   r   rH   rj   rI   r   r;   rK   r   r3   r   r   r   r   r   r   r   r   r   r   r   r@   rC   rE   r   r   r   r   r     s       XI
  %"&	2 2 2 2  	2
 2 
2 2 2 2     X 	49 	 	 	 X	  s8}       X 1 1 1 1 G G G ^G   6 F    ^    ^!h !4 ! ! ! !
R RT R R R R! !T ! ! ! ! ! !r   r   c            	       Z     e Zd ZdZdZdddedededd	f fd
ZddZ	defdZ
ddZ xZS )r   zLow-level web server runner_web_serverF)r   
web_serverr   r   r    Nc                L     t                      j        dd|i| || _        d S )Nr   r   )rX   r;   r   )r9   r   r   r   rY   s       r   r;   zServerRunner.__init__s  s5     	AAA&AAA%r   c                 
   K   d S r"   r   r=   s    r   r   zServerRunner.shutdowny        r   c                    K   | j         S r"   r   r=   s    r   r   zServerRunner._make_server|  s      r   c                 
   K   d S r"   r   r=   s    r   r   zServerRunner._cleanup_server  r   r   rG   )r   r   r   __doc__rH   r   rj   r   r;   r   r   r   rk   rl   s   @r   r   r   n  s        %% I =B& & & &59&MP&	& & & & & &    F               r   r   c                        e Zd ZdZdZdeddededee	         de
d	d
f
 fdZed	efd            ZddZd	efdZddZ xZS )r   zWeb Application runner_appF)r   access_log_classappr   r   r   r    Nc                     t                      j        dd|i| t          |t                    st	          d|          || j        d<   || _        d S )Nr   z;The first argument should be web.Application instance, got r   r   )rX   r;   rz   r   	TypeErrorr   r   )r9   r   r   r   r   rY   s        r   r;   zAppRunner.__init__  sp     	AAA&AAA#{++ 	UcUU   ,<'(			r   c                     | j         S r"   r   r=   s    r   r   zAppRunner.app  s
    yr   c                 H   K   | j                                          d {V  d S r"   )r   r   r=   s    r   r   zAppRunner.shutdown  s2      i  """""""""""r   c                 >  K   t          j                    }| j                            |           | j        j                                         | j                                         d {V  | j                                          | j        j        dd|i| j        S )Nri   r   )	rc   rd   r   	_set_loop
on_startupfreezestartup_make_handlerr   r   s     r   r   zAppRunner._make_server  s      %''	D!!!	##%%%i!!!!!!!!!	&ty&AADADLAAAr   c                 H   K   | j                                          d {V  d S r"   )r   r   r=   s    r   r   zAppRunner._cleanup_server  s2      i!!!!!!!!!!!r   rG   )r   r   r   r   rH   r   r   rj   typer	   r   r;   rK   r   r   r   r   r   rk   rl   s   @r   r   r     s          I  %7C   	
 34  
       [    X# # # #BF B B B B" " " " " " " "r   r   rG   )%rc   r   r   r5   abcr   r   typingr   r   yarlr   r	   typedefsr
   web_appr   web_logr   r   r   rb   r   ImportErrorobject__all__
SystemExitr   r#   r   r   r   r   r   r   r   r   r   r   r   <module>r      s       # # # # # # # # % % % % % % % %       % % % % % %                   ! ! ! ! ! !       """""""   



    :      $' $' $' $' $'s $' $' $'NB* B* B* B* B*h B* B* B*J#
 #
 #
 #
 #
x #
 #
 #
L" " " " "H " " ">&
 &
 &
 &
 &
x &
 &
 &
Rd! d! d! d! d! d! d! d!N    :   *&" &" &" &" &"
 &" &" &" &" &"s   A A A 