o
    4˜Žj³K  ã                	   @   s¤  d dl Z d dlZd dlZd dlmZmZmZmZmZm	Z	m
Z
mZ d dlmZmZ d dlmZmZmZ d dl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&m'Z' ddl(m)Z) ddl*m+Z+ ddl,m-Z- ddl.m/Z/m0Z0 ddl1m2Z2 ddl3m4Z4 ddl5m6Z6 ddl7m8Z8 ddl9m:Z: ddl;m<Z< ddl=m>Z> ddl?m@Z@ ddlAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZI dZJerçed ZKee:e<f ZLee0 ZMeeeNe0eOf   ZPeQd ZRneZKeZLeZMee ZPeQZRedƒZSedƒZTedeBd�ZUde/d eNd! d"ee:gee< f fd#d$„ZVed%d&�eVƒZWG d'd„ de
eXe'e B ef ƒZYG d(d)„ d)eZƒZ[eeYged f eeYged f B Z\G d*d+„ d+ee\ ƒZ]dS ),é    N)ÚAsyncIteratorÚ	AwaitableÚCallableÚIterableÚIteratorÚMappingÚMutableMappingÚSequence)ÚAbstractAsyncContextManagerÚasynccontextmanager)Ú	lru_cacheÚpartialÚupdate_wrapper)ÚTYPE_CHECKINGÚAnyÚOptionalÚTypeVarÚcastÚoverload)ÚSignal)Ú
FrozenListé   )Úhdrs)ÚAbstractAccessLoggerÚAbstractMatchInfoÚAbstractRouterÚAbstractStreamWriter)ÚDEBUGÚAppKey)ÚRawRequestMessage)Ú
web_logger)ÚStreamReader)ÚHandlerÚ
Middleware)ÚNotAppKeyWarning)ÚAccessLogger)Ú_fix_request_current_app)ÚRequestHandler)ÚRequest)ÚStreamResponse)ÚAbstractRouteDef)ÚServer)ÚAbstractResourceÚAbstractRouteÚDomainÚ
MaskDomainÚMatchedSubAppResourceÚPrefixedSubAppResourceÚSystemRouteÚUrlDispatcher)ÚApplicationÚCleanupErrorr4   Ú_TÚ_UÚ	_Resource)ÚboundÚhandlerÚapps)r4   .Úreturnc                 C   s:   |ddd… D ]}|j D ]\}}tt|| d�| ƒ} qq| S )zApply middlewares to handler.Néÿÿÿÿ©r:   )Ú_middlewares_handlersr   r   )r:   r;   ÚappÚmÚ_© rC   úL/var/www/kodo/Anonymous/send/lib/python3.10/site-packages/aiohttp/web_app.pyÚ_build_middlewaresJ   s
   ÿrE   i   )Úmaxsizec                       sŠ  e Zd Zeg d¢ƒZedddddddœdejdedB d	e	e
 d
eeef dB dedejdB deddfdd„Zded  ddfdd„ZerPdededdf‡ fdd„Zdedefdd„Zedee defdd„ƒZededefdd„ƒZdeee B defdd„Zd‚d d!„Zedee d"eddfd#d$„ƒZeded"eddfd%d$„ƒZdeee B d"eddfd&d$„Zdeee B ddfd'd(„Zdefd)d*„Z de!eee B  fd+d,„Z"defd-d.„Z#edƒdee d/ddedB fd0d1„ƒZ$edee d/e%dee%B fd2d1„ƒZ$edƒded/edefd3d1„ƒZ$d„deee B d/edefd4d1„Z$e&dejfd5d6„ƒZ'dejdB ddfd7d8„Z(e&defd9d:„ƒZ)d‚d;d<„Z*e&defd=d>„ƒZ+d‚d?d@„Z,e&defdAdB„ƒZ-d…dDdE„Z.dFedCd de/fdGdH„Z0dIe1g e2f dCd de2fdJdK„Z3dLedCd de4fdMdN„Z5dOe	e6 de7e8 fdPdQ„Z9e&de:fdRdS„ƒZ;e&de<fdTdU„ƒZ=e&de<fdVdW„ƒZ>e&de<fdXdY„ƒZ?e&d†d[d\„ƒZ@e&defd]d^„ƒZAe&deBfd_d`„ƒZCdeDdaœdejdB dbeeE dcedeFfddde„ZGdeDdaœdejdB dbeeE dcedeFfdfdg„ZHd‚dhdi„ZId‚djdk„ZJd‚dldm„ZKeLfdneMdoeNdpeOdqePdrdsdteeL deLfdudv„ZQde!eRe
ef  fdwdx„ZSdyeLdeTfdzd{„ZUd‡d|d}„ZVdefd~d„ZWdefd€d�„ZX‡  ZYS )ˆr4   )ÚloggerÚ_debugÚ_routerÚ_loopÚ_handler_argsÚ_middlewaresr?   Ú_has_legacy_middlewaresÚ_run_middlewaresÚ_stateÚ_frozenÚ_pre_frozenÚ_subappsÚ_on_response_prepareÚ_on_startupÚ_on_shutdownÚ_on_cleanupÚ_client_max_sizeÚ_cleanup_ctxNrC   i   .)rG   ÚrouterÚmiddlewaresÚhandler_argsÚclient_max_sizeÚloopÚdebugrG   rY   rZ   r[   r\   r]   r^   r<   c                C   s  |d u rt ƒ }ntjdtdd� t|tƒsJ |ƒ‚|d ur%tjdtdd� |dur1tjdtdd� || _|| _|| _|| _	|| _
t|ƒ| _d | _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 deprecatedTF)r3   ÚwarningsÚwarnÚDeprecationWarningÚ
isinstancer   rH   rI   rJ   rK   rG   r   rL   r?   rN   rM   rO   rP   rQ   rR   r   rS   rT   rU   rV   ÚCleanupContextrX   ÚappendrW   )ÚselfrG   rY   rZ   r[   r\   r]   r^   rC   rC   rD   Ú__init__p   sF   ÿÿÿ





