+
    Xjs                       ^ 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	H
t
HtHtHtHt ^ RIHtHt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 ^ RIH t H!t! ^ RI"H#t#H$t$H%t% ^ RI&H't'H(t( ^ RI)H*t* ^ RI+H,t, ^ RI-H.t.H/t/H0t0 ^ RI1H2t2H3t3H4t4H5t5H6t6 ^ RI7H8t8H9t9  ! R R]:4      t; ! R R]4      t<R R lt=R R lt>R R lt?R R lt@]P                  ! R4      tBR  R! ltC ! R" R#4      tD ! R$ R%]D4      tE ! R& R']D4      tF ! R( R)]D4      tG ! R* R+]D4      tH]! R,4      tI ! R- R.]]I,          4      tJR/ R0 ltK ! R1 R24      tL ! R3 R44      tMR# )5    )annotationsN)	AwaitableCallable
Collection	GeneratorSequence)AbstractAsyncContextManagerAbstractContextManagerasynccontextmanager)Enum)Pattern)AnyTypeVar)wrap_app_handling_exceptions)get_route_pathis_async_callable)run_in_threadpool)CONVERTOR_TYPES	Convertor)URLHeadersURLPath)HTTPExceptionStarletteDeprecationWarning)
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, Any]returnNone )formats   "m   /Users/wind/Downloads/Coruna-main学习资料A/backend/venv/lib/python3.14/site-packages/starlette/routing.py__annotate__NoMatchFound.__annotate__#   s&     V VS V~ 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   &&& r2   r<   NoMatchFound.__init__#   s=    4 0 0 2345dV>&QSTUr5   r0   )__name__
__module____qualname____firstlineno____doc__r<   __static_attributes____classcell__)r?   s   @r2   r(   r(      s    
V Vr5   r(   c                  "    ] tR t^(t^ t^t^tRtR# )Matchr0   N)rA   rB   rC   rD   NONEPARTIALFULLrF   r0   r5   r2   rI   rI   (   s    DGDr5   rI   c                    V ^8  d   QhRRRR/# )r*   func3Callable[[Request], Awaitable[Response] | Response]r.   r    r0   )r1   s   "r2   r3   r3   .   s      
=r5   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/   r0   )r1   s   "r2   r3   &request_response.<locals>.__annotate__9   s.     O O O O O Or5   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/# rR   r0   )r1   s   "r2   r3   3request_response.<locals>.app.<locals>.__annotate__<   s(     	1 	1U 	1W 	1D 	1T 	1r5   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Nr0   )rS   rT   rU   responsefrequests   &&& r2   app*request_response.<locals>.app.<locals>.app<   s*     wZ'H54000 (0s   +'+)++N)r   r   )rS   rT   rU   r_   r^   r]   s   &&& @r2   r_   request_response.<locals>.app9   s5     %$/	1 	1 +38NNNs   -:8:)r   	functoolspartialr   )rN   r_   r]   s   & @r2   request_responserd   .   s;     "$''Y->->?PRV-W O O Jr5   c                    V ^8  d   QhRRRR/# )r*   rN   &Callable[[WebSocket], Awaitable[None]]r.   r    r0   )r1   s   "r2   r3   r3   E   s      
0r5   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/# rR   r0   )r1   s   "r2   r3   'websocket_session.<locals>.__annotate__M   s.     O O O O O Or5   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))rT   rU   c               (    V ^8  d   QhRRRRRRRR/# rR   r0   )r1   s   "r2   r3   4websocket_session.<locals>.app.<locals>.__annotate__P   s(     	  	 U 	 W 	 D 	 T 	 r5   c                4   <"   S! S4      G R j  xL
  R #  L5ir[   r0   )rS   rT   rU   rN   sessions   &&&r2   r_   +websocket_session.<locals>.app.<locals>.appP   s     w-s   N)r%   r   )rS   rT   rU   r_   rn   rN   s   &&& @r2   r_   websocket_session.<locals>.appM   s5     E>	  	  +38NNNs   .;9;r0   )rN   r_   s   f r2   websocket_sessionrq   E   s    O O Jr5   c                    V ^8  d   QhRRRR/# )r*   endpointCallable[..., Any]r.   r,   r0   )r1   s   "r2   r3   r3   X   s     F F) Fc Fr5   c                D    \        V R V P                  P                  4      # )rA   )getattrr?   rA   )rs   s   &r2   get_namerw   X   s    8Z););)D)DEEr5   c               (    V ^8  d   QhRRRRRRRR/# )	r*   pathr,   param_convertorszdict[str, Convertor[Any]]r-   zdict[str, str]r.   ztuple[str, dict[str, str]]r0   )r1   s   "r2   r3   r3   \   s0      
