
­­­­­­­­­­­­­­­­­­
<!DOCTYPE html>
<html>
U
    '7`B                     @   sr  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mZmZmZmZmZmZmZmZmZmZmZ ddl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& ddl'm(Z( ddl)m*Z* ddl+m,Z, ddl-m.Z. ddl/m0Z0 ddl1m2Z2 ddl3m4Z4 ddl5m6Z6 ddl7m8Z8 ddl9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@ dZAere(edge
d f  ZBe(ee2e4ge
d f  ZCee2ge
e4 f ZDeee2eDge
e4 f edeDge
eD f f ZEe eE ZFeeeeEeGf   ZHed ZIn e(ZBe(ZCeZDeZEe ZFee ZHeZIG dd deeJef ZKG dd deLZMerZe eeKge	d f  ZNne ZNG dd deNZOdS )    N)partialupdate_wrapper)TYPE_CHECKINGAnyAsyncIterator	AwaitableCallableDictIterableIteratorListMappingMutableMappingOptionalSequenceTupleTypeUnioncast   )hdrs)AbstractAccessLoggerAbstractMatchInfoAbstractRouterAbstractStreamWriter)
FrozenList)DEBUG)RawRequestMessage)
web_logger)Signal)StreamReader)AccessLogger)_fix_request_current_app)RequestHandler)Request)StreamResponse)AbstractRouteDef)Server)AbstractResourceAbstractRouteDomain
MaskDomainMatchedSubAppResourcePrefixedSubAppResourceUrlDispatcher)ApplicationCleanupErrorr/   c                       sp  e Zd Zeddddddddd	d
ddddddddgZedddddddejee	 e
e eeeef  eeej eddddZed  ddddZereedd fdd Zeed!d"d#Zeed$d%d&Zdd'd(d)Zeedd*d+d,Zedd$d-d.Zed'd/d0Zee d'd1d2Z e!ejd'd3d4Z"eej dd5d6d7Z#e!ed'd8d9Z$dd'd:d;Z%e!ed'd<d=Z&dd'd>d?Z'e!ed'd@dAZ(d ddBdCdDZ)ed e*dEdFdGZ+e,g e*f d e*dHdIdJZ-ed e*dKdLdMZ.e
e/ e0e1 dNdOdPZ2e!e3d'dQdRZ4e!e5d'dSdTZ6e!e5d'dUdVZ7e!e5d'dWdXZ8e!dYd'dZd[Z9e!e	d'd\d]Z:e!e;d'd^d_Z<de=d`eej ee> ee?dadbdcZ@de=d`eej ee> ee?dadddeZAdd'dfdgZBdd'dhdiZCdd'djdkZDeEfeFeGeHeIdleeE eEdmdndoZJeeKeef  d'dpdqZLeEeMdrdsdtZNd d'dudvZOed'dwdxZPed'dydzZQ  ZRS ){r/   logger_debug_router_loop_handler_args_middlewares_middlewares_handlers_run_middlewares_state_frozen_pre_frozen_subapps_on_response_prepare_on_startup_on_shutdown_on_cleanup_client_max_size_cleanup_ctxN i   .)r1   routermiddlewareshandler_argsclient_max_sizeloopdebug)r1   rD   rE   rF   rG   rH   rI   returnc                C   s  |d krt  }ntjdtdd t|ts2t||d k	rJtjdtdd |dk	rbtjdtdd || _|| _|| _	|| _
|| _t|| _d | _d | _i | _d| _d| _g | _t| | _t| | _t| | _t| | _t | _| j| jj | j| jj || _d S )Nzrouter argument is deprecated   
stacklevelzloop argument is deprecated.zdebug argument is deprecatedF)r.   warningswarnDeprecationWarning
isinstancer   AssertionErrorr2   r3   r4   r5   r1   r   r6   r7   r8   r9   r:   r;   r<   r   r=   r>   r?   r@   CleanupContextrB   appendrA   )selfr1   rD   rE   rF   rG   rH   rI   rC   rC   B/opt/alt/python38/lib64/python3.8/site-packages/aiohttp/web_app.py__init__h   sP          




