
     O=d                         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dS )    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dS )
BaseReloadconfigtargetNsocketsreturnc                     || _         || _        || _        t          j                    | _        t          j                    | _        d | _	        d S N)
r   r   r   	threadingEventshould_exitosgetpidpidreloader_name)selfr   r   r   s       HD:\Sites\api_v1\venv\Lib\site-packages\uvicorn/supervisors/basereload.py__init__zBaseReload.__init__   sD     $?,,9;;,0    sigframec                 8    | j                                          dS )zN
        A signal handler that is registered with the parent process.
        N)r   set)r   r   r    s      r   signal_handlerzBaseReload.signal_handler%   s     	r   c                    |                                   | D ]_}|r[t                              d| j        d                    t          t          |                               |                                  `|                                  d S )Nz'%s detected changes in %s. Reloading...z, )	startuploggerwarningr   joinmap_display_pathrestartshutdown)r   changess     r   runzBaseReload.run+   s     	 	G =&IIc-99::  
 r   c                 j    | j                             | j        j                  rt	                      d S r   )r   waitr   reload_delayStopIterationr   s    r   pausezBaseReload.pause8   s4      !9:: 	"//!	" 	"r   c                     | S r    r3   s    r   __iter__zBaseReload.__iter__<   s    r   c                 *    |                                  S r   )should_restartr3   s    r   __next__zBaseReload.__next__?   s    ""$$$r   c                    d| j          d| j         }d                    t          j        t          | j                   dd          t          j        t          | j                  dd                    }t                              |d|i           t          D ]}t          j	        || j
                   t          | j        | j        | j        	          | _        | j                                         d S )
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   messager@   r   s       r   r%   zBaseReload.startupB   s    UtxUUASUU@GGKDH&t<<<KD.//FFFF
 
 	GO]#CDDD" 	4 	4CM#t23333%;t{DL
 
 
 	r   c                     | j                                          | j                                          t          | j        | j        | j                  | _         | j                                          d S )NrC   )rK   	terminater(   r
   r   r   r   rL   r3   s    r   r+   zBaseReload.restartR   si       %;t{DL
 
 
 	r   c                    | j                                          | j                                          | j        D ]}|                                 d                    t          | j                            }d                    t          j	        t          | j                  dd                    }t                              |d|i           d S )NzStopping reloader process [{}]r<   Tr=   r@   rA   )rK   rO   r(   r   closerD   rG   r   rE   rF   r&   rH   )r   sockrM   r@   s       r   r,   zBaseReload.shutdown\   s       L 	 	DJJLLLL299#dh--HH8??KDH&t<<<
 
 	GO]#CDDDDDr   c                      t          d          )Nz2Reload strategies should override should_restart())NotImplementedErrorr3   s    r   r9   zBaseReload.should_restarti   s    !"VWWWr   )r   N)__name__
__module____qualname__r   r   r	   r   r   r   intr   r#   r.   r4   r   r   r7   r:   r%   r+   r,   r9   r6   r   r   r   r      sv       11 (4<014781 f	1
 
1 1 1 1# hy.A d       " " " "(8DJ#78    %(4:. % % % %       E E E EXd 4 X X X X X Xr   r   pathr   c                     	 d|                      t          j                               dS # t          $ r	 d|  dcY S w xY w)N')relative_tor   cwd
ValueError)rY   s    r   r*   r*   m   s[    24##DHJJ//2222   4{{{s   ), ??)loggingr   rJ   r   pathlibr   r   typesr   typingr   r   r   r	   rE   uvicorn._subprocessr
   uvicorn.configr   SIGINTSIGTERMrI   	getLoggerr&   r   rG   r*   r6   r   r   <module>rh      s?    				                        5 5 5 5 5 5 5 5 5 5 5 5  . . . . . . ! ! ! ! ! ! M
N
 
	?	+	+SX SX SX SX SX SX SX SXl       r   