
    5g
.                        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	m
Z
mZ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 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$y# e$ r eZY sw xY w)    N)ABCabstractmethod)TYPE_CHECKINGAnyListOptionalSet)URL   )PathLike)Application)Server)
SSLContext)	BaseSiteTCPSiteUnixSiteNamedPipeSiteSockSite
BaseRunner	AppRunnerServerRunnerGracefulExitc                       e Zd ZdZy)r   r   N)__name__
__module____qualname__code     h/var/www/python.lazyprojects.co.uk/rdoDiscordBot/venv/lib/python3.12/site-packages/aiohttp/web_runner.pyr   r   #   s    Dr   r   c                      t               N)r   r   r   r    _raise_graceful_exitr#   '   s
    
.r   c                   v    e Zd ZdZddddddded	ee   d
eddf
dZe	e
defd              Ze
dd       ZddZy)r   )_runner_ssl_context_backlog_server      N@N   shutdown_timeoutssl_contextbacklogrunnerr   r,   r-   r.   returnc                    |j                   t        d      |dk7  r%d}t        j                  |t        d       ||_        || _        || _        || _        d | _	        y )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__.   s]     == IJJt#@CMM#1a@'7F$'9=r   c                      y r"   r   r:   s    r    namezBaseSite.nameA   s     	r   c                 B   K   | j                   j                  |        y wr"   )r%   	_reg_siter>   s    r    startzBaseSite.startF   s     t$s   c                    K   | j                   j                  |        | j                  | j                  j                          | j                   j	                  |        y wr"   )r%   _check_siter(   close_unreg_siter>   s    r    stopzBaseSite.stopJ   sD       &<<#LL   &s   AA r0   N)r   r   r   	__slots__floatr   r   intr<   propertyr   strr?   rB   rG   r   r   r    r   r   +   s    BI #',0>>  	>
 j)> > 
>& c    % %'r   r   c                        e Zd ZdZ	 	 ddddddddddee   d	ee   d
edee   dedee	   dee	   ddf fdZ
edefd       Zd fdZ xZS )r   )_host_port_reuse_address_reuse_portNr)   r*   )r,   r-   r.   reuse_address
reuse_portr/   r   hostportr,   r-   r.   rS   rT   r0   c                    t         	|   ||||       || _        || j                  rdnd}|| _        || _        || _        y )Nr+   i   i  )superr<   rO   r&   rP   rQ   rR   )
r:   r/   rU   rV   r,   r-   r.   rS   rT   	__class__s
            r    r<   zTCPSite.__init__U   sW     	-#	 	 	
 
<,,4$D
+%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&   rO   rM   r
   buildrP   )r:   r^   rU   s      r    r?   zTCPSite.namen   s>     --6 $

y