zApplication.__init__)clsrJ   c                 C   s   t jd| jtdd d S )Nz8Inheritance class {} from web.Application is discouragedrK   rL   )rN   rO   format__name__rP   )rX   rC   rC   rV   __init_subclass__   s    zApplication.__init_subclass__)namevalrJ   c                    s2   || j kr tjd|tdd t || d S )Nz:Setting custom web.Application.{} attribute is discouragedrK   rL   )ATTRSrN   rO   rY   rP   super__setattr__)rU   r\   r]   	__class__rC   rV   r`      s    
zApplication.__setattr__)otherrJ   c                 C   s   | |kS NrC   )rU   rc   rC   rC   rV   __eq__   s    zApplication.__eq__)keyrJ   c                 C   s
   | j | S rd   )r9   rU   rf   rC   rC   rV   __getitem__   s    zApplication.__getitem__rJ   c                 C   s   | j rtjdtdd d S )Nz=Changing state of started or joined application is deprecated   rL   )r:   rN   rO   rP   rU   rC   rC   rV   _check_frozen   s    zApplication._check_frozen)rf   valuerJ   c                 C   s   |    || j|< d S rd   rl   r9   )rU   rf   rm   rC   rC   rV   __setitem__   s    zApplication.__setitem__c                 C   s   |    | j|= d S rd   rn   rg   rC   rC   rV   __delitem__   s    zApplication.__delitem__c                 C   s
   t | jS rd   )lenr9   rk   rC   rC   rV   __len__   s    zApplication.__len__c                 C   s
   t | jS rd   )iterr9   rk   rC   rC   rV   __iter__   s    zApplication.__iter__c                 C   s   t jdtdd ttj| jS )Nzloop property is deprecatedrK   rL   )rN   rO   rP   r   asyncioAbstractEventLoopr4   rk   rC   rC   rV   rH      s    zApplication.loop)rH   rJ   c                 C   s`   |d krt  }| jd k	r,| j|k	r,td|| _| jdkrF| | _| jD ]}|| qLd S )Nz8web.Application instance initialized with different loop.)ru   get_event_loopr4   RuntimeErrorr2   	get_debugr<   	_set_loop)rU   rH   subapprC   rC   rV   rz      s    


zApplication._set_loopc                 C   s   | j S rd   )r;   rk   rC   rC   rV   
pre_frozen   s    zApplication.pre_frozenc                 C   s   | j r
d S d| _ | j  | j  | j  | j  | j  | j  | j  t	| 
 | _| jrndnd| _| jD ]}|  | jp|j| _qzd S )NTF)r;   r6   freezer3   r=   rB   r>   r?   r@   tuple_prepare_middlewarer7   rE   r8   r<   
pre_freezerU   r{   rC   rC   rV   r      s    







zApplication.pre_freezec                 C   s   | j S rd   )r:   rk   rC   rC   rV   frozen	  s    zApplication.frozenc                 C   s0   | j r
d S |   d| _ | jD ]}|  qd S NT)r:   r   r<   r}   r   rC   rC   rV   r}     s    
zApplication.freezec                 C   s   t jdtdd | jS )Nzdebug property is deprecatedrK   rL   )rN   rO   rP   r2   rk   rC   rC   rV   rI     s    zApplication.debug)r{   rJ   c                    s2   t d d fdd}|d |d |d d S )N)signamerJ   c                    s8   t |  dd d fdd}t | }|| d S )Nr/   apprJ   c                    s     I d H  d S rd   )send)r   )r{   subsigrC   rV   handler  s    zEApplication._reg_subapp_signals.<locals>.reg_handler.<locals>.handler)getattrrT   )r   r   Zappsigr   )r   rV   reg_handler  s    

