o
    +if.                     @   sJ  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 zd d	lmZ W n eyS   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	AwaitableCallable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   K/var/www/html/corbot_env/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   r5   r   r   r   name?   s   zBaseSite.namec                    s   | j |  d S r    )r"   	_reg_siter8   r   r   r   startD   s   zBaseSite.startc                    s2   | j |  | jd ur| j  | j |  d S r    )r"   _check_siter%   close_unreg_siter8   r   r   r   stopH   s
   

zBaseSite.stopr   N)r   r   r   	__slots__floatr   r   intr7   propertyr   strr9   r;   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+   rJ   rK   r   c          	         sF   t  j||||d || _|d u r| jrdnd}|| _|| _|| _d S )Nr(   i   i  )superr7   rF   r#   rG   rH   rI   )	r5   r,   rL   rM   r)   r*   r+   rJ   rK   	__class__r   r   r7   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schemerL   rM   )r#   rF   rE   r
   buildrG   )r5   rT   rL   r   r   r   r9   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+   rJ   rK   )rN   r;   asyncioget_event_loopr"   r/   create_serverrF   rG   r#   r$   rH   rI   r%   r5   loopr/   rO   r   r   r;   r   s   zTCPSite.start)NNr@   )r   r   r   rA   r   rE   rC   rB   r   boolr7   rD   r9   r;   __classcell__r   r   rO   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(   )rN   r7   r_   )r5   r,   r`   r)   r*   r+   rO   r   r   r7      s   	
zUnixSite.__init__c                 C   s    | j rdnd}| d| j dS )NrQ   rR   ://unix::)r#   r_   )r5   rT   r   r   r   r9      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)rV   r+   )rN   r;   rW   rX   r"   r/   create_unix_serverr_   r#   r$   r%   rZ   rO   r   r   r;      s   zUnixSite.startr@   )r   r   r   rA   r   rB   r   r   rC   r7   rD   rE   r9   r;   r]   r   r   rO   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 windowsre   )rW   rX   
isinstanceProactorEventLoopr0   rN   r7   r_   )r5   r,   r`   r)   r[   rO   r   r   r7      s   
zNamedPipeSite.__init__c                 C      | j S r    r^   r8   r   r   r   r9         zNamedPipeSite.namec                    sP   t   I d H  t }| jj}|d usJ ||| jI d H }|d | _d S Nr   )	rN   r;   rW   rX   r"   r/   start_serving_piper_   r%   )r5   r[   r/   r%   rO   r   r   r;      s   
zNamedPipeSite.startr@   )r   r   r   rA   rE   rB   r7   rD   r9   r;   r]   r   r   rO   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(   rQ   rR   AF_UNIXra   rb   r-   rS   )rN   r7   rl   r#   hasattrsocketfamilyro   getsocknamerE   r
   rU   rm   )
r5   r,   rn   r)   r*   r+   rT   r9   rL   rM   rO   r   r   r7      s   	
zSockSite.__init__c                 C   rh   r    )rm   r8   r   r   r   r9      ri   zSockSite.namec                    rc   )N)rn   rV   r+   )rN   r;   rW   rX   r"   r/   rY   rl   r#   r$   r%   rZ   rO   r   r   r;      s   zSockSite.startr@   )r   r   r   rA   rq   rB   r   r   rC   r7   rD   rE   r9   r;   r]   r   r   rO   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   shutdown_callback_handle_signals_kwargsr%   _sitesr4   Fr&   )handle_signalsr)   ry   r)   kwargsr   Nc                K   s(   d | _ || _|| _d | _g | _|| _d S r    rt   )r5   ry   r)   rz   r   r   r   r7      s   
zBaseRunner.__init__c                 C   rh   r    )r%   r8   r   r   r   r/     ri   zBaseRunner.serverc                 C   sH   g }| j D ]}|j}|d ur!|j}|d ur!|D ]	}||  qq|S r    )rx   r%   socketsappendrs   )r5   retsiter/   r{   rn   r   r   r   	addresses  s   
zBaseRunner.addressesc                 C   s
   t | jS r    )setrx   r8   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    )rW   rX   rv   add_signal_handlersignalSIGINTr!   SIGTERMNotImplementedError_make_serverr%   r5   r[   r   r   r   setup  s   zBaseRunner.setupc                    s   dS )z8Call any shutdown hooks to help server close gracefully.Nr   r8   r   r   r   shutdown)  s    zBaseRunner.shutdownc                    s   t | jD ]	}| I d H  q| jr;tdI d H  | j  |  I d H  | jr1|  I d H  | j| j	I d H  | 
 I d H  d | _| jrft }z|tj |tj W d S  tye   Y d S w d S rj   )listrx   r?   r%   rW   sleeppre_shutdownr   ru   r4   _cleanup_serverrv   get_running_loopremove_signal_handlerr   r   r   r   )r5   r~   r[   r   r   r   cleanup-  s*   
zBaseRunner.cleanupc                       d S r    r   r8   r   r   r   r   L     zBaseRunner._make_serverc                    r   r    r   r8   r   r   r   r   P  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 )rx   r0   r|   r5   r~   r   r   r   r:   T     
zBaseRunner._reg_sitec                 C   s"   || j vrtd| d|  d S Nr   z is not registered in runner )rx   r0   r   r   r   r   r<   Y  s   
zBaseRunner._check_sitec                 C   s.   || j vrtd| d|  | j | d S r   )rx   r0   remover   r   r   r   r>   ]  r   zBaseRunner._unreg_siter@   )r   r   r   rA   r\   rB   r   r7   rD   r   r   r/   r   r   r	   r   r   r   r   r   r   r   r   r:   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ry   
web_serverry   rz   r   Nc                   s    t  jdd|i| || _d S )Nry   r   )rN   r7   r   )r5   r   ry   rz   rO   r   r   r7   h  s   
zServerRunner.__init__c                    r   r    r   r8   r   r   r   r   n     zServerRunner.shutdownc                    s   | j S r    r   r8   r   r   r   r   q  s   zServerRunner._make_serverc                    r   r    r   r8   r   r   r   r   t  r   zServerRunner._cleanup_serverr@   )r   r   r   __doc__rA   r   r\   r   r7   r   r   r   r]   r   r   rO   r   r   c  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   appry   rz   r   Nc                   s8   t  jdd|i| t|tstd||| _d S )Nry   z?The first argument should be web.Application instance, got {!r}r   )rN   r7   rf   r   	TypeErrorformatr   )r5   r   ry   rz   rO   r   r   r7   }  s   

zAppRunner.__init__c                 C   rh   r    r   r8   r   r   r   r     ri   zAppRunner.appc                       | j  I d H  d S r    )r   r   r8   r   r   r   r        zAppRunner.shutdownc                    sT   t  }| j| | jj  | j I d H  | j  | jjdd|i| jS )Nr[   r   )	rW   rX   r   	_set_loop
on_startupfreezestartup_make_handlerrw   r   r   r   r   r     s   
zAppRunner._make_serverc                    r   r    )r   r   r8   r   r   r   r     r   zAppRunner._cleanup_serverr@   )r   r   r   r   rA   r   r\   r   r7   rD   r   r   r   r   r   r]   r   r   rO   r   r   x  s$    
	r   r@   )&rW   r   rq   r1   abcr   r   typingr   r   r   r   r   r	   yarlr
   typedefsr   web_appr   r   r   rV   r   ImportErrorobject__all__
SystemExitr   r!   r   r   r   r   r   r   r   r   r   r   r   r   <module>   s4     
'2&)s