
    dfR                         d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlmZ d dlm	Z	 d dl
mZmZmZmZ d dlZd dlmZ d dlmZ ej(                  ej*                  fZ e j.                  d      Z G d	 d
      ZdedefdZy)    N)Path)socket)	FrameType)CallableIteratorListOptional)get_subprocess)Configzuvicorn.errorc                       e Zd Zdedeeee      gdf   dee   ddfdZde	dee
   ddfd	Zdd
ZddZdeeee         fdZdeee      fdZddZddZddZdeee      fdZy)
BaseReloadconfigtargetNsocketsreturnc                     || _         || _        || _        t        j                         | _        t        j                         | _        d| _	        d | _
        y )NF)r   r   r   	threadingEventshould_exitosgetpidpidis_restartingreloader_name)selfr   r   r   s       W/home/api-vastappli/venv/lib/python3.12/site-packages/uvicorn/supervisors/basereload.py__init__zBaseReload.__init__   sE     $??,99;",0    sigframec                     t         j                  dk(  r| j                  rd| _        y| j                  j	                          y)zN
        A signal handler that is registered with the parent process.
        win32FN)sysplatformr   r   set)r   r   r    s      r   signal_handlerzBaseReload.signal_handler'   s2     <<7"t'9'9!&D  "r   c                     | j                          | D ]S  }|st        j                  d| j                  dj	                  t        t        |                   | j                          U | j                          y )Nz'%s detected changes in %s. Reloading...z, )	startuploggerwarningr   joinmap_display_pathrestartshutdown)r   changess     r   runzBaseReload.run0   s^     	G=&&IIc-9:
 	 	r   c                 v    | j                   j                  | j                  j                        r
t	               y N)r   waitr   reload_delayStopIterationr   s    r   pausezBaseReload.pause=   s-      !9!9:/! ;r   c                     | S r3    r7   s    r   __iter__zBaseReload.__iter__A   s    r   c                 "    | j                         S r3   )should_restartr7   s    r   __next__zBaseReload.__next__D   s    ""$$r   c                 "   d| j                    d| j                   }dj                  t        j                  t        | j                         dd      t        j                  t        | j                        dd            }t        j                  |d|i       t        D ]"  }t        j                  || j                         $ t        | j                  | j                  | j                  	      | _        | j                  j!                          y )
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   messagerD   r   s       r   r(   zBaseReload.startupG   s    .txxjASAS@TU@GGKKDHH&t<KKD../FF
 	GO]#CD" 	4CMM#t223	4 &;;t{{DLL
 	r   c                    t         j                  dk(  rXd| _        | j                  j                  J t        j                  | j                  j                  t        j                         n| j                  j                          | j                  j                          t        | j                  | j                  | j                        | _        | j                  j                          y )Nr"   TrG   )r#   r$   r   rO   r   r   killrN   CTRL_C_EVENT	terminater+   r
   r   r   r   rP   r7   s    r   r.   zBaseReload.restartW   s    <<7"!%D<<##//GGDLL$$f&9&9:LL""$%;;t{{DLL
 	r   c                    t         j                  dk(  r| j                  j                          n| j                  j                          | j                  j                          | j                  D ]  }|j                           dj                  t        | j                              }dj                  t        j                  t        | j                        dd            }t        j                  |d|i       y )Nr"   zStopping reloader process [{}]r@   TrA   rD   rE   )r#   r$   r   r%   rO   rU   r+   r   closerH   rK   r   rI   rJ   r)   rL   )r   sockrQ   rD   s       r   r/   zBaseReload.shutdowne   s    <<7"  "LL""$LL 	DJJL	 399#dhh-H8??KKDHH&t<
 	GO]#CDr   c                     t        d      )Nz2Reload strategies should override should_restart())NotImplementedErrorr7   s    r   r=   zBaseReload.should_restartu   s    !"VWWr   )r   N)__name__
__module____qualname__r   r   r	   r   r   r   intr   r&   r1   r8   r   r   r;   r>   r(   r.   r/   r=   r:   r   r   r   r      s    11 (4<014781 f	1
 
1## #hy.A #d #"(8DJ#78 %(4:. % E Xd 4 Xr   r   pathr   c                 |    	 d| j                  t        j                                dS # t        $ r	 d|  dcY S w xY w)N')relative_tor   cwd
ValueError)r_   s    r   r-   r-   y   sE    4##DHHJ/022 4&{s   &) ;;)loggingr   rN   r#   r   pathlibr   r   typesr   typingr   r   r   r	   rI   uvicorn._subprocessr
   uvicorn.configr   SIGINTSIGTERMrM   	getLoggerr)   r   rK   r-   r:   r   r   <module>rn      sy     	  
     5 5  . ! MM
NN
 
		?	+^X ^XB  r   