+
    Xj_                      a  0 t $ ^ 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t^ RIHtHt ^ RIHt ^ RI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 ^ RI H!t! ^ RI"H#t# ^ RI$H%t% ^ RI&H't' ^ RI(H)t)  ! R R]*4      t+]Rb,          t,]Rc,          t-]Rd,          t.]Re,          t/]Rf,          t0R]Pb                  R]Pd                  R]Pf                  R ]Ph                  R!]Pj                  R"]!/t6R#]7R$&   RR%RR&RR'/t8R(]7R)&   RR*RRRR+RR,RR-/t9R.]7R/&   RR0RR0RR1/t:R(]7R2&   RRRR3RR4RR5/t;R.]7R6&   . RfOt<R7]7R8&   ]
Pz                  t>R9]7R:&   ^t?R;^R<R=R>R?R@RARBRCRDR/RER@RFRBRG//RHR?RIR?RJRKRLRM/RERIRERJRKRLRN//RORPRHR?.RQRRRSR=/RTRQRR/RURHRE.RQRRRSR=///t@RV]7RW&   ]P                  ! RT4      tBRX RY ltCRZ R[ ltDR\ R] ltER^ R_ ltF ! R` Ra4      tGR# )g    )annotationsN)	AwaitableCallable)RawConfigParser)Path)IOAnyLiteral)style)iscoroutinefunction)ASGIApplication)ImportFromStringErrorimport_from_string)TRACE_LOG_LEVEL)ASGI2Middleware)MessageLoggerMiddleware)ProxyHeadersMiddleware)WSGIMiddlewarec                      ] tR t^tRtRtR# )UvicornDeprecationWarningaM  A custom deprecation warning for Uvicorn.

Unlike the built-in DeprecationWarning, this inherits from UserWarning to ensure it is visible by default, helping
users discover deprecated features without needing to enable warnings explicitly.

Reference: https://sethmlarson.dev/deprecations-via-warnings-dont-work-for-python-libraries
 N)__name__
__module____qualname____firstlineno____doc____static_attributes__r       j   /Users/wind/Downloads/Coruna-main学习资料A/backend/venv/lib/python3.14/site-packages/uvicorn/config.pyr   r      s    r   r   autoh11	httptoolsnone
websocketswebsockets-sansiowsprotoonoffasynciouvloopcriticalerrorwarninginfodebugtracezdict[str, int]
LOG_LEVELSz,uvicorn.protocols.http.auto:AutoHTTPProtocolz+uvicorn.protocols.http.h11_impl:H11Protocolz7uvicorn.protocols.http.httptools_impl:HttpToolsProtocolzdict[str, str]HTTP_PROTOCOLSz8uvicorn.protocols.websockets.auto:AutoWebSocketsProtocolz>uvicorn.protocols.websockets.websockets_impl:WebSocketProtocolzLuvicorn.protocols.websockets.websockets_sansio_impl:WebSocketsSansIOProtocolz4uvicorn.protocols.websockets.wsproto_impl:WSProtocolzdict[str, str | None]WS_PROTOCOLSzuvicorn.lifespan.on:LifespanOnz uvicorn.lifespan.off:LifespanOffLIFESPANz$uvicorn.loops.auto:auto_loop_factoryz*uvicorn.loops.asyncio:asyncio_loop_factoryz(uvicorn.loops.uvloop:uvloop_loop_factoryLOOP_FACTORIESzlist[InterfaceType]
INTERFACESintSSL_PROTOCOL_VERSIONversiondisable_existing_loggersF
formattersdefaultz()z uvicorn.logging.DefaultFormatterfmtz%(levelprefix)s %(message)s
use_colorsaccesszuvicorn.logging.AccessFormatterzD%(levelprefix)s %(client_addr)s - "%(request_line)s" %(status_code)shandlers	formatterclasszlogging.StreamHandlerstreamzext://sys.stderrzext://sys.stdoutloggersuvicornlevelINFO	propagateuvicorn.erroruvicorn.accesszdict[str, Any]LOGGING_CONFIGc               8    V ^8  d   QhRRRRRRRRR	RR
RRRRR/# )   certfilezstr | os.PathLike[str]keyfilestr | os.PathLike[str] | Nonepassword
str | Nonessl_versionr7   	cert_reqsca_certsciphersreturnssl.SSLContextr   )formats   "r   __annotate__rZ   u   sX      $*  	
  ,  r   c                  a \         P                  ! V4      pS'       d   V3R  lMRpVP                  WV4       \         P                  ! V4      Vn        V'       d   VP                  V4       V'       d   VP                  V4       V# )c                    < S # Nr   )rQ   s   r   <lambda>$create_ssl_context.<locals>.<lambda>   s    Hr   N)ssl
