a
     ÑOcC  ã                   @   sh  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 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/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îddlBmCZC eedge
d f  ZDeee2e4ge
d f  ZEeee2eCge
e4 f edeCge
eC f f ZFeeF ZGeeeeFeHf   ZIed ZJneZDeZEeZFeZGee ZIeZJG dd„ deeKef ƒZLG dd„ deMƒZNe�rPeeeLge	d f  ZOneZOG dd„ deOƒZPdS )é    N)ÚpartialÚupdate_wrapper)ÚTYPE_CHECKINGÚAnyÚAsyncIteratorÚ	AwaitableÚCallableÚDictÚIterableÚIteratorÚListÚMappingÚMutableMappingÚOptionalÚSequenceÚTupleÚTypeÚUnionÚcast)ÚSignal)Ú
FrozenListé   )Úhdrs)ÚAbstractAccessLoggerÚAbstractMatchInfoÚAbstractRouterÚAbstractStreamWriter)ÚDEBUG)ÚRawRequestMessage)Ú
web_logger)ÚStreamReader)ÚAccessLogger)Ú_fix_request_current_app)ÚRequestHandler)ÚRequest)ÚStreamResponse)ÚAbstractRouteDef)ÚServer)ÚAbstractResourceÚAbstractRouteÚDomainÚ
MaskDomainÚMatchedSubAppResourceÚPrefixedSubAppResourceÚUrlDispatcher)ÚApplicationÚCleanupError)ÚHandlerr/   c                
       sP  e Zd Zeg d¢ƒ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d„Zee dœd d!„Z e!ejdœd"d#„ƒZ"eej dd$œd%d&„Z#e!edœd'd(„ƒZ$ddœd)d*„Z%e!edœd+d,„ƒZ&ddœd-d.„Z'e!edœd/d0„ƒZ(d dd1œd2d3„Z)ed e*d4œd5d6„Z+e,g e*f d e*d7œd8d9„Z-ed e*d:œd;d<„Z.e
