+
    Pjˆ                       ^ RI Ht ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RIH
t
 ^ RIHt ^ RIHt ^ RIHtHt ^ RIHt ^ RIHtHt ^ R	IHtHtHt ^ R
IHt ^ RIHt ^ RIH t  ^ RI!H"t"H#t#H$t$ ^ RI%H&t&H't'H(t(H)t)H*t* ^ RI+H,t,H-t-  ! R R].4      t/ ! R R]4      t0R R lt1R R lt2R R lt3R R lt4R R lt5]Pl                  ! R4      t7R R  lt8 ! R! R"4      t9 ! R# R$]94      t: ! R% R&]94      t; ! R' R(]94      t< ! R) R*]94      t=]P|                  ! R+4      t? ! R, R-]P                  ]?,          4      tAR. R/ ltB ! R0 R14      tC ! R2 R34      tDR# )4    )annotationsN)asynccontextmanager)Enum)wrap_app_handling_exceptions)get_route_pathis_async_callable)run_in_threadpool)CONVERTOR_TYPES	Convertor)URLHeadersURLPath)HTTPException)
Middleware)Request)PlainTextResponseRedirectResponseResponse)ASGIAppLifespanReceiveScopeSend)	WebSocketWebSocketClosec                  2   a  ] tR t^tRtR V 3R lltRtV ;t# )NoMatchFoundzq
Raised by `.url_for(name, **path_params)` and `.url_path_for(name, **path_params)`
if no matching route exists.
c               $    V ^8  d   QhRRRRRR/# )   namestrpath_paramszdict[str, typing.Any]returnNone )formats   "j/Users/ahmed/devFolder/Ultron/claude-voice/gateway/.venv/lib/python3.14/site-packages/starlette/routing.py__annotate__NoMatchFound.__annotate__!   s'     V VS V/D V V    c                	   < R P                  \        VP                  4       4      4      p\        SV `  RV RV R24       R# ), zNo route exists for name "z" and params "z".N)joinlistkeyssuper__init__)selfr    r"   params	__class__s   &&& r'   r1   NoMatchFound.__init__!   s=    4 0 0 2345dV>&QSTUr*   r%   )__name__
__module____qualname____firstlineno____doc__r1   __static_attributes____classcell__)r4   s   @r'   r   r      s    
V Vr*   r   c                  "    ] tR t^&t^ t^t^tRtR# )Matchr%   N)r6   r7   r8   r9   NONEPARTIALFULLr;   r%   r*   r'   r>   r>   &   s    DGDr*   r>   c                    V ^8  d   QhRRRR/# )r   obj
typing.Anyr#   boolr%   )r&   s   "r'   r(   r(   ,   s     , ,
 ,t ,r*   c                    \         P                  ! R\        4       \        V \        P
                  4      '       d   V P                  p K.  \        P                  ! V 4      # )zr
Correctly determines if an object is a coroutine function,
including those wrapped in functools.partial objects.
zViscoroutinefunction_or_partial is deprecated, and will be removed in a future release.)	warningswarnDeprecationWarning
isinstance	functoolspartialfuncinspectiscoroutinefunction)rC   s   &r'   iscoroutinefunction_or_partialrP   ,   sE    
 MM` S)++
,
,hh&&s++r*   c                    V ^8  d   QhRRRR/# )r   rM   Atyping.Callable[[Request], typing.Awaitable[Response] | Response]r#   r   r%   )r&   s   "r'   r(   r(   :   s      
Kr*   c                v   a \        V 4      '       d   T M\        P                  ! \        V 4      oR V3R llpV# )z]
Takes a function or coroutine `func(request) -> response`,
and returns an ASGI application.
c               (    V ^8  d   QhRRRRRRRR/# 	r   scoper   receiver   sendr   r#   r$   r%   )r&   s   "r'   r(   &request_response.<locals>.__annotate__E   s.     O O O O O Or*   c                x   <a"   \        WV4      oR  VV3R llp\        VS4      ! WV4      G Rj  xL
  R#  L5i)c               (    V ^8  d   QhRRRRRRRR/# rU   r%   )r&   s   "r'   r(   3request_response.<locals>.app.<locals>.__annotate__H   s(     	1 	1U 	1W 	1D 	1T 	1r*   c                Z   <"   S! S4      G R j  xL
 pV! WV4      G R j  xL
  R #  L L5iNr%   )rV   rW   rX   responsefrequests   &&& r'   app*request_response.<locals>.app.<locals>.appH   s*     wZ'H54000 (0s   +'+)++N)r   r   )rV   rW   rX   rb   ra   r`   s   &&& @r'   rb   request_response.<locals>.appE   s5     %$/	1 	1 +38NNNs   -:8:)r   rK   rL   r	   )rM   rb   r`   s   & @r'   request_responsere   :   s;     "$''Y->->?PRV-W O O Jr*   c                    V ^8  d   QhRRRR/# )r   rM   4typing.Callable[[WebSocket], typing.Awaitable[None]]r#   r   r%   )r&   s   "r'   r(   r(   Q   s      
