
    *GjK              	          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r9ed         ZKee:e<f         ZLee0         ZMeeeNe0eOf                           ZPeQd         ZRneZKeZLeZMee         ZPeQZR ed          ZS ed          ZT edeB          ZUde/d eNd!         d"ee:gee<         f         fd#ZV  ed$%          eV          ZW G d& de
eXe'e         z  ef                   ZY G d' d(eZ          Z[eeYged         f         eeYged         f         z  Z\ G 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CleanupErrorr5   _T_U	_Resource)boundhandlerapps)r5   .returnc                 z    |ddd         D ].}|j         D ]$\  }}t          t          ||           |           } %/| S )zApply middlewares to handler.Nr;   )_middlewares_handlersr   r   )r;   r<   appm_s        W/home/rurouni/.hermes/hermes-agent/venv/lib/python3.11/site-packages/aiohttp/web_app.py_build_middlewaresrF   J   s`     DDbDz K K- 	K 	KDAq$WQ%@%@%@'JJGG	KN    i   )maxsizec                       e Zd Z eg d          Zeddddddddej        dedz  d	e	e
         d
eeef         dz  dedej        dz  deddfdZded          ddfdZerdededdf fdZdedefdZedee         defd            Zededefd            Zdeee         z  defdZdXdZedee         deddfd            Zedededdfd            Zdeee         z  deddfdZdeee         z  ddfd Zdefd!Z de!eee         z           fd"Z"defd#Z#edYdee         d$ddedz  fd%            Z$edee         d$e%dee%z  fd&            Z$edYded$edefd'            Z$dZdeee         z  d$edefd(Z$e&dej        fd)            Z'dej        dz  ddfd*Z(e&defd+            Z)dXd,Z*e&defd-            Z+dXd.Z,e&defd/            Z-d[d1Z.d2ed0d de/fd3Z0d4e1g e2f         d0d de2fd5Z3d6ed0d de4fd7Z5d8e	e6         de7e8         fd9Z9e&de:fd:            Z;e&de<fd;            Z=e&de<fd<            Z>e&de<fd=            Z?e&d\d?            Z@e&defd@            ZAe&deBfdA            ZCdeDdBdej        dz  dCeeE         dDedeFfdEZGdeDdBdej        dz  dCeeE         dDedeFfdFZHdXdGZIdXdHZJdXdIZKeLfdJeMdKeNdLeOdMePdNdOdPeeL         deLfdQZQde!eRe
ef                  fdRZSdSeLdeTfdTZUd]dUZVdefdVZWdefdWZX xZYS )^r5   )logger_debug_router_loop_handler_args_middlewaresrA   _has_legacy_middlewares_run_middlewares_state_frozen_pre_frozen_subapps_on_response_prepare_on_startup_on_shutdown_on_cleanup_client_max_size_cleanup_ctxN i   .)rJ   routermiddlewareshandler_argsclient_max_sizeloopdebugrJ   r]   r^   r_   r`   ra   rb   r=   c                N   |t                      }nt          j        dt          d           t	          |t
                    s
J |            |t          j        dt          d           |durt          j        dt          d           || _        || _        || _        || _	        || _
        t          |          | _        d | _        d | _        d| _        i | _        d| _        d| _        g | _        t)          |           | _        t)          |           | _        t)          |           | _        t)          |           | _        t3                      | _        | j                            | j        j                   | j                            | j        j                   || _        d S )	Nzrouter argument is deprecated   
