
    3CfG              	          d dl Z d dlZd dlZd dl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.m/Z/ ddl0m1Z1 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@mAZAmBZBmCZCmDZDmEZEmFZFmGZG dZHer5eedge
d   f      ZIeee9e;ge
d   f      ZJee/   ZKeeee/eLf         ZMed   ZNneZIeZJeZKee   ZMeZN ed      ZO ed      ZP G d deeeQe'e   f   ef         ZR G d deS      ZTereeeRge	d   f      ZUneZU G d deU      ZVy)     N)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)
Middleware)NotAppKeyWarning)AccessLogger)_fix_request_current_app)RequestHandler)Request)StreamResponse)AbstractRouteDef)Server)AbstractResourceAbstractRouteDomain
MaskDomainMatchedSubAppResourcePrefixedSubAppResourceUrlDispatcher)ApplicationCleanupErrorr5   _T_Uc                   \    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dVd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$edWd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dWded#edefd&       Z%dXd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*dVd+Z+e'defd,       Z,dVd-Z-e'defd.       Z.dYd0Z/d1ed/d de0fd2Z1d3e2g e0f   d/d de0fd4Z3d5ed/d de0fd6Z4d7e
e5   de6e7   fd8Z8e'de9fd9       Z:e'de;fd:       Z<e'de;fd;       Z=e'de;fd<       Z>e'dZd=       Z?e'de	fd>       Z@e'deAfd?       ZBdeCd@deej"                     dAeeD   dBedeEfdCZFdeCd@deej"                     dAeeD   dBedeEfdDZGdVdEZHdVdFZIdVdGZJeKfdHeLdIeMdJeNdKeOdLdMdNeeK   deKfdOZPde#eQeef      fdPZRdQeKdeSfdRZTd[dSZUdefdTZVdefdUZW xZXS )\r5   )logger_debug_router_loop_handler_args_middlewares_middlewares_handlers_run_middlewares_state_frozen_pre_frozen_subapps_on_response_prepare_on_startup_on_shutdown_on_cleanup_client_max_size_cleanup_ctxN i   .)r:   routermiddlewareshandler_argsclient_max_sizeloopdebugr:   rM   rN   rO   rP   rQ   rR   returnc                "   |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 | _        i | _        d| _        d| _        g | _        t'        |       | _        t'        |       | _        t'        |       | _        t'        |       | _        t1               | _        | j*                  j5                  | j2                  j*                         | j.                  j5                  | j2                  j.                         || _        y )Nzrouter argument is deprecated   
stacklevelzloop argument is deprecated.zdebug argument is deprecatedF)r4   warningswarnDeprecationWarning
isinstancer   r;   r<   r=   r>   r:   r   r?   r@   rA   rB   rC   rD   rE   r   rF   rG   rH   rI   CleanupContextrK   appendrJ   )selfr:   rM   rN   rO   rP   rQ   rR   s           O/var/www/highfloat_scraper/venv/lib/python3.12/site-packages/aiohttp/web_app.py__init__zApplication.__init__i   sZ    >"_FMM/1CPQ &.19691MM-/Aa MM.0Bq &,
)*4[*A <@"04=? "$8>t!'-d|(.t'-d|*, 1 1 = => 1 1 = => /    clsc                 n    t        j                  dj                  | j                        t        d       y )Nz8Inheritance class {} from web.Application is discouraged   rV   )rX   rY   format__name__rZ   )rb   s    r_   __init_subclass__zApplication.__init_subclass__   s'    #VCLL1		
ra   namevalc                     || j                   vr+t        j                  dj                  |      t        d       t
        |   ||       y )Nz:Setting custom web.Application.{} attribute is discouragedrU   rV   )ATTRSrX   rY   re   rZ   super__setattr__)r^   rh   ri   	__class__s      r_   rm   zApplication.__setattr__   s@    4::%%%+VD\& 	 Gc*ra   otherc                 
    | |u S NrL   )r^   ro   s     r_   __eq__zApplication.__eq__   s    u}ra   keyc                      y rq   rL   r^   rs   s     r_   __getitem__zApplication.__getitem__       ra   c                      y rq   rL   ru   s     r_   rv   zApplication.__getitem__   rw   ra   c                      | j                   |   S rq   )rB   ru   s     r_   rv   zApplication.__getitem__   s    {{3ra   c                 V    | j                   rt        j                  dt        d       y y )Nz=Changing state of started or joined application is deprecatedrd   rV   )rC   rX   rY   rZ   r^   s    r_   _check_frozenzApplication._check_frozen   s#    <<MMR" ra   valuec                      y rq   rL   r^   rs   r}   s      r_   __setitem__zApplication.__setitem__   rw   ra   c                      y rq   rL   r   s      r_   r   zApplication.__setitem__   rw   ra   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-configrU   )categoryrW   )r|   r[   r!   rX   rY   r&   rB   r   s      r_   r   zApplication.__setitem__   sA    #v&MM* * !Cra   c                 >    | j                          | j                  |= y rq   )r|   rB   ru   s     r_   __delitem__zApplication.__delitem__   s    KKra   c                 ,    t        | j                        S rq   )lenrB   r{   s    r_   __len__zApplication.__len__   s    4;;ra   c                 ,    t        | j                        S rq   )iterrB   r{   s    r_   __iter__zApplication.__iter__   s    DKK  ra   defaultc                      y rq   rL   r^   rs   r   s      r_   getzApplication.get   rw   ra   c                      y rq   rL   r   s      r_   r   zApplication.get   rw   ra   c                      y rq   rL   r   s      r_   r   zApplication.get   rw   ra   c                 :    | j                   j                  ||      S rq   )rB   r   r   s      r_   r   zApplication.get   s    {{sG,,ra   c                     t        j                  dt        d       t        t        j
                  | j                        S )Nzloop property is deprecatedrU   rV   )rX   rY   rZ   r   asyncioAbstractEventLoopr=   r{   s    r_   rQ   zApplication.loop   s.    
 	35GTUVG--tzz::ra   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_loopr=   RuntimeErrorr;   	get_debugrE   	_set_loop)r^   rQ   subapps      r_   r   zApplication._set_loop  s    <))+D::!djj&<J  
 ;;#..*DK mm 	#FT"	#ra   c                     | j                   S rq   )rD   r{   s    r_   