>r*   c                   a  R V 3R llpV# )zE
Takes a coroutine `func(session)`, and returns an ASGI application.
c               (    V ^8  d   QhRRRRRRRR/# rU   r%   )r&   s   "r'   r(   'websocket_session.<locals>.__annotate__Y   s.     O O O O O Or*   c                z   <a"   \        WVR 7      oR VV3R llp\        VS4      ! WV4      G Rj  xL
  R#  L5i))rW   rX   c               (    V ^8  d   QhRRRRRRRR/# rU   r%   )r&   s   "r'   r(   4websocket_session.<locals>.app.<locals>.__annotate__\   s(     	  	 U 	 W 	 D 	 T 	 r*   c                4   <"   S! S4      G R j  xL
  R #  L5ir^   r%   )rV   rW   rX   rM   sessions   &&&r'   rb   +websocket_session.<locals>.app.<locals>.app\   s     w-s   N)r   r   )rV   rW   rX   rb   ro   rM   s   &&& @r'   rb   websocket_session.<locals>.appY   s5     E>	  	  +38NNNs   .;9;r%   )rM   rb   s   f r'   websocket_sessionrr   Q   s    O O Jr*   c                    V ^8  d   QhRRRR/# )r   endpoint typing.Callable[..., typing.Any]r#   r!   r%   )r&   s   "r'   r(   r(   d   s     F F7 FC Fr*   c                D    \        V R V P                  P                  4      # )r6   )getattrr4   r6   )rt   s   &r'   get_namerx   d   s    8Z););)D)DEEr*   c               (    V ^8  d   QhRRRRRRRR/# )	r   pathr!   param_convertorsz dict[str, Convertor[typing.Any]]r"   zdict[str, str]r#   ztuple[str, dict[str, str]]r%   )r&   s   "r'   r(   r(   h   s0      
6    	r*   c                   \        VP                  4       4       Ff  w  r4R V,           R,           V 9   g   K  W,          pVP                  V4      pV P                  R V,           R,           V4      p VP	                  V4       Kh  	  W3# ){})r.   items	to_stringreplacepop)rz   r{   r"   keyvalue	convertors   &&&   r'   replace_paramsr   h   su    
 ;,,./
9s?d"(-I''.E<<c	C7DOOC  0 r*   z4{([a-zA-Z_][a-zA-Z0-9_]*)(:[a-zA-Z_][a-zA-Z0-9_]*)?}c                    V ^8  d   QhRRRR/# )r   rz   r!   r#   zAtuple[typing.Pattern[str], str, dict[str, Convertor[typing.Any]]]r%   )r&   s   "r'   r(   r(   z   s      5A 5A
5AF5Ar*   c                    V P                  R4      '       * pRpRp\        4       p^ p/ p\        P                  V 4       F  pVP	                  R4      w  rV	P                  R4      p	V	\        9   g   Q RV	 R24       h\        V	,          p
V\        P                  ! WVP                  4        4      ,          pVRV R	V
P                   R
2,          pW0WWP                  4        ,          pVRV,          ,          pW9   d   VP                  V4       WV&   VP                  4       pK  	  V'       dC   RP                  \        V4      4      p\        V4      ^8  d   RMRp\!        RV RV RV  24      hV'       d@   WR P#                  R4      ^ ,          pV\        P                  ! V4      R,           ,          pM&V\        P                  ! WR 4      R,           ,          pW0VR ,          p\        P$                  ! V4      W63# )a  
Given a path string, like: "/{username:str}",
or a host string, like: "{subdomain}.mydomain.org", return a three-tuple
of (regex, format, {param_name:convertor}).

regex:      "/(?P<username>[^/]+)"
format:     "/{username}"
convertors: {"username": StringConvertor()}
/^ r!   :zUnknown path convertor ''z(?P<>)z{%s}r,   szDuplicated param name z	 at path N$)
startswithsetPARAM_REGEXfinditergroupslstripr
   reescapestartregexaddendr-   sortedlen
ValueErrorsplitcompile)rz   is_host
path_regexpath_formatduplicated_paramsidxr{   match
param_nameconvertor_typer   namesendinghostnames   &             r'   compile_pathr   z   s    //#&&GJK
C%%d+%*\\%%8"
'..s30^4L^L\\]2^^0#N3	bii5;;= 9::
ZL)//):!<<
C++-00v
**)!!*-'0$iik# ,& 		&!234-.20%	$PQQ:##C(+bii)C//
biiT
+c11
:K::j!;@@r*   c                  F    ] tR t^tR R ltR R ltR R ltR R ltR	tR
# )	BaseRoutec                    V ^8  d   QhRRRR/# r   rV   r   r#   ztuple[Match, Scope]r%   )r&   s   "r'   r(   BaseRoute.__annotate__   s     $ $U $': $r*   c                	    \        4       hr^   NotImplementedError)r2   rV   s   &&r'   matchesBaseRoute.matches       !##r*   c               $    V ^8  d   QhRRRRRR/# r   r    r!   r"   rD   r#   r   r%   )r&   s   "r'   r(   r      s!     $ $ $
 $w $r*   c               	    \        4       hr^   r   )r2   r    r"   s   "",r'   url_path_forBaseRoute.url_path_for   r   r*   c               (    V ^8  d   QhRRRRRRRR/# rU   r%   )r&   s   "r'   r(   r      s(     $ $% $' $ $$ $r*   c                	   "   \        4       h5ir^   r   r2   rV   rW   rX   s   &&&&r'   handleBaseRoute.handle   s     !##s   c               (    V ^8  d   QhRRRRRRRR/# rU   r%   )r&   s   "r'   r(   r      s(     0 0E 0G 04 0D 0r*   c                r  "   V P                  V4      w  rEV\        P                  8X  dZ   VR,          R8X  d!   \        RRR7      pV! WV4      G Rj  xL
  R# VR,          R8X  d   \	        4       pV! WV4      G Rj  xL
  R# VP                  V4       V P                  WV4      G Rj  xL
  R#  L^ L5 L
5i)z
A route may be used in isolation as a stand-alone ASGI app.
This is a somewhat contrived case, as they'll almost always be used
within a Router, but could be useful for some tooling and minimal apps.
typehttp	Not Found  status_codeN	websocket)r   r>   r?   r   r   updater   )r2   rV   rW   rX   r   child_scoper_   websocket_closes   &&&&    r'   __call__BaseRoute.__call__   s      "\\%0EJJV}&,[cJut444  v+-"0"2%ed;;;[!kk%$/// 5 < 	0s6   AB7B1*B7=B3>,B7*B5+B73B75B7r%   N)	r6   r7   r8   r9   r   r   r   r   r;   r%   r*   r'   r   r      s    $$$0 0r*   r   c                  r    ] tR t^tRRRRRRRR/R R lltR	 R
 ltR R ltR R ltR R ltR R lt	Rt
R# )RoutemethodsNr    include_in_schemaT
middlewarec               4    V ^8  d   QhRRRRRRRRR	R
RRRR/# )r   rz   r!   rt   ru   r   list[str] | Noner    
str | Noner   rE   r   "typing.Sequence[Middleware] | Noner#   r$   r%   )r&   s   "r'   r(   Route.__annotate__   sY     'V 'V'V 3'V
 "'V 'V  'V 7'V 