SSLContextload_cert_chain
VerifyModeverify_modeload_verify_locationsset_ciphers)	rN   rO   rQ   rS   rT   rU   rV   ctxget_passwords	   &&f&&&&  r   create_ssl_contextri   u   sb     ..
%C)1$tL<8nnY/CO!!(+ Jr   c                    V ^8  d   QhRRRR/# )rM   pathr   rW   boolr   )rY   s   "r   rZ   rZ      s       $ r   c                     V P                  4       '       g   V P                  4       p V P                  4       #   \         d     R # i ; i)F)is_absoluteresolveis_dirOSError)rk   s   &r   rp   rp      s?    !!<<>D{{} s   8 8 AAc               $    V ^8  d   QhRRRRRR/# )rM   patterns_list	list[str]directories_listrW   ztuple[list[str], list[Path]]r   )rY   s   "r   rZ   rZ      s"     !, !,9 !,	 !,Vr !,r   c           	        \        \        \        \        VP	                  4       4      4      4      pV P	                  4       p\        P
                  ! 4       pV  F  pVR 8X  d   K  VP                  V4       \        \        V4      4      '       d   VP                  \        V4      4       KS  VP                  V4       F'  p\        V4      '       g   K  VP                  V4       K)  	  K  	  \        \        V4      4      p\        \        \        V4      4      p\        \        R V4      4      p\        V Uu0 uF  p\        V4      '       g   K  VkK  	  up4      p. p\        \        V4      4       F  p	\        V	^,           \        V4      4       Fo  p
W),          W*,          P                  9   d   VP                  W*,          4       K9  W*,          W),          P                  9   g   KX  VP                  W),          4       Kq  	  K  	  \        \        V4      P                  \        V4      4      4      p\        \        V4      4      V3# u upi )z.*c                "    V P                  4       # r]   )ro   )xs   &r   r^   )resolve_reload_patterns.<locals>.<lambda>   s
    QYY[r   )listsetmapr   copycwdappendrp   globrangelenparents
