
    g                       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Jr  S SK	J
r
  S SKJr  S SKJr  S SKJr  S SKrS SKJr  S S	KJr  \R*                  \R,                  4r\R0                  " S
5      r " S S5      rSS jrg)    )annotationsN)Iterator)Path)socket)	FrameType)Callable)get_subprocess)Configzuvicorn.errorc                      \ rS rSr        SS jrSS jrSS jrSS jrSS jrSS jr	SS jr
SS	 jrSS
 jrSS jrSrg)
BaseReload   c                    Xl         X l        X0l        [        R                  " 5       U l        [        R                  " 5       U l        SU l	        S U l
        g )NF)configtargetsockets	threadingEventshould_exitosgetpidpidis_restartingreloader_name)selfr   r   r   s       W/home/matz/Project1/venv/lib/python3.13/site-packages/uvicorn/supervisors/basereload.py__init__BaseReload.__init__   s?     $??,99;")-    c                    [         R                  S:X  a  U R                  (       a  SU l        gU R                  R	                  5         g)z>
A signal handler that is registered with the parent process.
win32FN)sysplatformr   r   set)r   sigframes      r   signal_handlerBaseReload.signal_handler*   s2     <<7"t'9'9!&D  "r   c                   U R                  5         U  HZ  nU(       d  M  [        R                  SU R                  SR	                  [        [        U5      5      5        U R                  5         M\     U R                  5         g )Nz'%s detected changes in %s. Reloading...z, )	startuploggerwarningr   joinmap_display_pathrestartshutdown)r   changess     r   runBaseReload.run3   s[    Gw=&&IIc-9:
   	r   c                    U R                   R                  U R                  R                  5      (       a
  [	        5       eg N)r   waitr   reload_delayStopIterationr   s    r   pauseBaseReload.pause@   s0      !9!9::/! ;r   c                    U $ r5    r9   s    r   __iter__BaseReload.__iter__D   s    r   c                "    U R                  5       $ r5   )should_restartr9   s    r   __next__BaseReload.__next__G   s    ""$$r   c           	        SU R                    SU R                   3nSR                  [        R                  " [        U R                   5      SSS9[        R                  " [        U R                  5      SSS95      n[        R                  USU0S9  [         H#  n[        R                  " X0R                  5        M%     [        U R                  U R                  U R                  S	9U l        U R                  R!                  5         g )
NzStarted reloader process [z] using z&Started reloader process [{}] using {}cyanTfgboldcolor_messageextrar   r   r   )r   r   formatclickstylestrr*   infoHANDLED_SIGNALSsignalr&   r	   r   r   r   processstart)r   messagerI   r$   s       r   r)   BaseReload.startupJ   s    .txxjASAS@TU@GGKKDHH&t<KKD../FF
 	GO]#CD"CMM#223 # &T[[VZVbVbcr   c                   [         R                  S:X  aZ  SU l        U R                  R                  c   e[
        R                  " U R                  R                  [        R                  5        OU R                  R                  5         U R                  R                  5         [        U R                  U R                  U R                  S9U l        U R                  R                  5         g )Nr    TrL   )r!   r"   r   rT   r   r   killrS   CTRL_C_EVENT	terminater,   r	   r   r   r   rU   r9   s    r   r/   BaseReload.restartX   s    <<7"!%D<<##///GGDLL$$f&9&9:LL""$%T[[VZVbVbcr   c                   [         R                  S:X  a  U R                  R                  5         OU R                  R                  5         U R                  R                  5         U R                   H  nUR                  5         M     S[        U R                  5       S3nSR                  [        R                  " [        U R                  5      SSS95      n[        R                  USU0S	9  g )
Nr    zStopping reloader process []zStopping reloader process [{}]rE   TrF   rI   rJ   )r!   r"   r   r#   rT   r[   r,   r   closerP   r   rM   rN   rO   r*   rQ   )r   sockrV   rI   s       r   r0   BaseReload.shutdownd   s    <<7"  "LL""$LLDJJL ! 0DHHa@8??CPTPXPXM^dko@pqGO]#CDr   c                    [        S5      e)Nz2Reload strategies should override should_restart())NotImplementedErrorr9   s    r   rA   BaseReload.should_restartr   s    !"VWWr   )r   r   r   rT   r   r   r   r   N)r   r
   r   z%Callable[[list[socket] | None], None]r   zlist[socket]returnNone)r$   intr%   zFrameType | Nonere   rf   )re   rf   )re   zIterator[list[Path] | None])re   zlist[Path] | None)__name__
__module____qualname____firstlineno__r   r&   r2   r:   r>   rB   r)   r/   r0   rA   __static_attributes__r=   r   r   r   r      s\    .. 6. 	.
 
.#"%
EXr   r   c                     SU R                  [        R                  " 5       5       S3$ ! [         a	    SU  S3s $ f = f)N')relative_tor   cwd
ValueError)paths    r   r.   r.   v   sE    4##DHHJ/022 4&{s   '* ==)rr   r   re   rP   )
__future__r   loggingr   rS   r!   r   collections.abcr   pathlibr   r   typesr   typingr   rN   uvicorn._subprocessr	   uvicorn.configr
   SIGINTSIGTERMrR   	getLoggerr*   r   r.   r=   r   r   <module>r~      sl    "  	  
  $      . ! MM
NN
 
		?	+XX XXvr   