'Vr*   c               	   VP                  R 4      '       g   Q R4       hWn        W n        Vf   \        V4      MTV n        WPn        Tp\        V\        P                  4      '       d   VP                  pK.  \        P                  ! V4      '       g   \        P                  ! V4      '       d   \        V4      V n        Vf   R.pMW n        Ve1   \        V4       F!  w  rp
V! V P                  .V	O5/ V
B V n        K#  	  Vf	   RV n        MPV Uu0 uF  qP#                  4       kK  	  upV n        RV P                   9   d   V P                   P%                  R4       \'        V4      w  V n        V n        V n        R# u upi )r    Routed paths must start with '/'NGETHEAD)r   rz   rt   rx   r    r   rJ   rK   rL   rM   rN   
isfunctionismethodre   rb   reversedr   upperr   r   r   r   r{   )r2   rz   rt   r   r    r   r   endpoint_handlerclsargskwargsmethods   &&&$$$$     r'   r1   Route.__init__   sD    s##G%GG#	 *.,HX&D	!2#)9+<+<==/44.//73C3CDT3U3U'1DH '  H!%-j%9!6txx9$9&9 &: ?DL9@AvLLNADL$  (COPTCU@)4+@	 Bs   E=c                    V ^8  d   QhRRRR/# r   r%   )r&   s   "r'   r(   r      s      U ': r*   c                	N   VR ,          R8X  Ed   \        V4      pV P                  P                  V4      pV'       d   VP                  4       pVP	                  4        F)  w  rVV P
                  V,          P                  V4      WE&   K+  	  \        VP                  R/ 4      4      pVP                  V4       RV P                  RV/pV P                  '       d+   VR,          V P                  9  d   \        P                  V3# \        P                  V3# \        P                  / 3# )r   r   r"   rt   r   )r   r   r   	groupdictr   r{   convertdictgetr   rt   r   r>   r@   rA   r?   	r2   rV   
route_pathr   matched_paramsr   r   r"   r   s	   &&       r'   r   Route.matches   s    =F"'.JOO))*5E!&!2"0"6"6"8JC*.*?*?*D*L*LU*SN' #9"599]B#?@"">2)4==-U<<<E(O4<<$G ==+55 ::{22zz2~r*   c               $    V ^8  d   QhRRRRRR/# r   r%   )r&   s   "r'   r(   r     s!     	3 	3 	3
 	3w 	3r*   c               	0   \        VP                  4       4      p\        V P                  P                  4       4      pWP                  8w  g   W48w  d   \	        W4      h\        V P                  V P                  V4      w  rVV'       d   Q h\        VR R7      # )r   rz   protocolr   r/   r{   r    r   r   r   r   r2   r    r"   seen_paramsexpected_paramsrz   remaining_paramss   "",    r'   r   Route.url_path_for  s|    +**,-d3388:;99 >t11!/0@0@$BWBWYd!e###D622r*   c               (    V ^8  d   QhRRRRRRRR/# rU   r%   )r&   s   "r'   r(   r     s(     	1 	1% 	1' 	1 	1$ 	1r*   c                	B  "   V P                   '       dk   VR ,          V P                   9  dS   RRP                  V P                   4      /pRV9   d   \        RVR7      h\        RRVR7      pV! WV4      G Rj  xL
  R# V P	                  WV4      G Rj  xL
  R#  L" L5i)r   Allowr,   rb   i  )r   headerszMethod Not AllowedN)r   r-   r   r   rb   )r2   rV   rW   rX   r  r_   s   &&&&  r'   r   Route.handle  s     <<<E(O4<<?		$,, 78G~#WEE,-As\cd54000((54000 10s$   A6B8B9BBBBc                    V ^8  d   QhRRRR/# r   otherrD   r#   rE   r%   )r&   s   "r'   r(   r   "  s     
 
J 
4 
r*   c                	    \        V\        4      ;'       d\    V P                  VP                  8H  ;'       d;    V P                  VP                  8H  ;'       d    V P                  VP                  8H  # r^   )rJ   r   rz   rt   r   r2   r  s   &&r'   __eq__Route.__eq__"  sa    ue$ . .		UZZ'. ./. . -		
r*   c                   V ^8  d   QhRR/# r   r#   r!   r%   )r&   s   "r'   r(   r   *  s     R R# Rr*   c                	    V P                   P                  p\        V P                  ;'       g    . 4      pV P                  V P
                  rCV R V: RV: RV: R2# )(path=, name=z
, methods=r   )r4   r6   r   r   rz   r    )r2   
class_namer   rz   r    s   &    r'   __repr__Route.__repr__*  sU    ^^,,
++,YY		dVD874(*WKqQQr*   )	rb   rt   r   r   r    r{   rz   r   r   r6   r7   r8   r9   r1   r   r   r   r	  r  r;   r%   r*   r'   r   r      sU    'V
 %)'V  'V #''V :>'VR$	3	1
R Rr*   r   c                  j    ] tR tRtRRRR/R R lltR R ltR	 R
 ltR R ltR R ltR R lt	Rt
R# )WebSocketRoutei1  r    Nr   c          
     ,    V ^8  d   QhRRRRRRRRR	R
/# )r   rz   r!   rt   ru   r    r   r   r   r#   r$   r%   )r&   s   "r'   r(   WebSocketRoute.__annotate__2  sC     V VV 3V
 V 7V 