399FDJJGHHr   c           	      `  K   t         |           d {    t        j                         }| j                  j
                  }|J |j                  || j                  | j                  | j                  | j                  | j                  | j                         d {   | _        y 7 7 w)N)sslr.   rS   rT   )rX   rB   asyncioget_event_loopr%   r4   create_serverrO   rP   r&   r'   rQ   rR   r(   r:   loopr4   rY   s      r    rB   zTCPSite.startt   s     gmo%%'$$!!!!//JJJJ!!MM--'' 0 
 
	 	
s"   B.B*B	B.B, B.,B.)NNrH   )r   r   r   rI   r   rM   rK   rJ   r   boolr<   rL   r?   rB   __classcell__rY   s   @r    r   r   R   s    CI
 #"	& #',0(,%)&& sm& sm	&  & j)& &  ~& TN& 
&2 Ic I I

 
r   r   c                   n     e Zd ZdZddddddded	ed
ee   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.   r0   c                :    t         |   ||||       || _        y )Nr+   )rX   r<   rl   )r:   r/   rm   r,   r-   r.   rY   s         r    r<   zUnixSite.__init__   s,     	-#	 	 	
 
r   c                 F    | j                   rdnd}| d| j                   dS )Nr[   r\   ://unix::)r&   rl   )r:   r^   s     r    r?   zUnixSite.name   s(     --6$**Q//r   c                   K   t         |           d {    t        j                         }| j                  j
                  }|J |j                  || j                  | j                  | j                         d {   | _
        y 7 s7 w)N)ra   r.   )rX   rB   rb   rc   r%   r4   create_unix_serverrl   r&   r'   r(   re   s      r    rB   zUnixSite.start   s     gmo%%'$$!!!!44JJ!!MM	 5 
 
	 	
"   BB	A(B>B?BBrH   )r   r   r   rI   r   rJ   r   r   rK   r<   rL   rM   r?   rB   rh   ri   s   @r    r   r      s|    I #',0 
   j)  
" 0c 0 0

 

r   r   c            	       \     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   rk   r)   r,   r/   r   rm   r,   r0   Nc                    t        j                         }t        |t         j                        st	        d      t
        |   ||       || _        y )Nz9Named Pipes only available in proactor loop under windowsrv   )rb   rc   
isinstanceProactorEventLoopr5   rX   r<   rl   )r:   r/   rm   r,   rf   rY   s        r    r<   zNamedPipeSite.__init__   sT     %%''++
 K  	2BC
r   c                     | j                   S r"   rk   r>   s    r    r?   zNamedPipeSite.name       zzr   c                    K   t         |           d {    t        j                         }| j                  j
                  }|J |j                  || j                         d {   }|d   | _        y 7 a7 wNr   )	rX   rB   rb   rc   r%   r4   start_serving_piperl   r(   )r:   rf   r4   r(   rY   s       r    rB   zNamedPipeSite.start   su     gmo%%'$$!!!//DJJ
 
 qz 	
s"   A;A7AA;'A9(A;9A;rH   )r   r   r   rI   rM   rJ   r<   rL   r?   rB   rh   ri   s   @r    r   r      sY    I MQ"*-DI	 c  " "r   r   c                        e Zd ZdZdddddddej                  d	ed
ee   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.   r0   c                l   t         
|   ||||       || _        | j                  rdnd}t	        t
        d      r;|j                  t
        j                  k(  r| d|j                          d}|| _        y |j                         d d \  }}	t        t        j                  |||	            }|| _        y )	Nr+   r[   r\   AF_UNIXrp   rq   r2   r]   )rX   r<   r   r&   hasattrsocketfamilyr   getsocknamerM   r
   r_   r   )r:   r/   r   r,   r-   r.   r^   r?   rU   rV   rY   s             r    r<   zSockSite.__init__   s     	-#	 	 	
 
 --669%$++*GXXd&6&6&8%9;D 
 ))+BQ/JD$syyTEFD
r   c                     | j                   S r"   )r   r>   s    r    r?   zSockSite.name   r{   r   c                   K   t         |           d {    t        j                         }| j                  j
                  }|J |j                  || j                  | j                  | j                         d {   | _
        y 7 s7 w)N)r   ra   r.   )rX   rB   rb   rc   r%   r4   rd   r   r&   r'   r(   re   s      r    rB   zSockSite.start   s}     gmo%%'$$!!!!//):):DMM 0 
 
	 	
rt   rH   )r   r   r   rI   r   rJ   r   r   rK   r<   rL   rM   r?   rB   rh   ri   s   @r    r   r      s    "I #',0 mm
   j)  
0 c  
 
r   r   c            	           e Zd ZdZddddedededd	fd
Zede	e
   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y	)r   _handle_signals_kwargsr(   _sitesr9   Fr)   )handle_signalsr,   r   r,   kwargsr0   Nc                J    || _         || _        d | _        g | _        || _        y r"   r   )r:   r   r,   r   s       r    r<   zBaseRunner.__init__   s)      .)-&(!1r   c                     | j                   S r"   )r(   r>   s    r    r4   zBaseRunner.server  s    ||r   c                     g }| j                   D ]F  }|j                  }||j                  }|!|D ]!  }|j                  |j	                                # H |S r"   )r   r(   socketsappendr   )r:   retsiter4   r   r   s         r    	addresseszBaseRunner.addresses  sY    KKD\\F! ..& '

4#3#3#56 !(   
r   c                 ,    t        | j                        S r"   )setr   r>   s    r    siteszBaseRunner.sites  s    4;;r   c                 :  K   t        j                         }| j                  rI	 |j                  t        j
                  t               |j                  t        j                  t               | j                          d {   | _
        y # t        $ r Y )w xY w7 wr"   )rb   rc   r   add_signal_handlersignalSIGINTr#   SIGTERMNotImplementedError_make_serverr(   r:   rf   s     r    setupzBaseRunner.setup  sz     %%'''7KL''8LM
 "..00	 '  1s5   !BAB
 ,B?B 
B
	BBBBc                    K   yw)z8Call any shutdown hooks to help server close gracefully.Nr   r>   s    r    shutdownzBaseRunner.shutdown#  s        c                   K   t        | j                        D ]  }|j                          d {     | j                  r|t	        j
                  d       d {    | j                  j                          | j                          d {    | j                  j                  | j                         d {    | j                          d {    d | _        | j                  rTt	        j                         }	 |j                  t        j                         |j                  t        j                         y y 7 7 7 7 7 u# t         $ r Y y w xY wwr}   )listr   rG   r(   rb   sleeppre_shutdownr   r9   _cleanup_serverr   get_running_loopremove_signal_handlerr   r   r   r   )r:   r   rf   s      r    cleanupzBaseRunner.cleanup'  s    
 %D))+ & << --"""LL%%'--/!!,,''(>(>???""$$$++-D**6==9**6>>:	   
 #!?$ ' s{   ,ED=*EE 1EE,E8E9EE+E=>E ;E EEEE	EEEEc                    K   y wr"   r   r>   s    r    r   zBaseRunner._make_serverB  	     r   c                    K   y wr"   r   r>   s    r    r   zBaseRunner._cleanup_serverF  r   r   r   c                 x    || j                   v rt        d| d|        | j                   j                  |       y )NSite z! is already registered in runner )r   r5   r   r:   r   s     r    rA   zBaseRunner._reg_siteJ  s9    4;;tf,MdVTUU4 r   c                 B    || j                   vrt        d| d|        y Nr   z is not registered in runner )r   r5   r   s     r    rD   zBaseRunner._check_siteO  s,    t{{"tf,I$PQQ #r   c                 x    || j                   vrt        d| d|        | j                   j                  |       y r   )r   r5   remover   s     r    rF   zBaseRunner._unreg_siteS  s9    t{{"tf,I$PQQ4 r   rH   )r   r   r   rI   rg   rJ   r   r<   rL   r   r   r4   r   r   r	   r   r   r   r   r   r   r   r   rA   rD   rF   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            	       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   r0   Nc                6    t        |   dd|i| || _        y )Nr   r   )rX   r<   r   )r:   r   r   r   rY   s       r    r<   zServerRunner.__init__^  s"     	AA&A%r   c                    K   y wr"   r   r>   s    r    r   zServerRunner.shutdownd  	     r   c                 "   K   | j                   S wr"   r   r>   s    r    r   zServerRunner._make_serverg  s     s   c                    K   y wr"   r   r>   s    r    r   zServerRunner._cleanup_serverj  r   r   rH   )r   r   r   __doc__rI   r   rg   r   r<   r   r   r   rh   ri   s   @r    r   r   Y  sL    % I =B& &59&MP&	& F  r   r   c            	       p     e Zd ZdZdZddded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_appFr   appr   r   r0   Nc                    t        |   dd|i| t        |t              st	        dj                  |            || _        y )Nr   z?The first argument should be web.Application instance, got {!r}r   )rX   r<   rx   r   	TypeErrorformatr   )r:   r   r   r   rY   s       r    r<   zAppRunner.__init__s  sH     	AA&A#{+%%+VC[  	r   c                     | j                   S r"   r   r>   s    r    r   zAppRunner.app~  s    yyr   c                 T   K   | j                   j                          d {    y 7 wr"   )r   r   r>   s    r    r   zAppRunner.shutdown  s     ii  """   (&(c                 |  K   t        j                         }| j                  j                  |       | j                  j                  j                          | j                  j                          d {    | j                  j                           | j                  j                  dd|i| j                  S 7 Fw)Nrf   r   )	rb   rc   r   	_set_loop
on_startupfreezestartup_make_handlerr   r   s     r    r   zAppRunner._make_server  s     %%'		D!		##%ii!!!		&tyy&&ADADLLAA 	"s   A1B<3B:4AB<c                 T   K   | j                   j                          d {    y 7 wr"   )r   r   r>   s    r    r   zAppRunner._cleanup_server  s     ii!!!r   rH   )r   r   r   r   rI   r   rg   r   r<   rL   r   r   r   r   r   rh   ri   s   @r    r   r   n  si     I ;@		37	KN			 [  #BF B"r   r   rH   )%rb   r   r   r6   abcr   r   typingr   r   r   r   r	   yarlr
   typedefsr   web_appr   r   r   ra   r   ImportErrorobject__all__
SystemExitr   r#   r   r   r   r   r   r   r   r   r   r   r    <module>r      s        # : :     "
: $'s $'N/
h /
d#
x #
L"H ">&
x &
Rd! d!N: *!"
 !"w
  
s   	B9 9CC