
    3Cf.                     ~   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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
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)Any	AwaitableCallable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     R/var/www/highfloat_scraper/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)   )selfr0   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.name?   s     	r    c                 B   K   | j                   j                  |        y wr#   )r&   	_reg_siter?   s    r!   startzBaseSite.startD   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.stopH   sD       &<<#LL   &s   AA r1   N)r   r   r   	__slots__floatr	   r   intr=   propertyr   strr@   rC   rH   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_portr0   r   hostportr-   r.   r/   rT   rU   r1   c                    t         	|   ||||       || _        || j                  rdnd}|| _        || _        || _        y )Nr,   i   i  )superr=   rP   r'   rQ   rR   rS   )
r;   r0   rV   rW   r-   r.   r/   rT   rU   	__class__s
            r!   r=   zTCPSite.__init__S   sW     	-#	 	 	
 
<,,4$D
+%r    c                     | j                   rdnd}| j                  dn| j                  }t        t        j                  ||| j
                              S )Nhttpshttpz0.0.0.0schemerV   rW   )r'   rP   rN   r   buildrQ   )r;   r_   rV   s      r!   r@   zTCPSite.namel   sA     --6 JJ.yDJJ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/   rT   rU   )rY   rC   asyncioget_event_loopr&   r5   create_serverrP   rQ   r'   r(   rR   rS   r)   r;   loopr5   rZ   s      r!   rC   zTCPSite.startr   s     gmo%%'$$!!!!//JJJJ!!MM--'' 0 
 
	 	
s"   B.B*B	B.B, B.,B.)NNrI   )r   r   r   rJ   r	   rN   rL   rK   r   boolr=   rM   r@   rC   __classcell__rZ   s   @r!   r   r   P   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,   r0   r   pathr-   r.   r/   r1   c                :    t         |   ||||       || _        y )Nr,   )rY   r=   rm   )r;   r0   rn   r-   r.   r/   rZ   s         r!   r=   zUnixSite.__init__   s,     	-#	 	 	
 
r    c                 F    | j                   rdnd}| d| j                   dS )Nr\   r]   ://unix::)r'   rm   )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)rb   r/   )rY   rC   rc   rd   r&   r5   create_unix_serverrm   r'   r(   r)   rf   s      r!   rC   zUnixSite.start   s     gmo%%'$$!!!!44JJ!!MM	 5 
 
	 	
"   BB	A(B>B?BBrI   )r   r   r   rJ   r   rK   r	   r   rL   r=   rM   rN   r@   rC   ri   rj   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   rl   r*   r-   r0   r   rn   r-   r1   Nc                    t        j                         }t        |t         j                        st	        d      t
        |   ||       || _        y )Nz8Named Pipes only available in proactorloop under windowsrw   )rc   rd   
isinstanceProactorEventLoopr6   rY   r=   rm   )r;   r0   rn   r-   rg   rZ   s        r!   r=   zNamedPipeSite.__init__   sT     %%''++
 M  	2BC
r    c                     | j                   S r#   rl   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   )	rY   rC   rc   rd   r&   r5   start_serving_piperm   r)   )r;   rg   r5   r)   rZ   s       r!   rC   zNamedPipeSite.start   su     gmo%%'$$!!!//DJJ
 
 qz 	
s"   A;A7AA;'A9(A;9A;rI   )r   r   r   rJ   rN   rK   r=   rM   r@   rC   ri   rj   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,   r0   r   sockr-   r.   r/   r1   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_UNIXrq   rr   r3   r^   )rY   r=   r   r'   hasattrsocketfamilyr   getsocknamerN   r   r`   r   )r;   r0   r   r-   r.   r/   r_   r@   rV   rW   rZ   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   rb   r/   )rY   rC   rc   rd   r&   r5   re   r   r'   r(   r)   rf   s      r!   rC   zSockSite.start   s}     gmo%%'$$!!!!//):):DMM 0 
 
	 	
ru   rI   )r   r   r   rJ   r   rK   r	   r   rL   r=   rM   rN   r@   rC   ri   rj   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   shutdown_callback_handle_signals_kwargsr)   _sitesr:   Fr*   )handle_signalsr-   r   r-   kwargsr1   Nc                X    d | _         || _        || _        d | _        g | _        || _        y r#   r   )r;   r   r-   r   s       r!   r=   zBaseRunner.__init__   s3     KO-)-&(!1r    c                     | j                   S r#   )r)   r?   s    r!   r5   zBaseRunner.server  s    ||r    c                     g }| j                   D ]F  }|j                  }||j                  }|!|D ]!  }|j                  |j	                                # H |S r#   )r   r)   socketsappendr   )r;   retsiter5   r   r   s         r!   	addresseszBaseRunner.addresses  sc    KK 	7D\\F! ..& ' 7

