
    F/jK              	          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   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]y)+    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                 v    |ddd   D ]-  }|j                   D ]  \  }}t        t        ||       |       }  / | S )zApply middlewares to handler.Nr;   )_middlewares_handlersr   r   )r;   r<   appm_s        M/var/www/html/maxservice/venv/lib/python3.12/site-packages/aiohttp/web_app.py_build_middlewaresrF   J   sR     DbDz K-- 	KDAq$WQ%@'JG	KK N    i   )maxsizec                   P    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dWd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dXd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dXded$edefd'       Z$dYd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)dWd,Z*e&defd-       Z+dWd.Z,e&defd/       Z-dZd1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d@       ZCdeDdAdej                   dz  dBeeE   dCedeFfdDZGdeDdAdej                   dz  dBeeE   dCedeFfdEZHdWdFZIdWdGZJdWdHZKeLfdIeMdJeNdKeOdLePdMdNdOeeL   deLfdPZQde!eRe
ef      fdQZSdReLdeTfdSZUd\dTZVdefdUZWdefdV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                0   |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,                  j7                  | j4                  j,                         | j0                  j7                  | j4                  j0                         || _        y )	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   sb    >"_FMM/1CPQ &.19691MM-/Aa MM.0Bq &,
)*4[*A <@"-1-1$79 "$8>t!'-d|(.t'-d|*, 1 1 = => 1 1 = => /rG   clsc                 X    t        j                  d| j                   dt        d       y )NzInheritance class z$ from web.Application is discouraged   re   )rg   rh   __name__ri   )ro   s    rE   __init_subclass__zApplication.__init_subclass__   s%     .RS	
rG   namevalc                     || j                   vr t        j                  d| dt        d       t        |   ||       y )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__   sC    4::%5dV <% %& 	 Gc*rG   otherc                 
    | |u S Nr\   )rm   r{   s     rE   __eq__zApplication.__eq__   s    u}rG   keyc                      y r}   r\   rm   r   s     rE   __getitem__zApplication.__getitem__   s    25rG   c                      y r}   r\   r   s     rE   r   zApplication.__getitem__   s    ,/rG   c                      | j                   |   S r}   )rR   r   s     rE   r   zApplication.__getitem__   s    {{3rG   c                 V    | j                   rt        j                  dt        d       y y )Nz=Changing state of started or joined application is deprecatedrq   re   )rS   rg   rh   ri   rm   s    rE   _check_frozenzApplication._check_frozen   s#    <<MMO" rG   valuec                      y r}   r\   rm   r   r   s      rE   __setitem__zApplication.__setitem__   s    ?BrG   c                      y r}   r\   r   s      rE   r   zApplication.__setitem__   s    9<rG   c                     | j                          t        |t              st        j                  dt
        d       || j                  |<   y )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__   sA    #v&MM* * !CrG   c                 >    | j                          | j                  |= y r}   )r   rR   r   s     rE   __delitem__zApplication.__delitem__   s    KK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    DKK  rG   c                     t        |       S r}   idr   s    rE   __hash__zApplication.__hash__   s    $xrG   defaultc                      y r}   r\   rm   r   r   s      rE   getzApplication.get   s    FIrG   c                      y r}   r\   r   s      rE   r   zApplication.get   s    <?rG   c                      y r}   r\   r   s      rE   r   zApplication.get   s    8;rG   c                 :    | j                   j                  ||      S r}   )rR   r   r   s      rE   r   zApplication.get   s    {{sG,,rG   c                     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   s.    
 	35GTUVG--tzz::rG   c                    |t        j                         }| j                  | j                  |urt        d      || _        | j                  du r|j                         | _        | j                  D ]  }|j                  |        y )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::!djj&<J  
 ;;#..*DK mm 	#FT"	#rG   c                     | j                   S r}   )rT   r   s    rE   