Vr*   c               	(   VP                  R 4      '       g   Q R4       hWn        W n        Vf   \        V4      MTV n        Tp\        V\        P                  4      '       d   VP                  pK.  \        P                  ! V4      '       g   \        P                  ! V4      '       d   \        V4      V n        MW n        Ve1   \        V4       F!  w  rgpV! V P                  .VO5/ VB V n        K#  	  \        V4      w  V n        V n        V n        R# )r   r   N)r   rz   rt   rx   r    rJ   rK   rL   rM   rN   r   r   rr   rb   r   r   r   r   r{   )	r2   rz   rt   r    r   r   r   r   r   s	   &&&$$    r'   r1   WebSocketRoute.__init__2  s     s##G%GG#	 *.,HX&D	#)9+<+<==/44.//73C3CDT3U3U(2DH  H!%-j%9!6txx9$9&9 &: DPPTCU@)4+@r*   c                    V ^8  d   QhRRRR/# r   r%   )r&   s   "r'   r(   r  O        U ': r*   c                	   VR ,          R8X  d   \        V4      pV P                  P                  V4      pV'       d   VP                  4       pVP	                  4        F)  w  rVV P
                  V,          P                  V4      WE&   K+  	  \        VP                  R/ 4      4      pVP                  V4       RV P                  RV/p\        P                  V3# \        P                  / 3# )r   r   r"   rt   )r   r   r   r   r   r{   r   r   r   r   rt   r>   rA   r?   r   s	   &&       r'   r   WebSocketRoute.matchesO  s    =K''.JOO))*5E!&!2"0"6"6"8JC*.*?*?*D*L*LU*SN' #9"599]B#?@"">2)4==-Uzz;..zz2~r*   c               $    V ^8  d   QhRRRRRR/# r   r%   )r&   s   "r'   r(   r  ^  s!     	8 	8 	8
 	8w 	8r*   c               	0   \        VP                  4       4      p\        V P                  P                  4       4      pWP                  8w  g   W48w  d   \	        W4      h\        V P                  V P                  V4      w  rVV'       d   Q h\        VR R7      # )r   r   r   r   s   "",    r'   r   WebSocketRoute.url_path_for^  s|    +**,-d3388:;99 >t11!/0@0@$BWBWYd!e###D;77r*   c               (    V ^8  d   QhRRRRRRRR/# rU   r%   )r&   s   "r'   r(   r  i  (     - -% -' - -$ -r*   c                	F   "   V P                  WV4      G R j  xL
  R #  L5ir^   rb   r   s   &&&&r'   r   WebSocketRoute.handlei       hhut,,,   !!c                    V ^8  d   QhRRRR/# r  r%   )r&   s   "r'   r(   r  l  s     q qJ q4 qr*   c                	    \        V\        4      ;'       d;    V P                  VP                  8H  ;'       d    V P                  VP                  8H  # r^   )rJ   r  rz   rt   r  s   &&r'   r	  WebSocketRoute.__eq__l  s?    %0ppTYY%**5LppQUQ^Q^bgbpbpQppr*   c                   V ^8  d   QhRR/# r  r%   )r&   s   "r'   r(   r  o  s     T T# Tr*   c                	l    V P                   P                   R V P                  : RV P                  : R2# )r  r  r   )r4   r6   rz   r    r2   s   &r'   r  WebSocketRoute.__repr__o  s/    ..))*&WTYYMQRSSr*   )rb   rt   r    r{   rz   r   r   r  r%   r*   r'   r  r  1  s?    V
  V :>V:	8-qT Tr*   r  c                      ] tR tRtRRR/R R lllt]R R l4       tR R	 ltR
 R ltR R lt	R R lt
R R ltRtR# )Mountis  Nr   c               0    V ^8  d   QhRRRRRRRRR	R
RR/# )r   rz   r!   rb   ASGIApp | Noneroutes!typing.Sequence[BaseRoute] | Noner    r   r   r   r#   r$   r%   )r&   s   "r'   r(   Mount.__annotate__t  sN     l ll l 2	l
 l 7l 
lr*   c               	   VR 8X  g   VP                  R4      '       g   Q R4       hVf   Vf   Q R4       hVP                  R4      V n        Ve   W n        M\	        VR7      V n        V P                  V n        Ve1   \        V4       F!  w  rgpV! V P
                  .VO5/ VB V n        K#  	  W@n        \        V P                  R,           4      w  V n	        V n
        V n        R# )r   r   r   Nz0Either 'app=...', or 'routes=' must be specifiedr3  z/{path:path})r   rstriprz   	_base_appRouterrb   r   r    r   r   r   r{   )	r2   rz   rb   r3  r    r   r   r   r   s	   &&&&&$   r'   r1   Mount.__init__t  s     rzT__S11U3UU1&"4h6hh4KK$	?&)N#62DN>>!%-j%9!6txx9$9&9 &:	COPTPYPY\jPjCk@)4+@r*   c                   V ^8  d   QhRR/# r   r#   zlist[BaseRoute]r%   )r&   s   "r'   r(   r5    s     5 5 5r*   c                	0    \        V P                  R . 4      # r7  )rw   r9  r-  s   &r'   r3  Mount.routes  s    t~~x44r*   c                    V ^8  d   QhRRRR/# r   r%   )r&   s   "r'   r(   r5    s      U ': r*   c                	|   VR ,          R	9   Ed   VP                  RR4      p\        V4      pV P                  P                  V4      pV'       d   VP	                  4       pVP                  4        F)  w  rgV P                  V,          P                  V4      WV&   K+  	  RVP                  R4      ,           pVR\        V4      )  p	\        VP                  R/ 4      4      p
V
P                  V4       RV
RVP                  RV4      RW),           RV P                  /p\        P                  V3# \        P                  / 3# )
r   	root_pathr   r   rz   Nr"   app_root_pathrt   r   r   )r   r   r   r   r   r   r{   r   r   r   r   r   rb   r>   rA   r?   )r2   rV   rB  r   r   r   r   r   remaining_pathmatched_pathr"   r   s   &&          r'   r   Mount.matches  s   =11		+r2I'.JOO))*5E!&!2"0"6"6"8JC*.*?*?*D*L*LU*SN' #9!$~'9'9&'A!A)*@S-@,@A"599]B#?@"">2!; $UYY	%J!9  zz;..zz2~r*   c               $    V ^8  d   QhRRRRRR/# r   r%   )r&   s   "r'   r(   r5    s!     . . .
 .w .r*   c               	J   V P                   el   WP                   8X  d\   RV9   dU   VR,          P                  R4      VR&   \        V P                  V P                  V4      w  r4V'       g   \        VR7      # EMV P                   e)   VP                  V P                   R,           4      '       d   V P                   f   TpMV\        V P                   4      ^,           R  pVP                  R4      pRVR&   \        V P                  V P                  V4      w  rtVe   WdR&   V P                  ;'       g    .  FM  p VP                  ! V3/ VB p	\        VP                  R4      \        V	4      ,           V	P                  R7      u # 	  \        W4      h  \         d     Kj  i ; i)Nrz   r   )rz   r   r   r   )r    r   r   r   r{   r   r   r   r   r3  r   r8  r!   r   r   )