zApplication.__init__Úclsc                 C   s   t jd| j› d�tdd� d S )NzInheritance class z$ from web.Application is discouragedé   r`   )rb   rc   Ú__name__rd   )rj   rC   rC   rD   Ú__init_subclass__¨   s
   
ýzApplication.__init_subclass__ÚnameÚvalc                    s4   || j vrtjd|› d�tdd� tƒ  ||¡ d S )NzSetting custom web.Application.z attribute is discouragedr_   r`   )ÚATTRSrb   rc   rd   ÚsuperÚ__setattr__)rh   rn   ro   ©Ú	__class__rC   rD   rr   ±   s   

üzApplication.__setattr__Úotherc                 C   s   | |u S ©NrC   )rh   ru   rC   rC   rD   Ú__eq__½   ó   zApplication.__eq__Úkeyc                 C   ó   d S rv   rC   ©rh   ry   rC   rC   rD   Ú__getitem__À   ó   zApplication.__getitem__c                 C   rz   rv   rC   r{   rC   rC   rD   r|   Ã   r}   c                 C   s
   | j | S rv   )rO   r{   rC   rC   rD   r|   Æ   ó   
c                 C   s   | j rtjdtdd� d S d S )Nz=Changing state of started or joined application is deprecatedrk   r`   )rP   rb   rc   rd   ©rh   rC   rC   rD   Ú_check_frozenÉ   s   
ýÿzApplication._check_frozenÚvaluec                 C   rz   rv   rC   ©rh   ry   r�   rC   rC   rD   Ú__setitem__Ñ   r}   zApplication.__setitem__c                 C   rz   rv   rC   r‚   rC   rC   rD   rƒ   Ô   r}   c                 C   s0   |   ¡  t|tƒstjdtdd� || j|< d S )Nz�It is recommended to use web.AppKey instances for keys.
https://docs.aiohttp.org/en/stable/web_advanced.html#application-s-configr_   )Úcategoryra   )r€   re   r   rb   rc   r$   rO   r‚   rC   rC   rD   rƒ   ×   s   
ûc                 C   s   |   ¡  | j|= d S rv   )r€   rO   r{   rC   rC   rD   Ú__delitem__ã   s   zApplication.__delitem__c                 C   ó
   t | jƒS rv   )ÚlenrO   r   rC   rC   rD   Ú__len__ç   r~   zApplication.__len__c                 C   r†   rv   )ÚiterrO   r   rC   rC   rD   Ú__iter__ê   r~   zApplication.__iter__c                 C   s   t | ƒS rv   ©Úidr   rC   rC   rD   Ú__hash__í   rx   zApplication.__hash__Údefaultc                 C   rz   rv   rC   ©rh   ry   rŽ   rC   rC   rD   Úgetð   r}   zApplication.getc                 C   rz   rv   rC   r�   rC   rC   rD   r�   ó   r}   c                 C   rz   rv   rC   r�   rC   rC   rD   r�   ö   r}   c                 C   s   | j  ||¡S rv   )rO   r�   r�   rC   rC   rD   r�   ù   s   c                 C   s   t jdtdd� ttj| jƒS )Nzloop property is deprecatedr_   r`   )rb   rc   rd   r   ÚasyncioÚAbstractEventLooprJ   r   rC   rC   rD   r]   ý   s   zApplication.loopc                 C   s`   |d u rt  ¡ }| jd ur| j|urtdƒ‚|| _| jdu r#| ¡ | _| jD ]}| |¡ q&d S )Nz8web.Application instance initialized with different loop.)r‘   Úget_event_looprJ   ÚRuntimeErrorrH   Ú	get_debugrR   Ú	_set_loop)rh   r]   ÚsubapprC   rC   rD   r–     s   ÿ


ÿzApplication._set_loopc                 C   ó   | j S rv   )rQ   r   rC   rC   rD   Ú
pre_frozen  ó   zApplication.pre_frozenc                 C   s°   | j rd S d| _ | j ¡  | j ¡  | j ¡  | j ¡  | j ¡  | j ¡  | j ¡  t	|  
¡ ƒ| _tdd„ | jD ƒƒ| _| jrBdnd| _| jD ]}| ¡  | jpS|j| _qHd S )NTc                 s   s   � | ]\}}| V  qd S rv   rC   )Ú.0rB   Ú	new_stylerC   rC   rD   Ú	<genexpr>(  s   € 

ÿz)Application.pre_freeze.<locals>.<genexpr>F)rQ   rL   ÚfreezerI   rS   rX   rT   rU   rV   ÚtupleÚ_prepare_middlewarer?   ÚanyrM   rZ   rN   rR   Ú
pre_freeze©rh   r—   rC   rC   rD   r¢     s&   







ÿ	
þzApplication.pre_freezec                 C   r˜   rv   )rP   r   rC   rC   rD   Úfrozen7  rš   zApplication.frozenc                 C   s0   | j rd S |  ¡  d| _ | jD ]}| ¡  qd S ©NT)rP   r¢   rR   rž   r£   rC   rC   rD   rž   ;  s   

ÿzApplication.freezec                 C   s   t jdtdd� | jS )Nzdebug property is deprecatedr_   r`   )rb   rc   rd   rH   r   rC   rC   rD   r^   D  s   zApplication.debugr—   c                    s4   dt dd f‡ ‡fdd„}|dƒ |dƒ |dƒ d S )NÚsignamer<   c                    s2   t ˆ| ƒ‰ d‡‡ fdd„}t ˆ| ƒ}| |¡ d S )Nr@   r4   r<   c                 “   s   �ˆ  ˆ ¡I d H  d S rv   )Úsend)r@   )r—   ÚsubsigrC   rD   r:   M  s   €zEApplication._reg_subapp_signals.<locals>.reg_handler.<locals>.handler)r@   r4   r<   N)Úgetattrrg   )r¦   r:   Úappsigr£   )r¨   rD   Úreg_handlerJ  s   