pre_frozenzApplication.pre_frozen      rG   c                    | j                   ry d| _         | j                  j                          | j                  j                          | j                  j                          | j
                  j                          | j                  j                          | j                  j                          | j                  j                          t        | j                               | _        t        d | j                  D              | _        | j                  rdnd| _        | j                   D ]1  }|j#                          | j                  xs |j                  | _        3 y )NTc              3   (   K   | ]
  \  }}|   y wr}   r\   ).0rD   	new_styles      rE   	<genexpr>z)Application.pre_freeze.<locals>.<genexpr>(  s      +
*a	M+
s   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  s     "!!((*  "!  "!%*4+C+C+E%F"'* +
.2.H.H+
 (
$ )-(8(8emm 	UF$($9$9$TV=T=TD!	UrG   c                     | j                   S r}   )rS   r   s    rE   frozenzApplication.frozen7      ||rG   c                     | j                   ry | j                          d| _         | j                  D ]  }|j                           y NT)rS   r   rU   r   r   s     rE   r   zApplication.freeze;  s9    <<mm 	FMMO	rG   c                 R    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{{rG   r   c                 V     dt         dd f fd} |d        |d        |d       y )Nsignamer=   c                 h    t        |       dfd}t        |       }|j                  |       y )Nc                 D   K   j                         d {    y 7 wr}   )send)rB   r   subsigs    rE   r;   zEApplication._reg_subapp_signals.<locals>.reg_handler.<locals>.handlerM  s     kk&)))s     )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  s0    	# 	# 	# 	L!M"L!rG   prefixc                     t        |t              st        d      |j                  d      }|st	        d      t        t        ||      }| j                  ||      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  sW    &#&011s#5660&&A00rG   resource_factoryc                 l   | j                   rt        d      |j                   rt        d       |       }| j                  j                  |       | j	                  |       | j
                  j                  |       |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     ;;QRR==>??#%%%h/  (V$::!TZZ(rG   domainc                     t        |t              st        d      d|v rt        |      }nt	        |      }t        t        ||      }| j                  ||      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  sT    &#&011F]%f-D&>D/v>00rG   routesc                 8    | j                   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   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                h   t        |t              st        d|       | j                  |       | j	                          | j
                  |d<   ||d<   | j                  r'| j                  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99I8JL 
 	t++w%5!"**002 1q	 LL
 ..
 	
 	
rG   c                d    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  sC     	T	
 "t!! 
(8
<B
 	
rG   c                 V   K   | j                   j                  |        d{    y7 w)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  s      
 oo""4(((   )')c                 V   K   | j                   j                  |        d{    y7 w)zMCauses on_shutdown signal

        Should be called before cleanup()
        N)r   r   r   s    rE   shutdownzApplication.shutdown  s"     
 ##D)))r   c                    K   | j                   j                  r$| j                   j                  |        d{    y| j                  j	                  |        d{    y7 )7 w)zLCauses on_cleanup signal

        Should be called after shutdown()
        N)r   r   r   r[   rY   r   s    rE   cleanupzApplication.cleanup  sT     
 ??!!//&&t,,, ##//555 - 6s!   5A%A!#A%A#A%#A%messagepayloadprotocolwritertaskzasyncio.Task[None]_clsc           	      p    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  sC     ::)))JJ 11
 	
rG   c              #      K   t        | j                        D ]?  }t        |dd       dk(  r|df t        j                  d|dt
        d       |df A t        |       df y w)	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  sw     $++, 		Aq2D9Q>g,QE1HI& 
 h		 't,d22s   A(A*requestc                   K   t        j                         }|j                         }| j                  j	                  |       d {   }|rt        |t              st        d|      |j                  |        |j                          ||_
        |j                  j                  t        j                        r?|j                  |       d {   }|j                   j#                          d {    ||S |j$                  }| j&                  r| j(                  s1t        |j*                  t,              st/        ||j0                        }nV|j0                  d d d   D ]A  }|j2                  D ]0  \  }}	|	rt5        t7        ||      |      }  |||       d {   }2 C  ||       d {   S 7 p7 7 7 7 w)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
j*;<%%/N4  	4 (??t{{+#227;;D..&&((($$   //
  +9 37JOOL%??4R40 <C(+(A(A <9$&4 '7 ;W'G -.c7O&;G<< W%%%O 9 <(, '<%s\   AG F5B	G F8!G 1F:2B*G F<G 0F>1G 8G :G <G >G 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!A..rG   c                      yr   r\   r   s    rE   __bool__zApplication.__bool__8  s    rG   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   s   	
E6 ",'+,.15&1560 60 $	60
 j)60 c3h'$.60 60 ''$.60 60 
60p
tM2 
t 
 	+C 	+c 	+d 	+F t  5vbz5b5 5/s/s/ / sVBZ/  C   BvbzB"BB B<s<3<4< <
!sVBZ/ 
! 
! 
!sVBZ/ D    !(3#45 !#  IvbzIDI29I I?vbz?B?27? ?;s;S;3; ;-sVBZ' -# - - ;g// ; ;#g77$> #4 #$  D    U8    t  "1 1m 1@V 1 (Y 7AN	 1 1m 1@U 1.*:!; .]@S . )%7 ) )  J     !Z ! !  J     ! !    !\ ! ! 267C	
 ''$.
 34	

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

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

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