4#3#3#567	7 
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#   )rc   rd   r   add_signal_handlersignalSIGINTr$   SIGTERMNotImplementedError_make_serverr)   r;   rg   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                  rt	        j
                  d       d {    | j                  j                          | j                          d {    | j                  r| j                          d {    | j                  j                  | j                         d {    | j                          d {    d | _        | j                  rTt	        j                         }	 |j                  t        j                         |j                  t        j                          y y 7 37 7 7 7 7 x# t"        $ r Y y w xY wwr~   )listr   rH   r)   rc   sleeppre_shutdownr   r   r:   _cleanup_serverr   get_running_loopremove_signal_handlerr   r   r   r   )r;   r   rg   s      r!   cleanupzBaseRunner.cleanup-  s2    
 % 	D))+	 << --"""LL%%'--/!!%%,,...,,''(>(>???""$$$++-D**6==9**6>>:	  ! 
 #! /?$ ' s   ,E>E!*E>E$1E>E'#E>/E)0,E>E+E>4E-5+E>!>E/ E>$E>'E>)E>+E>-E>/	E;8E>:E;;E>c                    K   y wr#   r   r?   s    r!   r   zBaseRunner._make_serverL  	     r   c                    K   y wr#   r   r?   s    r!   r   zBaseRunner._cleanup_serverP  r   r   r   c                 x    || j                   v rt        d| d|        | j                   j                  |       y )NSite z! is already registered in runner )r   r6   r   r;   r   s     r!   rB   zBaseRunner._reg_siteT  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   r6   r   s     r!   rE   zBaseRunner._check_siteY  s,    t{{"tf,I$PQQ #r    c                 x    || j                   vrt        d| d|        | j                   j                  |       y r   )r   r6   remover   s     r!   rG   zBaseRunner._unreg_site]  s9    t{{"tf,I$PQQ4 r    rI   )r   r   r   rJ   rh   rK   r   r=   rM   r	   r   r5   r   r   r
   r   r   r   r   r   r   r   r   rB   rE   rG   r   r    r!   r   r      s'   I  %"&	2 2  	2
 2 
2 (   	49 	 	  s8}    1 G G> 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   r1   Nc                6    t        |   dd|i| || _        y )Nr   r   )rY   r=   r   )r;   r   r   r   rZ   s       r!   r=   zServerRunner.__init__h  s"     	AA&A%r    c                    K   y wr#   r   r?   s    r!   r   zServerRunner.shutdownn  	     r   c                 "   K   | j                   S wr#   r   r?   s    r!   r   zServerRunner._make_serverq  s     s   c                    K   y wr#   r   r?   s    r!   r   zServerRunner._cleanup_servert  r   r   rI   )r   r   r   __doc__rJ   r   rh   r   r=   r   r   r   ri   rj   s   @r!   r   r   c  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   r1   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   )rY   r=   ry   r   	TypeErrorformatr   )r;   r   r   r   rZ   s       r!   r=   zAppRunner.__init__}  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)Nrg   r   )	rc   rd   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   rI   )r   r   r   r   rJ   r   rh   r   r=   rM   r   r   r   r   r   ri   rj   s   @r!   r   r   x  si     I ;@		37	KN			 [  #BF B"r    r   rI   )&rc   r   r   r7   abcr   r   typingr   r   r   r   r	   r
   yarlr   typedefsr   web_appr   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/
h /
d#
x #
L"H ">&
x &
Rp! p!f: *!"
 !"Q  Js   B2 2B<;B<