
    gbL              	          d dl Z d dlZd dl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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'm(Z( dd
l)m*Z* ddl+m,Z, ddl-m.Z. ddl/m0Z0m1Z1 ddl2m3Z3 ddl4m5Z5 ddl6m7Z7 ddl8m9Z9 ddl:m;Z; ddl<m=Z= ddl>m?Z? ddl@mAZA ddlBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJ dZKer5eedged   f      ZLeee;e=ged   f      ZMee1   ZNeeee1eOf         ZPed   ZQneZLeZMeZNee   ZPeZQ ed      ZR ed      ZS edeC      ZTde0ded   d ee;gee=   f   fd!ZU  ed"#      eU      ZV G d$ deeeWe(e	   f   e	f         ZX G d% d&eY      ZZereeeXge
d   f      Z[neZ[ G d' d(e[      Z\y))    N)	lru_cachepartialupdate_wrapper)TYPE_CHECKINGAnyAsyncIterator	AwaitableCallableDictIterableIteratorListMappingMutableMappingOptionalSequenceTupleTypeTypeVarUnion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CleanupErrorr8   _T_U	_Resource)boundhandlerapps)r8   .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        D/var/www/openai/venv/lib/python3.12/site-packages/aiohttp/web_app.py_build_middlewaresrI   S   sD     DbDz--DAq$WQ%@'JG .  N    i   )maxsizec                   h    e Zd Z eg d      Zeddddddddej                  dee	   d	e
e   d
eeeef      dedeej"                     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e   f   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e   f   deddfdZ deeee   f   ddfd Z!defd!Z"de#eeee   f      fd"Z$defd#Z%edXdee   d$ddee   fd%       Z&edee   d$e'deee'f   fd&       Z&edXded$edefd'       Z&dYdeeee   f   d$edefd(Z&e(dej"                  fd)       Z)deej"                     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Z0d2ed0d de1fd3Z2d4e3g e4f   d0d de4fd5Z5d6ed0d de6fd7Z7d8e
e8   de9e:   fd9Z;e(de<fd:       Z=e(de>fd;       Z?e(de>fd<       Z@e(de>fd=       ZAe(d[d>       ZBe(de	fd?       ZCe(deDfd@       ZEdeFdAdeej"                     dBeeG   dCedeHfdDZIdeFdAdeej"                     dBeeG   dCedeHfdEZJdWdFZKdWdGZLdWdHZMeNfdIeOdJePdKeQdLeRdMdNdOeeN   deNfdPZSde#eTeef      fdQZUdReNdeVfdSZWd\dTZXdefdUZYdefdVZZ xZ[S )]r8   )logger_debug_router_loop_handler_args_middlewaresrD   _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   .)rM   routermiddlewareshandler_argsclient_max_sizeloopdebugrM   r`   ra   rb   rc   rd   re   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)r7   warningswarnDeprecationWarning
isinstancer   rN   rO   rP   rQ   rM   r   rR   rD   rT   rS   rU   rV   rW   rX   r   rY   rZ   r[   r\   CleanupContextr^   appendr]   )selfrM   r`   ra   rb   rc   rd   re   s           rH   __init__zApplication.__init__y   sb    >"_FMM/1CPQ &.19691MM-/Aa MM.0Bq &,
)*4[*A <@"04-1$=? "$8>t!'-d|(.t'-d|*, 1 1 = => 1 1 = => /rJ   clsc                 n    t        j                  dj                  | j                        t        d       y )Nz8Inheritance class {} from web.Application is discouraged   rh   )rj   rk   format__name__rl   )rr   s    rH   __init_subclass__zApplication.__init_subclass__   s'    #VCLL1		
rJ   namevalc                     || j                   vr+t        j                  dj                  |      t        d       t
        |   ||       y )Nz:Setting custom web.Application.{} attribute is discouragedrg   rh   )ATTRSrj   rk   ru   rl   super__setattr__)rp   rx   ry   	__class__s      rH   r}   zApplication.__setattr__   s@    4::%%%+VD\& 	 Gc*rJ   otherc                 
    | |u S Nr_   )rp   r   s     rH   __eq__zApplication.__eq__   s    u}rJ   keyc                      y r   r_   rp   r   s     rH   __getitem__zApplication.__getitem__   s    25rJ   c                      y r   r_   r   s     rH   r   zApplication.__getitem__   s    ,/rJ   c                      | j                   |   S r   )rU   r   s     rH   r   zApplication.__getitem__   s    {{3rJ   c                 V    | j                   rt        j                  dt        d       y y )Nz=Changing state of started or joined application is deprecatedrt   rh   )rV   rj   rk   rl   rp   s    rH   _check_frozenzApplication._check_frozen   s#    <<MMO" rJ   valuec                      y r   r_   rp   r   r   s      rH   __setitem__zApplication.__setitem__   s    ?BrJ   c                      y r   r_   r   s      rH   r   zApplication.__setitem__   s    9<rJ   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-configrg   )categoryri   )r   rm   r"   rj   rk   r(   rU   r   s      rH   r   zApplication.__setitem__   sA    #v&MM* * !CrJ   c                 >    | j                          | j                  |= y r   )r   rU   r   s     rH   __delitem__zApplication.__delitem__   s    KKrJ   c                 ,    t        | j                        S r   )lenrU   r   s    rH   __len__zApplication.__len__   s    4;;rJ   c                 ,    t        | j                        S r   )iterrU   r   s    rH   __iter__zApplication.__iter__   s    DKK  rJ   c                     t        |       S r   idr   s    rH   __hash__zApplication.__hash__   s    $xrJ   defaultc                      y r   r_   rp   r   r   s      rH   getzApplication.get   s    ILrJ   c                      y r   r_   r   s      rH   r   zApplication.get   s    BErJ   c                      y r   r_   r   s      rH   r   zApplication.get   s    8;rJ   c                 :    | j                   j                  ||      S r   )rU   r   r   s      rH   r   zApplication.get  s    {{sG,,rJ   c                     t        j                  dt        d       t        t        j
                  | j                        S )Nzloop property is deprecatedrg   rh   )rj   rk   rl   r   asyncioAbstractEventLooprP   r   s    rH   rd   zApplication.loop  s.    
 	35GTUVG--tzz::rJ   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_looprP   RuntimeErrorrN   	get_debugrX   	_set_loop)rp   rd   subapps      rH   r   zApplication._set_loop  s}    <))+D::!djj&<J  
 ;;#..*DK mmFT" $rJ   c                     | j                   S r   )rW   r   s    rH   
pre_frozenzApplication.pre_frozen!      rJ   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_   ).0rG   	new_styles      rH   	<genexpr>z)Application.pre_freeze.<locals>.<genexpr>2  s      +
.Hla	M.Hs   F)rW   rR   freezerO   rY   r^   rZ   r[   r\   tuple_prepare_middlewarerD   anyrS   ra   rT   rX   
pre_freezerp   r   s     rH   r   zApplication.pre_freeze%  s     "!!((*  "!  "!%*4+C+C+E%F"'* +
.2.H.H+
 (
$ )-(8(8emmF$($9$9$TV=T=TD! $rJ   c                     | j                   S r   )rV   r   s    rH   frozenzApplication.frozenA      ||rJ   c                     | j                   ry | j                          d| _         | j                  D ]  }|j                           y NT)rV   r   rX   r   r   s     rH   r   zApplication.freezeE  s4    <<mmFMMO $rJ   c                 R    t        j                  dt        d       | j                  S )Nzdebug property is deprecatedrg   rh   )rj   rk   rl   rN   r   s    rH   re   zApplication.debugN  s    46HUVW{{rJ   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)rE   r   subsigs    rH   r>   zEApplication._reg_subapp_signals.<locals>.reg_handler.<locals>.handlerW  s     kk&)))s     )rE   r8   r@   N)getattrro   )r   r>   appsigr   rp   r   s      @rH   reg_handlerz4Application._reg_subapp_signals.<locals>.reg_handlerT  s.    VW-F* T7+FMM'"rJ   
on_startupon_shutdown
on_cleanup)str)rp   r   r   s   `` rH   _reg_subapp_signalszApplication._reg_subapp_signalsS  s0    	# 	# 	# 	L!M"L!rJ   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)rm   r   	TypeErrorrstrip
ValueErrorr   r5   _add_subapp)rp   r   r   factorys       rH   
add_subappzApplication.add_subappa  sW    &#&011s#5660&&A00rJ   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   rX   ro   r   rP   r   )rp   r   r   resources       rH   r   zApplication._add_subappj  s     ;;QRR==>??#%%%h/  (V$::!TZZ(rJ   domainc                     t        |t              st        d      d|v rt        |      }nt	        |      }t        t        ||      }| j                  ||      S )NzDomain must be str*)rm   r   r   r3   r2   r   r4   r   )rp   r   r   ruler   s        rH   
add_domainzApplication.add_domainz  sT    &#&011F]%f-D&>D/v>00rJ   routesc                 8    | j                   j                  |      S r   )r`   
add_routes)rp   r   s     rH   r   zApplication.add_routes  s    {{%%f--rJ   c                     | j                   S r   )rY   r   s    rH   on_response_preparezApplication.on_response_prepare  s    (((rJ   c                     | j                   S r   )rZ   r   s    rH   r   zApplication.on_startup  r   rJ   c                     | j                   S r   )r[   r   s    rH   r   zApplication.on_shutdown         rJ   c                     | j                   S r   )r\   r   s    rH   r   zApplication.on_cleanup  r   rJ   c                     | j                   S r   )r^   r   s    rH   cleanup_ctxzApplication.cleanup_ctx  r   rJ   c                     | j                   S r   )rO   r   s    rH   r`   zApplication.router  r   rJ   c                     | j                   S r   )rR   r   s    rH   ra   zApplication.middlewares  r   rJ   rd   access_log_classr   kwargsc                   t        |t              st        dj                  |            | j	                  |       | j                          | j                  |d<   ||d<   | j                  r'| j                  j                         D ]
  \  }}|||<    t        | j                  f| j                  | j                  d|S )NzMaccess_log_class must be subclass of aiohttp.abc.AbstractAccessLogger, got {}re   r   )request_factoryrd   )
issubclassr   r   ru   r   r   rN   rQ   itemsr/   _handle_make_requestrP   )rp   rd   r   r   kvs         rH   _make_handlerzApplication._make_handler  s     *,@A;;A6BR;S 
 	t++w%5!"**0021q	 3 LL
 ..
 	
 	
rJ   c                d    t        j                  dt        d        | j                  d||d|S )NzFApplication.make_handler(...) is deprecated, use AppRunner API insteadrg   rh   r   r_   )rj   rk   rl   r   )rp   rd   r   r   s       rH   make_handlerzApplication.make_handler  sC     	T	
 "t!! 
(8
<B
 	
rJ   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    rH   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    rH   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^   r\   r   s    rH   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)rc   )r   rP   r]   )rp   r  r  r  r  r	  r
  s          rH   r   zApplication._make_request  sC     ::)))JJ 11
 	
rJ   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 #2252rg   rh   F)reversedrR   r   rj   rk   rl   r*   )rp   rF   s     rH   r   zApplication._prepare_middleware  sr     $++,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                  j                  t        j                        r?|j!                  |       d {   }|j"                  j%                          d {    ||S |j&                  }| j(                  r| j*                  s1t        |j,                  t.              st1        ||j2                        }nV|j2                  d d d   D ]A  }|j4                  D ]0  \  }}	|	rt7        t9        ||      |      }  |||       d {   }2 C  ||       d {   S 7 |7 7 7 7 w)Nz9match_info should be AbstractMatchInfo instance, not {!r}rB   rC   )r   r   r   rO   resolverm   r   r   ru   add_appr   _match_infoheadersr   r   EXPECTexpect_handlerr  drainr>   rT   rS   router6   _cached_build_middlewarer?   rD   r   r   )
rp   r  rd   re   
match_inforespr>   rE   rF   r   s
             rH   r   zApplication._handle  s    %%' <<//88
j*;<))/
);  	4 (??t{{+#227;;D..&&((($$   //
  +9 37JOOL%??4R40C(+(A(A9$&4 '7 ;W'G -.c7O&;G )B 1 W%%%O 9 <(, '<%s\   AGGBGG!G=G>B*G(G)G<G
=GGGG
Gc                     | S )zgunicorn compatibilityr_   r   s    rH   __call__zApplication.__call__;  s    rJ   c                 "    dt        |       ddS )Nz<Application 0xx>r   r   s    rH   __repr__zApplication.__repr__?  s     D!A..rJ   c                      yr   r_   r   s    rH   __bool__zApplication.__bool__B  s    rJ   r@   N).r   )r   r8   r@   N)r@   rn   )r@   r8   )\rv   
__module____qualname__	frozensetr{   r$   loggingLoggerr   r7   r   r'   r   r   r   intr   r   rq   r   rw   r!   r}   objectboolr   r   r"   r:   r   r   r   r   r   r   r   r   r   r   r;   propertyrd   r   r   r   r   r   re   r   r5   r   r
   r<   r   r4   r   r.   r   r1   r   _RespPrepareSignalr   
_AppSignalr   r   r   r   r`   _Middlewaresra   r)   r   r/   r   r   r   r  r  r,   r#   r%   r+   r    r   r   r   r-   r   r  r!  r#  __classcell__r~   s   @rH   r8   r8   `   s   	
E6 ",*.,.48&4860 60 '	60
 j)60 wsCx0160 60 w00160 60 
60p
tM2 
t 
 	+C 	+c 	+d 	+F t  5vbz5b5 5/s/s/ / uS&*_5  #   BvbzB"BB B<s<3<4< <
!uS&*_5 
!c 
!d 
!uS&*_5 $    !(5fSk)9#:; !#  LvbzLDL8B<L LEvbzEBE5R=E E;s;S;3; ;-uS&*_- - -s - ;g// ; ;#hw'@'@A #d #$  D    U8    t  "1 1m 1@V 1 (Y 7AN	 1 1m 1@U 1.*:!; .]@S . )%7 ) )  J     !Z ! !  J     ! !    !\ ! ! 597C	
 w001
 34	

 
 

B 597C	
 w001
 34	

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

 %
 #
 7m
 

*3XeJ4D.E%F 3*&W *& *&X/# /$ rJ   c                   (    e Zd Zedee   fd       Zy)r9   r@   c                 J    t        t        t           | j                  d         S )Nr   )r   r   BaseExceptionargsr   s    rH   
exceptionszCleanupError.exceptionsG  s    D'166rJ   N)rv   r%  r&  r-  r   r5  r7  r_   rJ   rH   r9   r9   F  s     7D/ 7 7rJ   r9   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 )rn   r@   Nc                 0    t         |           g | _        y r   )r|   rq   _exits)rp   r~   s    rH   rq   zCleanupContext.__init__S  s    13rJ   rE   c                    K   | D ]K  } ||      j                         }|j                          d {    | j                  j                  |       M y 7 "wr   )	__aiter__	__anext__r:  ro   )rp   rE   cbits       rH   rZ   zCleanupContext._on_startupW  sF     BC""$B,,.  KKr"  s   /AA#Ac                 x  K   g }t        | j                        D ]8  }	 |j                          d {    |j                  t	        |d             : |rt        |      dk(  r|d   t        d|      y 7 E# t
        $ r Y jt        t        j                  f$ r}|j                  |       Y d }~d }~ww xY ww)Nz has more than one 'yield'r   r   z Multiple errors on cleanup stage)r  r:  r=  ro   r   StopAsyncIteration	Exceptionr   CancelledErrorr   r9   )rp   rE   errorsr?  excs        rH   r\   zCleanupContext._on_cleanup]  s     4;;'BQlln$$ lbV3M+NOP ( 6{aQi"#EvNN	  %% w556 #c""#sJ   B:A9A7A9AB:7A99	B7B:B7B2-B:2B77B:r$  )rv   r%  r&  rq   r8   rZ   r\   r1  r2  s   @rH   rn   rn   R  s1    4#[ #T #O[ OT OrJ   rn   )]r   r(  rj   	functoolsr   r   r   typingr   r   r   r	   r
   r   r   r   r   r   r   r   r   r   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_urldispatcherr0   r1   r2   r3   r4   r5   r6   r7   __all__r/  r.  r0  r,  _MiddlewaresHandlers_Subappsr:   r;   r<   rI   r  r   r8   r   r9   _CleanupContextBasern   r_   rJ   rH   <module>r^     s      8 8     ,  !   # *  ! ) , ! 5 (   ( * 	 	 	 * -)D/!ABCJ'>)BIdO)S TU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 c.sF3K'7!8#!=> cL7< 7 $X{m]4=P.P%QR$O( OrJ   