o
    Rh-                     @   sB  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 d dlmZ ddlmZ ddlmZ ddlmZ zd d	lmZ W n eyO   eZY nw d
ZG dd deZd ddZG dd deZG dd deZG dd deZG dd deZG dd deZ G dd deZ!G dd de!Z"G dd de!Z#dS )!    N)ABCabstractmethod)AnyListOptionalSet)URL   )PathLike)Application)Server)
SSLContext)	BaseSiteTCPSiteUnixSiteNamedPipeSiteSockSite
BaseRunner	AppRunnerServerRunnerGracefulExitc                   @   s   e Zd ZdZdS )r   r	   N)__name__
__module____qualname__code r   r   T/home/air/sanwanet/backup_V2/venv/lib/python3.10/site-packages/aiohttp/web_runner.pyr   !   s    r   returnc                   C   s   t  N)r   r   r   r   r   _raise_graceful_exit%   s   r   c                   @   sj   e Zd ZdZddddddded	ee d
eddf
ddZe	e
defddZe
dddZdddZdS )r   )_runner_ssl_context_backlog_server      N@N   shutdown_timeoutssl_contextbacklogrunnerr   r'   r(   r)   r   c                C   sP   |j d u r	td|dkrd}tj|td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)   msgr   r   r   __init__,   s   

zBaseSite.__init__c                 C   s   d S r   r   r3   r   r   r   name?   s   zBaseSite.namec                    s   | j |  d S r   )r    	_reg_siter6   r   r   r   startD   s   zBaseSite.startc                    s2   | j |  | jd ur| j  | j |  d S r   )r    _check_siter#   close_unreg_siter6   r   r   r   stopH   s
   

zBaseSite.stopr   N)r   r   r   	__slots__floatr   r   intr5   propertyr   strr7   r9   r=   r   r   r   r   r   )   s,    
r   c                       s   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dZ
edefddZd fddZ  ZS )r   )_host_port_reuse_address_reuse_portNr$   r%   )r'   r(   r)   reuse_address
reuse_portr*   r   hostportr'   r(   r)   rH   rI   r   c          	         sF   t  j||||d || _|d u r| jrdnd}|| _|| _|| _d S )Nr&   i   i  )superr5   rD   r!   rE   rF   rG   )	r3   r*   rJ   rK   r'   r(   r)   rH   rI   	__class__r   r   r5   S   s   
zTCPSite.__init__c                 C   s8   | j rdnd}| jd u rdn| j}ttj||| jdS )Nhttpshttpz0.0.0.0schemerJ   rK   )r!   rD   rC   r   buildrE   )r3   rR   rJ   r   r   r   r7   l   s   zTCPSite.namec              	      s^   t   I d H  t }| jj}|d usJ |j|| j| j| j	| j
| j| jdI d H | _d S )N)sslr)   rH   rI   )rL   r9   asyncioget_event_loopr    r-   create_serverrD   rE   r!   r"   rF   rG   r#   r3   loopr-   rM   r   r   r9   r   s   zTCPSite.start)NNr>   )r   r   r   r?   r   rC   rA   r@   r   boolr5   rB   r7   r9   __classcell__r   r   rM   r   r   P   s@    	
r   c                       sh   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dZ	e
defddZd fddZ  ZS )r   _pathr$   Nr%   r&   r*   r   pathr'   r(   r)   r   c                   s   t  j||||d || _d S )Nr&   )rL   r5   r]   )r3   r*   r^   r'   r(   r)   rM   r   r   r5      s   	
zUnixSite.__init__c                 C   s    | j rdnd}| d| j dS )NrO   rP   ://unix::)r!   r]   )r3   rR   r   r   r   r7      s   zUnixSite.namec                    R   t   I d H  t }| jj}|d usJ |j|| j| j| j	dI d H | _
d S )N)rT   r)   )rL   r9   rU   rV   r    r-   create_unix_serverr]   r!   r"   r#   rX   rM   r   r   r9      s   zUnixSite.startr>   )r   r   r   r?   r
   r@   r   r   rA   r5   rB   rC   r7   r9   r[   r   r   rM   r   r      s*    r   c                	       sX   e Zd ZdZdddddededd	f fd
dZedefddZd fddZ	  Z
S )r   r\   r$   r'   r*   r   r^   r'   r   Nc                   s6   t  }t|t jstdt j||d || _d S )Nz8Named Pipes only available in proactorloop under windowsrc   )rU   rV   
isinstanceProactorEventLoopr.   rL   r5   r]   )r3   r*   r^   r'   rY   rM   r   r   r5      s   
zNamedPipeSite.__init__c                 C      | j S r   r\   r6   r   r   r   r7         zNamedPipeSite.namec                    sP   t   I d H  t }| jj}|d usJ ||| jI d H }|d | _d S Nr   )	rL   r9   rU   rV   r    r-   start_serving_piper]   r#   )r3   rY   r-   r#   rM   r   r   r9      s   
zNamedPipeSite.startr>   )r   r   r   r?   rC   r@   r5   rB   r7   r9   r[   r   r   rM   r   r      s    r   c                       sj   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dZ	e
defddZd fddZ  ZS )r   )_sock_namer$   Nr%   r&   r*   r   sockr'   r(   r)   r   c          
         s   t  j||||d || _| jrdnd}ttdr*|jtjkr*| d|  d}n| d d \}}	t	t
