
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!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�rôe(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r¬e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\}	}
|
rÚtt|	|d�|ƒ}qº|	||ƒI d H }qºq°||ƒ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|ržt|ƒ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