stacklevelzloop argument is deprecated.zdebug argument is deprecatedTF)r4   warningswarnDeprecationWarning
isinstancer   rK   rL   rM   rN   rJ   r   rO   rA   rQ   rP   rR   rS   rT   rU   r   rV   rW   rX   rY   CleanupContextr[   appendrZ   )selfrJ   r]   r^   r_   r`   ra   rb   s           rE   __init__zApplication.__init__p   s    >"__FFM/1CPQ    &.11996991M-/Aa    M.0Bq    &,
)*4[*A*A <@"-1-1$79 "$8>t!'-d||(.t'-d||*,, 1 =>>> 1 =>>> /rG   clsc                 P    t          j        d| j         dt          d           d S )NzInheritance class z$ from web.Application is discouraged   re   )rg   rh   __name__ri   )ro   s    rE   __init_subclass__zApplication.__init_subclass__   s;    SSSS	
 	
 	
 	
 	
 	
rG   namevalc                     || j         vr t          j        d| dt          d           t	                                          ||           d S )NzSetting custom web.Application.z attribute is discouragedrd   re   )ATTRSrg   rh   ri   super__setattr__)rm   rt   ru   	__class__s      rE   ry   zApplication.__setattr__   sg    4:%%%d % % %& 	    GGc*****rG   otherc                 
    | |u S Nr\   )rm   r{   s     rE   __eq__zApplication.__eq__   s    u}rG   keyc                     d S r}   r\   rm   r   s     rE   __getitem__zApplication.__getitem__   s    25#rG   c                     d S r}   r\   r   s     rE   r   zApplication.__getitem__   s    ,/CrG   c                     | j         |         S r}   )rR   r   s     rE   r   zApplication.__getitem__   s    {3rG   c                 P    | j         rt          j        dt          d           d S d S )Nz=Changing state of started or joined application is deprecatedrq   re   )rS   rg   rh   ri   rm   s    rE   _check_frozenzApplication._check_frozen   sB    < 	MO"     	 	rG   valuec                     d S r}   r\   rm   r   r   s      rE   __setitem__zApplication.__setitem__   s    ?BsrG   c                     d S r}   r\   r   s      rE   r   zApplication.__setitem__   s    9<rG   c                     |                                   t          |t                    st          j        dt
          d           || j        |<   d S )NzIt is recommended to use web.AppKey instances for keys.
https://docs.aiohttp.org/en/stable/web_advanced.html#application-s-configrd   )categoryrf   )r   rj   r   rg   rh   r%   rR   r   s      rE   r   zApplication.__setitem__   s`    #v&& 	M* *    !CrG   c                 >    |                                   | j        |= d S r}   )r   rR   r   s     rE   __delitem__zApplication.__delitem__   s$    KrG   c                 *    t          | j                  S r}   )lenrR   r   s    rE   __len__zApplication.__len__   s    4;rG   c                 *    t          | j                  S r}   )iterrR   r   s    rE   __iter__zApplication.__iter__   s    DK   rG   c                      t          |           S r}   idr   s    rE   __hash__zApplication.__hash__   s    $xxrG   defaultc                     d S r}   r\   rm   r   r   s      rE   getzApplication.get   s    FIcrG   c                     d S r}   r\   r   s      rE   r   zApplication.get   s    <?CrG   c                     d S r}   r\   r   s      rE   r   zApplication.get   s    8;rG   c                 8    | j                             ||          S r}   )rR   r   r   s      rE   r   zApplication.get   s    {sG,,,rG   c                 x    t          j        dt          d           t          t          j        | j                  S )Nzloop property is deprecatedrd   re   )rg   rh   ri   r   asyncioAbstractEventLooprM   r   s    rE   ra   zApplication.loop   s3    
 	35GTUVVVVG-tz:::rG   c                     |t          j                    }| j        | j        |urt          d          || _        | j        du r|                                | _        | j        D ]}|                    |           d S )Nz8web.Application instance initialized with different loop.)r   get_event_looprM   RuntimeErrorrK   	get_debugrU   	_set_loop)rm   ra   subapps      rE   r   zApplication._set_loop  s    <)++D:!dj&<&<J   
 ;#..**DK m 	# 	#FT""""	# 	#rG   c                     | j         S r}   )rT   r   s    rE   
pre_frozenzApplication.pre_frozen      rG   c                    | j         rd S d| _         | j                                         | j                                         | j                                         | j                                         | j                                         | j                                         | j                                         t          | 
                                          | _        t          d | j        D                       | _        | j        rdnd| _        | j        D ])}|                                 | j        p|j        | _        *d S )NTc              3   "   K   | ]