r2   r    r"   rz   r   remaining_name
path_kwargpath_prefixrouteurls
   "",       r'   r   Mount.url_path_for  ss   99 TYY%66[;P"-f"5"<"<S"AK%3D4D4DdF[F[]h%i"D#D)) $YY$//$))c/"B"Byy !% "&c$))nq&8&:!;$0J"$K,:4;K;KTMbMbdo,p)K%+5(***,,^P?OPC"(:(:3(?#c((JUXUaUabb + 4-- $ s   ;AFF"!F"c               (    V ^8  d   QhRRRRRRRR/# rU   r%   )r&   s   "r'   r(   r5    r"  r*   c                	F   "   V P                  WV4      G R j  xL
  R #  L5ir^   r$  r   s   &&&&r'   r   Mount.handle  r&  r'  c                    V ^8  d   QhRRRR/# r  r%   )r&   s   "r'   r(   r5    s     ^ ^J ^4 ^r*   c                	    \        V\        4      ;'       d;    V P                  VP                  8H  ;'       d    V P                  VP                  8H  # r^   )rJ   r0  rz   rb   r  s   &&r'   r	  Mount.__eq__  s<    %']]DII,C]]TYT]T]H]]r*   c                   V ^8  d   QhRR/# r  r%   )r&   s   "r'   r(   r5         T T# Tr*   c                	    V P                   P                  pV P                  ;'       g    R pV RV P                  : RV: RV P                  : R2# )r   r  r  , app=r   )r4   r6   r    rz   rb   r2   r  r    s   &  r'   r  Mount.__repr__  H    ^^,,
yyBVDII=xvdhh\QRSSr*   )r9  rb   r    r{   rz   r   r   )NNNr6   r7   r8   r9   r1   propertyr3  r   r   r   r	  r  r;   r%   r*   r'   r0  r0  s  sO    l :>l l. 5 5B.6-^T Tr*   r0  c                  x    ] tR tRtRR R llt]R R l4       tR R ltR	 R
 ltR R lt	R R lt