difference)rs   ru   directoriespatternscurrent_working_directorypatternmatchreload_pathchildrenjks   &&         r   resolve_reload_patternsr      s   "3s41A1F1F1H'I#JKK',,.H $
  d? $w-  tG}-277@%==&&u- A ! s;'(Ks4-.Ks0+>?K{Z{f[FY{Z[KH3{#$q1uc+./A~!7!77/;>#9#99/	 0 % s;'223x=ABKH++ [s   7I
I
c                    V ^8  d   QhRRRR/# )rM   dirslist[str] | str | NonerW   rt   r   )rY   s   "r   rZ   rZ      s      0 Y r   c                h    V f   . # \        V \        4      '       d   V .# \        \        V 4      4      # r]   )
isinstancestrrz   r{   )r   s   &r   _normalize_dirsr      s.    |	$vD	?r   c            3      @   ] tR t^tRRRRRRRR"^ RRRRR]RRRRRRRRRRRRRRR	RR^ R
^^R^RRRR]]P                  RRRRRRR33R R llt]	R R l4       t
]	R R l4       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 R lt]	R R  l4       tR!tR# )#Config	127.0.0.1i@  Nr    g      4@TFg      ? i   c          h         V ^8  d   QhRRRRRRRRR	R
RRRRRRRRRRRRRRRRRRRRRRRRR RR!R"R#R$R%RR&R'R(R)R*R'R+R'R,R
R-RR.RR/RR0R'R1RR2R
R3R
R4RR5RR6RR7RR8R
R9RR:R;R<RR=RR>RR?RR@RRARRBRRCRDRERFRGRRHR
RIR/4# )JrM   appz*ASGIApplication | Callable[..., Any] | strhostr   portr7   udsrR   fdz
int | NoneloopzLoopFactoryType | strhttpz/type[asyncio.Protocol] | HTTPProtocolType | strwsz-type[asyncio.Protocol] | WSProtocolType | strws_max_sizews_max_queuews_ping_intervalzfloat | Nonews_ping_timeoutws_per_message_deflaterl   lifespanLifespanTypeenv_filerP   
log_configzJdict[str, Any] | str | os.PathLike[str] | RawConfigParser | IO[Any] | None	log_levelzstr | int | None
access_logr>   zbool | None	interfaceInterfaceTypereloadreload_dirsr   reload_delayfloatreload_includesreload_excludesworkersproxy_headersserver_headerdate_headerforwarded_allow_ips	root_pathlimit_concurrencylimit_max_requestslimit_max_requests_jitterbacklogtimeout_keep_alivetimeout_notifytimeout_graceful_shutdowntimeout_worker_healthcheckcallback_notifyz%Callable[..., Awaitable[None]] | Nonessl_keyfilessl_certfilessl_keyfile_passwordrS   ssl_cert_reqsssl_ca_certsssl_ciphersssl_context_factoryzGCallable[[Config, Callable[[], ssl.SSLContext]], ssl.SSLContext] | Noneheaderszlist[tuple[str, str]] | Nonefactoryh11_max_incomplete_event_sizereset_contextvarsr   )rY   s   "r   rZ   Config.__annotate__   s    jS jS7jS jS 	jS
 jS jS $jS >jS :jS jS jS 'jS &jS !%jS jS  0!jS" _#jS$ $%jS& 'jS(  )jS* !+jS, -jS. ,/jS0 1jS2 03jS4 05jS6 7jS8 9jS: ;jS< =jS> 4?jS@ AjSB &CjSD 'EjSF $'GjSH IjSJ  KjSL MjSN $.OjSP %(QjSR ?SjST 3UjSV 4WjSX )YjSZ [jS\ ]jS^ 4_jS`  ajSb ecjSd .ejSf gjSh (2ijSj  kjSr   c5                	   Wn         W n        W0n        W@n        WPn        W`n        Wpn        Wn        Wn        Wn	        Wn
        Wn        Wn        Wn        VV n        VV n        VV n        VV n        VV n        VV n        VV n        T;'       g    ^V n        VV n        VV n        VV n        VV n        V V n        V!V n        V"V n        V#V n        V$V n        V%V n        V&V n         V'V n!        V(V n"        V)V n#        V*V n$        V+V n%        V,V n&        V-V n'        V.V n(        V/V n)        V0V n*        T1;'       g    . V n+        . V n,        V2V n-        V3V n.        V4V n/        RV n0        V Pc                  4        . V n2        . V n3        . V n4        . V n5        V'       g   V'       g	   V'       d(   V Pl                  '       g   \n        Pq                  R4       V Pl                  '       Ed   \s        V4      p\s        V4      p\s        V4      p\u        VV4      w  V n4        V n2        \u        V. 4      w  V n5        V n3        V Pd                  Pw                  4       p5V Pf                   FB  p6V5 F9  p7V6V78X  g   V6V7Px                  9   g   K   V Pd                  P{                  V74       K;  	  KD  	  V Pj                   F1  p8V8V Ph                  9   g   K  V Ph                  P{                  V84       K3  	  V Pd                  '       g:   V'       d   \n        Pq                  RV4       \~        P                  ! 4       .V n2        \n        P                  R\        \        \        \        V Pd                  4      4      4      4       Ve&   ^ RIFHGp9 \n        P                  RV4       V9! VR7       Vf;   R\        P                  9   d&   \        \        P                  R,          4      V n        V  Vf'   \        P                  P                  R	R
4      V nL        MVV nL        V P&                  '       d+   V P*                  ^8  d   \n        Pq                  R4       R# R# R#   \|         d     EK  i ; i)   FzcCurrent configuration will not reload as not all conditions are met, please refer to documentation.z/Will watch for changes in these directories: %sN)load_dotenvzLoading environment from '%s')dotenv_pathWEB_CONCURRENCYFORWARDED_ALLOW_IPSr   z4"workers" flag is ignored when reloading is enabled.zeProvided reload directories %s did not contain valid directories, watching current working directory.)Mr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r>   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rS   r   r   r   r   r   encoded_headersr   r   r   loadedconfigure_loggingr   reload_dirs_excludesr   r   should_reloadloggerr-   r   r   r}   r   remove
ValueErrorr   r~   r.   sortedrz   r|   r   dotenvr   osenvironr7   getr   ):selfr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r>   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rS   r   r   r   r   r   r   r   r   reload_dirs_tmp	directoryreload_directoryr   r   s:   &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&     r   __init__Config.__init__   s   n 				&( 0.&<# $"$$"(||!**&"!2"4)B&"4,)B&*D'.&($8!&*(&#6 .5mm:<-J*!2 ')02!*,*,?otGYGYGYNNu )+6K-o>O-o>O5L_^i5j2D $"2>UVegi>j;D $";"..335O!66	(7$ $44	EUE]E]8]! ,,334DE )8 7  //d222((//8 0 ###NNM#
 %)HHJ< KKAtCT%5%5678
 *KK7BH-?0BJJ>rzz*;<=DL&')zz~~6K['YD$':D$;;;4<<!+NNQR ,;I  * ! !s   8P??QQc                   V ^8  d   QhRR/# )rM   rW   zLiteral['2.0', '3.0']r   )rY   s   "r   rZ   r   l  s     ' '3 'r   c                	6    R RRRRR/pWP                   ,          # )asgi2z2.0asgi3z3.0wsgi)r   )r   mappings   & r   asgi_versionConfig.asgi_versionk  s)     UUE5

 ~~&&r   c                   V ^8  d   QhRR/# rM   rW   rl   r   )rY   s   "r   rZ   r   u  s     W W Wr   c                	|    \        V P                  ;'       g!    V P                  ;'       g    V P                  4      # r]   )rl   r   r   r   r   s   &r   is_sslConfig.is_sslt  s/    D$$UU(9(9UUT=U=UVVr   c                   V ^8  d   QhRR/# r   r   )rY   s   "r   rZ   r   y  s     5 5 5r   c                	Z    \        V P                  ;'       g    V P                  ^8  4      # )r   )rl   r   r   r   s   &r   use_subprocessConfig.use_subprocessx  s"    DKK334<<!#344r   c                   V ^8  d   QhRR/# rM   rW   Noner   )rY   s   "r   rZ   r   |  s     *B *B4 *Br   c                	   \         P                  ! \        R 4       V P                  Ee_   \	        V P                  \
        P                  4      '       d&   \
        P                  ! V P                  4      V n        \	        V P                  \        4      '       d   V P                  R9   dO   V P                  V P                  R,          R,          R&   V P                  V P                  R,          R,          R&   \         P                  P                  V P                  4       EMe\	        V P                  \        4      '       d~   V P                  P                  R4      '       d]   \        V P                  4      ;_uu_ 4       p\        P                   ! V4      p\         P                  P                  V4       RRR4       M\	        V P                  \        4      '       d~   V P                  P                  R4      '       d]    ^ RIp\        T P                  4      ;_uu_ 4       pTP'                  T4      p\         P                  P                  T4       RRR4       M+\         P                  P)                  V P                  RR	7       V P*                  e   \	        V P*                  \        4      '       d'   \,        V P*                  P/                  4       ,          pMV P*                  p\         P0                  ! R