\  }}| V  d S r}   r\   ).0rD   	new_styles      rE   	<genexpr>z)Application.pre_freeze.<locals>.<genexpr>(  s9       +
 +
*a	M+
 +
 +
 +
 +
 +
rG   F)rT   rO   freezerL   rV   r[   rW   rX   rY   tuple_prepare_middlewarerA   anyrP   r^   rQ   rU   
pre_freezerm   r   s     rE   r   zApplication.pre_freeze  sV    	F  """!((***  """!!!  """!!!%*4+C+C+E+E%F%F"'* +
 +
.2.H+
 +
 +
 (
 (
$ )-(8 Cem 	U 	UF$($9$TV=TD!!	U 	UrG   c                     | j         S r}   )rS   r   s    rE   frozenzApplication.frozen7  
    |rG   c                     | j         rd S |                                  d| _         | j        D ]}|                                 d S NT)rS   r   rU   r   r   s     rE   r   zApplication.freeze;  sR    < 	Fm 	 	FMMOOOO	 	rG   c                 H    t          j        dt          d           | j        S )Nzdebug property is deprecatedrd   re   )rg   rh   ri   rK   r   s    rE   rb   zApplication.debugD  s$    46HUVWWWW{rG   r   c                 l     dt           dd f fd} |d            |d            |d           d S )Nsignamer=   c                     t          |           dfd}t          |           }|                    |           d S )NrB   r5   r=   c                 B   K                                   d {V  d S r}   )send)rB   r   subsigs    rE   r;   zEApplication._reg_subapp_signals.<locals>.reg_handler.<locals>.handlerM  s1      kk&)))))))))))rG   )rB   r5   r=   N)getattrrl   )r   r;   appsigr   rm   r   s      @rE   reg_handlerz4Application._reg_subapp_signals.<locals>.reg_handlerJ  s_    VW--F* * * * * * * T7++FMM'"""""rG   
on_startupon_shutdown
on_cleanup)str)rm   r   r   s   `` rE   _reg_subapp_signalszApplication._reg_subapp_signalsI  sm    	# 	# 	# 	# 	# 	# 	# 	# 	# 	L!!!M"""L!!!!!rG   prefixc                     t          |t                    st          d          |                    d          }|st	          d          t          t          ||          }|                     ||          S )NzPrefix must be str/zPrefix cannot be empty)rj   r   	TypeErrorrstrip
ValueErrorr   r2   _add_subapp)rm   r   r   factorys       rE   
add_subappzApplication.add_subappW  ss    &#&& 	20111s## 	756660&&AA000rG   resource_factoryc                 n   | j         rt          d          |j         rt          d           |            }| j                            |           |                     |           | j                            |           |                                 | j        |	                    | j                   |S )Nz0Cannot add sub application to frozen applicationzCannot add frozen application)
r   r   r]   register_resourcer   rU   rl   r   rM   r   )rm   r   r   resources       rE   r   zApplication._add_subapp`  s     ; 	SQRRR= 	@>???##%%%%h///  (((V$$$:!TZ(((rG   domainc                     t          |t                    st          d          d|v rt          |          }nt	          |          }t          t          ||          }|                     ||          S )NzDomain must be str*)rj   r   r   r0   r/   r   r1   r   )rm   r   r   ruler   s        rE   
add_domainzApplication.add_domainp  sn    &#&& 	"0111F]]%f--DD&>>D/v>>000rG   routesc                 6    | j                             |          S r}   )r]   
add_routes)rm   r   s     rE   r   zApplication.add_routesz  s    {%%f---rG   c                     | j         S r}   )rV   r   s    rE   on_response_preparezApplication.on_response_prepare}  s    ((rG   c                     | j         S r}   )rW   r   s    rE   r   zApplication.on_startup  r   rG   c                     | j         S r}   )rX   r   s    rE   r   zApplication.on_shutdown        rG   c                     | j         S r}   )rY   r   s    rE   r   zApplication.on_cleanup  r   rG   rk   c                     | j         S r}   )r[   r   s    rE   cleanup_ctxzApplication.cleanup_ctx  r   rG   c                     | j         S r}   )rL   r   s    rE   r]   zApplication.router  r   rG   c                     | j         S r}   )rO   r   s    rE   r^   zApplication.middlewares  r   rG   ra   access_log_classr   kwargsc                T   t          |t                    st          d|           |                     |           |                                  | j        |d<   ||d<   | j        r$| j                                        D ]
\  }}|||<   t          | j	        f| j
        | j        d|S )NzKaccess_log_class must be subclass of aiohttp.abc.AbstractAccessLogger, got rb   r   )request_factoryra   )
issubclassr   r   r   r   rK   rN   itemsr,   _handle_make_requestrM   )rm   ra   r   r   kvs         rE   _make_handlerzApplication._make_handler  s     *,@AA 	L9IL L  
 	t+w%5!" 	*0022  1q		L
 .
 
 	
 
 	
rG   c                Z    t          j        dt          d            | j        d||d|S )NzFApplication.make_handler(...) is deprecated, use AppRunner API insteadrd   re   r   r\   )rg   rh   ri   r   )rm   ra   r   r   s       rE   make_handlerzApplication.make_handler  sW     	T	
 	
 	
 	
 "t! 
(8
 
<B
 
 	
rG   c                 J   K   | j                             |            d{V  dS )zmCauses on_startup signal

        Should be called in the event loop along with the request handler.
        N)r   r   r   s    rE   startupzApplication.startup  s6      
 o""4(((((((((((rG   c                 J   K   | j                             |            d{V  dS )zMCauses on_shutdown signal

        Should be called before cleanup()
        N)r   r   r   s    rE   shutdownzApplication.shutdown  s7      
 ##D)))))))))))rG   c                    K   | j         j        r"| j                             |            d{V  dS | j                            |            d{V  dS )zLCauses on_cleanup signal

        Should be called after shutdown()
        N)r   r   r   r[   rY   r   s    rE   cleanupzApplication.cleanup  st      
 ?! 	6/&&t,,,,,,,,,,, #//55555555555rG   messagepayloadprotocolwritertaskzasyncio.Task[None]_clsc           	      Z    t           r	| j        J  ||||||| j        | j                  S )N)r`   )r   rM   rZ   )rm   r   r  r  r  r  r  s          rE   r   zApplication._make_request  sM      	*:)))tJ 1
 
 
 	