pre_frozenzApplication.pre_frozen      ra   c                 ~   | j                   ry d| _         | j                  j                          | j                  j                          | j                  j                          | j
                  j                          | j                  j                          | j                  j                          | j                  j                          t        | j                               | _        | j                  rdnd| _        | j                  D ]1  }|j                          | j                  xs |j                  | _        3 y )NTF)rD   r?   freezer<   rF   rK   rG   rH   rI   tuple_prepare_middlewarer@   rN   rA   rE   
pre_freezer^   r   s     r_   r   zApplication.pre_freeze  s      "!!((*  "!  "!%*4+C+C+E%F" )-(8(8emm 	UF$($9$9$TV=T=TD!	Ura   c                     | j                   S rq   )rC   r{   s    r_   frozenzApplication.frozen1      ||ra   c                     | j                   ry | j                          d| _         | j                  D ]  }|j                           y NT)rC   r   rE   r   r   s     r_   r   zApplication.freeze5  s9    <<mm 	FMMO	ra   c                 R    t        j                  dt        d       | j                  S )Nzdebug property is deprecatedrU   rV   )rX   rY   rZ   r;   r{   s    r_   rR   zApplication.debug>  s    46HUVW{{ra   r   c                 V     dt         dd f fd} |d        |d        |d       y )NsignamerS   c                 h    t        |       dfd}t        |       }|j                  |       y )Nc                 D   K   j                         d {    y 7 wrq   )send)appr   subsigs    r_   handlerzEApplication._reg_subapp_signals.<locals>.reg_handler.<locals>.handlerG  s     kk&)))s     )r   r5   rS   N)getattrr]   )r   r   appsigr   r^   r   s      @r_   reg_handlerz4Application._reg_subapp_signals.<locals>.reg_handlerD  s.    VW-F* T7+FMM'"ra   
on_startupon_shutdown
on_cleanup)str)r^   r   r   s   `` r_   _reg_subapp_signalszApplication._reg_subapp_signalsC  s0    	# 	# 	# 	L!M"L!ra   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)r[   r   	TypeErrorrstrip
ValueErrorr   r3   _add_subapp)r^   r   r   factorys       r_   
add_subappzApplication.add_subappQ  sW    &#&011s#5660&&A00ra   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   rM   register_resourcer   rE   r]   r   r=   r   )r^   r   r   resources       r_   r   zApplication._add_subappZ  s     ;;QRR==>??#%%%h/  (V$::!TZZ(ra   domainc                     t        |t              st        d      d|v rt        |      }nt	        |      }t        t        ||      }| j                  ||      S )NzDomain must be str*)r[   r   r   r1   r0   r   r2   r   )r^   r   r   ruler   s        r_   
add_domainzApplication.add_domainj  sT    &#&011F]%f-D&>D/v>00ra   routesc                 8    | j                   j                  |      S rq   )rM   
add_routes)r^   r   s     r_   r   zApplication.add_routest  s    {{%%f--ra   c                     | j                   S rq   )rF   r{   s    r_   on_response_preparezApplication.on_response_preparew  s    (((ra   c                     | j                   S rq   )rG   r{   s    r_   r   zApplication.on_startup{  r   ra   c                     | j                   S rq   )rH   r{   s    r_   r   zApplication.on_shutdown         ra   c                     | j                   S rq   )rI   r{   s    r_   r   zApplication.on_cleanup  r   ra   c                     | j                   S rq   )rK   r{   s    r_   cleanup_ctxzApplication.cleanup_ctx  r   ra   c                     | j                   S rq   )r<   r{   s    r_   rM   zApplication.router  r   ra   c                     | j                   S rq   )r?   r{   s    r_   rN   zApplication.middlewares  r   ra   rQ   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 {}rR   r   )request_factoryrQ   )
issubclassr   r   re   r   r   r;   r>   itemsr-   _handle_make_requestr=   )r^   rQ   r   r   kvs         r_   _make_handlerzApplication._make_handler  s     *,@A;;A6BR;S 
 	t++w%5!"**002 1q	 LL
 ..
 	
 	
ra   c                d    t        j                  dt        d        | j                  d||d|S )NzFApplication.make_handler(...) is deprecated, use AppRunner API insteadrU   rV   r   rL   )rX   rY   rZ   r   )r^   rQ   r   r   s       r_   make_handlerzApplication.make_handler  sC     	W	
 "t!! 