4      P3                  V4       \         P0                  ! R4      P3                  V4       \         P0                  ! R4      P3                  V4       V P4                  RJ d9   . \         P0                  ! R4      n        R\         P0                  ! R4      n        R# R#   + '       g   i     EL*; i  \$         d   p\%        R4      ThRp?ii ; i  + '       g   i     EL]; i)TRACENFr;   r<   r>   r?   z.jsonzVInstall the PyYAML package or uvicorn[standard] to use `--log-config` with YAML files.)r:   rI   rJ   zuvicorn.asgi)TF)z.yamlz.yml)loggingaddLevelNamer   r   r   r   PathLikefspathdictr>   config
dictConfigr   endswithopenjsonloadyamlImportError	safe_load
fileConfigr   r1   lower	getLoggersetLevelr   r@   rH   )r   fileloaded_configr  er   s   &     r   r   Config.configure_logging|  s   _g6??&$//2;;77"$))DOO"<$//400??m3MQ__DOOL1)<\JLPOODOOL1(;LI))$//:DOOS11doo6N6Nw6W6W$//**d$(IIdOMNN--m< +* DOOS11doo6N6NO`6a6a $//**d$(NN4$8MNN--m< +* ))$//TY)Z>>%$..#..&t~~';';'=>	 NN	o.77	B./88Cn-66yA??e#;=G./8<AG./9 $7 +** # %p
 +**s0   6N"N6 $1O"N3	6OOOO&	c                   V ^8  d   QhRR/# )rM   rW   r	   r   )rY   s   "r   rZ   r     s     & &# &r   c                     \        V P                  4      #   \         dB   p\        P	                  RT,          4       \
        P                  ! \        4        Rp?R# Rp?ii ; i)z/Import the app and return it. Exits on failure.zError loading ASGI app. %sN)r   r   r   r   r,   sysexitSTARTUP_FAILURE)r   excs   & r   load_appConfig.load_app  sG    	&%dhh//$ 	&LL5;<HH_%%	&s    A#6AA#c                   V ^8  d   QhRR/# r   r   )rY   s   "r   rZ   r     s     ` `d `r   c           
     		  a  S P                   '       d   Q hS P                  ee   R V 3R llpS P                  S V4      p\        V\        P                  4      '       g"   \        R\        V4      P                   24      hVS n        MS P                  '       ds   S P                  '       g   Q h\        S P                  S P                  S P                  S P                  S P                  S P                  S P                   R7      S n        MR S n        S P"                   UUu. uF5  w  r4VP%                  4       P'                  R4      VP'                  R4      3NK7  	  pppR\)        V4      9  d   S P*                  '       d   R.V,           MTS n        \        S P.                  \0        4      '       d<   \3        \4        P7                  S P.                  S P.                  4      4      pVS n        MS P.                  S n        \        S P:                  \0        4      '       d<   \3        \<        P7                  S P:                  S P:                  4      4      pVS n        MS P:                  S n        \3        \@        S PB                  ,          4      S n"        S PG                  4       S n$         S PI                  4       S n$        S PJ                  '       g   \L        PO                  R4       S PX                  R	8X  d   \Z        P\                  ! S PH                  4      '       d   \_        S PH                  R