rG   c              #      K   t          | j                  D ]D}t          |dd           dk    r|dfV  t          j        d|dt
          d           |dfV  Et          |           dfV  d S )	N__middleware_version__r   Tzold-style middleware "z" deprecated, see #2252rd   re   F)reversedrO   r   rg   rh   ri   r'   )rm   rC   s     rE   r   zApplication._prepare_middleware  s      $+,, 		 		Aq2D99Q>>gIQIII&    
 h&t,,d222222rG   requestc                 ^  K   t          j                    }|                                }| j                            |           d {V }|r't          |t                    st          d|          |                    |            |	                                 ||_
        |j                            t          j                  r>|                    |           d {V }|j                                         d {V  ||S |j        }| j        r| j        s0t          |j        t,                    st/          ||j                  }nT|j        d d d         D ]C}|j        D ]9\  }}	|	r t5          t7          ||          |          }' |||           d {V }:D ||           d {V S )Nz5match_info should be AbstractMatchInfo instance, not r?   r@   )r   r   r   rL   resolverj   r   r   add_appr   _match_infoheadersr   r   EXPECTexpect_handlerr  drainr;   rQ   rP   router3   _cached_build_middlewarer<   rA   r   r   )
rm   r
  ra   rb   
match_inforespr;   rB   rC   r   s
             rE   r   zApplication._handle  s"     %''  <//88888888
 	j*;<< 4%/4 4   	4   (?t{++ 	#227;;;;;;;;D.&&((((((((($  	< / <
 +9 9 < 37JOLL%?44R40 < <C(+(A < <9$ <&4 '7 ; ; ;W' 'GG -.Ac7OO&;&;&;&;&;&;GG< WW%%%%%%%%%rG   c                     | S )zgunicorn compatibilityr\   r   s    rE   __call__zApplication.__call__1  s    rG   c                 *    dt          |           ddS )Nz<Application 0xx>r   r   s    rE   __repr__zApplication.__repr__5  s    .D.....rG   c                     dS r   r\   r   s    rE   __bool__zApplication.__bool__8  s    trG   r=   N).r}   )r   r5   r=   N)r=   rk   )r=   r5   )Zrr   
__module____qualname__	frozensetrw   r!   loggingLoggerr4   r   r$   r   r   r   intr   r   rn   typers   r   ry   objectboolr~   r   r   r7   r   r   r   r   r   r   r   r   r   r8   propertyra   r   r   r   r   r   rb   r   r2   r   r   r9   r   r1   r   r+   listr.   r   _RespPrepareSignalr   
_AppSignalr   r   r   r   r]   _Middlewaresr^   r&   r   r,   r   r   r   r   r   r)   r    r"   r(   r   r   r   r   r*   r   r  r  r  __classcell__rz   s   @rE   r5   r5   W   sx       I	
 	
 	
 E6 ",'+,.15&1560 60 60 60 $	60
 j)60 c3h'$.60 60 '$.60 60 
60 60 60 60p
tM2 
t 
 
 
 
  
+	+C 	+c 	+d 	+ 	+ 	+ 	+ 	+ 	+F t     5vbz5b555 X5/s/s/// X/ sVBZ/  C            BvbzB"BBBB XB<s<3<4<<< X<
!sVBZ/ 
! 
! 
! 
! 
! 
!sVBZ/ D             !(3#45 ! ! ! !#     IIvbzIDI29III XI?vbz?B?27??? X?;;s;S;3;;; X;- -sVBZ' -# - - - - - ;g/ ; ; ; X;#g7$> #4 # # # #$  D       X U U U U8     X    t    X" " " "1 1m 1@V 1 1 1 1 (Y 7AN	    1 1m 1@U 1 1 1 1.*:!; .]@S . . . . )%7 ) ) ) X)  J       X  !Z ! ! ! X!  J       X  ! ! ! X!     X !\ ! ! ! X! 267C	
 
 
 '$.
 34	

 
 

 
 
 
B 267C	
 
 
 '$.
 34	

 
 

 
 
 
$) ) ) )* * * *	6 	6 	6 	6$ &
 
