o
    çûõjgL  ã                	   @   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   úB/opt/steambot/venv/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œdejd	edB d
e	e
 deeef dB de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rSd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/d0„Z#ed…dee d1ddedB fd2d3„ƒZ$edee d1e%dee%B fd4d3„ƒZ$ed…ded1edefd5d3„ƒZ$d†deee B d1edefd6d3„Z$e&dejfd7d8„ƒZ'dejdB ddfd9d:„Z(e&defd;d<„ƒZ)d„d=d>„Z*e&defd?d@„ƒZ+d„dAdB„Z,e&defdCdD„ƒZ-d‡dFdG„Z.dHedEd de/fdIdJ„Z0dKe1g e2f dEd de2fdLdM„Z3dNedEd de4fdOdP„Z5dQe	e6 de7e8 fdRdS„Z9e&de:fdTdU„ƒZ;e&de<fdVdW„ƒZ=e&de<fdXdY„ƒZ>e&de<fdZd[„ƒZ?e&dˆd]d^„ƒZ@e&defd_d`„ƒZAe&deBfdadb„ƒZCdeDdcœdejdB ddeeE deedeFfdfdg„ZGdeDdcœdejdB ddeeE deedeFfdhdi„ZHd„djdk„ZId„dldm„ZJd„dndo„ZKeLfdpeMdqeNdreOdsePdtdudveeL deLfdwdx„ZQde!eRe
ef  fdydz„ZSd{eLdeTfd|d}„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Ú_client_max_fieldsÚ_cleanup_ctxNrC   i   iè  .)rG   ÚrouterÚmiddlewaresÚhandler_argsÚclient_max_sizeÚclient_max_fieldsÚloopÚdebugrG   rZ   r[   r\   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   ÚCleanupContextrY   ÚappendrW   rX   )	ÚselfrG   rZ   r[   r\   r]   r^   r_   r`   rC   rC   rD   Ú__init__q   sH   ÿÿÿ





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é   rb   )rd   re   Ú__name__rf   )rl   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 discouragedra   rb   )ÚATTRSrd   re   rf   ÚsuperÚ__setattr__)rj   rp   rq   ©Ú	__class__rC   rD   rt   ´   s   

üzApplication.__setattr__Úotherc                 C   s   | |u S ©NrC   )rj   rw   rC   rC   rD   Ú__eq__À   ó   zApplication.__eq__Úkeyc                 C   ó   d S rx   rC   ©rj   r{   rC   rC   rD   Ú__getitem__Ã   ó   zApplication.__getitem__c                 C   r|   rx   rC   r}   rC   rC   rD   r~   Æ   r   c                 C   s
   | j | S rx   )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 deprecatedrm   rb   )rP   rd   re   rf   ©rj   rC   rC   rD   Ú_check_frozenÌ   s   
ýÿzApplication._check_frozenÚvaluec                 C   r|   rx   rC   ©rj   r{   rƒ   rC   rC   rD   Ú__setitem__Ô   r   zApplication.__setitem__c                 C   r|   rx   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-configra   )Úcategoryrc   )r‚   rg   r   rd   re   r$   rO   r„   rC   rC   rD   r…   Ú   s   
ûc                 C   s   |   ¡  | j|= d S rx   )r‚   rO   r}   rC   rC   rD   Ú__delitem__æ   s   zApplication.__delitem__c                 C   ó
   t | jƒS rx   )ÚlenrO   r�   rC   rC   rD   Ú__len__ê   r€   zApplication.__len__c                 C   rˆ   rx   )ÚiterrO   r�   rC   rC   rD   Ú__iter__í   r€   zApplication.__iter__c                 C   s   t | ƒS rx   ©Úidr�   rC   rC   rD   Ú__hash__ð   rz   zApplication.__hash__Údefaultc                 C   r|   rx   rC   ©rj   r{   r�   rC   rC   rD   Úgetó   r   zApplication.getc                 C   r|   rx   rC   r‘   rC   rC   rD   r’   ö   r   c                 C   r|   rx   rC   r‘   rC   rC   rD   r’   ù   r   c                 C   s   | j  ||¡S rx   )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 deprecatedra   rb   )rd   re   rf   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)rj   r_   ÚsubapprC   rC   rD   r˜     s   ÿ


ÿzApplication._set_loopc                 C   ó   | j S rx   )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 rx   rC   )Ú.0rB   Ú	new_stylerC   rC   rD   Ú	<genexpr>+  s   € 

ÿz)Application.pre_freeze.<locals>.<genexpr>F)rQ   rL   ÚfreezerI   rS   rY   rT   rU   rV   ÚtupleÚ_prepare_middlewarer?   ÚanyrM   r[   rN   rR   Ú
pre_freeze©rj   r™   rC   rC   rD   r¤     s&   







ÿ	
þzApplication.pre_freezec                 C   rš   rx   )rP   r�   rC   rC   rD   Úfrozen:  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 deprecatedra   rb   )rd   re   rf   rH   r�   rC   rC   rD   r`   G  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 rx   )Úsend)r@   )r™   ÚsubsigrC   rD   r:   P  s   €zEApplication._reg_subapp_signals.<locals>.reg_handler.<locals>.handler)r@   r4   r<   N)Úgetattrri   )r¨   r:   Úappsigr¥   )rª   rD   Úreg_handlerM  s   

