U
    ;g-                     @   sH  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k
r   eZY nX 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   )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   R/opt/bot/vods_filmes/script/venv/lib/python3.8/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 k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   r4   r   r   r   name?   s    zBaseSite.namec                    s   | j |  d S r   )r!   	_reg_siter7   r   r   r   startD   s    zBaseSite.startc                    s0   | j |  | jd k	r | j  | j |  d S r   )r!   _check_siter$   close_unreg_siter7   r   r   r   stopH   s    

zBaseSite.stop)r   r   r   	__slots__floatr   r   intr6   propertyr   strr8   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*   rH   rI   r   c          	         sF   t  j||||d || _|d kr0| jr,dnd}|| _|| _|| _d S )Nr'   i   i  )superr6   rD   r"   rE   rF   rG   )	r4   r+   rJ   rK   r(   r)   r*   rH   rI   	__class__r   r   r6   S   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schemerJ   rK   )r"   rD   rC   r   buildrE   )r4   rR   rJ   r   r   r   r8   l   s    zTCPSite.namec              	      s\   t   I d H  t }| jj}|d k	s,t|j|| j| j	| j
| j| j| jdI d H | _d S )N)sslr*   rH   rI   )rL   r:   asyncioget_event_loopr!   r.   AssertionErrorcreate_serverrD   rE   r"   r#   rF   rG   r$   r4   loopr.   rM   r   r   r:   r   s    zTCPSite.start)NN)r   r   r   r?   r   rC   rA   r@   r   boolr6   rB   r8   r:   __classcell__r   r   rM   r   r   P   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'   )rL   r6   r^   )r4   r+   r_   r(   r)   r*   rM   r   r   r6      s    	zUnixSite.__init__r   c                 C   s    | j r
dnd}| d| j dS )NrO   rP   ://unix::)r"   r^   )r4   rR   r   r   r   r8      s    zUnixSite.namec                    sP   t   I d H  t }| jj}|d k	s,t|j|| j| j	| j
dI d H | _d S )N)rT   r*   )rL   r:   rU   rV   r!   r.   rW   Zcreate_unix_serverr^   r"   r#   r$   rY   rM   r   r   r:      s    zUnixSite.start)r   r   r   r?   r
   r@   r   r   rA   r6   rB   rC   r8   r:   r\   r   r   rM   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 )Nz8Named Pipes only available in proactorloop under windowsrb   )rU   rV   
isinstanceZProactorEventLoopr/   rL   r6   r^   )r4   r+   r_   r(   rZ   rM   r   r   r6      s     zNamedPipeSite.__init__r   c                 C   s   | j S r   r]   r7   r   r   r   r8      s    zNamedPipeSite.namec                    sN   t   I d H  t }| jj}|d k	s,t||| jI d H }|d | _	d S Nr   )
rL   r:   rU   rV   r!   r.   rW   Zstart_serving_piper^   r$   )r4   rZ   r.   r$   rM   r   r   r:      s     
zNamedPipeSite.start)r   r   r   r?   rC   r@   r6   rB   r8   r:   r\   r   r   rM   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'   rO   rP   AF_UNIXr`   ra   r,   rQ   )rL   r6   re   r"   hasattrsocketfamilyrh   getsocknamerC   r   rS   rf   )
r4   r+   rg   r(   r)   r*   rR   r8   rJ   rK   rM   r   r   r6      s    	zSockSite.__init__r   c                 C   s   | j S r   )rf   r7   r   r   r   r8      s    zSockSite.namec                    sP   t   I d H  t }| jj}|d k	s,t|j|| j| j	| j
dI d H | _d S )N)rg   rT   r*   )rL   r:   rU   rV   r!   r.   rW   rX   re   r"   r#   r$   rY   rM   r   r   r:      s       zSockSite.start)r   r   r   r?   rj   r@   r   r   rA   r6   rB   rC   r8   r:   r\   r   r   rM   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$   _sitesr3   Fr%   )handle_signalsr(   N)rq   r(   kwargsr   c                K   s"   || _ || _d | _g | _|| _d S r   rm   )r4   rq   r(   rr   r   r   r   r6      s
    zBaseRunner.__init__r   c                 C   s   | j S r   )r$   r7   r   r   r   r.      s    zBaseRunner.serverc                 C   sH   g }| j D ]8}|j}|d k	r
