
    )i#                    Z   S SK Jr  S SKrS SKrS SKJrJr  S SKJr  S SK	J
r
Jr  S SKJrJr  S SKJrJrJrJrJr  \R*                  \/\R,                  \   4   r\R*                  \\/\R,                  \   4   r\R2                  " S5      r " S	 S
\5      r " S S5      r " S S\5      rg)    )annotationsN)ObjectReceiveStreamObjectSendStream)collapse_excgroups)ClientDisconnectRequest)AsyncContentStreamResponse)ASGIAppMessageReceiveScopeSendTc                  :   ^  \ rS rSrSrSU 4S jjrSS jrSrU =r$ )_CachedRequest   a  
If the user calls Request.body() from their dispatch function
we cache the entire request body in memory and pass that to downstream middlewares,
but if they call Request.stream() then all we do is send an
empty body so that downstream things don't hang forever.
c                j   > [         TU ]  X5        SU l        SU l        U R	                  5       U l        g )NF)super__init___wrapped_rcv_disconnected_wrapped_rcv_consumedstream_wrapped_rc_stream)selfscopereceive	__class__s      Y/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/starlette/middleware/base.pyr   _CachedRequest.__init__   s.    ().&%*""&++-    c                f  #    U R                   (       a  SS0$ U R                  (       aW  U R                  (       a  SU l         SS0$ U R                  5       I S h  vN nUS   S:w  a  [	        SUS    35      eSU l         U$ [        U SS 5      b  SU l        SU R                  SS.$ U R                  (       a  SU l        SS	SS.$  U R                  5       nUR                  5       I S h  vN nU R                  U l        SUU R                  (       + S.$  N N,! [         a    SU l         SS0s $ f = f7f)
Ntypehttp.disconnectTzUnexpected message received: _bodyzhttp.requestFr#   body	more_bodyr!   )r   r   _is_disconnectedr   RuntimeErrorgetattrr%   _stream_consumedr   	__anext__r   )r   msgr   chunks       r   wrapped_receive_CachedRequest.wrapped_receive    s[    )) -..%% $$ 26. 122 &C6{// #%B3v;-#PQQ-1D*J 4$'3)-D&&

" 
 "" *.D&&" 3$..00-1-B-B**!%)%:%:!: C '> 1 $ 315. 1223sI   AD1DA*D1#D 'D()D D1D D.+D1-D..D1)r   r   r   )r   r   r   r   returnr   )	__name__
__module____qualname____firstlineno____doc__r   r0   __static_attributes____classcell__)r   s   @r   r   r      s    0;3 ;3r!   r   c                  6    \ rS rSrSSS jjrS	S jrS
S jrSrg)BaseHTTPMiddleware^   Nc                H    Xl         Uc  U R                  U l        g UU l        g N)appdispatchdispatch_func)r   r@   rA   s      r   r   BaseHTTPMiddleware.__init___   s    .6.>T]]Hr!   c                2  ^ ^^^^	#    TS   S:w  a  T R                  TX#5      I S h  vN   g [        TU5      nUR                  m	[        R                  " 5       mSUUU UU	4S jjn[        5          [        R                  " 5        IS h  vN mT R                  XE5      I S h  vN nU" TT	U5      I S h  vN   TR                  5         S S S 5      IS h  vN   S S S 5        g  N NZ NC N3 N! , IS h  vN  (       d  f       N*= f! , (       d  f       g = f7f)Nr#   httpc                8  >^^^	^
^#    S m[         R                  " 5       u  mm	SUU4S jjmSU	U4S jjnSU4S jjm
SUUUUU
U4S jjnTR                  U5        TR                  U5         T	R                  5       I S h  vN nUR	                  SS 5      nUS   S:X  a  Ub  T	R                  5       I S h  vN nUS   S	:X  d   eSUU	4S
 jjn[        US   U" 5       US9nUS   Ul        U$  Nm N9! [         R
                   a    Tb  Te[        S5      ef = f7f)Nc                 z  >^#    TR                  5       (       a  SS0$ [        R                  " 5        IS h  vN mSU4S jjn TR                  U TR                  5        U " T5      I S h  vN nS S S 5      IS h  vN   TR                  5       (       a  SS0$ W$  Nc N1 N#! , IS h  vN  (       d  f       N8= f7f)Nr#   r$   c                f   >#    U " 5       I S h  vN nTR                   R                  5         U$  N 7fr?   )cancel_scopecancel)funcresult
task_groups     r   wrap[BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect.<locals>.wrapx   s+     '+v"//668% ".s   1/!1)rK   z(typing.Callable[[], typing.Awaitable[T]]r3   r   )is_setanyiocreate_task_group
start_soonwait)rN   messagerM   response_sentr0   s     @r   receive_or_disconnectMBaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnectr   s      ''))"$566 2244
&
 ))$0B0BC$($99G 54 !''))"$566 5 : 5444sV   3B;BB;0B!+B,B!0B;;B< B;B!B;!B8'B*(B84B;c                 b   >#    TR                  5       I S h  vN   T R                  5         g  N7fr?   )rT   close)recv_streamrV   s   r   "close_recv_stream_on_response_sentZBaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.close_recv_stream_on_response_sent   s)     #((***!!# +s   /-/c                z   >#     TR                  U 5      I S h  vN   g  N! [        R                   a     g f = f7fr?   )sendrQ   BrokenResourceError)rU   send_streams    r   send_no_errorEBaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.send_no_error   s6     %**733300 s(   ;! ! ;! 8;8;c                    >#    T IS h  vN    TR                  TTT5      I S h  vN   S S S 5      IS h  vN   g  N1 N! [         a  n U m S n A N&S n A ff = f N"! , IS h  vN  (       d  f       g = f7fr?   )r@   	Exception)excapp_excrW   r   r   rb   ra   s    r   coro<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro   sU      ';&"hhu.C]SSS ';;S$ &"%& ';;;sq   A5<A5AA >A A5AA5A  