z4Application._reg_subapp_signals.<locals>.reg_handlerÚ
on_startupÚon_shutdownÚ
on_cleanup)Ústr)rh   r—   r«   rC   r£   rD   Ú_reg_subapp_signalsI  s   	zApplication._reg_subapp_signalsÚprefixc                 C   s@   t |tƒs	tdƒ‚| d¡}|stdƒ‚tt||ƒ}|  ||¡S )NzPrefix must be strú/zPrefix cannot be empty)re   r¯   Ú	TypeErrorÚrstripÚ
ValueErrorr   r1   Ú_add_subapp)rh   r±   r—   ÚfactoryrC   rC   rD   Ú
add_subappW  s   

zApplication.add_subappÚresource_factoryc                 C   sf   | j rtdƒ‚|j rtdƒ‚|ƒ }| j |¡ |  |¡ | j |¡ | ¡  | jd ur1| 	| j¡ |S )Nz0Cannot add sub application to frozen applicationzCannot add frozen application)
r¤   r”   rY   Úregister_resourcer°   rR   rg   r¢   rJ   r–   )rh   r¹   r—   ÚresourcerC   rC   rD   r¶   `  s   

zApplication._add_subappÚdomainc                 C   sD   t |tƒs	tdƒ‚d|v rt|ƒ}nt|ƒ}tt||ƒ}|  ||¡S )NzDomain must be strÚ*)re   r¯   r³   r/   r.   r   r0   r¶   )rh   r¼   r—   Úruler·   rC   rC   rD   Ú
add_domainp  s   

zApplication.add_domainÚroutesc                 C   s   | j  |¡S rv   )rY   Ú
add_routes)rh   rÀ   rC   rC   rD   rÁ   z  s   zApplication.add_routesc                 C   r˜   rv   )rS   r   rC   rC   rD   Úon_response_prepare}  rš   zApplication.on_response_preparec                 C   r˜   rv   )rT   r   rC   rC   rD   r¬   �  rš   zApplication.on_startupc                 C   r˜   rv   )rU   r   rC   rC   rD   r­   …  rš   zApplication.on_shutdownc                 C   r˜   rv   )rV   r   rC   rC   rD   r®   ‰  rš   zApplication.on_cleanuprf   c                 C   r˜   rv   )rX   r   rC   rC   rD   Úcleanup_ctx�  rš   zApplication.cleanup_ctxc                 C   r˜   rv   )rI   r   rC   rC   rD   rY   ‘  rš   zApplication.routerc                 C   r˜   rv   )rL   r   rC   rC   rD   rZ   •  rš   zApplication.middlewares©r]   Úaccess_log_classrÅ   Úkwargsc                K   sz   t |tƒstd|› �ƒ‚|  |¡ |  ¡  | j|d< ||d< | jr/| j ¡ D ]\}}|||< q&t| j	f| j
| jdœ|¤ŽS )NzKaccess_log_class must be subclass of aiohttp.abc.AbstractAccessLogger, got r^   rÅ   )Úrequest_factoryr]   )Ú
issubclassr   r³   r–   rž   rH   rK   Úitemsr+   Ú_handleÚ_make_requestrJ   )rh   r]   rÅ   rÆ   ÚkÚvrC   rC   rD   Ú_make_handler™  s*   
ÿÿ


ÿýüzApplication._make_handlerc                K   s&   t jdtdd� | jd||dœ|¤ŽS )NzFApplication.make_handler(...) is deprecated, use AppRunner API insteadr_   r`   rÄ   rC   )rb   rc   rd   rÎ   )rh   r]   rÅ   rÆ   rC   rC   rD   Úmake_handler·  s   ýÿÿzApplication.make_handlerc                 Ã   ó   �| 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§   r   rC   rC   rD   ÚstartupÉ  ó   €zApplication.startupc                 Ã   rÐ   )zMCauses on_shutdown signal

        Should be called before cleanup()
        N)r­   r§   r   rC   rC   rD   ÚshutdownÐ  rÒ   zApplication.shutdownc                 Ã   s6   �| j jr| j  | ¡I dH  dS | j | ¡I dH  dS )zLCauses on_cleanup signal

        Should be called after shutdown()
        N)r®   r¤   r§   rX   rV   r   rC   rC   rD   Úcleanup×  s   €zApplication.cleanupÚmessageÚpayloadÚprotocolÚwriterÚtaskzasyncio.Task[None]Ú_clsc              	   C   s,   t r	| jd us	J ‚||||||| j| jd�S )N)r\   )r   rJ   rW   )rh   rÕ   rÖ   r×   rØ   rÙ   rÚ   rC   rC   rD   rË   â  s   	ùzApplication._make_requestc                 c   sb   � t | jƒD ]!}t|dd ƒdkr|dfV  qtjd|›d�tdd� |dfV  qt| ƒdfV  d S )	NÚ__middleware_version__r   Tzold-style middleware "z" deprecated, see #2252r_   r`   F)ÚreversedrL   r©   rb   rc   rd   r&   )rh   rA   rC   rC   rD   r    ÷  s   €