"
 
 !	

 %
 #
 7m
 

 
 
 
*3XeJ4D.E%F 3 3 3 3*&W *& *& *& *& *&X   /# / / / /$        rG   c                   6    e Zd Zedee         fd            ZdS )r6   r=   c                 X    t          t          t                   | j        d                   S )Nr   )r   r*  BaseExceptionargsr   s    rE   
exceptionszCleanupError.exceptions=  s    D'1666rG   N)rr   r   r!  r)  r*  r2  r4  r\   rG   rE   r6   r6   <  s>        7D/ 7 7 7 X7 7 7rG   r6   c                   @     e Zd Zd fdZdeddfdZdeddfdZ xZS )rk   r=   Nc                 V    t                                                       g | _        d S r}   )rx   rn   _exits)rm   rz   s    rE   rn   zCleanupContext.__init__I  s$    ?ArG   rB   c                    K   | D ]n} ||          }t          |t                    s t          |          |          }|                                 d {V  | j                            |           od S r}   )rj   r   r   
__aenter__r7  rl   )rm   rB   cbctxs       rE   rW   zCleanupContext._on_startupM  s       	$ 	$B"S''Cc#>?? 3-)"--c22.."""""""""Ks####	$ 	$rG   c                 B  K   g }t          | j                  D ]X}	 |                    d d d            d {V  !# t          t          j        f$ r}|                    |           Y d }~Qd }~ww xY w|r+t          |          dk    r|d         t          d|          d S )Nr   r   z Multiple errors on cleanup stage)	r	  r7  	__aexit__	Exceptionr   CancelledErrorrl   r   r6   )rm   rB   errorsitexcs        rE   rY   zCleanupContext._on_cleanupW  s      4;'' 	# 	#B#ll4t4444444444w56 # # #c""""""""# 	O6{{aQi"#EvNNN		O 	Os   :A/A**A/r  )rr   r   r!  rn   r5   rW   rY   r.  r/  s   @rE   rk   rk   H  s        B B B B B B$[ $T $ $ $ $O[ OT O O O O O O O OrG   rk   )^r   r#  rg   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/   r0   r1   r2   r3   r4   __all__r,  r+  r-  r   r(  _MiddlewaresHandlersr*  _Subappsr7   r8   r9   rF   r  r   r5   r   r6   _CleanupContextCallablerk   r\   rG   rE   <module>r]     s     	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 H G G G G G G G 8 8 8 8 8 8 8 8 8 8 H H H H H H H H H H H H H H H H       ! ! ! ! ! !                  # " " " " " " " * * * * * *       ! ! ! ! ! ! ) ) ) ) ) ) ) ) , , , , , , ! ! ! ! ! ! 5 5 5 5 5 5 ( ( ( ( ( (             ( ( ( ( ( ( * * * * * *      	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 *  &J 78j)L#HU:t3C-D$EFM"HH JL#H-HWT]]WT]]GK'7888	!"45wi>223    399T2223EFF b b b b b.vc{!2C!78 b b bJ7 7 7 7 7< 7 7 7 k]7==>}mD1123 O O O O OZ 78 O O O O OrG   