
    i["                     ^   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  S SK	J
r
Jr  S SKJr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\ R4                  " S5      r " S	 S
\5      r " S S5      r " S S\5      rg)    N)ObjectReceiveStreamObjectSendStream)collapse_excgroups)BackgroundTask)ClientDisconnectRequest)ContentStreamResponseStreamingResponse)ASGIAppMessageReceiveScopeSendTc                   F   ^  \ rS rSrSrS\S\4U 4S jjrS\4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.
scopereceivec                 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)selfr   r   	__class__s      d/home/maestro/MAESTRO/maestro-backend/venv/lib/python3.13/site-packages/starlette/middleware/base.pyr   _CachedRequest.__init__   s.    ().&%*""&++-    returnc                 X  #    U R                   (       a  SS0$ U R                  (       aP  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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!   sS    )) -..%% $$ 26. 122 &C6{// #%B3v;-#PQQJ 4$'3)-D&&

" 
 "" *.D&&" 3$..00-1-B-B**!%)%:%:!: A '< 1 $ 315. 1223sI   AD*DA#D*=#D  D!)D 
D*D D'$D*&D''D*)r   r   r   )__name__
__module____qualname____firstlineno____doc__r   r   r   r   r1   __static_attributes____classcell__r   s   @r    r   r      s,    0e 0g 0:3w :3 :3r"   r   c                   z    \ rS rSr SS\S\R                  \   SS4S jjrS\	S\
S	\SS4S
 jrS\S\S\4S jrSrg)BaseHTTPMiddleware^   Nappdispatchr#   c                 H    Xl         Uc  U R                  U l        g UU l        g N)r>   r?   dispatch_func)r   r>   r?   s      r    r   BaseHTTPMiddleware.__init___   s!     .6.>T]]Hr"   r   r   sendc                 J  ^ ^^^^	#    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[
        S[        4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%   httprequestr#   c                   >^^^	^
^#    S m[         R                  " 5       u  mm	S[        4UU4S jjmSU	U4S jjnS[        SS 4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[        R                  [        S 4   4UU	4S jjn[        US   U" 5       US9nUS   Ul        U$  N NR! [         R                   a    Tb  Te[        S
5      ef = f7f)Nr#   c                    >^#    TR                  5       (       a  SS0$ [        R                  " 5        IS h  vN mS[        R                  / [        R
                  [           4   S[        4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$  N N1 N#! , IS h  vN  (       d  f       N8= f7f)Nr%   r&   funcr#   c                 f   >#    U " 5       I S h  vN nTR                   R                  5         U$  N 7frA   )cancel_scopecancel)rJ   result
task_groups     r    wrap[BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect.<locals>.wrapz   s+     '+v"//668% ".s   1/!1)	is_setanyiocreate_task_grouptypingCallable	Awaitabler   
start_soonwait)rP   messagerO   response_sentr1   s     @r    receive_or_disconnectMBaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnectt   s      ''))"$566 2244
&V=M=Ma=P9P)Q &VW &
 ))$0B0BC$($99G 54 !''))"$566 5 : 5444sW   3C+CC+A CCC C++C, C+CC+C(CC($C+c                  b   >#    TR                  5       I S h  vN   T R                  5         g  N7frA   )rY   close)recv_streamr[   s   r    "close_recv_stream_on_response_sentZBaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.close_recv_stream_on_response_sent   s)     #((***!!# +s   /-/rZ   c                 z   >#     TR                  U 5      I S h  vN   g  N! [        R                   a     g f = f7frA   )rD   rS   BrokenResourceError)rZ   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rA   )r>   	Exception)excapp_excr\   r   r   rf   re   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.z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%   zhttp.response.bodyr(   r"   r)   F)get)rZ   r(   rk   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contentrn   headers)r#   N)rS   create_memory_object_streamr   rX   r   rq   EndOfStreamr+   rU   AsyncGeneratorbytes_StreamingResponseraw_headers)rG   ra   rl   rZ   rn   rr   responserk   r\   r`   rf   re   r[   r   r   rO   r1   s          @@@@@r    	call_next.BaseHTTPMiddleware.__call__.<locals>.call_nextn   sX    26G (-'H'H'J$K  &$ $W  & & !!"DE!!$'< + 3 3 55{{6406?&;;@P$/$7$7$99G 6?&;;;;"v'<'<UD['I " " *#H-{}4H $+9#5H O9 6 :$$ <&!M"#:;;<sC   A2E;D D5D DD 	AED D %D>>E)r>   r   r1   rS   Eventr   r
   r   rT   rB   set)
r   r   r   rD   rG   r   r~   r[   rO   r1   s
   ``     @@@r    __call__BaseHTTPMiddleware.__call__e   s     =F"((5'000 0!11M	W M	 M	 M	^  !..00J!%!3!3G!GGuot<<<!!# 10 "!m 1n 1G< 1000 "!s   D#C.AD#;DC0DC8.C2/C8 C4C8D C6!D%
D#0D2C84C86D8D	>D?D	D
D D#rG   r   c                    #    [        5       e7frA   )NotImplementedError)r   rG   r   s      r    r?   BaseHTTPMiddleware.dispatch   s      "##s   )r>   rB   rA   )r3   r4   r5   r6   r   rU   OptionalDispatchFunctionr   r   r   r   r   r   RequestResponseEndpointr
   r?   r8    r"   r    r<   r<   ^   st    JNMM&,oo6F&GM	M\$E \$G \$4 \$D \$|$$+B$	$r"   r<   c                   &  ^  \ rS rSr     SS\S\S\R                  \R                  \	\	4      S\R                  \	   S\R                  \
   S\R                  \R                  \	\R                  4      S	S4U 4S
 jjjrS\S	S4U 4S jjrSrU =r$ )r|      Nrv   ru   rw   
media_type
backgroundrn   r#   c                 4   > X`l         [        TU ]	  XX4U5        g rA   )_infor   r   )r   rv   ru   rw   r   r   rn   r   s          r    r   _StreamingResponse.__init__   s     
wJOr"   rD   c                    >#    U R                   (       a  U" SU R                   S.5      I S h  vN   [        TU ]	  U5      I S h  vN $  N N7f)Nro   )r%   rn   )r   r   stream_response)r   rD   r   s     r    r   "_StreamingResponse.stream_response   sA     :: 5tzzJKKKW,T222 L2s!   *AA	AAAA)r   )   NNNN)r3   r4   r5   r6   r	   intrU   r   Mappingstrr   Anyr   r   r   r8   r9   r:   s   @r    r|   r|      s     =A+/6:AE
P
P 
P S!9:	
P
 OOC(
P OON3
P oofnnS&**_=>
P 

P 
P3$ 34 3 3r"   r|   )rU   rS   	anyio.abcr   r   starlette._utilsr   starlette.backgroundr   starlette.requestsr   r   starlette.responsesr	   r
   r   starlette.typesr   r   r   r   r   rV   rW   r   r   TypeVarr   r   r<   r|   r   r"   r    <module>r      s      ; / / 8 J J B B //7)V5E5Eh5O*OP ??%&(8(8(BB  NN3H3W H3Vh$ h$V3* 3r"   