4      p	M^\Z        P`                  ! S PH                  4      '       d   \c        S PH                  4      p	M"\e        S PH                  RR 4      p
\c        T
4      p	T	'       d   RMRS n,        S PX                  R8X  d#   \g        S PH                  4      S n$        R S n        M+S PX                  R8X  d   \i        S PH                  4      S n$        \L        Pk                  4       \l        8:  d   \o        S PH                  4      S n$        S Pp                  '       d'   \s        S PH                  S Pt                  R7      S n$        RS n         R # u uppi   \
         dN   pS PJ                  '       d1   \L        PQ                  RT4       \R        PT                  ! \V        4        R p?ELR p?ii ; i)Nc                   V ^8  d   QhRR/# )rM   rW   rX   r   )rY   s   "r   rZ   !Config.load.<locals>.__annotate__  s      ^ r   c            
        < S P                   '       g   \        R 4      h\        S P                  S P                   S P                  S P
                  S P                  S P                  S P                  R7      # )z`default_ssl_context_factory()` requires `ssl_certfile` to be set on `Config`. Either pass `ssl_certfile` (and optionally `ssl_keyfile`) or build the `SSLContext` directly inside `ssl_context_factory` without calling the default factory.rO   rN   rQ   rS   rT   rU   rV   )	r   RuntimeErrorri   r   r   rS   r   r   r   r   s   r   default_factory$Config.load.<locals>.default_factory  sp    (((&e 
 * ,,!..!66 $ 0 0"00!.. ,, r   z;`ssl_context_factory` must return an `ssl.SSLContext`, got r$  latin1   serverz_ASGI app factory detected. Using it, but please consider setting the --factory flag explicitly.z"Error loading ASGI app factory: %sr    	__await____call__r   r   r   )trusted_hostsT)r)  s   uvicorn);r   r   r   r`   ra   	TypeErrortyper   r   r   ri   r   r   rS   r   r   r   r   r  encoder  r   r   r   r   r   r2   r   http_protocol_classr   r3   ws_protocol_classr4   r   lifespan_classr  