e/ e0e1 d=œd>d?„Z2e!e3dœd@dA„ƒZ4e!e5dœdBdC„ƒZ6e!e5dœdDdE„ƒZ7e!e5dœdFdG„ƒZ8e!dHdœdIdJ„ƒZ9e!e	dœdKdL„ƒZ:e!e;dœdMdN„ƒZ<de=dOœeej ee> ee?dPœdQdR„Z@de=dOœeej ee> ee?dPœdSdT„ZAddœdUdV„ZBddœdWdX„ZCddœdYdZ„ZDeEfeFeGeHeId[eeE eEd\œd]d^„ZJeeKeef  dœd_d`„ZLeEeMdaœdbdc„ZNd dœddde„ZOedœdfdg„ZPedœdhdi„ZQ‡  ZRS )jr/   )Ú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   .)r2   ÚrouterÚmiddlewaresÚhandler_argsÚclient_max_sizeÚloopÚdebug)r2   rE   rF   rG   rH   rI   rJ   Úreturnc                C   s  |d u rt ƒ }ntjdtdd� t|tƒs2J |ƒ‚|d urJtjdtdd� |du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   r3   r4   r5   r6   r2   r   r7   r8   r9   r:   r;   r<   r=   r   r>   r?   r@   rA   ÚCleanupContextrC   ÚappendrB   )Úselfr2   rE   rF   rG   rH   rI   rJ   rD   rD   úF/var/www/html/gsl.tools/lib/python3.9/site-packages/aiohttp/web_app.pyÚ__init__i   sD    ÿÿÿ




zApplication.__init__)ÚclsrK   c                 C   s   t jd | j¡tdd� d S )Nz8Inheritance class {} from web.Application is discouragedrL   rM   )rO   rP   ÚformatÚ__name__rQ   )rX   rD   rD   rV   Ú__init_subclass__    s    ÿüzApplication.__init_subclass__)ÚnameÚvalrK   c                    s2   || j vr tjd |¡tdd� tƒ  ||¡ d S )Nz:Setting custom web.Application.{} attribute is discouragedrL   rM   )ÚATTRSrO   rP   rY   rQ   ÚsuperÚ__setattr__)rU   r\   r]   ©Ú	__class__rD   rV   r`   ª   s    
ÿüzApplication.__setattr__)ÚotherrK   c                 C   s   | |u S ©NrD   )rU   rc   rD   rD   rV   Ú__eq__¶   s    zApplication.__eq__)ÚkeyrK   c                 C   s
   | j | S rd   )r:   ©rU   rf   rD   rD   rV   Ú__getitem__¹   s    zApplication.__getitem__©rK   c                 C   s   | j rtjdtdd� d S )Nz=Changing state of started or joined application is deprecatedé   rM   )r;   rO   rP   rQ   ©rU   rD   rD   rV   Ú_check_frozen¼   s    ýzApplication._check_frozen)rf   ÚvaluerK   c                 C   s   |   ¡  || j|< d S rd   ©rl   r:   )rU   rf   rm   rD   rD   rV   Ú__setitem__Ä   s    zApplication.__setitem__c                 C   s   |   ¡  | j|= d S rd   rn   rg   rD   rD   rV   Ú__delitem__È   s    zApplication.__delitem__c                 C   s
   t | jƒS rd   )Úlenr:   rk   rD   rD   rV   Ú__len__Ì   s    zApplication.__len__c                 C   s
   t | jƒS rd   )Úiterr:   rk   rD   rD   rV   Ú__iter__Ï   s    zApplication.__iter__c                 C   s   t jdtdd� ttj| jƒS )Nzloop property is deprecatedrL   rM   )rO   rP   rQ   r   ÚasyncioÚAbstractEventLoopr5   rk   rD   rD   rV   rI   Ó   s    zApplication.loop)rI   rK   c                 C   s`   |d u rt  ¡ }| jd ur,| j|ur,tdƒ‚|| _| jdu rF| ¡ | _| jD ]}| |¡ qLd S )Nz8web.Application instance initialized with different loop.)ru   Úget_event_loopr5   ÚRuntimeErrorr3   Ú	get_debugr=   Ú	_set_loop)rU   rI   ÚsubapprD   rD   rV   rz   Û   s    ÿ


zApplication._set_loopc                 C   s   | j S rd   )r<   rk   rD   rD   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<   r7   Úfreezer4   r>   rC   r?   r@   rA   ÚtupleÚ_prepare_middlewarer8   rF   r9   r=   Ú
pre_freeze©rU   r{   rD   rD   rV   r€   ñ   s    







zApplication.pre_freezec                 C   s   | j S rd   )r;   rk   rD   rD   rV   Úfrozen
  s    zApplication.frozenc                 C   s0   | j r
d S |  ¡  d| _ | jD ]}| ¡  qd S ©NT)r;   r€   r=   r}   r�   rD   rD   rV   r}     s    
zApplication.freezec                 C   s   t jdtdd� | jS )Nzdebug property is deprecatedrL   rM   )rO   rP   rQ   r3   rk   rD   rD   rV   rJ     s    zApplication.debug)r{   rK   c                    s2   t d dœ‡ ‡fdd„}|dƒ |dƒ |dƒ d S )N)ÚsignamerK   c                    s8   t ˆ| ƒ‰ dd dœ‡‡ fdd„}t ˆ| ƒ}| |¡ d S )Nr/   ©ÚapprK   c                 “   s   ˆ  ˆ ¡I d H  d S rd   )Úsend)r†   )r{   ÚsubsigrD   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‹   rD   r�   rV   Ú_reg_subapp_signals  s    	zApplication._reg_subapp_signals)Úprefixr{   rK   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)rR   r�   Ú	TypeErrorÚrstripÚ
ValueErrorr   r-   Ú_add_subapp)rU   r‘   r{   ÚfactoryrD   rD   rV   Ú
add_subapp*  s    

zApplication.add_subapp)Úresource_factoryr{   rK   c                 C   sf   | j rtdƒ‚|j rtdƒ‚|ƒ }| j |¡ |  |¡ | j |¡ | ¡  | jd urb| 	| j¡ |S )Nz0Cannot add sub application to frozen applicationzCannot add frozen application)
r‚   rx   rE   Zregister_resourcer�   r=   rT   r€   r5   rz   )rU   r™   r{   ÚresourcerD   rD   rV   r–   3  s    

zApplication._add_subapp)Údomainr{   rK   c                 C   sF   t |tƒstdƒ‚nd|v r&t|ƒ}nt|ƒ}tt||ƒ}|  ||¡S )NzDomain must be strÚ*)rR   r�   r“   r+   r*   r   r,   r–   )rU   r›   r{   Zruler—   rD   rD   rV   Ú
add_domainC  s    


zApplication.add_domain)ÚroutesrK   c                 C   s   | j  |¡S rd   )rE   Ú
add_routes)rU   rž   rD   rD   rV   rŸ   M  s    zApplication.add_routesc                 C   s   | j S rd   )r>   rk   rD   rD   rV   Úon_response_prepareP  s    zApplication.on_response_preparec                 C   s   | j S rd   )r?   rk   rD   rD   rV   rŒ   T  s    zApplication.on_startupc                 C   s   | j S rd   )r@   rk   rD   rD   rV   r�   X  s    zApplication.on_shutdownc                 C   s   | j S rd   )rA   rk   rD   rD   rV   rŽ   \  s    zApplication.on_cleanuprS   c                 C   s   | j S rd   )rC   rk   rD   rD   rV   Úcleanup_ctx`  s    zApplication.cleanup_ctxc                 C   s   | j S rd   )r4   rk   rD   rD   rV   rE   d  s    zApplication.routerc                 C   s   | j S rd   )r7   rk   rD   rD   rV   rF   h  s    zApplication.middlewares©rI   Úaccess_log_class)rI   r£   ÚkwargsrK   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 {}rJ   r£   )Zrequest_factoryrI   )Ú
issubclassr   r“   rY   rz   r}   r3   r6   Úitemsr'   Ú_handleÚ_make_requestr5   )rU   rI   r£   r¤   ÚkÚvrD   rD   rV   Ú_make_handlerl  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 insteadrL   rM   r¢   )rO   rP   rQ   r«   )rU   rI   r£   r¤   rD   rD   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   rD   rD   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   rD   rD   rV   Úshutdown£  s    zApplication.shutdownc                 Ã   s2   | j jr| j  | ¡I dH  n| j | ¡I dH  dS )zLCauses on_cleanup signal

        Should be called after shutdown()
        N)rŽ   r‚   r‡   rC   rA   rk   rD   rD   rV   Úcleanupª  s    zApplication.cleanupzasyncio.Task[None])ÚmessageÚpayloadÚprotocolÚwriterÚtaskÚ_clsrK   c              	   C   s   ||||||| j | jd�S )N)rH   )r5   rB   )rU   r°   r±   r²   r³   r´   rµ   rD   rD   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 #2252rL   rM   F)Úreversedr7   rŠ   rO   rP   rY   rQ   r"   )rU   ÚmrD   rD   rV   r   È  s    ýzApplication._prepare_middleware)ÚrequestrK   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 u 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   r4   ÚresolverR   r   r“   rY   Zadd_appr}   Z_match_infoÚheadersÚgetr   ZEXPECTZexpect_handlerr³   Zdrainr‰   r9   Zappsr8   r   r   )rU   r¸   rI   rJ   Z