ýzApplication._prepare_middlewareÚrequestc           
      Ã   s  �t  ¡ }| ¡ }| j |¡I d H }|r t|tƒs td|›�ƒ‚| | ¡ | 	¡  ||_
|j tj¡rI| |¡I d H }|j ¡ I d H  |d urI|S |j}| jr†| js_t|jtƒs_t||jƒ}n'|jd d d… D ]}|jD ]\}}	|	r|tt||d�|ƒ}ql|||ƒI d H }qlqg||ƒI d H S )Nz5match_info should be AbstractMatchInfo instance, not r=   r>   )r‘   r“   r•   rI   Úresolvere   r   r³   Úadd_apprž   Ú_match_infoÚheadersr�   r   ÚEXPECTÚexpect_handlerrØ   Údrainr:   rN   rM   Úrouter2   Ú_cached_build_middlewarer;   r?   r   r   )
rh   rÝ   r]   r^   Ú
match_infoÚrespr:   r@   rA   rœ   rC   rC   rD   rÊ     sD   €
ÿÿ
ÿÿúzApplication._handlec                 C   s   | S )zgunicorn compatibilityrC   r   rC   rC   rD   Ú__call__1  s   zApplication.__call__c                 C   s   dt | ƒd›d�S )Nz<Application 0xÚxú>r‹   r   rC   rC   rD   Ú__repr__5  s   zApplication.__repr__c                 C   s   dS r¥   rC   r   rC   rC   rD   Ú__bool__8  r}   zApplication.__bool__©r<   N).rv   )r—   r4   r<   N)r<   rf   )r<   r4   )Zrl   Ú
__module__Ú__qualname__Ú	frozensetrp   r    ÚloggingÚLoggerr3   r   r#   r   r¯   r   Úintr‘   r’   ri   Útyperm   r   rr   ÚobjectÚboolrw   r   r   r6   r|   r€   rƒ   r…   rˆ   r   rŠ   r�   r�   r7   Úpropertyr]   r–   r™   r¢   r¤   rž   r^   r°   r1   r¸   r   r8   r¶   r0   r¿   r*   Úlistr-   rÁ   Ú_RespPrepareSignalrÂ   Ú
_AppSignalr¬   r­   r®   rÃ   rY   Ú_MiddlewaresrZ   r%   r   r+   rÎ   rÏ   rÑ   rÓ   rÔ   r(   r   r!   r'   r   rË   rŸ   r    r)   rÊ   ré   rì   rí   Ú__classcell__rC   rC   rs   rD   r4   W   s   ÿ÷ýüûúùø	÷

ö8
"  

	
	
ÿÿ
þ
üýüû
ú!üýüû
ú


ùþýüûúù
ø
,c                   @   s"   e Zd Zedee fdd„ƒZdS )r5   r<   c                 C   s   t tt | jd ƒS )Nr   )r   rù   ÚBaseExceptionÚargsr   rC   rC   rD   Ú
exceptions=  s   zCleanupError.exceptionsN)rl   rï   rð   rø   rù   rþ   r   rC   rC   rC   rD   r5   <  s    r5   c                       sB   e Zd Zd
‡ fdd„Zdeddfdd„Zdeddfdd	„Z‡  ZS )rf   r<   Nc                    s   t ƒ  ¡  g | _d S rv   )rq   ri   Ú_exitsr   rs   rC   rD   ri   I  s   

