
    Soi 3                       % 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JrJr  S SKJr  S SKJr  S SKJrJr  S SKrS SKJr  S SK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'   \RN                  \RP                  4r)\	R                  S:X  a  \)\RT                  4-  r)\RV                  " S5      r, " S S5      r- " S S5      r.g)    )annotationsN)	GeneratorSequence)
formatdate)	FrameType)TYPE_CHECKING	TypeAlias)asyncio_run)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    J/var/www/html/land-ocr/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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)Server6   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   r/   s     r   r   Server.__init__7   s7    'M  ,.r    Nc                `    [        U R                  US9U R                  R                  5       S9$ )Nsockets)loop_factory)r
   server/   get_loop_factoryr   r9   s     r   run
Server.runB   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_server=   s     r   r;   Server.serveE   s6     !!#++g&&& $#& $#s%   A	868	A	8
AA	c                D  #    [         R                  " 5       nU R                  nUR                  (       d  UR	                  5         UR                  U5      U l        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extrar8   zFinished server process [%d]zFinished server process [)osgetpidr/   loadedloadlifespan_classlifespanclickstyleloggerinfostartupr2   	main_loopshutdown)r   r9   
process_idr/   messagerI   s         r   rC   Server._serveI   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D  D!)D 
DD !D"9D D D 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/   r0   	app_state_loop)http_protocol_classr0   rQ   state)r_   r/   r   s    r   create_protocol'Server.startup.<locals>.create_protocolh   s9     --!..----	 .  r    c                f    SSK Jn  U R                  [        R                  " 5       5      nU" U5      $ )Nr   )	fromshare)socketre   sharerL   rM   )sockre   	sock_datas      r   _share_socket%Server.startup.<locals>._share_sockety   s&    
 - JJryy{3	 ++r    Windows   )rh   sslbacklogi  )pathrn   ro   )hostportrn   ro   rA   )r_   z asyncio.AbstractEventLoop | Noner"   zasyncio.Protocol)rh   socket.SocketTyper"   rs   )&rQ   rV   r2   r/   asyncioget_running_loopserversplatformsystemworkerscreate_serverrn   ro   appendfdrf   fromfdAF_UNIXSOCK_STREAMr9   udsrL   rp   existsstatst_modecreate_unix_serverchmodrq   rr   OSErrorrT   errorrX   sysexit_log_started_messager1   )r   r9   rb   looprj   rh   
is_windowsserver	listeners	uds_permsexcr/   s   `          @r   rV   Server.startup`   s    mm##%%%==$$#D 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 u 	&N v r  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]:%drm   httpshttpzUvicorn running on z (Press CTRL+C to quit)T)boldrI   rJ   )r/   r|   rT   rU   getsocknamer   rq   rr   rn   rR   rS   )
r   r   r/   rh   addr_formatrq   rr   protocol_namerZ   rI   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1EKKRV4WWZssM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   rm   i / 皙?)on_tickrt   sleep)r   counterr2   s      r   rW   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                  nUb4  U R                  R                  U:  a  [        R                  SU S35        gg Nd7f)	N
   r   T)usegmts   datezMaximum request limit of z exceeded. Terminating process.F)timer   encoder/   date_headerencoded_headersr0   r   callback_notifyr4   timeout_notifyr2   limit_max_requestsr   rT   warning)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 {{55#(9(9(H(HL(XNN6|nDcde 8s   C!E
#E$A%E
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)rT   rU   rv   closelistr0   r   rX   rt   r   wait_for_wait_tasks_to_completer/   timeout_graceful_shutdownTimeoutErrorr   lenr   cancelr3   rQ   )r   r9   r   rh   
connectionts         r   rX   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))
r0   r   r3   rT   rU   rt   r   r   rv   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rA   )
	threadingcurrent_threadmain_threadHANDLED_SIGNALSsignalhandle_exititemsreversedr5   raise_signal)r   sigoriginal_handlershandlercaptured_signals        r   rB   Server.capture_signals9  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)r5   r{   r2   r   SIGINTr3   )r   r   frames      r   r   Server.handle_exitM  s9    %%c*v}} 4"DO#Dr    )	r5   r/   r3   r4   rQ   r0   rv   r2   r1   )r/   r   r"   r#   rA   )r9   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   r>   r;   rC   rV   r   rW   r   rX   r   
contextlibcontextmanagerrB   r   r)   r*   r    r   r,   r,   6   sY    	/e'Q.[z!F6<+@'$ 1 1&$r    r,   )/
__future__r   rt   r   loggingrL   rw   r   rf   r   r   r   collections.abcr   r   email.utilsr   typesr   typingr   r	   rR   uvicorn._compatr
   uvicorn.configr   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	getLoggerrT   r   r,   r*   r    r   <module>r      s    "    	    
   / "  +  ' !;GN\D&)::ZGJ[[^vvIyv MM
NN <<7))O			?	+	= 	=\$ \$r    