/    	r5   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# ){})r9   items	to_stringreplacepop)ry   rz   r-   keyvalue	convertors   &&&   r2   replace_paramsr   \   su    
 ;,,./
9s?d"(-I''.E<<c	C7DOOC  0 r5   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*   ry   r,   r.   z3tuple[Pattern[str], str, dict[str, Convertor[Any]]]r0   )r1   s   "r2   r3   r3   n   s      5A 5A
5A85Ar5   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}r7   szDuplicated param name z	 at path N$)
startswithsetPARAM_REGEXfinditergroupslstripr   reescapestartregexaddendr8   sortedlen
ValueErrorsplitcompile)ry   is_host
path_regexpath_formatduplicated_paramsidxrz   match
param_nameconvertor_typer   namesendinghostnames   &             r2   compile_pathr   n   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!;@@r5   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*   rS   r#   r.   ztuple[Match, Scope]r0   )r1   s   "r2   r3   BaseRoute.__annotate__   s     $ $U $': $r5   c                	    \        4       hr[   NotImplementedError)r=   rS   s   &&r2   matchesBaseRoute.matches       !##r5   c               $    V ^8  d   QhRRRRRR/# r*   r+   r,   r-   r   r.   r   r0   )r1   s   "r2   r3   r      s!     $ $ $ $ $r5   c               	    \        4       hr[   r   )r=   r+   r-   s   "",r2   url_path_forBaseRoute.url_path_for   r   r5   c               (    V ^8  d   QhRRRRRRRR/# rR   r0   )r1   s   "r2   r3   r      s(     $ $% $' $ $$ $r5   c                	   "   \        4       h5ir[   r   r=   rS   rT   rU   s   &&&&r2   handleBaseRoute.handle   s     !##s   c               (    V ^8  d   QhRRRRRRRR/# rR   r0   )r1   s   "r2   r3   r      s(     0 0E 0G 04 0D 0r5   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   rI   rJ   r   r&   updater   )r=   rS   rT   rU   r   child_scoper\   websocket_closes   &&&&    r2   __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r0   N)	rA   rB   rC   rD   r   r   r   r   rF   r0   r5   r2   r   r      s    $$$0 0r5   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*   ry   r,   rs   rt   r   Collection[str] | Noner+   
str | Noner   boolr   Sequence[Middleware] | Noner.   r/   r0   )r1   s   "r2   r3   Route.__annotate__   sY     'V 'V'V %'V
 ('V 'V  'V 0'V 
'Vr5   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   ry   rs   rw   r+   r   
isinstancerb   rc   rN   inspect
isfunctionismethodrd   r_   reversedr   upperr   r   r   r   rz   )r=   ry   rs   r   r+   r   r   endpoint_handlerclsargskwargsmethods   &&&$$$$     r2   r<   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   r0   )r1   s   "r2   r3   r      s      U ': r5   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-   rs   r   )r   r   r   	groupdictr~   rz   convertdictgetr   rs   r   rI   rK   rL   rJ   	r=   rS   
route_pathr   matched_paramsr   r   r-   r   s	   &&       r2   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~r5   c               $    V ^8  d   QhRRRRRR/# r   r0   )r1   s   "r2   r3   r      s!     	3 	3 	3 	3 	3r5   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   ry   protocolr   r:   rz   r+   r(   r   r   r   r=   r+   r-   seen_paramsexpected_paramsry   remaining_paramss   "",    r2   r   Route.url_path_for   s|    +**,-d3388:;99 >t11!/0@0@$BWBWYd!e###D622r5   c               (    V ^8  d   QhRRRRRRRR/# rR   r0   )r1   s   "r2   r3   r     s(     	1 	1% 	1' 	1 	1$ 	1r5   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   Allowr7   r_   i  )r   headerszMethod Not AllowedN)r   r8   r   r   r_   )r=   rS   rT   rU   r  r\   s   &&&&  r2   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*   otherr   r.   r   r0   )r1   s   "r2   r3   r     s     
 