match_infoÚrespÚexpectr‰   r†   r·   Z	new_stylerD   rD   rV   r§   Ö  s<    
ÿÿ
ÿzApplication._handlec                 C   s   | S )zgunicorn compatibilityrD   rk   rD   rD   rV   Ú__call__ü  s    zApplication.__call__c                 C   s   dt | ƒd›d�S )Nz<Application 0xÚxú>)Úidrk   rD   rD   rV   Ú__repr__   s    zApplication.__repr__c                 C   s   dS rƒ   rD   rk   rD   rD   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   ÚpropertyrI   rz   r|   r€   r‚   r}   rJ   r�   r(   r˜   r   r–   r�   r&   r   r)   rŸ   Ú_RespPrepareSignalr    Ú
_AppSignalrŒ   r�   rŽ   r¡   rE   Ú_MiddlewaresrF   r!   r   r'   r«   r¬   r­   r®   r¯   r$   r   r    r#   r   r¨   r   r   r%   r§   r¿   rÃ   rÄ   Ú__classcell__rD   rD   ra   rV   r/   Q   sÀ   ÿ÷ö7	
þ
üú!üúùø&c                   @   s"   e Zd Zeee dœdd„ƒZdS )r0   ri   c                 C   s   t tt | jd ƒS )Nr   )r   r   ÚBaseExceptionÚargsrk   rD   rD   rV   Ú
exceptions  s    zCleanupError.exceptionsN)rZ   rÅ   rÆ   rÎ   r   rÓ   rÕ   rD   rD   rD   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   rD   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ÚitrD   rD   rV   r?     s    zCleanupContext._on_startupc                 Ã   s¢   g }t | jƒD ]j}z| ¡ I d H  W n> ty6   Y q tyb } z| |¡ W Y d }~qd }~0 0 | 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Ú   ÚexcrD   rD   rV   rA     s     
zCleanupContext._on_cleanup)rZ   rÅ   rÆ   rW   r/   r?   rA   rÒ   rD   rD   ra   rV   rS     s   rS   )Qru   rÈ   rO   Ú	functoolsr   r   Útypingr   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   Z	aiosignalr   Z
frozenlistr   Ú r   Úabcr   r   r   r   Zhelpersr   Zhttp_parserr   Úlogr   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__Ztypedefsr1   rÐ   rÏ   rÊ   rÑ   rÍ   Z_MiddlewaresHandlersZ_Subappsr�   r/   rx   r0   Z_CleanupContextBaserS   rD   rD   rD   rV   Ú<module>   s`   L$
ÿÿ
   9