A
AAAAA5A2!A$"A2.A5infor#   http.response.debugzNo response returned.http.response.startc                .  >#    T IS h  vN   T  S h  vN n U S   S:X  d   eU R                  SS5      nU(       a  U7v   U R                  SS5      (       a  MK    S S S 5      IS h  vN   Tb  Teg  Nh N_
 N N! , IS h  vN  (       d  f       N%= f7f)Nr#   http.response.bodyr'   r!   r(   F)get)rU   r'   rg   r[   s     r   body_streamCBaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.body_stream   s     &;)4 "g&v2FFFF&{{637"&J&{{;>>! '; &!M ' '" ';;;sj   BA3BA;A7A5A7?A;A;B(A9)B5A77A;9B;BBBBstatus)status_codecontentrj   headersr2   )r3   None)rU   r   r3   rv   )r3   z"typing.AsyncGenerator[bytes, None])	rQ   create_memory_object_streamrS   r   ro   EndOfStreamr*   _StreamingResponseraw_headers)requestr\   rh   rU   rj   rp   responserg   rW   r[   rb   ra   rV   r   r   rM   r0   s          @@@@@r   	call_next.BaseHTTPMiddleware.__call__.<locals>.call_nextl   s+    (,G (-'H'H'J$K &$ $& & !!"DE!!$'< + 3 3 55{{6406?&;;@P$/$7$7$99G 6?&;;;;" " *gh6GQ\Q^eijH#*9#5H O5 6 :$$ <&!M"#:;;<sB   A$D-C2  C.5C2 6C07C2 ;3D.C2 0C2 2%DD)r{   r   r3   r
   )	r@   r   r0   rQ   Eventr   rR   rB   set)
r   r   r   r_   r{   r}   r|   rV   rM   r0   s
   ``     @@@r   __call__BaseHTTPMiddleware.__call__c   s     =F"((5'000 0!11K	 K	Z  !..00J!%!3!3G!GGuot<<<!!# 10 "!i 1j 1G< 1000 "!s   DC"AD/D	C$
DC,"C&#C,4C(5C,	DC*D
D$D&C,(C,*D,D	2C53D	?D
DDc                   #    [        5       e7fr?   )NotImplementedError)r   r{   r}   s      r   rA   BaseHTTPMiddleware.dispatch   s     !##s   )r@   rB   r?   )r@   r   rA   zDispatchFunction | Noner3   rv   r   r   r   r   r_   r   r3   rv   )r{   r   r}   RequestResponseEndpointr3   r
   )r4   r5   r6   r7   r   r   rA   r9    r!   r   r<   r<   ^   s    MZ$x$r!   r<   c                  J    \ rS rSr    S           SS jjrSS jrSrg)	ry      Nc                d    XPl         Xl        X l        X@l        U R	                  U5        S U l        g r?   )rj   body_iteratorrs   
media_typeinit_headers
background)r   rt   rs   ru   r   rj   s         r   r   _StreamingResponse.__init__   s/     	$&$'"r!   c                  #    U R                   b  U" SU R                   S.5      I S h  vN   U" SU R                  U R                  S.5      I S h  vN   U R                    S h  vN nU" SUSS.5      I S h  vN   M   NW N1 N N
 U" SSS	S.5      I S h  vN    U R                  (       a  U R	                  5       I S h  vN    g g 7f)
Nrk   )r#   rj   rl   )r#   rr   ru   rn   Tr&   r!   F)rj   rs   rz   r   r   )r   r   r   r_   r/   s        r   r   _StreamingResponse.__call__   s     99  5tyyIJJJ-**++
 	
 	
  -- 	Y% 4eRVWXXX K	
	YX . 0#ERSSS??//### so   &C
B 'C
BC
!B%B&B)C
9B:C
C
BC
C
B)C
CC
)r   r   rj   r   rs   )   NNN)rt   r	   rs   intru   ztyping.Mapping[str, str] | Noner   z
str | Nonerj   z&typing.Mapping[str, typing.Any] | Noner3   rv   r   )r4   r5   r6   r7   r   r   r9   r   r!   r   ry   ry      sT     37!%7;#  1	
  5 
$r!   ry   )
__future__r   typingrQ   	anyio.abcr   r   starlette._utilsr   starlette.requestsr   r   starlette.responsesr	   r
   starlette.typesr   r   r   r   r   Callable	Awaitabler   DispatchFunctionTypeVarr   r   r<   ry   r   r!   r   <module>r      s    "   ; / 8 < B B //7)V5E5Eh5O*OP ??G-D#EvGWGWX`Ga#ab 
NN3I3W I3Xb$ b$J!$ !$r!   