(8
<B
 	
ra   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    r_   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    r_   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   rK   rI   r{   s    r_   cleanupzApplication.cleanup  sT     
 ??!!//&&t,,, ##//555 - 6s!   5A%A!#A%A#A%#A%messagepayloadprotocolwritertaskzasyncio.Task[None]_clsc           	      H     ||||||| j                   | j                        S )N)rP   )r=   rJ   )r^   r   r   r   r   r   r   s          r_   r   zApplication._make_request  s0     JJ 11
 	
ra   c              #      K   t        | j                        D ]J  }t        |dd       dk(  r|df t        j                  dj                  |      t        d       |df L t        |       df y w)N__middleware_version__r   Tz1old-style middleware "{!r}" deprecated, see #2252rU   rV   F)reversedr?   r   rX   rY   re   rZ   r(   )r^   ms     r_   r   zApplication._prepare_middleware  sy     $++, 		Aq2D9Q>gJQQRST& 
 h		 't,d22s   A3A5requestc                 *  K   t        j                         }|j                         }| j                  j	                  |       d {   }|r*t        |t              st        dj                  |            |j                  |        |j                          d }||_        |j                  j                  t        j                        }|r;|j!                  |       d {   }|j"                  j%                          d {    |~|j&                  }| j(                  rV|j*                  d d d   D ]A  }|j,                  D ]0  \  }	}
|
rt/        t1        |	|      |      }  |	||       d {   }2 C  ||       d {   }|S 7 C7 7 7 !7 w)Nz9match_info should be AbstractMatchInfo instance, not {!r})r   )r   r   r   r<   resolver[   r   r   re   add_appr   _match_infoheadersr   r   EXPECTexpect_handlerr   drainr   rA   appsr@   r   r   )r^   r   rQ   rR   
match_inforespexpectr   r   r   	new_styles              r_   r   zApplication._handle  ss    %%' <<//88
j*;<))/
);  	4 ($$T[[1#227;;D..&&(((< ((G$$%??4R40 <C(+(A(A <9$&4 '7 ;W'G -.c7O&;G<< !))DC 9 <( '<)s\   AFFBFF !FFA+F-F.FFFFFFFc                     | S )zgunicorn compatibilityrL   r{   s    r_   __call__zApplication.__call__#  s    ra   c                 "    dt        |       ddS )Nz<Application 0xx>)idr{   s    r_   __repr__zApplication.__repr__'  s     D!A..ra   c                      yr   rL   r{   s    r_   __bool__zApplication.__bool__*  s    ra   rS   N).rq   )r   r5   rS   N)rS   r\   )rS   r5   )Yrf   
__module____qualname__	frozensetrk   r#   loggingLoggerr   r4   r   r%   r   r   r   intr   r   r`   r   rg   r    rm   objectboolrr   r   r!   r7   rv   r   r|   r   r   r   r   r   r   r8   propertyrQ   r   r   r   r   r   rR   r   r.   r   r	   r   r   r,   r   r/   r   _RespPrepareSignalr   
_AppSignalr   r   r   r   rM   _MiddlewaresrN   r'   r   r-   r   r   r   r   r   r*   r"   r$   r)   r   r   r   r   r+   r   r
  r  r  __classcell__rn   s   @r_   r5   r5   Q   s   	
E4 ",*.,.48&4850 50 '	50
 j)50 wsCx0150 50 w00150 50 
50n
tM2 
t 
 	+C 	+c 	+d 	+F t  vbz b   s s   uS&*_5  #   vbz "    s 3 4  
!uS&*_5 
!c 
!d 
!uS&*_5 $    !(5fSk)9#:; ! vbz D 8B<   vbz B 5R=   s S 3  -uS&*_- - -s - ;g// ; ;#hw'@'@A #d #$  D    U2    t  "1 1m 1@P 1 (-=)= >HU	 1 1m 1@P 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 $ $L/# /$ ra   c                   (    e Zd Zedee   fd       Zy)r6   rS   c                 J    t        t        t           | j                  d         S )Nr   )r   r   BaseExceptionargsr{   s    r_   
exceptionszCleanupError.exceptions/  s    D'166ra   N)rf   r  r  r  r   r#  r%  rL   ra   r_   r6   r6   .  s     7D/ 7 7ra   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 )r\   rS   Nc                 0    t         |           g | _        y rq   )rl   r`   _exits)r^   rn   s    r_   r`   zCleanupContext.__init__;  s    13ra   r   c                    K   | D ]K  } ||      j                         }|j                          d {    | j                  j                  |       M y 7 "wrq   )	__aiter__	__anext__r(  r]   )r^   r   cbits       r_   rG   zCleanupContext._on_startup?  sK      	#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        $ 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+  r]   r   StopAsyncIteration	Exceptionr   r6   )r^   r   errorsr-  excs        r_   rI   zCleanupContext._on_cleanupE  s     4;;' 	QBQlln$$ lbV3M+NOP	Q 6{aQi"#EvNN	  %%  #c""#sJ   B*A9A7A9AB*7A99	B'B*B'B"B*"B''B*r  )rf   r  r  r`   r5   rG   rI   r  r   s   @r_   r\   r\   :  s1    4#[ #T #O[ OT Ora   r\   )Wr   r  rX   	functoolsr   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%   web_exceptionsr&   web_logr'   web_middlewaresr(   web_protocolr)   web_requestr*   web_responser+   web_routedefr,   
web_serverr-   web_urldispatcherr.   r/   r0   r1   r2   r3   r4   __all__r  r  r  r  _MiddlewaresHandlers_Subappsr7   r8   r   r5   r   r6   _CleanupContextBaser\   rL   ra   r_   <module>rK     s      -     ,  !   # *  !   , ! 5 (   ( *    * -)D/!ABCJ'>)BIdO)S TUj)L#HU:t3C-D$EFM"H JL#H-HT]T]Z.sF3K'7!8#!=> Zz7< 7 $X{m]4=P.P%QR$O( Ora   