|j}|d k	r
|D ]}||  q.q
|S r   )rp   r$   socketsappendrl   )r4   retsiter.   rs   rg   r   r   r   	addresses  s    
zBaseRunner.addressesc                 C   s
   t | jS r   )setrp   r7   r   r   r   sites  s    zBaseRunner.sitesc                    sX   t  }| jrDz |tjt |tjt W n tk
rB   Y nX | 	 I d H | _
d S r   )rU   rV   rn   Zadd_signal_handlersignalSIGINTr    SIGTERMNotImplementedError_make_serverr$   r4   rZ   r   r   r   setup  s    zBaseRunner.setupc                    s   dS )z8Call any shutdown hooks to help server close gracefully.Nr   r7   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k
r   Y nX d S rd   )listrp   r>   r$   rU   sleepZpre_shutdownr   r3   _cleanup_serverrn   Zget_running_loopZremove_signal_handlerrz   r{   r|   r}   )r4   rv   rZ   r   r   r   cleanup%  s     
zBaseRunner.cleanupc                    s   d S r   r   r7   r   r   r   r~   @  s    zBaseRunner._make_serverc                    s   d S r   r   r7   r   r   r   r   D  s    zBaseRunner._cleanup_server)rv   r   c                 C   s.   || j krtd| d|  | j | d S )NSite z! is already registered in runner )rp   r/   rt   r4   rv   r   r   r   r9   H  s    
zBaseRunner._reg_sitec                 C   s"   || j krtd| d|  d S Nr   z is not registered in runner )rp   r/   r   r   r   r   r;   M  s    
zBaseRunner._check_sitec                 C   s.   || j krtd| d|  | j | d S r   )rp   r/   remover   r   r   r   r=   Q  s    
zBaseRunner._unreg_site)r   r   r   r?   r[   r@   r   r6   rB   r   r   r.   r   rw   r   r   ry   r   r   r   r   r~   r   r9   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rq   N)
web_serverrq   rr   r   c                   s    t  jf d|i| || _d S )Nrq   )rL   r6   r   )r4   r   rq   rr   rM   r   r   r6   \  s    zServerRunner.__init__r   c                    s   d S r   r   r7   r   r   r   r   b  s    zServerRunner.shutdownc                    s   | j S r   r   r7   r   r   r   r~   e  s    zServerRunner._make_serverc                    s   d S r   r   r7   r   r   r   r   h  s    zServerRunner._cleanup_server)r   r   r   __doc__r?   r   r[   r   r6   r   r~   r   r\   r   r   rM   r   r   W  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)apprq   rr   r   c                   s8   t  jf d|i| t|ts.td||| _d S )Nrq   z?The first argument should be web.Application instance, got {!r})rL   r6   rc   r   	TypeErrorformatr   )r4   r   rq   rr   rM   r   r   r6   q  s    
zAppRunner.__init__r   c                 C   s   | j S r   r   r7   r   r   r   r   |  s    zAppRunner.appc                    s   | j  I d H  d S r   )r   r   r7   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   )	rU   rV   r   Z	_set_loopZ
on_startupfreezeZstartupZ_make_handlerro   r   r   r   r   r~     s    
zAppRunner._make_serverc                    s   | j  I d H  d S r   )r   r   r7   r   r   r   r     s    zAppRunner._cleanup_server)r   r   r   r   r?   r   r[   r   r6   rB   r   r   r   r~   r   r\   r   r   rM   r   r   l  s     	r   )$rU   rz   rj   r0   abcr   r   typingr   r   r   r   Zyarlr   Ztypedefsr
   Zweb_appr   r   r   rT   r   ImportErrorobject__all__
SystemExitr   r    r   r   r   r   r   r   r   r   r   r   r   r   <module>   s0   
'2&)g