
    OjF4                       % S SK Jr  S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	r	S SK
r
S SKrS SKrS SKrS SKJrJr  S SKJr  S SKJr  S SKJrJr  S SKJr  S SKJr  S S	KJrJr  \(       a1  S S
KJ r   S SK!J"r"  S SK#J$r$  S SK%J&r&  S SK'J(r(  \ \"-  \(-  \$-  \&-  r)S\*S'   \	RV                  \	RX                  4r-\R                  S:X  a  \-\	R\                  4-  r-\R^                  " S5      r0 " S S5      r1 " S S5      r2g)    )annotationsN)	GeneratorSequence)
formatdate)	FrameType)TYPE_CHECKING	TypeAlias)style)asyncio_run)STARTUP_FAILUREConfig)H11Protocol)HttpToolsProtocol)WebSocketProtocol)WebSocketsSansIOProtocol)
WSProtocolr	   	Protocolswin32zuvicorn.errorc                  "    \ rS rSrSrSS jrSrg)ServerState+   zH
Shared servers state that is available between all protocol instances.
c                \    SU l         [        5       U l        [        5       U l        / U l        g Nr   )total_requestssetconnectionstasksdefault_headersselfs    P/var/www/html/leaf-doctor-v1/venv/lib/python3.13/site-packages/uvicorn/server.py__init__ServerState.__init__0   s%    +.5.1e
:<    )r   r   r   r   NreturnNone)__name__
__module____qualname____firstlineno____doc__r"   __static_attributes__ r$   r!   r   r   +   s    =r$   r   c                      \ rS rSrSS jr\R                  SS j5       rSSS jjrSSS jjr	SSS jjr
SSS jjrSS	 jrSS
 jrSS jrSSS jjrSS jr\R$                  SS j5       rSS jrSrg)Server7   c                t    Xl         [        5       U l        SU l        SU l        SU l        SU l        / U l        g )NFg        )configr   server_statestartedshould_exit