loaded_appr   r   r-   r,   r  r  r  r   inspectisclasshasattr
isfunctionr   getattrr   r   getEffectiveLevelr   r   r   r   r   )r   r&  contextkeyvaluer   r0  r1  r  
use_asgi_3calls   f          r   r  Config.load  sy   ;;;##/ " ..t_EGgs~~66"]^bcj^k^t^t]u vww.5DH[[[$$$$$)((**22 ,,,,**((DH DHdhdpdpqdpV`VYCIIK..x8%,,x:PQdpq _ 55$:L:L:L %%7  	 dii%%"4^5G5G		SWS\S\5]"^?RD$'+yyD$dggs## 2<3C3CDGGTWW3U VDUD"%)WWD"0$--1HI--/
	"oo/DO <<<u >>V#t//$T__kB
##DOO440A
t
DA06
(2WDN>>V#,T__=DO%)D"^^w&-doo>DO##%85dooFDO4T__TXTlTlmDOq r2  	*|||A3G)	*s   ";Q5&Q; ;SASSc                   V ^8  d   QhRR/# r   r   )rY   s   "r   rZ   r     s     
 
$ 
r   c                	    \        R 4      h)a  The `setup_event_loop` method was replaced by `get_loop_factory` in uvicorn 0.36.0.
None of those methods are supposed to be used directly. If you are doing it, please let me know here: https://github.com/Kludex/uvicorn/discussions/2706. Thank you, and sorry for the inconvenience.)AttributeErrorr   s   &r   setup_event_loopConfig.setup_event_loop  s    n
 	
r   c                   V ^8  d   QhRR/# )rM   rW   z.Callable[[], asyncio.AbstractEventLoop] | Noner   )rY   s   "r   rZ   r     s     @ @"P @r   c                	h   V P                   \        9   d"   \        \        V P                   ,          4      pM \        V P                   4      # Xf   R# V! V P                  R7      #   \         dA   p\        P                  R T,          4       \        P                  ! \        4        Rp?L_Rp?ii ; i)z,Error loading custom loop setup function. %sN)r   )
r   r5   r   r   r   r,   r  r  r  r   )r   loop_factoryr  s   &  r   get_loop_factoryConfig.get_loop_factory  s    99&6HX\XaXaIb6cL*)$))44 4+>+>?? ) *KcQR))*s   A& &B116B,,B1c                   V ^8  d   QhRR/# )rM   rW   zsocket.socketr   )rY   s   "r   rZ   r   &  s     . .] .r   c                	   V P                   e   V P                   p\        P                  ! \        P                  \        P                  4      p VP	                  V4       Rp\
        P                  ! V P                   V4       RpRpR\        VRR7      ,           R,           pV P                   .pEMV P                  eq   \        P                  ! V P                  \        P                  \        P                  4      pRpRp	R\        V	RR7      ,           R,           pVP!                  4       .pEM\        P"                  p
