
    g                       d dl mZ 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 d dlmZ d dlZd dlmZ d d	lmZ ej*                  ej,                  fZ ej0                  d
      Z G d d      ZddZy)    )annotationsN)Iterator)Path)socket)	FrameType)Callable)get_subprocess)Configzuvicorn.errorc                  l    e Zd Z	 	 	 	 	 	 	 	 ddZddZddZddZddZddZddZ	ddZ
dd	Zdd
Zy)
BaseReloadc                    || _         || _        || _        t        j                         | _        t        j                         | _        d| _	        d | _
        y )NF)configtargetsockets	threadingEventshould_exitosgetpidpidis_restartingreloader_name)selfr   r   r   s       S/var/www/openai/venv/lib/python3.12/site-packages/uvicorn/supervisors/basereload.py__init__zBaseReload.__init__   sE     $??,99;")-    c                    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   sigframes      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.run3   sY    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 r1    r5   s    r   __iter__zBaseReload.__iter__D   s    r   c                "    | j                         S r1   )should_restartr5   s    r   __next__zBaseReload.__next__G   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   messagerB   r"   s       r   r&   zBaseReload.startupJ   s    .txxjASAS@TU@GGKKDHH&t<KKD../FF
 	GO]#CD"CMM#t223 # &T[[VZVbVbc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   TrE   )r   r    r   rM   r   r   killrL   CTRL_C_EVENT	terminater)   r	   r   r   r   rN   r5   s    r   r,   zBaseReload.restartX   s    <<7"!%D<<##///GGDLL$$f&9&9:LL""$%T[[VZVbVbcr   c                   t         j                  dk(  r| j                  j                          n| j                  j                          | j                  j                          | j                  D ]  }|j                           dt        | j                         d}dj                  t        j                  t        | j                        dd            }t        j                  |d|i	       y )
Nr   zStopping reloader process []zStopping reloader process [{}]r>   Tr?   rB   rC   )r   r    r   r!   rM   rS   r)   r   closerI   r   rF   rG   rH   r'   rJ   )r   sockrO   rB   s       r   r-   zBaseReload.shutdownd   s    <<7"  "LL""$LLDJJL ! 0DHHa@8??CPTPXPXM^dko@pqGO]#CDr   c                    t        d      )Nz2Reload strategies should override should_restart())NotImplementedErrorr5   s    r   r;   zBaseReload.should_restartr   s    !"VWWr   N)r   r
   r   z%Callable[[list[socket] | None], None]r   zlist[socket]returnNone)r"   intr#   zFrameType | NonerZ   r[   )rZ   r[   )rZ   zIterator[list[Path] | None])rZ   zlist[Path] | None)__name__
__module____qualname__r   r$   r/   r6   r9   r<   r&   r,   r-   r;   r8   r   r   r   r      s\    .. 6. 	.
 
.#"%
EXr   r   c                |    	 d| j                  t        j                                dS # t        $ r	 d|  dcY S w xY w)N')relative_tor   cwd
ValueError)paths    r   r+   r+   v   sE    4##DHHJ/022 4&{s   &) ;;)re   r   rZ   rI   )
__future__r   loggingr   rL   r   r   collections.abcr   pathlibr   r   typesr   typingr   rG   uvicorn._subprocessr	   uvicorn.configr
   SIGINTSIGTERMrK   	getLoggerr'   r   r+   r8   r   r   <module>rq      sn    "  	  
  $      . ! MM
NN
 
		?	+XX XXvr   