force_exitlast_notified_captured_signals)r    r3   s     r!   r"   Server.__init__8   s7    'M  ,.r$   c                    U R                   R                  c  g U R                   R                  [        R                  " SU R                   R                  5      -   $ r   )r3   limit_max_requestsrandomrandintlimit_max_requests_jitterr   s    r!   r<   Server.limit_max_requestsC   s?    ;;))1{{--q$++BgBg0hhhr$   Nc                `    [        U R                  US9U R                  R                  5       S9$ )Nsockets)loop_factory)r   server3   get_loop_factoryr    rC   s     r!   run
Server.runI   s'    4::g:6T[[EaEaEcddr$   c                   #    U R                  5          U R                  U5      I S h  vN   S S S 5        g  N! , (       d  f       g = f7fN)capture_signals_serverG   s     r!   rE   Server.serveL   s6     !!#++g&&& $#& $#s%   A	868	A	8
AA	c                :  #    [         R                  " 5       nU R                  nUR                  (       d  UR	                  5         UR                  U5      U l        SnS[        SSS9-   S-   n[        R                  XBSU0S9  U R                  US	9I S h  vN   U R                  (       d  U R                  5       I S h  vN   U R                  (       a@  U R                  US	9I S h  vN   S
nS[        SSS9-   S-   n[        R                  XBSU0S9  g g  N NX N27f)NzStarted server process [%d]zStarted server process [z%dcyan)fg]color_messageextrarB   zFinished server process [%d]zFinished server process [)osgetpidr3   loadedloadlifespan_classlifespanr
   loggerinfostartupr6   	main_loopr5   shutdown)r    rC   
process_idr3   messagerS   s         r!   rM   Server._serveP   s     YY[
}}KKM--f5/2U4F5KKcQG/OPll7l+++.."""<<---0004G7%:PPSVVMKKO]3SKT  	,"0s6   BDD(D>D?'D&D'/DDDc                R  ^ ^#    T R                   R                  5       I S h  vN   T R                   R                  (       a  [        R                  " [
        5        T R                  m S
   SUU 4S jjjn[        R                  " 5       nUb      SS jn/ T l	        U H  n[        R                  " 5       S:H  nTR                  S:  a  U(       a  U" U5      nUR                  X%TR                  TR                  S9I S h  vN nT R                  R!                  U5        M     UnGOTR"                  b  [$        R&                  " TR"                  [$        R(                  [$        R*                  5      nUR                  X%TR                  TR                  S9I S h  vN nUR,                  c   eUR,                  nU/T l	        GOKTR.                  b  Sn	[0        R2                  R5                  TR.                  5      (       a*  [0        R6                  " TR.                  5      R8                  n	UR;                  UTR.                  TR                  TR                  S9I S h  vN n[0        R<                  " TR.                  U	5        UR,                  c   eUR,                  nU/T l	        Og UR                  UTR>                  TR@                  TR                  TR                  S9I S h  vN nWR,                  c   eUR,                  nU/T l	        Uc  T RK                  U5        O S	T l&        g  GN GN1 GN N NP! [B         a\  n
[D        RG                  U
5        T R                   RI                  5       I S h  vN    [        R                  " [
        5         S n
A
NS n
A
ff = f7f)Nc                d   > TR                  TTR                  TR                  R                  U S9$ )N)r3   r4   	app_state_loop)http_protocol_classr4   r[   state)rg   r3   r    s    r!   create_protocol'Server.startup.<locals>.create_protocoln   s9     --!..----	 .  r$   c                f    SSK Jn  U R                  [        R                  " 5       5      nU" U5      $ )Nr   )	fromshare)socketrm   sharerV   rW   )sockrm   	sock_datas      r!   _share_socket%Server.startup.<locals>._share_socket   s&    
 - JJryy{3	 ++r$   Windows   )rp   sslbacklogi  )pathrv   rw   )hostportrv   rw   TrK   )rg   z asyncio.AbstractEventLoop | Noner&   zasyncio.Protocol)rp   socket.SocketTyper&   r{   )'r[   r^   r6   sysexitr   r3   asyncioget_running_loopserversplatformsystemworkerscreate_serverrv   rw   appendfdrn   fromfdAF_UNIXSOCK_STREAMrC   udsrV   rx   existsstatst_modecreate_unix_serverchmodry   rz   OSErrorr\   errorr`   _log_started_messager5   )r    rC   rj   looprr   rp   
is_windowsserver	listeners	uds_permsexcr3   s   `          @r!   r^   Server.startupg   s    mm##%%%==$$HH_% 7;	3		 	 '') ,',", >@DL%__.);
>>A%*(.D#11/RXR\R\flftft1uu##F+    IYY"==FNNF<N<NOD--ofjjbhbpbp-qqF>>---I"8DLZZ#Iww~~fjj))GGFJJ/77	22fjjfjj&.. 3  F HHVZZ+>>---I"8DL*#11#

"NN  2    >>---I"8DL?%%i0 s 	&L v r  *S!mm,,...))*s   N'L1C N'L4BN'L7CN'"L:#A	N'->L> +L<,L> 0AN'4N'7N':N'<L> >
N$2N:M=;NN'N$$N'c                   U R                   nUR                  b*  US   n[        R                  SUR	                  5       5        g UR
                  b!  [        R                  SUR
                  5        g SnUR                  c  SOUR                  nSU;   a  SnUR                  nUS:X  a  US   R	                  5       S   nUR                  (       a  S	OS
nSU S3nS[        USS9-   S-   n	[        R                  UUUUSU	0S9  g )Nr   z3Uvicorn running on socket %s (Press CTRL+C to quit)z8Uvicorn running on unix socket %s (Press CTRL+C to quit)z
%s://%s:%dz0.0.0.0:z%s://[%s]:%dru   httpshttpzUvicorn running on z (Press CTRL+C to quit)T)boldrS   rT   )
r3   r   r\   r]   getsocknamer   ry   rz   rv   r
   )
r    r   r3   rp   addr_formatry   rz   protocol_namerb   rS   s
             r!   r   Server._log_started_message   s   99 Q<DKKE  "
 ZZ#KKRTZT^T^_ 'K & 39Dd{,;;Dqy |//1!4'-zzGvM+K=8OPG1E+D4QQTmmMKK&6  r$   c                   #    SnU R                  U5      I S h  vN nU(       dK  US-  nUS-  n[        R                  " S5      I S h  vN   U R                  U5      I S h  vN nU(       d  MJ  g g  NW N* N7f)Nr   ru   i / 皙?)on_tickr~   sleep)r    counterr6   s      r!   r_   Server.main_loop   sh      LL11qLG&G--$$$ $W 55K	 + 2 %5s9   A7A1.A7A3	A7!A5"A7/A73A75A7c                ~  #    US-  S:X  a  [         R                   " 5       n[        USS9R                  5       nU R                  R                  (       a  SU4/nO/ nX@R                  R
                  -   U R                  l        U R                  R                  bN  X R                  -
  U R                  R                  :  a(  X l	        U R                  R                  5       I S h  vN   U R                  (       a  gU R                  nUb1  U R                  R                  U:  a  [        R                  SU5        gg NW7f)N
   r   T)usegmts   datez:Maximum request limit of %d exceeded. Terminating process.F)timer   encoder3   date_headerencoded_headersr4   r   callback_notifyr8   timeout_notifyr6   r<   r   r\   r]   )r    r   current_timecurrent_dater   max_requestss         r!   r   Server.on_tick   s    R<199;L%l4@GGIL{{&& '67 0;kk>Y>Y0YD- {{**6"4"44t{{7Q7QQ)5&++55777 ..#(9(9(H(HL(XKKTVbc 8s   C!D=#D;$AD=c                N  #    [         R                  S5        U R                   H  nUR                  5         M     U=(       d    /  H  nUR                  5         M     [	        U R
                  R                  5       H  nUR                  5         M     [        R                  " S5      I S h  vN    [        R                  " U R                  5       U R                  R                  S9I S h  vN   U R&                  (       d#  U R(                  R                  5       I S h  vN   g g  Ny N;! [        R                   ab    [         R                  S[!        U R
                  R"                  5      5        U R
                  R"                   H  nUR%                  SS9  M      Nf = f N7f)NzShutting downr   )timeoutz=Cancel %s running task(s), timeout graceful shutdown exceededz2Task cancelled, timeout graceful shutdown exceeded)msg)r\   r]   r   closelistr4   r   r`   r~   r   wait_for_wait_tasks_to_completer3   timeout_graceful_shutdownTimeoutErrorr   lenr   cancelr7   r[   )r    rC   r   rp   
connectionts         r!   r`   Server.shutdown  sK    O$ llFLLN #MrMDJJL " t00<<=J! >mmC   	S"",,.==   --((*** # 	! ## 	SLLOD%%++, &&,,QR -	S +sU   B*F%,D&-F%2:D* ,D(-D* 1.F%F# F%(D* *A3F F%F  F%c                \  #    U R                   R                  (       a  U R                  (       d  Sn[        R	                  U5        U R                   R                  (       a]  U R                  (       dL  [
        R                  " S5      I S h  vN   U R                   R                  (       a  U R                  (       d  ML  U R                   R                  (       a  U R                  (       d  Sn[        R	                  U5        U R                   R                  (       a]  U R                  (       dL  [
        R                  " S5      I S h  vN   U R                   R                  (       a  U R                  (       d  ML  U R                   H  nUR                  5       I S h  vN   M     g  GN Na N7f)Nz8Waiting for connections to close. (CTRL+C to force quit)r   z@Waiting for background tasks to complete. (CTRL+C to force quit))
r4   r   r7   r\   r]   r~   r   r   r   wait_closed)r    r   r   s      r!   r   Server._wait_tasks_to_complete-  s    ((LCKK##//mmC((( ##// ""4??TCKK##))$//mmC((( ##))$/// llF$$&&& # ) ) 'sC   B	F,F%0F,>BF,F(0F,9"F,F*
F,(F,*F,c              #    #    [         R                  " 5       [         R                  " 5       La  S v   g [         Vs0 s H#  o[        R                  " XR
                  5      _M%     nn S v   UR                  5        H  u  p[        R                  " X5        M     [        U R                  5       H  n[        R                  " U5        M     g s  snf ! UR                  5        H  u  p[        R                  " X5        M     f = f7frK   )
	threadingcurrent_threadmain_threadHANDLED_SIGNALSsignalhandle_exititemsreversedr9   raise_signal)r    sigoriginal_handlershandlercaptured_signals        r!   rL   Server.capture_signals?  s      ##%Y-B-B-DD SbbRa3&--5E5E"FFRab	, 1 7 7 9c+ !:
  ((>(>?O0  @ c !2 7 7 9c+ !:s)   9D*C%D(C ,A'D1DDc                    U R                   R                  U5        U R                  (       a  U[        R                  :X  a  SU l        g SU l        g )NT)r9   r   r6   r   SIGINTr7   )r    r   frames      r!   r   Server.handle_exitS  s9    %%c*v}} 4"DO#Dr$   )	r9   r3   r7   r8   r[   r4   r   r6   r5   )r3   r   r&   r'   )r&   z
int | NonerK   )rC   zlist[socket.socket] | Noner&   r'   )r   zSequence[socket.SocketType]r&   r'   r%   )r   intr&   bool)r&   zGenerator[None, None, None])r   r   r   zFrameType | Noner&   r'   )r(   r)   r*   r+   r"   	functoolscached_propertyr<   rH   rE   rM   r^   r   r_   r   r`   r   
contextlibcontextmanagerrL   r   r-   r.   r$   r!   r0   r0   7   su    	/ i i
e'U.Zx!F6<+@'$ 1 1&$r$   r0   )3
__future__r   r~   r   r   loggingrV   r   r=   r   rn   r|   r   r   collections.abcr   r   email.utilsr   typesr   typingr   r	   uvicorn._ansir
   uvicorn._compatr   uvicorn.configr   r   uvicorn.protocols.http.h11_implr   %uvicorn.protocols.http.httptools_implr   ,uvicorn.protocols.websockets.websockets_implr   3uvicorn.protocols.websockets.websockets_sansio_implr   )uvicorn.protocols.websockets.wsproto_implr   r   __annotations__r   SIGTERMr   SIGBREAK	getLoggerr\   r   r0   r.   r$   r!   <module>r      s    "     	     
   / "  +  ' 2;GN\D&)::ZGJ[[^vvIyv MM
NN <<7))O			?	+	= 	=a$ a$r$   