R	pV P$                  '       d$   R
V P$                  9   d   \        P&                  p
Rp\        P                  ! V
R7      pVP)                  \        P*                  \        P,                  ^4        VP	                  V P$                  V P.                  34       RV R2pR\        VRR7      ,           R,           pV P0                  '       d   RMRpWP$                  VP!                  4       ^,          .p\        P2                  ! V.VO5RRV//  VP5                  R4       V#   \         d;   p\        P                  T4       \        P                  ! \        4        R p?EL*R p?ii ; i  \         d;   p\        P                  T4       \        P                  ! \        4        R p?ELR p?ii ; i)Ni  z8Uvicorn running on unix socket %s (Press CTRL+C to quit)z%szUvicorn running on T)boldz (Press CTRL+C to quit)z3Uvicorn running on socket %s (Press CTRL+C to quit)z
%s://%s:%d:z%s://[%s]:%d)familyhttpsr   extracolor_message)r   socketAF_UNIXSOCK_STREAMbindr   chmodrq   r   r,   r  r  r  r   r   fromfdgetsocknameAF_INETr   AF_INET6
setsockopt
SOL_SOCKETSO_REUSEADDRr   r   r.   set_inheritable)r   rk   sock	uds_permsr  messagesock_name_formatrQ  logger_argsfd_name_formatrN  addr_formatprotocol_names   &            r   bind_socketConfig.bind_socket&  s7   8888D==1C1CDD*		$!	9-
 QG#1E:JQU4VVYrrM88*KWW ==&..&:L:LMDKG!N1E.t4TTWppM++-.K^^F&KyyySDII-,==/DOOF--v/B/BAF*		499dii01
 ,K=8OPG1E+D4QQTmmM'+{{{GM())T5E5E5G5JKKGRkR/=1QRT"K  *S!))*6  *S!))*s0   4I- ='J5 -J28/J--J25K: /K55K:c                   V ^8  d   QhRR/# r   r   )rY   s   "r   rZ   r   W  s     9 9t 9r   c                	^    \        V P                  \        4      ;'       d    V P                  # r]   )r   r   r   r   r   s   &r   r   Config.should_reloadV  s    $((C(88T[[8r   );r   r   r   r   r   r   r   r   r   r   r   r   r   r0  r   r   r2  r   r   r   r   r3  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r`   r   r   r   r   r   r   r   rS   r   r   r   r   r   r>   r   r   r   r   r   r   r   r1  i   )r   r   r   r   rK   r8   r`   	CERT_NONEr   propertyr   r   r   r   r  r  rC  rH  rg  r   r   r   r   r   r   r      s      &,@F<B+)-(,'+!'26ao&*"&#).2"2626""" 6:(,)-)*"# 04*+AE596:+// ]]6:"&gk0448"'kjSX ' ' W W 5 5*BX&`D
@.` 9 9r   r   )r    r!   r"   )r    r#   r$   r%   r&   )r    r'   r(   )r#   r    r)   r*   )r    r   r   r   )H__conditional_annotations__
__future__r   r)   r4  r
  r  logging.configr   rR  r`   r  collections.abcr   r   configparserr   pathlibr   typingr   r	   r
   uvicorn._ansir   uvicorn._compatr   uvicorn._typesr   uvicorn.importerr   r   uvicorn.loggingr   uvicorn.middleware.asgi2r   !uvicorn.middleware.message_loggerr    uvicorn.middleware.proxy_headersr   uvicorn.middleware.wsgir   UserWarningr   HTTPProtocolTypeWSProtocolTyper   LoopFactoryTyper   CRITICALERRORWARNINGrG   DEBUGr1   __annotations__r2   r3   r4   r5   r6   PROTOCOL_TLS_SERVERr8   r  rK   r  r   ri   rp   r   r   r   )rn  s   @r   <module>r     s   " "      	  
 
 / (  # #  / * F + 4 E C 2  56 UV*+=>89   W]]w
GLLW]]_
N  :	8J"  F
DRgE'#  ,
*	-.  D
2;8	)%  #E
 D33 c 3 q40$

 	3Y

 ,(

 	,(
 JWfk5Q'6*:z7FKQVW5" B 
		?	+(!,HZ9 Z9r   