a
    }3e+                     @   s2  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 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)AnyListOptionalSet)URL   )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   E/home/pi/bot/my_env/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_shutdown_timeout_ssl_context_backlog_server      N@N   shutdown_timeoutssl_contextbacklogr   )runnerr(   r)   r*   r   c                C   s4   |j d u rtd|| _|| _|| _|| _d | _d S )Nz(Call runner.setup() before making a site)serverRuntimeErrorr    r!   r"   r#   r$   )selfr+   r(   r)   r*   r   r   r   __init__*   s    
zBaseSite.__init__r   c                 C   s   d S r   r   r.   r   r   r   name:   s    zBaseSite.namec                    s   | j |  d S r   )r    	_reg_siter0   r   r   r   start?   s    zBaseSite.startc                    s   | j |  | jd u r&| j |  d S | j  t| jdrL| j I d H  | j  I d H  | j jshJ | j j| j	I d H  | j |  d S )Nwait_closed)
r    _check_siter$   _unreg_siteclosehasattrr4   shutdownr,   r!   r0   r   r   r   stopC   s    

zBaseSite.stop)r   r   r   	__slots__floatr   r   intr/   propertyr   strr1   r3   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*   rD   rE   r   c          	         sF   t  j||||d || _|d u r0| jr,dnd}|| _|| _|| _d S )Nr'   i   i  )superr/   r@   r"   rA   rB   rC   )	r.   r+   rF   rG   r(   r)   r*   rD   rE   	__class__r   r   r/   U   s    zTCPSite.__init__r   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schemerF   rG   )r"   r@   r?   r   buildrA   )r.   rN   rF   r   r   r   r1   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*   rD   rE   )rH   r3   asyncioget_event_loopr    r,   create_serverr@   rA   r"   r#   rB   rC   r$   r.   loopr,   rI   r   r   r3   t   s    zTCPSite.start)NN)r   r   r   r;   r   r?   r=   r<   r   boolr/   r>   r1   r3   __classcell__r   r   rI   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'   )rH   r/   rY   )r.   r+   rZ   r(   r)   r*   rI   r   r   r/      s    	zUnixSite.__init__r   c                 C   s    | j r
dnd}| d| j dS )NrK   rL   ://unix::)r"   rY   )r.   rN   r   r   r   r1      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)rP   r*   )rH   r3   rQ   rR   r    r,   Zcreate_unix_serverrY   r"   r#   r$   rT   rI   r   r   r3      s    zUnixSite.start)r   r   r   r;   r?   r<   r   r   r=   r/   r>   r1   r3   rW   r   r   rI   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   rX   r%   r(   r   N)r+   rZ   r(   r   c                   s6   t  }t|t jstdt j||d || _d S )Nz8Named Pipes only available in proactorloop under windowsr]   )rQ   rR   
isinstanceZProactorEventLoopr-   rH   r/   rY   )r.   r+   rZ   r(   rU   rI   r   r   r/      s    zNamedPipeSite.__init__r   c                 C   s   | j S r   rX   r0   r   r   r   r1      s    zNamedPipeSite.namec                    sN   t   I d H  t }| jj}|d us,J ||| jI d H }|d | _d S )Nr   )	rH   r3   rQ   rR   r    r,   Zstart_serving_piperY   r$   )r.   rU   r,   r$   rI   r   r   r3      s    
zNamedPipeSite.start)r   r   r   r;   r?   r<   r/   r>   r1   r3   rW   r   r   rI   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'   rK   rL   AF_UNIXr[   r\      rM   )rH   r/   r_   r"   r8   socketfamilyrb   getsocknamer?   r   rO   r`   )
r.   r+   ra   r(   r)   r*   rN   r1   rF   rG   rI   r   r   r/      s    	zSockSite.__init__r   c                 C   s   | j S r   )r`   r0   r   r   r   r1      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)ra   rP   r*   )rH   r3   rQ   rR   r    r,   rS   r_   r"   r#   r$   rT   rI   r   r   r3      s    zSockSite.start)r   r   r   r;   rd   r<   r   r   r=   r/   r>   r?   r1   r3   rW   r   r   rI   r   r      s   r   c                   @   s   e Zd ZdZdd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$   _sitesFhandle_signalsN)rl   kwargsr   c                K   s   || _ || _d | _g | _d S r   rg   )r.   rl   rm   r   r   r   r/      s    zBaseRunner.__init__r   c                 C   s   | j S r   )r$   r0   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   )rj   r$   socketsappendrf   )r.   retsiter,   rn   ra   r   r   r   	addresses   s    
zBaseRunner.addressesc                 C   s
   t | jS r   )setrj   r0   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   )rQ   rR   rh   Zadd_signal_handlersignalSIGINTr   SIGTERMNotImplementedError_make_serverr$   r.   rU   r   r   r   setup  s    zBaseRunner.setupc                    s   d S r   r   r0   r   r   r   r9     s    zBaseRunner.shutdownc                    st   t  }t| jD ]}| I d H  q|  I d H  d | _| jrpz|t	j
 |t	j W n tyn   Y n0 d S r   )rQ   rR   listrj   r:   _cleanup_serverr$   rh   Zremove_signal_handlerru   rv   rw   rx   )r.   rU   rq   r   r   r   cleanup  s    zBaseRunner.cleanupc                    s   d S r   r   r0   r   r   r   ry   0  s    zBaseRunner._make_serverc                    s   d S r   r   r0   r   r   r   r}   4  s    zBaseRunner._cleanup_server)rq   r   c                 C   s.   || j v rtd| d|  | j | d S )NSite z! is already registered in runner )rj   r-   ro   r.   rq   r   r   r   r2   8  s    
zBaseRunner._reg_sitec                 C   s"   || j vrtd| d|  d S Nr   z is not registered in runner )rj   r-   r   r   r   r   r5   =  s    
zBaseRunner._check_sitec                 C   s.   || j vrtd| d|  | j | d S r   )rj   r-   remover   r   r   r   r6   A  s    
zBaseRunner._unreg_site)r   r   r   r;   rV   r   r/   r>   r   r   r,   r   rr   r   r   rt   r{   r   r9   r~   ry   r}   r2   r5   r6   r   r   r   r   r      s&   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_serverFrk   N)
web_serverrl   rm   r   c                   s    t  jf d|i| || _d S )Nrl   )rH   r/   r   )r.   r   rl   rm   rI   r   r   r/   L  s    zServerRunner.__init__r   c                    s   d S r   r   r0   r   r   r   r9   R  s    zServerRunner.shutdownc                    s   | j S r   r   r0   r   r   r   ry   U  s    zServerRunner._make_serverc                    s   d S r   r   r0   r   r   r   r}   X  s    zServerRunner._cleanup_server)r   r   r   __doc__r;   r   rV   r   r/   r9   ry   r}   rW   r   r   rI   r   r   G  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_appFrk   N)apprl   rm   r   c                   s8   t  jf d|i| t|ts.td||| _d S )Nrl   z?The first argument should be web.Application instance, got {!r})rH   r/   r^   r
   	TypeErrorformatr   )r.   r   rl   rm   rI   r   r   r/   a  s    
zAppRunner.__init__r   c                 C   s   | j S r   r   r0   r   r   r   r   l  s    zAppRunner.appc                    s   | j  I d H  d S r   )r   r9   r0   r   r   r   r9   p  s    zAppRunner.shutdownc                    sR   t  }| j| | jj  | j I d H  | j  | jjf d|i| jS )NrU   )	rQ   rR   r   Z	_set_loopZ
on_startupfreezeZstartupZ_make_handlerri   rz   r   r   r   ry   s  s    
zAppRunner._make_serverc                    s   | j  I d H  d S r   )r   r~   r0   r   r   r   r}   |  s    zAppRunner._cleanup_server)r   r   r   r   r;   r
   rV   r   r/   r>   r   r9   r   ry   r}   rW   r   r   rI   r   r   \  s   	r   )!rQ   ru   rd   abcr   r   typingr   r   r   r   Zyarlr   Zweb_appr
   r   r   rP   r   ImportErrorobject__all__
SystemExitr   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   s,   
+2#)X