z4Application._reg_subapp_signals.<locals>.reg_handlerÚ
on_startupÚon_shutdownÚ
on_cleanup)Ústr)rj   r™   r­   rC   r¥   rD   Ú_reg_subapp_signalsL  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)rg   r±   Ú	TypeErrorÚrstripÚ
ValueErrorr   r1   Ú_add_subapp)rj   r³   r™   ÚfactoryrC   rC   rD   Ú
add_subappZ  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–   rZ   Úregister_resourcer²   rR   ri   r¤   rJ   r˜   )rj   r»   r™   ÚresourcerC   rC   rD   r¸   c  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Ú*)rg   r±   rµ   r/   r.   r   r0   r¸   )rj   r¾   r™   Úruler¹   rC   rC   rD   Ú
add_domains  s   

zApplication.add_domainÚroutesc                 C   s   | j  |¡S rx   )rZ   Ú
add_routes)rj   rÂ   rC   rC   rD   rÃ   }  s   zApplication.add_routesc                 C   rš   rx   )rS   r�   rC   rC   rD   Úon_response_prepare€  rœ   zApplication.on_response_preparec                 C   rš   rx   )rT   r�   rC   rC   rD   r®   „  rœ   zApplication.on_startupc                 C   rš   rx   )rU   r�   rC   rC   rD   r¯   ˆ  rœ   zApplication.on_shutdownc                 C   rš   rx   )rV   r�   rC   rC   rD   r°   Œ  rœ   zApplication.on_cleanuprh   c                 C   rš   rx   )rY   r�   rC   rC   rD   Úcleanup_ctx�  rœ   zApplication.cleanup_ctxc                 C   rš   rx   )rI   r�   rC   rC   rD   rZ   ”  rœ   zApplication.routerc                 C   rš   rx   )rL   r�   rC   rC   rD   r[   ˜  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   )rj   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 insteadra   rb   rÆ   rC   )rd   re   rf   rÐ   )rj   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©   rY   rV   r�   rC   rC   rD   ÚcleanupÚ  s   €zApplication.cleanupÚmessageÚpayloadÚprotocolÚwriterÚtaskzasyncio.Task[None]Ú_clsc              
   C   s0   t r	| jd us	J ‚||||||| j| j| jd�S )N)r]   r^   )r   rJ   rW   rX   )rj   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 #2252ra   rb   F)ÚreversedrL   r«   rd   re   rf   r&   )rj   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   Úresolverg   r   rµ   Úadd_appr    Ú_match_infoÚheadersr’   r   ÚEXPECTÚexpect_handlerrÚ   Údrainr:   rN   rM   Úrouter2   Ú_cached_build_middlewarer;   r?   r   r   )
rj   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__5  s   zApplication.__call__c                 C   s   dt | ƒd›d�S )Nz<Application 0xÚxú>r�   r�   rC   rC   rD   Ú__repr__9  s   zApplication.__repr__c                 C   s   dS r§   rC   r�   rC   rC   rD   Ú__bool__<  r   zApplication.__bool__©r<   N).rx   )r™   r4   r<   N)r<   rh   )r<   r4   )Zrn   Ú
__module__Ú__qualname__Ú	frozensetrr   r    ÚloggingÚLoggerr3   r   r#   r   r±   r   Úintr“   r”   rk   Útypero   r   rt   ÚobjectÚboolry   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Å   rZ   Ú_Middlewaresr[   r%   r   r+   rÐ   rÑ   rÓ   rÕ   rÖ   r(   r   r!   r'   r   rÍ   r¡   r¢   r)   rÌ   rë   rî   rï   Ú__classcell__rC   rC   ru   rD   r4   W   s   ÿöýüûúùø	÷
ö
õ:
"  

	
	
ÿÿ
þ
üýüû
ú!üýüû
ú


ùþýüûúù
ø
,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   Ú
exceptionsA  s   zCleanupError.exceptionsN)rn   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 )rh   r<   Nc                    s   t ƒ  ¡  g | _d S rx   )rs   rk   Ú_exitsr�   ru   rC   rD   rk   M  s   

zCleanupContext.__init__r@   c                 Ã   sH   �| D ]}||ƒ}t |tƒst|ƒ|ƒ}| ¡ I d H  | j |¡ qd S rx   )rg   r
   r   Ú
__aenter__r  ri   )rj   r@   ÚcbÚctxrC   rC   rD   rT   Q  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“   ÚCancelledErrorri   r‰   r5   )rj   r@   ÚerrorsÚitÚexcrC   rC   rD   rV   [  s   €€ÿ
üzCleanupContext._on_cleanuprð   )rn   rñ   rò   rk   r4   rT   rV   rÿ   rC   rC   ru   rD   rh   L  s    
rh   )^r“   rô   rd   Ú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   Ú_CleanupContextCallablerh   rC   rC   rC   rD   Ú<module>   st    (
 (
ÿÿ
þ
    lÿÿ