z4Application._reg_subapp_signals.<locals>.reg_handler
on_startupon_shutdown
on_cleanup)str)rU   r{   r   rC   r   rV   _reg_subapp_signals  s    	zApplication._reg_subapp_signals)prefixr{   rJ   c                 C   s@   t |tstd|d}|s(tdtt||}| ||S )NzPrefix must be str/zPrefix cannot be empty)rQ   r   	TypeErrorrstrip
ValueErrorr   r-   _add_subapp)rU   r   r{   factoryrC   rC   rV   
add_subapp)  s    

zApplication.add_subapp)resource_factoryr{   rJ   c                 C   sf   | j rtd|j rtd| }| j| | | | j| |  | jd k	rb|	| j |S )Nz0Cannot add sub application to frozen applicationzCannot add frozen application)
r   rx   rD   Zregister_resourcer   r<   rT   r   r4   rz   )rU   r   r{   resourcerC   rC   rV   r   2  s    

zApplication._add_subapp)domainr{   rJ   c                 C   sF   t |tstdnd|kr&t|}nt|}tt||}| ||S )NzDomain must be str*)rQ   r   r   r+   r*   r   r,   r   )rU   r   r{   Zruler   rC   rC   rV   
add_domainB  s    


zApplication.add_domain)routesrJ   c                 C   s   | j |S rd   )rD   
add_routes)rU   r   rC   rC   rV   r   L  s    zApplication.add_routesc                 C   s   | j S rd   )r=   rk   rC   rC   rV   on_response_prepareO  s    zApplication.on_response_preparec                 C   s   | j S rd   )r>   rk   rC   rC   rV   r   S  s    zApplication.on_startupc                 C   s   | j S rd   )r?   rk   rC   rC   rV   r   W  s    zApplication.on_shutdownc                 C   s   | j S rd   )r@   rk   rC   rC   rV   r   [  s    zApplication.on_cleanuprS   c                 C   s   | j S rd   )rB   rk   rC   rC   rV   cleanup_ctx_  s    zApplication.cleanup_ctxc                 C   s   | j S rd   )r3   rk   rC   rC   rV   rD   c  s    zApplication.routerc                 C   s   | j S rd   )r6   rk   rC   rC   rV   rE   g  s    zApplication.middlewaresrH   access_log_class)rH   r   kwargsrJ   c                K   sz   t |tstd|| | |   | j|d< ||d< | jr^| j D ]\}}|||< qLt	| j
f| j| jd|S )NzMaccess_log_class must be subclass of aiohttp.abc.AbstractAccessLogger, got {}rI   r   )Zrequest_factoryrH   )
issubclassr   r   rY   rz   r}   r2   r5   itemsr'   _handle_make_requestr4   )rU   rH   r   r   kvrC   rC   rV   _make_handlerk  s*    



zApplication._make_handlerc                K   s&   t jdtdd | jf ||d|S )NzFApplication.make_handler(...) is deprecated, use AppRunner API insteadrK   rL   r   )rN   rO   rP   r   )rU   rH   r   r   rC   rC   rV   make_handler  s     zApplication.make_handlerc                    s   | j | I dH  dS )zmCauses on_startup signal

        Should be called in the event loop along with the request handler.
        N)r   r   rk   rC   rC   rV   startup  s    zApplication.startupc                    s   | j | I dH  dS )zMCauses on_shutdown signal

        Should be called before cleanup()
        N)r   r   rk   rC   rC   rV   shutdown  s    zApplication.shutdownc                    s   | j | I dH  dS )zLCauses on_cleanup signal

        Should be called after shutdown()
        N)r   r   rk   rC   rC   rV   cleanup  s    zApplication.cleanupzasyncio.Task[None])messagepayloadprotocolwritertask_clsrJ   c              	   C   s   ||||||| j | jdS )N)rG   )r4   rA   )rU   r   r   r   r   r   r   rC   rC   rV   r     s    	zApplication._make_requestc                 c   s^   t | jD ]@}t|dd dkr*|dfV  q
