
    i/                       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Jr  S SKJr  S SKJrJrJr  S SKrS SKJr  \(       a!  S SKJr  S SKJr  S S	KJr  S S
KJr  \\\\\4   r\R>                  \R@                  4r!\R
                  S:X  a  \!\RD                  4-  r!\RF                  " S5      r$ " S S5      r% " S S5      r&g)    )annotationsN)
formatdate)	FrameType)TYPE_CHECKINGSequenceUnion)Config)H11Protocol)HttpToolsProtocol)WebSocketProtocol)
WSProtocol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    Y/home/maestro/MAESTRO/maestro-backend/venv/lib/python3.13/site-packages/uvicorn/server.py__init__ServerState.__init__+   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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SS jrSS jrSrg)Server2   c                f    Xl         [        5       U l        SU l        SU l        SU l        SU l        g )NFg        )configr   server_statestartedshould_exit
force_exitlast_notified)r   r+   s     r   r   Server.__init__3   s/    'M  r   Nc                |    U R                   R                  5         [        R                  " U R	                  US95      $ )Nsockets)r+   setup_event_loopasynciorunserve)r   r4   s     r   r7   
Server.run<   s,    $$&{{4::g:677r   c                d  #    [         R                  " 5       nU R                  nUR                  (       d  UR	                  5         UR                  U5      U l        U R                  5         SnS[        R                  " SSS9-   S-   n[        R                  XBSU0S9  U R                  US	9I S h  vN   U R                  (       a  g U R                  5       I S h  vN   U R                  US	9I S h  vN   S
nS[        R                  " SSS9-   S-   n[        R                  XBSU0S9  g  Ny NQ N<7f)NzStarted server process [%d]zStarted server process [z%dcyan)fg]color_messageextrar3   zFinished server process [%d]zFinished server process [)osgetpidr+   loadedloadlifespan_classlifespaninstall_signal_handlersclickstyleloggerinfostartupr.   	main_loopshutdown)r   r4   
process_idr+   messager>   s         r   r8   Server.serve@   s    YY[
}}KKM--f5$$&/2U[[&5QQTWWG/OPll7l+++nnmmGm,,,03ekk$66RRUXXG/OP 	, 	,s6   B.D00D*1)D0D,D01D.29D0,D0.D0c                &  ^ ^#    T R                   R                  5       I S h  vN   T R                   R                  (       a  ST l        g 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	[*        R,                  R/                  TR(                  5      (       a*  [*        R0                  " TR(                  5      R2                  n	UR5                  UTR(                  TR                  TR                  S9I S h  vN n[*        R6                  " TR(                  U	5        UR&                  c   eUR&                  nU/T l        Og UR                  UTR8                  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 RI                  U5        O ST l%        g  GN GN1 GN N NP! [<         aX  n
[>        RA                  U
5        T R                   RC                  5       I S h  vN    [D        RF                  " S5         S n
A
NS n
A
ff = f7f)NTc                d   > TR                  TTR                  TR                  R                  U S9$ )N)r+   r,   	app_state_loop)http_protocol_classr,   rF   state)rU   r+   r   s    r   create_protocol'Server.startup.<locals>.create_protocola   s9     --!..----	 .  r   c                f    SSK Jn  U R                  [        R                  " 5       5      nU" U5      $ )Nr   )	fromshare)socketr[   sharerA   rB   )sockr[   	sock_datas      r   _share_socket%Server.startup.<locals>._share_socketr   s&    
 - JJryy{3	 ++r   Windows   )r^   sslbacklogi  )pathrd   re   )hostportrd   re   N)rU   z asyncio.AbstractEventLoop | Noner   zasyncio.Protocol)r^   socket.SocketTyper   rj   )&rF   rL   r.   r+   r6   get_running_loopserversplatformsystemworkerscreate_serverrd   re   appendfdr\   fromfdAF_UNIXSOCK_STREAMr4   udsrA   rf   existsstatst_modecreate_unix_serverchmodrg   rh   OSErrorrJ   errorrN   sysexit_log_started_messager-   )r   r4   rX   loopr`   r^   
is_windowsserver	listeners	uds_permsexcr+   s   `          @r   rL   Server.startupY   s     mm##%%%==$$#D 7;	3		 	 '') ,',", >@DL%__.);
>>A%*(.D#11#FJJ  2    ##F+    IYY"==FNNF<N<NOD--

FNN .  F >>---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 } 	&N  S!mm,,...s   NLCN1L"2BNL%CNL(A	N>L, L*L, AN"N%N(N*L, ,
N62N	(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[        R                  " 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]:%drc   httpshttpzUvicorn running on z (Press CTRL+C to quit)T)boldr>   r?   )r+   rr   rJ   rK   getsocknamerv   rg   rh   rd   rH   rI   )
r   r   r+   r^   addr_formatrg   rh   protocol_namerP   r>   s
             r   r   Server._log_started_message   s   99 Q<DKKE  "
 ZZ#KKJFJJ
 'K & 39Dd{,;;Dqy |//1!4'-zzGvM+K=8OPG%++k56+, 
 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   rc   i / 皙?)on_tickr6   sleep)r   counterr.   s      r   rM   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                  R                  b-  U R                  R                  U R                  R                  :  $ g N[7f)N
   r   T)usegmts   dateF)timer   encoder+   date_headerencoded_headersr,   r   callback_notifyr0   timeout_notifyr.   limit_max_requestsr   )r   r   current_timecurrent_dater   s        r   r   Server.on_tick   s     R<199;L%l4@GGIL{{&& '67  kk999 -
 {{**6"4"44t{{7Q7QQ)5&++55777 ;;))5$$33t{{7U7UUU 8s   C!E#D?$AEc                  #    [         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                   a    [         R                  S[!        U R
                  R"                  5      5        U R
                  R"                   H8  n[$        R&                  S:  a  UR)                  5         M)  UR)                  SS9  M:      Nf = f N7f)NzShutting downr   )timeoutz=Cancel %s running task(s), timeout graceful shutdown exceeded)   	   z2Task cancelled, timeout graceful shutdown exceeded)msg)rJ   rK   rl   closelistr,   r   rN   r6   r   wait_for_wait_tasks_to_completer+   timeout_graceful_shutdownTimeoutErrorr}   lenr   r~   version_infocancelr/   rF   )r   r4   r   r^   
connectionts         r   rN   Server.shutdown  sb    O$ llFLLN #MrMDJJL " t00<<=J! >mmC   	W"",,.==    --((*** ) 	! ## 		WLLOD%%++, &&,,##f,HHJHH!UHV	 -		W +sU   B*G,D&-G2:D* ,D(-D* 1.GG	 G(D* *BGGGG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))
r,   r   r/   rJ   rK   r6   r   r   rl   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                V   [         R                  " 5       [         R                  " 5       La  g [        R                  " 5       n [
         H   nUR                  X R                  US 5        M"     g ! [         a0    [
         H#  n[        R                  " X R                  5        M%      g f = fri   )
	threadingcurrent_threadmain_threadr6   get_event_loopHANDLED_SIGNALSadd_signal_handlerhandle_exitNotImplementedErrorsignal)r   r   sigs      r   rG   Server.install_signal_handlers=  s    ##%Y-B-B-DD%%'	5&''-=-=sDI '" 	5&c#3#34 '	5s   *A. .7B('B(c                l    U R                   (       a  U[        R                  :X  a  SU l        g SU l         g )NT)r.   r   SIGINTr/   )r   r   frames      r   r   Server.handle_exitL  s%    v}} 4"DO#Dr   )r+   r/   r0   rF   r,   rl   r.   r-   )r+   r	   r   r   ri   )r4   zlist[socket.socket] | Noner   r   )r   zSequence[socket.SocketType]r   r   r   )r   intr   bool)r   r   r   zFrameType | Noner   r   )r    r!   r"   r#   r   r7   r8   rL   r   rM   r   rN   r   rG   r   r%   r&   r   r   r(   r(   2   s>    !8Q2_B'R68!+F'$5$r   r(   )'
__future__r   r6   loggingrA   rm   r   r\   r~   r   r   email.utilsr   typesr   typingr   r   r   rH   uvicorn.configr	   uvicorn.protocols.http.h11_implr
   %uvicorn.protocols.http.httptools_implr   ,uvicorn.protocols.websockets.websockets_implr   )uvicorn.protocols.websockets.wsproto_implr   	Protocolsr   SIGTERMr   SIGBREAK	getLoggerrJ   r   r(   r&   r   r   <module>r      s    "   	    
   "  1 1  !;GNDk#4jBSSTI MM
NN <<7))O			?	+	= 	=^$ ^$r   