zCleanupContext.__init__r@   c                 Ã   sH   �| D ]}||ƒ}t |tƒst|ƒ|ƒ}| ¡ I d H  | j |¡ qd S rv   )re   r
   r   Ú
__aenter__r  rg   )rh   r@   ÚcbÚctxrC   rC   rD   rT   M  s   €
ùzCleanupContext._on_startupc                 Ã   sˆ   �g }t | jƒD ](}z| d d d ¡I d H  W q ttjfy0 } z| |¡ W Y d }~qd }~ww |rBt|ƒdkr=|d ‚td|ƒ‚d S )Nr   r   z Multiple errors on cleanup stage)	rÜ   r  Ú	__aexit__Ú	Exceptionr‘   ÚCancelledErrorrg   r‡   r5   )rh   r@   ÚerrorsÚitÚexcrC   rC   rD   rV   W  s   €€ÿ
üzCleanupContext._on_cleanuprî   )rl   rï   rð   ri   r4   rT   rV   rý   rC   rC   rs   rD   rf   H  s    
rf   )^r‘   rò   rb   Úcollections.abcr   r   r   r   r   r   r   r	   Ú
contextlibr
   r   Ú	functoolsr   r   r   Útypingr   r   r   r   r   r   Ú	aiosignalr   Ú
frozenlistr   Ú r   Úabcr   r   r   r   Úhelpersr   r   Úhttp_parserr   Úlogr    Ústreamsr!   Útypedefsr"   r#   Úweb_exceptionsr$   Úweb_logr%   Úweb_middlewaresr&   Úweb_protocolr'   Úweb_requestr(   Úweb_responser)   Úweb_routedefr*   Ú
web_serverr+   Úweb_urldispatcherr,   r-   r.   r/   r0   r1   r2   r3   Ú__all__rû   rú   rü   rŸ   r÷   Ú_MiddlewaresHandlersrù   Ú_Subappsr6   r7   r8   rE   ræ   r¯   r4   r”   r5   Ú_CleanupContextCallablerf   rC   rC   rC   rD   Ú<module>   st    (
 (
ÿÿ
þ
    hÿÿ