a
    `g
.                     @   s\  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rd d	lmZ n(zd d	lmZ W n ey   eZY n0 d
ZG dd deZd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)TYPE_CHECKING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   `/var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/site-packages/aiohttp/web_runner.pyr   #   s   r   returnc                   C   s
   t  d S N)r   r   r   r   r   _raise_graceful_exit'   s    r!   c                   @   sj   e Zd ZdZdddddeee edddd	Ze	e
ed
ddZe
dd
ddZdd
ddZdS )r   )_runner_ssl_context_backlog_server      N@N   shutdown_timeoutssl_contextbacklogr   )runnerr)   r*   r+   r   c                C   sP   |j d u rtd|dkr4d}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__r   c                 C   s   d S r    r   r5   r   r   r   nameA   s    zBaseSite.namec                    s   | j |  d S r    )r"   	_reg_siter8   r   r   r   startF   s    zBaseSite.startc                    s0   | j |  | jd ur | j  | j |  d S r    )r"   _check_siter%   close_unreg_siter8   r   r   r   stopJ   s    

zBaseSite.stop)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ee ee eee eee	 ee	 dd	 fdd	Z
eed
ddZd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+   rI   rJ   r   c          	         sF   t  j||||d || _|d u r0| jr,dnd}|| _|| _|| _d S )Nr(   i   i  )superr7   rE   r#   rF   rG   rH   )	r5   r,   rK   rL   r)   r*   r+   rI   rJ   	__class__r   r   r7   U   s    zTCPSite.__init__r   c                 C   s4   | j r
dnd}| jsdn| j}ttj||| jdS )Nhttpshttpz0.0.0.0schemerK   rL   )r#   rE   rD   r	   buildrF   )r5   rS   rK   r   r   r   r9   n   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+   rI   rJ   )rM   r;   asyncioget_event_loopr"   r/   create_serverrE   rF   r#   r$   rG   rH   r%   r5   loopr/   rN   r   r   r;   t   s    zTCPSite.start)NN)r   r   r   r@   r   rD   rB   rA   r   boolr7   rC   r9   r;   __classcell__r   r   rN   r   r   R   s.     r   c                       sb   e Zd ZdZdddddeeee edd fdd	Z	e
ed
ddZd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(   )rM   r7   r^   )r5   r,   r_   r)   r*   r+   rN   r   r   r7      s    	zUnixSite.__init__r   c                 C   s    | j r
dnd}| d| j dS )NrP   rQ   ://unix::)r#   r^   )r5   rS   r   r   r   r9      s    zUnixSite.namec                    sP   t   I d H  t }| jj}|d us,J |j|| j| j| j	dI d H | _
d S )N)rU   r+   )rM   r;   rV   rW   r"   r/   create_unix_serverr^   r#   r$   r%   rY   rN   r   r   r;      s    zUnixSite.start)r   r   r   r@   r   rA   r   r   rB   r7   rC   rD   r9   r;   r\   r   r   rN   r   r      s   r   c                       sV   e Zd ZdZdddeedd fddZeed	d
dZdd	 fddZ	  Z
S )r   r]   r&   r)   r   N)r,   r_   r)   r   c                   s6   t  }t|t jstdt j||d || _d S )Nz9Named Pipes only available in proactor loop under windowsrc   )rV   rW   
isinstanceZProactorEventLoopr0   rM   r7   r^   )r5   r,   r_   r)   rZ   rN   r   r   r7      s    zNamedPipeSite.__init__r   c                 C   s   | j S r    r]   r8   r   r   r   r9      s    zNamedPipeSite.namec                    sN   t   I d H  t }| jj}|d us,J ||| jI d H }|d | _d S Nr   )	rM   r;   rV   rW   r"   r/   Zstart_serving_piper^   r%   )r5   rZ   r/   r%   rN   r   r   r;      s    
zNamedPipeSite.start)r   r   r   r@   rD   rA   r7   rC   r9   r;   r\   r   r   rN   r   r      s   r   c                       sd   e Zd ZdZdddddejeee edd fdd	Z	e
ed
ddZd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rT|jtjkrT| d|  d}n(| d d \}}	t	t
j|||	d}|| _d S )	Nr(   rP   rQ   AF_UNIXr`   ra   r-   rR   )rM   r7   rf   r#   hasattrsocketfamilyri   getsocknamerD   r	   rT   rg   )
r5   r,   rh   r)   r*   r+   rS   r9   rK   rL   rN   r   r   r7      s    	zSockSite.__init__r   c                 C   s   | j S r    )rg   r8   r   r   r   r9      s    zSockSite.namec                    sP   t   I d H  t }| jj}|d us,J |j|| j| j| j	dI d H | _
d S )N)rh   rU   r+   )rM   r;   rV   rW   r"   r/   rX   rf   r#   r$   r%   rY   rN   r   r   r;      s    zSockSite.start)r   r   r   r@   rk   rA   r   r   rB   r7   rC   rD   r9   r;   r\   r   r   rN   r   r      s   r   c                   @   s   e Zd ZdZdddeeeddddZee	e
 d	d
dZeee d	ddZeee d	ddZdd	ddZedd	ddZdd	ddZee
d	ddZedd	ddZeddddZeddddZedddd ZdS )!r   _handle_signals_kwargsr%   _sitesr4   Fr&   )handle_signalsr)   N)rr   r)   kwargsr   c                K   s"   || _ || _d | _g | _|| _d S r    rn   )r5   rr   r)   rs   r   r   r   r7      s
    zBaseRunner.__init__r   c                 C   s   | j S r    )r%   r8   r   r   r   r/     s    zBaseRunner.serverc                 C   sH   g }| j D ]8}|j}|d ur
|j}|d ur
|D ]}||  q.q
|S r    )rq   r%   socketsappendrm   )r5   retsiter/   rt   rh   r   r   r   	addresses  s    
zBaseRunner.addressesc                 C   s
   t | jS r    )setrq   r8   r   r   r   sites  s    zBaseRunner.sitesc                    sV   t  }| jrBz |tjt |tjt W n ty@   Y n0 | 	 I d H | _
d S r    )rV   rW   ro   add_signal_handlersignalSIGINTr!   SIGTERMNotImplementedError_make_serverr%   r5   rZ   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| jI d H  | 	 I d H  d | _| j
rt }z|tj |tj W n ty   Y n0 d S re   )listrq   r?   r%   rV   sleepZpre_shutdownr   r4   _cleanup_serverro   get_running_loopremove_signal_handlerr|   r}   r~   r   )r5   rw   rZ   r   r   r   cleanup'  s     
zBaseRunner.cleanupc                    s   d S r    r   r8   r   r   r   r   B  s    zBaseRunner._make_serverc                    s   d S r    r   r8   r   r   r   r   F  s    zBaseRunner._cleanup_server)rw   r   c                 C   s.   || j v rtd| d|  | j | d S )NSite z! is already registered in runner )rq   r0   ru   r5   rw   r   r   r   r:   J  s    
zBaseRunner._reg_sitec                 C   s"   || j vrtd| d|  d S Nr   z is not registered in runner )rq   r0   r   r   r   r   r<   O  s    
zBaseRunner._check_sitec                 C   s.   || j vrtd| d|  | j | d S r   )rq   r0   remover   r   r   r   r>   S  s    
zBaseRunner._unreg_site)r   r   r   r@   r[   rA   r   r7   rC   r   r   r/   r   rx   r   r   rz   r   r   r   r   r   r   r:   r<   r>   r   r   r   r   r      s4   r   c                       s`   e Zd ZdZdZddeeedd fddZdd	d
dZ	ed	ddZ
dd	ddZ  ZS )r   zLow-level web server runner_web_serverFrr   N)
web_serverrr   rs   r   c                   s    t  jf d|i| || _d S )Nrr   )rM   r7   r   )r5   r   rr   rs   rN   r   r   r7   ^  s    zServerRunner.__init__r   c                    s   d S r    r   r8   r   r   r   r   d  s    zServerRunner.shutdownc                    s   | j S r    r   r8   r   r   r   r   g  s    zServerRunner._make_serverc                    s   d S r    r   r8   r   r   r   r   j  s    zServerRunner._cleanup_server)r   r   r   __doc__r@   r   r[   r   r7   r   r   r   r\   r   r   rN   r   r   Y  s   r   c                       sr   e Zd ZdZdZddeeedd fddZe	ed	d
dZ
dd	ddZed	ddZdd	ddZ  ZS )r   zWeb Application runner_appFr   N)apprr   rs   r   c                   s8   t  jf d|i| t|ts.td||| _d S )Nrr   z?The first argument should be web.Application instance, got {!r})rM   r7   rd   r   	TypeErrorformatr   )r5   r   rr   rs   rN   r   r   r7   s  s    
zAppRunner.__init__r   c                 C   s   | j S r    r   r8   r   r   r   r   ~  s    zAppRunner.appc                    s   | j  I d H  d S r    )r   r   r8   r   r   r   r     s    zAppRunner.shutdownc                    sR   t  }| j| | jj  | j I d H  | j  | jjf d|i| jS )NrZ   )	rV   rW   r   Z	_set_loopZ
on_startupfreezeZstartupZ_make_handlerrp   r   r   r   r   r     s    
zAppRunner._make_serverc                    s   | j  I d H  d S r    )r   r   r8   r   r   r   r     s    zAppRunner._cleanup_server)r   r   r   r   r@   r   r[   r   r7   rC   r   r   r   r   r   r\   r   r   rN   r   r   n  s   	r   )%rV   r|   rk   r1   abcr   r   typingr   r   r   r   r   Zyarlr	   Ztypedefsr   Zweb_appr   r   r   rU   r   ImportErrorobject__all__
SystemExitr   r!   r   r   r   r   r   r   r   r   r   r   r   r   <module>   s4   
'2&)g