j|||	d}|| _d S )	Nr&   rO   rP   AF_UNIXr_   r`   r+   rQ   )rL   r5   rj   r!   hasattrsocketfamilyrm   getsocknamerC   r   rS   rk   )
r3   r*   rl   r'   r(   r)   rR   r7   rJ   rK   rM   r   r   r5      s   	
zSockSite.__init__c                 C   rf   r   )rk   r6   r   r   r   r7      rg   zSockSite.namec                    ra   )N)rl   rT   r)   )rL   r9   rU   rV   r    r-   rW   rj   r!   r"   r#   rX   rM   r   r   r9      s   zSockSite.startr>   )r   r   r   r?   ro   r@   r   r   rA   r5   rB   rC   r7   r9   r[   r   r   rM   r   r      s*    r   c                	   @   s   e Zd ZdZddddedededd	fd
dZede	e
 fddZedee fddZedee fddZd#ddZed#ddZd#ddZede
fddZed#ddZdedd	fddZdedd	fdd Zdedd	fd!d"Zd	S )$r   _handle_signals_kwargsr#   _sitesr2   Fr$   )handle_signalsr'   rv   r'   kwargsr   Nc                K   s"   || _ || _d | _g | _|| _d S r   rr   )r3   rv   r'   rw   r   r   r   r5      s
   
zBaseRunner.__init__c                 C   rf   r   )r#   r6   r   r   r   r-      rg   zBaseRunner.serverc                 C   sH   g }| j D ]}|j}|d ur!|j}|d ur!|D ]	}||  qq|S r   )ru   r#   socketsappendrq   )r3   retsiter-   rx   rl   r   r   r   	addresses  s   
zBaseRunner.addressesc                 C   s
   t | jS r   )setru   r6   r   r   r   sites  s   
zBaseRunner.sitesc                    sX   t  }| jr"z|tjt |tjt W n	 ty!   Y nw | 	 I d H | _
d S r   )rU   rV   rs   add_signal_handlersignalSIGINTr   SIGTERMNotImplementedError_make_serverr#   r3   rY   r   r   r   setup  s   zBaseRunner.setupc                    s   dS )z8Call any shutdown hooks to help server close gracefully.Nr   r6   r   r   r   shutdown!  s    zBaseRunner.shutdownc                    s   t | jD ]	}| I d H  q| jr1tdI d H  | j  |  I d H  | j| jI d H  | 	 I d H  d | _| j
r\t }z|tj |tj W d S  ty[   Y d S w d S rh   )listru   r=   r#   rU   sleeppre_shutdownr   r2   _cleanup_serverrs   get_running_loopremove_signal_handlerr   r   r   r   )r3   r{   rY   r   r   r   cleanup%  s&   
zBaseRunner.cleanupc                       d S r   r   r6   r   r   r   r   @     zBaseRunner._make_serverc                    r   r   r   r6   r   r   r   r   D  r   zBaseRunner._cleanup_serverr{   c                 C   s.   || j v rtd| d|  | j | d S )NSite z! is already registered in runner )ru   r.   ry   r3   r{   r   r   r   r8   H     
zBaseRunner._reg_sitec                 C   s"   || j vrtd| d|  d S Nr   z is not registered in runner )ru   r.   r   r   r   r   r:   M  s   
zBaseRunner._check_sitec                 C   s.   || j vrtd| d|  | j | d S r   )ru   r.   remover   r   r   r   r<   Q  r   zBaseRunner._unreg_siter>   )r   r   r   r?   rZ   r@   r   r5   rB   r   r   r-   r   r|   r   r   r~   r   r   r   r   r   r   r8   r:   r<   r   r   r   r   r      s<    


r   c                	       s^   e Zd ZdZdZdddedededd	f fd
dZdddZ	defddZ
dddZ  ZS )r   zLow-level web server runner_web_serverFrv   
web_serverrv   rw   r   Nc                   s    t  jdd|i| || _d S )Nrv   r   )rL   r5   r   )r3   r   rv   rw   rM   r   r   r5   \  s   
zServerRunner.__init__c                    r   r   r   r6   r   r   r   r   b     zServerRunner.shutdownc                    s   | j S r   r   r6   r   r   r   r   e  s   zServerRunner._make_serverc                    r   r   r   r6   r   r   r   r   h  r   zServerRunner._cleanup_serverr>   )r   r   r   __doc__r?   r   rZ   r   r5   r   r   r   r[   r   r   rM   r   r   W  s     
r   c                	       sp   e Zd ZdZdZdddedededd	f fd
dZe	defddZ
dddZdefddZdddZ  ZS )r   zWeb Application runner_appFr   apprv   rw   r   Nc                   s8   t  jdd|i| t|tstd||| _d S )Nrv   z?The first argument should be web.Application instance, got {!r}r   )rL   r5   rd   r   	TypeErrorformatr   )r3   r   rv   rw   rM   r   r   r5   q  s   

zAppRunner.__init__c                 C   rf   r   r   r6   r   r   r   r   |  rg   zAppRunner.appc                       | j  I d H  d S r   )r   r   r6   r   r   r   r        zAppRunner.shutdownc                    sT   t  }| j| | jj  | j I d H  | j  | jjdd|i| jS )NrY   r   )	rU   rV   r   	_set_loop
on_startupfreezestartup_make_handlerrt   r   r   r   r   r     s   
zAppRunner._make_serverc                    r   r   )r   r   r6   r   r   r   r     r   zAppRunner._cleanup_serverr>   )r   r   r   r   r?   r   rZ   r   r5   rB   r   r   r   r   r   r[   r   r   rM   r   r   l  s$    
	r   r>   )$rU   r   ro   r/   abcr   r   typingr   r   r   r   yarlr   typedefsr
   web_appr   r   r   rT   r   ImportErrorobject__all__
SystemExitr   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   s4    
'2&)g