tjd|tdd |dfV  q
t| dfV  d S )NZ__middleware_version__r   Tz1old-style middleware "{!r}" deprecated, see #2252rK   rL   F)reversedr6   r   rN   rO   rY   rP   r"   )rU   mrC   rC   rV   r     s    zApplication._prepare_middleware)requestrJ   c                    s   t  }| }| j|I d H }|r>t|ts>td||	|  |
  d }||_|jtj}|r||I d H }|j I d H  |d kr|j}| jr|jd d d D ]<}|jD ]0\}	}
|
rtt|	|d|}q|	||I d H }qq||I d H }|S )Nz9match_info should be AbstractMatchInfo instance, not {!r})r   )ru   rw   ry   r3   resolverQ   r   r   rY   Zadd_appr}   Z_match_infoheadersgetr   ZEXPECTZexpect_handlerr   Zdrainr   r8   Zappsr7   r   r   )rU   r   rH   rI   Z
match_infoZrespZexpectr   r   r   Z	new_stylerC   rC   rV   r     s>    


 zApplication._handlec                 C   s   | S )zgunicorn compatibilityrC   rk   rC   rC   rV   __call__  s    zApplication.__call__c                 C   s   d t| S )Nz<Application 0x{:x}>)rY   idrk   rC   rC   rV   __repr__  s    zApplication.__repr__c                 C   s   dS r   rC   rk   rC   rC   rV   __bool__  s    zApplication.__bool__)SrZ   
__module____qualname__	frozensetr^   r   loggingLoggerr   r.   r
   _Middlewarer   r   r   intru   rv   rW   r   r[   r   r`   objectboolre   rh   rl   ro   rp   rr   r   rt   propertyrH   rz   r|   r   r   r}   rI   r   r(   r   r   r   r   r&   r   r)   r   _RespPrepareSignalr   
_AppSignalr   r   r   r   rD   _MiddlewaresrE   r!   r   r'   r   r   r   r   r   r$   r   r    r#   r   r   r   r   r%   r   r   r   r   __classcell__rC   rC   ra   rV   r/   P   s   7	

 
!&c                   @   s"   e Zd Zeee dddZdS )r0   ri   c                 C   s
   | j d S )Nr   )argsrk   rC   rC   rV   
exceptions  s    zCleanupError.exceptionsN)rZ   r   r   r   r   BaseExceptionr   rC   rC   rC   rV   r0     s   r0   c                       sB   e Zd Zdd fddZeddddZedddd	Z  ZS )
rS   Nri   c                    s   t    g | _d S rd   )r_   rW   _exitsrk   ra   rC   rV   rW     s    
zCleanupContext.__init__r   c                    s4   | D ]*}||  }| I d H  | j| qd S rd   )	__aiter__	__anext__r   rT   )rU   r   cbitrC   rC   rV   r>     s    zCleanupContext._on_startupc                    s   g }t | jD ]j}z| I d H  W n> tk
r8   Y q tk
rb } z|| W 5 d }~X Y qX |t|d q|rt|dkr|d n
td|d S )Nz has more than one 'yield'r   r   z Multiple errors on cleanup stage)	r   r   r   StopAsyncIteration	ExceptionrT   rx   rq   r0   )rU   r   errorsr   excrC   rC   rV   r@     s    
zCleanupContext._on_cleanup)rZ   r   r   rW   r/   r>   r@   r   rC   rC   ra   rV   rS     s   rS   )Pru   r   rN   	functoolsr   r   typingr   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r    r   abcr   r   r   r   Z
frozenlistr   Zhelpersr   Zhttp_parserr   logr   Zsignalsr   Zstreamsr    Zweb_logr!   Zweb_middlewaresr"   Zweb_protocolr#   Zweb_requestr$   Zweb_responser%   Zweb_routedefr&   Z
web_serverr'   Zweb_urldispatcherr(   r)   r*   r+   r,   r-   r.   __all__r   r   Z_Handlerr   r   r   Z_MiddlewaresHandlersZ_Subappsr   r/   rx   r0   Z_CleanupContextBaserS   rC   rC   rC   rV   <module>   sb   L$

   5