R R ltRtR# )Hosti  Nc               (    V ^8  d   QhRRRRRRRR/# 	r   hostr!   rb   r   r    r   r#   r$   r%   )r&   s   "r'   r(   Host.__annotate__  s.     V VS Vw Vj VD Vr*   c                	    VP                  R 4      '       d   Q R4       hWn        W n        W0n        \	        V4      w  V n        V n        V n        R# )r   zHost must not start with '/'N)r   rc  rb   r    r   
host_regexhost_formatr{   )r2   rc  rb   r    s   &&&&r'   r1   Host.__init__  sF    ??3''G)GG'		COPTCU@)4+@r*   c                   V ^8  d   QhRR/# r=  r%   )r&   s   "r'   r(   rd    s     / / /r*   c                	0    \        V P                  R . 4      # r7  )rw   rb   r-  s   &r'   r3  Host.routes  s    txx2..r*   c                    V ^8  d   QhRRRR/# r   r%   )r&   s   "r'   r(   rd    r  r*   c                	&   VR ,          R9   d   \        VR7      pVP                  RR4      P                  R4      ^ ,          pV P                  P	                  V4      pV'       d   VP                  4       pVP                  4        F)  w  rgV P                  V,          P                  V4      WV&   K+  	  \        VP                  R/ 4      4      pVP                  V4       RVRV P                  /p	\        P                  V	3# \        P                  / 3# )r   rV   rc  r   r   r"   rt   rD  )r   r   r   rf  r   r   r   r{   r   r   r   rb   r>   rA   r?   )
r2   rV   r  rc  r   r   r   r   r"   r   s
   &&        r'   r   Host.matches  s    =11E*G;;vr*005a8DOO))$/E!&!2"0"6"6"8JC*.*?*?*D*L*LU*SN' #9"599]B#?@"">2,k:txxPzz;..zz2~r*   c               $    V ^8  d   QhRRRRRR/# r   r%   )r&   s   "r'   r(   rd    s!     . . .
 .w .r*   c               	   V P                   ea   WP                   8X  dQ   RV9   dJ   VP                  R4      p\        V P                  V P                  V4      w  rEV'       g   \        W4R7      # MV P                   e)   VP                  V P                   R,           4      '       d   V P                   f   TpMV\        V P                   4      ^,           R  p\        V P                  V P                  V4      w  rEV P                  ;'       g    .  F8  p VP                  ! V3/ VB p\        \        V4      VP                  VR7      u # 	  \        W4      h  \         d     KU  i ; i)Nrz   )rz   rc  r   )rz   r   rc  )r    r   r   rg  r{   r   r   r   r3  r   r!   r   r   )	r2   r    r"   rz   rc  r   rJ  rM  rN  s	   "",      r'   r   Host.url_path_for  s0   99 TYY%66[;P??6*D%3D4D4DdF[F[]h%i"D#D44 $YY$//$))c/"B"Byy !% "&c$))nq&8&:!;%3D4D4DdF[F[]h%i"D***,,^P?OPC"C3<<dSS + 4-- $ s   3EE$#E$c               (    V ^8  d   QhRRRRRRRR/# rU   r%   )r&   s   "r'   r(   rd  	  r"  r*   c                	F   "   V P                  WV4      G R j  xL
  R #  L5ir^   r$  r   s   &&&&r'   r   Host.handle	  r&  r'  c                    V ^8  d   QhRRRR/# r  r%   )r&   s   "r'   r(   rd    s     ] ]J ]4 ]r*   c                	    \        V\        4      ;'       d;    V P                  VP                  8H  ;'       d    V P                  VP                  8H  # r^   )rJ   r`  rc  rb   r  s   &&r'   r	  Host.__eq__  s<    %&\\499

+B\\txxSXS\S\G\\r*   c                   V ^8  d   QhRR/# r  r%   )r&   s   "r'   r(   rd    rW  r*   c                	    V P                   P                  pV P                  ;'       g    R pV RV P                  : RV: RV P                  : R2# )r   z(host=r  rY  r   )r4   r6   r    rc  rb   rZ  s   &  r'   r  Host.__repr__  r\  r*   )rb   rc  rg  rf  r    r{   r^   r]  r%   r*   r'   r`  r`    s=    V / /..-]T Tr*   r`  _Tc                  :    ] tR tRtR R ltR R ltR R ltRtR	# )
_AsyncLiftContextManageri  c                   V ^8  d   QhRR/# )r   cmztyping.ContextManager[_T]r%   )r&   s   "r'   r(   %_AsyncLiftContextManager.__annotate__  s      4 r*   c                	    Wn         R # r^   _cm)r2   r  s   &&r'   r1   !_AsyncLiftContextManager.__init__  s    r*   c                   V ^8  d   QhRR/# )r   r#   r|  r%   )r&   s   "r'   r(   r    s     $ $" $r*   c                	>   "   V P                   P                  4       # 5ir^   )r  	__enter__r-  s   &r'   
__aenter__#_AsyncLiftContextManager.__aenter__  s     xx!!##s   c               (    V ^8  d   QhRRRRRRRR/# )	r   exc_typeztype[BaseException] | None	exc_valuezBaseException | None	tracebackztypes.TracebackType | Noner#   zbool | Noner%   )r&   s   "r'   r(   r    s8     A A,A (A .	A
 
Ar*   c                	B   "   V P                   P                  WV4      # 5ir^   )r  __exit__)r2   r  r  r  s   &&&&r'   	__aexit__"_AsyncLiftContextManager.__aexit__  s      xx  i@@s   r  N)r6   r7   r8   r9   r1   r  r  r;   r%   r*   r'   r~  r~    s    $A Ar*   r~  c                    V ^8  d   QhRRRR/# )r   lifespan_contextzStyping.Callable[[typing.Any], typing.Generator[typing.Any, typing.Any, typing.Any]]r#   zEtyping.Callable[[typing.Any], typing.AsyncContextManager[typing.Any]]r%   )r&   s   "r'   r(   r(   (  s     	 	i	J	r*   c                x   a \         P                  ! V 4      o\        P                  ! S4      R  V3R ll4       pV# )c                    V ^8  d   QhRRRR/# )r   rb   rD   r#   z$_AsyncLiftContextManager[typing.Any]r%   )r&   s   "r'   r(   0_wrap_gen_lifespan_context.<locals>.__annotate__.  s     3 3Z 3$H 3r*   c                &   < \        S! V 4      4      # r^   )r~  )rb   cmgrs   &r'   wrapper+_wrap_gen_lifespan_context.<locals>.wrapper-  s    'S	22r*   )
contextlibcontextmanagerrK   wraps)r  r  r  s   & @r'   _wrap_gen_lifespan_contextr  (  s8     $$%56D__T3 3 Nr*   c                  F    ] tR tRtR R ltR R ltR R ltR R	 ltR
tR# )_DefaultLifespani4  c                   V ^8  d   QhRR/# )r   routerr:  r%   )r&   s   "r'   r(   _DefaultLifespan.__annotate__5  s      v r*   c                	    Wn         R # r^   _router)r2   r  s   &&r'   r1   _DefaultLifespan.__init__5  s    r*   c                   V ^8  d   QhRR/# r   r#   r$   r%   )r&   s   "r'   r(   r  8  s     % %$ %r*   c                	V   "   V P                   P                  4       G R j  xL
  R #  L5ir^   )r  startupr-  s   &r'   r  _DefaultLifespan.__aenter__8  s     ll""$$$   )')c                    V ^8  d   QhRRRR/# )r   exc_infoobjectr#   r$   r%   )r&   s   "r'   r(   r  ;  s     & & &D &r*   c                	V   "   V P                   P                  4       G R j  xL
  R #  L5ir^   )r  shutdown)r2   r  s   &*r'   r  _DefaultLifespan.__aexit__;  s     ll##%%%r  c               $    V ^8  d   QhRRRRRR/# )r   r2   r|  rb   r  r#   r%   )r&   s   "r'   r(   r  >  s!      r  2 r*   c                	    V # r^   r%   )r2   rb   s   &&r'   r   _DefaultLifespan.__call__>  s    r*   r  N)	r6   r7   r8   r9   r1   r  r  r   r;   r%   r*   r'   r  r  4  s    %& r*   r  c                     ] tR tRtR'RR/R R llltR R ltR R	 ltR
 R ltR R ltR R lt	R R lt
R R ltR R ltR(R R lltR(R R lltR)R R lltR(R R lltR)R R lltR(R  R! lltR" R# ltR$ R% ltR&tR# )*r:  iB  Nr   c               8    V ^8  d   QhRRRRRRRRR	RR
RRRRR/# )r   r3  r4  redirect_slashesrE   defaultr2  
on_startupz7typing.Sequence[typing.Callable[[], typing.Any]] | Noneon_shutdownlifespanzLifespan[typing.Any] | Noner   r   r#   r$   r%   )r&   s   "r'   r(   Router.__annotate__C  sf     <T <T1<T <T  	<T
 L<T M<T .<T 7<T 
<Tr*   c               	B   Vf   . M
\        V4      V n        W n        Vf   V P                  MTV n        Vf   . M
\        V4      V n        Vf   . M
\        V4      V n        V'       g	   V'       d:   \        P                  ! R\        4       V'       d   \        P                  ! R4       Vf   \        V 4      V n        M\        P                  ! V4      '       d-   \        P                  ! R\        4       \        V4      V n        MN\        P                  ! V4      '       d-   \        P                  ! R\        4       \!        V4      V n        MW`n        V P"                  V n        V'       d3   \'        V4       F!  w  rp
V! V P$                  .V	O5/ V
B V n        K#  	  R # R # )NzThe on_startup and on_shutdown parameters are deprecated, and they will be removed on version 1.0. Use the lifespan parameter instead. See more about it on https://www.starlette.io/lifespan/.zThe `lifespan` parameter cannot be used with `on_startup` or `on_shutdown`. Both `on_startup` and `on_shutdown` will be ignored.zjasync generator function lifespans are deprecated, use an @contextlib.asynccontextmanager function insteadzdgenerator function lifespans are deprecated, use an @contextlib.asynccontextmanager function instead)r.   r3  r  	not_foundr  r  r  rG   rH   rI   r  r  rN   isasyncgenfunctionr   isgeneratorfunctionr  rb   middleware_stackr   )r2   r3  r  r  r  r  r  r   r   r   r   s   &&&&&&&$   r'   r1   Router.__init__C  sY    #NbV 0)0t~~g * 2"Z8H!,!42${:KMMK #	  :J4:PD!''11MMJ"
 %8%D! ((22MMJ"
 %?%D! %-! $%-j%9!6(+D,A,A(SD(SF(S% &: r*   c               (    V ^8  d   QhRRRRRRRR/# rU   r%   )r&   s   "r'   r(   r    s(     - -U -W -D -T -r*   c                	   "   VR ,          R8X  d   \        4       pV! WV4      G Rj  xL
  R# RV9   d   \        RR7      h\        RRR7      pV! WV4      G Rj  xL
  R#  L9 L5i)r   r   Nrb   r   r   r   )r   r   r   )r2   rV   rW   rX   r   r_   s   &&&&  r'   r  Router.not_found  sf     =K',.O!%$777
 E>C00(#FHut,,, 8 	-s!   %A%A!2A%A#A%#A%c               $    V ^8  d   QhRRRRRR/# r   r%   )r&   s   "r'   r(   r    s!     . . .
 .w .r*   c               	    V P                    F  p VP                  ! V3/ VB u # 	  \        W4      h  \         d     K4  i ; ir^   )r3  r   r   )r2   r    r"   rM  s   "", r'   r   Router.url_path_for  sL    [[E))$>+>> !
 4--   s   3AAc                   V ^8  d   QhRR/# r  r%   )r&   s   "r'   r(   r    s      t r*   c                   "   V P                    F,  p\        V4      '       d   V! 4       G Rj  xL
  K%  V! 4        K.  	  R#  L5i)z'
Run any `.on_startup` event handlers.
N)r  r   r2   handlers   & r'   r  Router.startup  s1      G ))i		 '   +AAAc                   V ^8  d   QhRR/# r  r%   )r&   s   "r'   r(   r    s       r*   c                   "   V P                    F,  p\        V4      '       d   V! 4       G Rj  xL
  K%  V! 4        K.  	  R#  L5i)z(
Run any `.on_shutdown` event handlers.
N)r  r   r  s   & r'   r  Router.shutdown  s3      ''G ))i		 (r  c               (    V ^8  d   QhRRRRRRRR/# rU   r%   )r&   s   "r'   r(   r    s(     ? ?E ?G ?4 ?D ?r*   c                ~  "   RpVP                  R4      pV! 4       G Rj  xL
   V P                  V4      ;_uu_4       GRj  xL
 pVe+   RV9  d   \        R4      hVR,          P                  V4       V! RR/4      G Rj  xL
  RpV! 4       G Rj  xL
  RRR4      GRj  xL
  V! RR	/4      G Rj  xL
  R#  L L{ L= L. L   + GRj  xL 
 '       g   i     L7; i L,  \         dK    \
        P                  ! 4       pT'       d   T! RR
RT/4      G Rj  xL 
  h T! RRRT/4      G Rj  xL 
  h i ; i5i)zc
Handle ASGI lifespan messages, which allows us to manage application
startup and shutdown events.
Frb   Nstatez:The server does not support "state" in the lifespan scope.r   zlifespan.startup.completeTzlifespan.shutdown.completezlifespan.shutdown.failedmessagezlifespan.startup.failed)r   r  RuntimeErrorr   BaseExceptionr  
format_exc)r2   rV   rW   rX   startedrb   maybe_stateexc_texts   &&&&    r'   r  Router.lifespan  s*    
 ))E*i	?,,S111[*e+*+ghh'N))+6F$?@AAAi 21   <=>>>% 	1
 B 2111  ?  	 ++-HF$>	8TUUU  F$=y(STTT	s   D=B=D=C% B?C% <CCCCCC% $C%C% )D=6C#7D=?C% CCC% C 	C
C 	C 	C% #D=%'D:D:DD:2D53D::D=c               (    V ^8  d   QhRRRRRRRR/# rU   r%   )r&   s   "r'   r(   r    s(     : :E :G :4 :D :r*   c                F   "   V P                  WV4      G Rj  xL
  R#  L5i)z+
The main entry point to the Router class.
N)r  r   s   &&&&r'   r   Router.__call__  s      ##ED999r'  c               (    V ^8  d   QhRRRRRRRR/# rU   r%   )r&   s   "r'   r(   r    s(     01 01u 01w 01d 01t 01r*   c                	F  "   VR ,          R	9   g   Q hRV9  d   WR&   VR ,          R8X  d   V P                  WV4      G Rj  xL
  R# RpV P                   Fz  pVP                  V4      w  rgV\        P                  8X  d/   VP                  V4       VP                  WV4      G Rj  xL
   R# V\        P                  8X  g   Kp  Ve   Kv  TpTpK|  	  Ve.   VP                  X4       VP                  WV4      G Rj  xL
  R# \        V4      p	VR ,          R8X  d   V P                  '       d   V	R8w  d   \        V4      p
V	P                  R4      '       d   V
R,          P                  R4      V
R&   MV
R,          R,           V
R&   V P                   F`  pVP                  V
4      w  rgV\        P                  8w  g   K-  \        V
R7      p\        \!        V4      R7      pV! WV4      G Rj  xL
   R# 	  V P#                  WV4      G Rj  xL
  R#  EL ELp EL L. L5i)
r   r   r  r  Nr   rz   rn  )rN  )r   r   r  )r  r3  r   r>   rA   r   r   r@   r   r  r   endswithr8  r?   r   r   r!   r  )r2   rV   rW   rX   rL   rM  r   r   partial_scoper   redirect_scoperedirect_urlr_   s   &&&&         r'   rb   
Router.app  s    V} AAAA5 "(O=J&--555[[E "'u!5E

"[)ll54888%--'GO + !  LL'..666#E*
=F"t'<'<'<sAR!%[N""3'')7)?)F)Fs)Kv&)7)?#)Ev&%*]]>%B"EJJ&#&^#<L/C4EFH"54888 % ll54000S 6 9 7  9 	1ss   ?H!HA%H!'H(H!H!2H!>H?0H!0BH!-H!.H/H!HH!H!H!H!H!c                    V ^8  d   QhRRRR/# r  r%   )r&   s   "r'   r(   r    s     I IJ I4 Ir*   c                	d    \        V\        4      ;'       d    V P                  VP                  8H  # r^   )rJ   r:  r3  r  s   &&r'   r	  Router.__eq__  s$    %(HHT[[ELL-HHr*   c               (    V ^8  d   QhRRRRRRRR/# )	r   rz   r!   rb   r   r    r   r#   r$   r%   )r&   s   "r'   r(   r    s(     " "# "G ": " "r*   c                	V    \        WVR 7      pV P                  P                  V4       R# )rb   r    N)r0  r3  append)r2   rz   rb   r    rM  s   &&&& r'   mountRouter.mount  s     d$/5!r*   c               (    V ^8  d   QhRRRRRRRR/# rb  r%   )r&   s   "r'   r(   r    s(     " " "7 "* " "r*   c                	V    \        WVR 7      pV P                  P                  V4       R# r  )r`  r3  r  )r2   rc  rb   r    rM  s   &&&& r'   rc  Router.host  s     T.5!r*   c               0    V ^8  d   QhRRRRRRRRR	R
RR/# )r   rz   r!   rt   rR   r   r   r    r   r   rE   r#   r$   r%   )r&   s   "r'   r(   r  
  sG     " "" T" "	"
 "  " 
"r*   c                	\    \        VVVVVR 7      pV P                  P                  V4       R# ))rt   r   r    r   N)r   r3  r  )r2   rz   rt   r   r    r   rM  s   &&&&&& r'   	add_routeRouter.add_route
  s1     /
 	5!r*   c               (    V ^8  d   QhRRRRRRRR/# )	r   rz   r!   rt   rg   r    r   r#   r$   r%   )r&   s   "r'   r(   r    s3     " "" G" 	"
 
"r*   c                	V    \        WVR 7      pV P                  P                  V4       R# ))rt   r    N)r  r3  r  )r2   rz   rt   r    rM  s   &&&& r'   add_websocket_routeRouter.add_websocket_route  s"     tTB5!r*   c          
     ,    V ^8  d   QhRRRRRRRRR	R
/# )r   rz   r!   r   r   r    r   r   rE   r#   typing.Callabler%   )r&   s   "r'   r(   r  $  s<       " 	
   
r*   c                `   a aaaa \         P                  ! R\        4       R VVVVV 3R llpV# )z
We no longer document this decorator style API, and its usage is discouraged.
Instead you should use the following approach:

>>> routes = [Route(path, endpoint=...), ...]
>>> app = Starlette(routes=routes)
zThe `route` decorator is deprecated, and will be removed in version 1.0.0.Refer to https://www.starlette.io/routing/#http-routing for the recommended approach.c                    V ^8  d   QhRRRR/# r   rM   r  r#   r%   )r&   s   "r'   r(   "Router.route.<locals>.__annotate__8  s     	 	O 	 	r*   c                4   < SP                  SV SSSR 7       V # ))r   r    r   )r  )rM   r   r   r    rz   r2   s   &r'   	decoratorRouter.route.<locals>.decorator8  s*    NN"3   Kr*   rG   rH   rI   )r2   rz   r   r    r   r  s   fffff r'   rM  Router.route$  s,     	d	
	 	 r*   c               $    V ^8  d   QhRRRRRR/# )r   rz   r!   r    r   r#   r  r%   )r&   s   "r'   r(   r  D  s!      C z _ r*   c                X   a aa \         P                  ! R\        4       R VVV 3R llpV# )z
We no longer document this decorator style API, and its usage is discouraged.
Instead you should use the following approach:

>>> routes = [WebSocketRoute(path, endpoint=...), ...]
>>> app = Starlette(routes=routes)
zThe `websocket_route` decorator is deprecated, and will be removed in version 1.0.0. Refer to https://www.starlette.io/routing/#websocket-routing for the recommended approach.c                    V ^8  d   QhRRRR/# r  r%   )r&   s   "r'   r(   ,Router.websocket_route.<locals>.__annotate__R       	 	O 	 	r*   c                0   < SP                  SV SR 7       V # ))r    )r  )rM   r    rz   r2   s   &r'   r  )Router.websocket_route.<locals>.decoratorR  s    $$T4d$;Kr*   r  )r2   rz   r    r  s   fff r'   websocket_routeRouter.websocket_routeD  s,     	`	
	 	 r*   c               $    V ^8  d   QhRRRRRR/# )r   
event_typer!   rM   ztyping.Callable[[], typing.Any]r#   r$   r%   )r&   s   "r'   r(   r  X  s#     * *C *7V *[_ *r*   c                	    VR9   g   Q hVR 8X  d   V P                   P                  V4       R# V P                  P                  V4       R# )r  N)r  r  )r  r  r  )r2   r  rM   s   &&&r'   add_event_handlerRouter.add_event_handlerX  s?    4444"OO""4(##D)r*   c                    V ^8  d   QhRRRR/# )r   r  r!   r#   r  r%   )r&   s   "r'   r(   r  `  s      3 ? r*   c                	T   a a \         P                  ! R \        4       R VV 3R llpV# )zThe `on_event` decorator is deprecated, and will be removed in version 1.0.0. Refer to https://www.starlette.io/lifespan/ for recommended approach.c                    V ^8  d   QhRRRR/# r  r%   )r&   s   "r'   r(   %Router.on_event.<locals>.__annotate__g  r  r*   c                ,   < SP                  SV 4       V # r^   )r  )rM   r  r2   s   &r'   r  "Router.on_event.<locals>.decoratorg  s    "":t4Kr*   r  )r2   r  r  s   ff r'   on_eventRouter.on_event`  s*    T	
	 	 r*   )r  r  r  r  r  r  r3  )NTNNNNr^   )NNT)r6   r7   r8   r9   r1   r  r   r  r  r  r   rb   r	  r  rc  r  r  rM  r  r  r  r;   r%   r*   r'   r:  r:  B  sr    <T :><T <T|-.?6:01dI"""""@(* r*   r:  )E
__future__r   r  rK   rN   r   r  typestypingrG   r   enumr   starlette._exception_handlerr   starlette._utilsr   r   starlette.concurrencyr	   starlette.convertorsr
   r   starlette.datastructuresr   r   r   starlette.exceptionsr   starlette.middlewarer   starlette.requestsr   starlette.responsesr   r   r   starlette.typesr   r   r   r   r   starlette.websocketsr   r   	Exceptionr   r>   rP   re   rr   rx   r   r   r   r   r   r   r  r0  r`  TypeVarr|  AsyncContextManagerr~  r  r  r:  r%   r*   r'   <module>r1     s*   "    	     *  E > 3 ; : : . + & M M C C :V9 VD ,.&F jjOP5Ap0 0<^RI ^RB?TY ?TDaTI aTH;T9 ;T| ^^DAv99"= A 	 i ir*   