C 
D 
r5   c                	    \        V\        4      ;'       d\    V P                  VP                  8H  ;'       d;    V P                  VP                  8H  ;'       d    V P                  VP                  8H  # r[   )r   r   ry   rs   r   r=   r  s   &&r2   __eq__Route.__eq__  sa    ue$ . .		UZZ'. ./. . -		
r5   c                   V ^8  d   QhRR/# r*   r.   r,   r0   )r1   s   "r2   r3   r     s     R R# Rr5   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   )r?   rA   r   r   ry   r+   )r=   
class_namer   ry   r+   s   &    r2   __repr__Route.__repr__  sU    ^^,,
++,YY		dVD874(*WKqQQr5   )	r_   rs   r   r   r+   rz   ry   r   r   rA   rB   rC   rD   r<   r   r   r   r  r  rF   r0   r5   r2   r   r      sU    'V
 +/'V  'V #''V 37'VR$	3	1
R Rr5   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# )WebSocketRoutei%  r+   Nr   c          
     ,    V ^8  d   QhRRRRRRRRR	R
/# )r*   ry   r,   rs   rt   r+   r   r   r   r.   r/   r0   )r1   s   "r2   r3   WebSocketRoute.__annotate__&  sC     V VV %V
 V 0V 
Vr5   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   ry   rs   rw   r+   r   rb   rc   rN   r   r   r   rq   r_   r   r   r   r   rz   )	r=   ry   rs   r+   r   r   r   r   r   s	   &&&$$    r2   r<   WebSocketRoute.__init__&  s     s##G%GG#	 *.,HX&D	#)9+<+<==/44.//73C3CDT3U3U(2DH  H!%-j%9!6txx9$9&9 &: DPPTCU@)4+@r5   c                    V ^8  d   QhRRRR/# r   r0   )r1   s   "r2   r3   r  C        U ': r5   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-   rs   )r   r   r   r   r~   rz   r   r   r   r   rs   rI   rL   rJ   r   s	   &&       r2   r   WebSocketRoute.matchesC  s    =K''.JOO))*5E!&!2"0"6"6"8JC*.*?*?*D*L*LU*SN' #9"599]B#?@"">2)4==-Uzz;..zz2~r5   c               $    V ^8  d   QhRRRRRR/# r   r0   )r1   s   "r2   r3   r  R  s!     	8 	8 	8 	8 	8r5   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   "",    r2   r   WebSocketRoute.url_path_forR  s|    +**,-d3388:;99 >t11!/0@0@$BWBWYd!e###D;77r5   c               (    V ^8  d   QhRRRRRRRR/# rR   r0   )r1   s   "r2   r3   r  ]  (     - -% -' - -$ -r5   c                	F   "   V P                  WV4      G R j  xL
  R #  L5ir[   r_   r   s   &&&&r2   r   WebSocketRoute.handle]       hhut,,,   !!c                    V ^8  d   QhRRRR/# r  r0   )r1   s   "r2   r3   r  `  s     q qC qD qr5   c                	    \        V\        4      ;'       d;    V P                  VP                  8H  ;'       d    V P                  VP                  8H  # r[   )r   r  ry   rs   r
  s   &&r2   r  WebSocketRoute.__eq__`  s?    %0ppTYY%**5LppQUQ^Q^bgbpbpQppr5   c                   V ^8  d   QhRR/# r  r0   )r1   s   "r2   r3   r  c  s     T T# Tr5   c                	l    V P                   P                   R V P                  : RV P                  : R2# )r  r  r   )r?   rA   ry   r+   r=   s   &r2   r  WebSocketRoute.__repr__c  s/    ..))*&WTYYMQRSSr5   )r_   rs   r+   rz   ry   r   r   r  r0   r5   r2   r  r  %  s?    V
  V 37V:	8-qT Tr5   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# )Mountig  Nr   c               0    V ^8  d   QhRRRRRRRRR	R
RR/# )r*   ry   r,   r_   ASGIApp | NoneroutesSequence[BaseRoute] | Noner+   r   r   r   r.   r/   r0   )r1   s   "r2   r3   Mount.__annotate__h  sN     l ll l +	l
 l 0l 
lr5   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r5  z/{path:path})r   rstripry   	_base_appRouterr_   r   r+   r   r   r   rz   )	r=   ry   r_   r5  r+   r   r   r   r   s	   &&&&&$   r2   r<   Mount.__init__h  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+@r5   c                   V ^8  d   QhRR/# r*   r.   zlist[BaseRoute]r0   )r1   s   "r2   r3   r7    s     5 5 5r5   c                	0    \        V P                  R . 4      # r9  )rv   r;  r/  s   &r2   r5  Mount.routes  s    t~~x44r5   c                    V ^8  d   QhRRRR/# r   r0   )r1   s   "r2   r3   r7    s      U ': r5   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   ry   Nr-   app_root_pathrs   r   r   )r   r   r   r   r   r~   rz   r   r   r   r   r   r_   rI   rL   rJ   )r=   rS   rD  r   r   r   r   r   remaining_pathmatched_pathr-   r   s   &&          r2   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~r5   c               $    V ^8  d   QhRRRRRR/# r   r0   )r1   s   "r2   r3   r7    s!     . . . . .r5   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)Nry   r   )ry   r   r   r   )r+   r   r   r   rz   r   r   r   r   r5  r   r:  r,   r   r(   )
r=   r+   r-   ry   r   remaining_name
path_kwargpath_prefixrouteurls
   "",       r2   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/# rR   r0   )r1   s   "r2   r3   r7    r$  r5   c                	F   "   V P                  WV4      G R j  xL
  R #  L5ir[   r&  r   s   &&&&r2   r   Mount.handle  r(  r)  c                    V ^8  d   QhRRRR/# r  r0   )r1   s   "r2   r3   r7    s     ^ ^C ^D ^r5   c                	    \        V\        4      ;'       d;    V P                  VP                  8H  ;'       d    V P                  VP                  8H  # r[   )r   r2  ry   r_   r
  s   &&r2   r  Mount.__eq__  s<    %']]DII,C]]TYT]T]H]]r5   c                   V ^8  d   QhRR/# r  r0   )r1   s   "r2   r3   r7         T T# Tr5   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   )r?   rA   r+   ry   r_   r=   r  r+   s   &  r2   r  Mount.__repr__  H    ^^,,
yyBVDII=xvdhh\QRSSr5   )r;  r_   r+   rz   ry   r   r   )NNNrA   rB   rC   rD   r<   propertyr5  r   r   r   r  r  rF   r0   r5   r2   r2  r2  g  sO    l 37l l. 5 5B.6-^T Tr5   r2  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,   r_   r    r+   r   r.   r/   r0   )r1   s   "r2   r3   Host.__annotate__  s.     V VS Vw Vj VD Vr5   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   re  r_   r+   r   
host_regexhost_formatrz   )r=   re  r_   r+   s   &&&&r2   r<   Host.__init__  sF    ??3''G)GG'		COPTCU@)4+@r5   c                   V ^8  d   QhRR/# r?  r0   )r1   s   "r2   r3   rf    s     / / /r5   c                	0    \        V P                  R . 4      # r9  )rv   r_   r/  s   &r2   r5  Host.routes  s    txx2..r5   c                    V ^8  d   QhRRRR/# r   r0   )r1   s   "r2   r3   rf    r  r5   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   rS   re  r   r   r-   rs   rF  )r   r   r   rh  r   r   r~   rz   r   r   r   r_   rI   rL   rJ   )
r=   rS   r  re  r   r   r   r   r-   r   s
   &&        r2   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~r5   c               $    V ^8  d   QhRRRRRR/# r   r0   )r1   s   "r2   r3   rf    s!     . . . . .r5   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)Nry   )ry   re  r   )ry   r   re  )r+   r   r   ri  rz   r   r   r   r5  r   r,   r   r(   )	r=   r+   r-   ry   re  r   rL  rO  rP  s	   "",      r2   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/# rR   r0   )r1   s   "r2   r3   rf    r$  r5   c                	F   "   V P                  WV4      G R j  xL
  R #  L5ir[   r&  r   s   &&&&r2   r   Host.handle  r(  r)  c                    V ^8  d   QhRRRR/# r  r0   )r1   s   "r2   r3   rf     s     ] ]C ]D ]r5   c                	    \        V\        4      ;'       d;    V P                  VP                  8H  ;'       d    V P                  VP                  8H  # r[   )r   rb  re  r_   r
  s   &&r2   r  Host.__eq__   s<    %&\\499

+B\\txxSXS\S\G\\r5   c                   V ^8  d   QhRR/# r  r0   )r1   s   "r2   r3   rf    rY  r5   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  r[  r   )r?   rA   r+   re  r_   r\  s   &  r2   r  Host.__repr__  r^  r5   )r_   re  ri  rh  r+   rz   r[   r_  r0   r5   r2   rb  rb    s=    V / /..-]T Tr5   rb  _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AbstractContextManager[_T]r0   )r1   s   "r2   r3   %_AsyncLiftContextManager.__annotate__  s      5 r5   c                	    Wn         R # r[   _cm)r=   r  s   &&r2   r<   !_AsyncLiftContextManager.__init__  s    r5   c                   V ^8  d   QhRR/# )r*   r.   r~  r0   )r1   s   "r2   r3   r    s     $ $" $r5   c                	>   "   V P                   P                  4       # 5ir[   )r  	__enter__r/  s   &r2   
__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 | Noner0   )r1   s   "r2   r3   r    s8     A A,A (A .	A
 
Ar5   c                	B   "   V P                   P                  WV4      # 5ir[   )r  __exit__)r=   r  r  r  s   &&&&r2   	__aexit__"_AsyncLiftContextManager.__aexit__  s      xx  i@@s   r  N)rA   rB   rC   rD   r<   r  r  rF   r0   r5   r2   r  r    s    $A Ar5   r  c                    V ^8  d   QhRRRR/# )r*   lifespan_contextz)Callable[[Any], Generator[Any, Any, Any]]r.   z1Callable[[Any], AbstractAsyncContextManager[Any]]r0   )r1   s   "r2   r3   r3     s     	 	?	6	r5   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*   r_   r   r.   z_AsyncLiftContextManager[Any]r0   )r1   s   "r2   r3   0_wrap_gen_lifespan_context.<locals>.__annotate__"  s     3 3S 3: 3r5   c                &   < \        S! V 4      4      # r[   )r  )r_   cmgrs   &r2   wrapper+_wrap_gen_lifespan_context.<locals>.wrapper!  s    'S	22r5   )
contextlibcontextmanagerrb   wraps)r  r  r  s   & @r2   _wrap_gen_lifespan_contextr    s8     $$%56D__T3 3 Nr5   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# )_DefaultLifespani(  c                   V ^8  d   QhRR/# )r*   routerr<  r0   )r1   s   "r2   r3   _DefaultLifespan.__annotate__)  s      v r5   c                	    Wn         R # r[   _router)r=   r  s   &&r2   r<   _DefaultLifespan.__init__)  s    r5   c                   V ^8  d   QhRR/# )r*   r.   r/   r0   )r1   s   "r2   r3   r  ,  s      $ r5   c                	   "   R # 5ir[   r0   r/  s   &r2   r  _DefaultLifespan.__aenter__,          c                    V ^8  d   QhRRRR/# )r*   exc_infoobjectr.   r/   r0   )r1   s   "r2   r3   r  /  s       D r5   c                	   "   R # 5ir[   r0   )r=   r  s   &*r2   r  _DefaultLifespan.__aexit__/  r  r  c               $    V ^8  d   QhRRRRRR/# )r*   r=   r~  r_   r  r.   r0   )r1   s   "r2   r3   r  2  s!      r  2 r5   c                	    V # r[   r0   )r=   r_   s   &&r2   r   _DefaultLifespan.__call__2  s    r5   r  N)	rA   rB   rC   rD   r<   r  r  r   rF   r0   r5   r2   r  r  (  s     r5   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 R lltRR R lltRR R lltRR R lltRtR# )r<  i6  Nr   c               0    V ^8  d   QhRRRRRRRRR	R
RR/# )r*   r5  r6  redirect_slashesr   defaultr4  lifespanzLifespan[Any] | Noner   r   r.   r/   r0   )r1   s   "r2   r3   Router.__annotate__7  sN     %T %T*%T %T  	%T '%T 0%T 
%Tr5   c               	X   Vf   . M
\        V4      V n        W n        Vf   V P                  MTV n        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  rgpV! V P                   .VO5/ VB V n        K#  	  R # R # )Nzjasync generator function lifespans are deprecated, use an @contextlib.asynccontextmanager function insteadzdgenerator function lifespans are deprecated, use an @contextlib.asynccontextmanager function instead)r9   r5  r  	not_foundr  r  r  r   isasyncgenfunctionwarningswarnr   r   isgeneratorfunctionr  r_   middleware_stackr   )	r=   r5  r  r  r  r   r   r   r   s	   &&&&&$   r2   r<   Router.__init__7  s     #NbV 0)0t~~g3CD3ID!''11MMJ+
 %8$AD!((22MMv+ %?x$HD!$,! $%-j%9!6(+D,A,A(SD(SF(S% &: r5   c               (    V ^8  d   QhRRRRRRRR/# rR   r0   )r1   s   "r2   r3   r  ^  s(     - -U -W -D -T -r5   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   Nr_   r   r   r   )r&   r   r   )r=   rS   rT   rU   r   r\   s   &&&&  r2   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   r0   )r1   s   "r2   r3   r  m  s!     . . . . .r5   c               	    V P                    F  p VP                  ! V3/ VB u # 	  \        W4      h  \         d     K4  i ; ir[   )r5  r   r(   )r=   r+   r-   rO  s   "", r2   r   Router.url_path_form  sL    [[E))$>+>> !
 4--   s   3AAc               (    V ^8  d   QhRRRRRRRR/# rR   r0   )r1   s   "r2   r3   r  u  s(     ? ?E ?G ?4 ?D ?r5   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.
Fr_   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)r=   rS   rT   rU   startedr_   maybe_stateexc_texts   &&&&    r2   r  Router.lifespanu  s*    
 99U#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/# rR   r0   )r1   s   "r2   r3   r    s(     : :E :G :4 :D :r5   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   &&&&r2   r   Router.__call__  s      ##ED999r)  c               (    V ^8  d   QhRRRRRRRR/# rR   r0   )r1   s   "r2   r3   r    s(     01 01u 01w 01d 01t 01r5   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   ry   rp  )rP  )r   r   r  )r  r5  r   rI   rL   r   r   rK   r   r  r   endswithr:  rJ   r   r   r,   r  )r=   rS   rT   rU   rc   rO  r   r   partial_scoper   redirect_scoperedirect_urlr\   s   &&&&         r2   r_   
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  r0   )r1   s   "r2   r3   r    s     I IC ID Ir5   c                	d    \        V\        4      ;'       d    V P                  VP                  8H  # r[   )r   r<  r5  r
  s   &&r2   r  Router.__eq__  s$    %(HHT[[ELL-HHr5   c               (    V ^8  d   QhRRRRRRRR/# )	r*   ry   r,   r_   r    r+   r   r.   r/   r0   )r1   s   "r2   r3   r    s(     " "# "G ": " "r5   c                	V    \        WVR 7      pV P                  P                  V4       R# )r_   r+   N)r2  r5  append)r=   ry   r_   r+   rO  s   &&&& r2   mountRouter.mount  s     d$/5!r5   c               (    V ^8  d   QhRRRRRRRR/# rd  r0   )r1   s   "r2   r3   r    s(     " " "7 "* " "r5   c                	V    \        WVR 7      pV P                  P                  V4       R# r  )rb  r5  r  )r=   re  r_   r+   rO  s   &&&& r2   re  Router.host  s     T.5!r5   c               0    V ^8  d   QhRRRRRRRRR	R
RR/# )r*   ry   r,   rs   rO   r   r   r+   r   r   r   r.   r/   r0   )r1   s   "r2   r3   r    sG     " "" F" (	"
 "  " 
"r5   c                	\    \        VVVVVR 7      pV P                  P                  V4       R# ))rs   r   r+   r   N)r   r5  r  )r=   ry   rs   r   r+   r   rO  s   &&&&&& r2   	add_routeRouter.add_route  s1     /
 	5!r5   c               (    V ^8  d   QhRRRRRRRR/# )	r*   ry   r,   rs   rf   r+   r   r.   r/   r0   )r1   s   "r2   r3   r    s2     " "" 9" 	"
 
"r5   c                	V    \        WVR 7      pV P                  P                  V4       R# ))rs   r+   N)r  r5  r  )r=   ry   rs   r+   rO  s   &&&& r2   add_websocket_routeRouter.add_websocket_route  s"     tTB5!r5   )r  r  r  r  r5  )NTNNr[   )NNT)rA   rB   rC   rD   r<   r  r   r  r   r_   r  r  re  r  r  rF   r0   r5   r2   r<  r<  6  sS    %T 37%T %TN-.?6:01dI""""" "r5   r<  )N
__future__r   r  rb   r   r   r  typesr  collections.abcr   r   r   r   r   r	   r
   r   enumr   r   typingr   r   starlette._exception_handlerr   starlette._utilsr   r   starlette.concurrencyr   starlette.convertorsr   r   starlette.datastructuresr   r   r   starlette.exceptionsr   r   starlette.middlewarer   starlette.requestsr   starlette.responsesr   r   r   starlette.typesr    r!   r"   r#   r$   starlette.websocketsr%   r&   	Exceptionr(   rI   rd   rq   rw   r   r   r   r   r   r   r  r2  rb  r~  r  r  r  r<  r0   r5   r2   <module>r     s'   "    	    P P _ _    E > 3 ; : : K + & 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| T]A:2> A 	 u" u"r5   