o
    CiT                     @  s   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mZ d dlZd dlmZ d dlmZ ejejfZed	ZG d
d dZdddZdS )    )annotationsN)Path)socket)	FrameType)CallableIterator)get_subprocess)Configzuvicorn.errorc                   @  sp   e Zd Zd$d	d
Zd%ddZd&ddZd&ddZd'ddZd(ddZd&ddZ	d&ddZ
d&dd Zd(d!d"Zd#S ))
BaseReloadconfigr	   target%Callable[[list[socket] | None], None]socketslist[socket]returnNonec                 C  s6   || _ || _|| _t | _t | _d| _	d | _
d S )NF)r   r   r   	threadingEventshould_exitosgetpidpidis_restartingreloader_name)selfr   r   r    r   v/var/www/html/fyndo/python/python_agents/rag_suite/venv/lib/python3.10/site-packages/uvicorn/supervisors/basereload.py__init__   s   


zBaseReload.__init__sigintframeFrameType | Nonec                 C  s(   t jdkr| jrd| _dS | j  dS )zN
        A signal handler that is registered with the parent process.
        win32FN)sysplatformr   r   set)r   r   r    r   r   r   signal_handler)   s   
zBaseReload.signal_handlerc              
   C  sF   |    | D ]}|rtd| jdtt| |   q|   d S )Nz'%s detected changes in %s. Reloading...z, )	startuploggerwarningr   joinmap_display_pathrestartshutdown)r   changesr   r   r   run2   s   zBaseReload.runc                 C  s   | j | jjrt d S N)r   waitr   reload_delayStopIterationr   r   r   r   pause?   s   zBaseReload.pauseIterator[list[Path] | None]c                 C  s   | S r1   r   r5   r   r   r   __iter__C   s   zBaseReload.__iter__list[Path] | Nonec                 C  s   |   S r1   )should_restartr5   r   r   r   __next__F      zBaseReload.__next__c                 C  s   d| j  d| j }dtjt| j dddtjt| jddd}tj|d|id tD ]	}t		|| j
 q-t| j| j| jd	| _| 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   messagerA   r   r   r   r   r'   I   s   zBaseReload.startupc                 C  sl   t jdkrd| _| jjd usJ t| jjtj n| j	  | j
  t| j| j| jd| _| j  d S )Nr"   TrD   )r#   r$   r   rL   r   r   killrK   CTRL_C_EVENT	terminater*   r   r   r   r   rM   r5   r   r   r   r-   Y   s   


zBaseReload.restartc                 C  s   t jdkr| j  n| j  | j  | jD ]}|  qd	t
| j}d	tjt
| jddd}tj|d|id d S )Nr"   zStopping reloader process [{}]r=   Tr>   rA   rB   )r#   r$   r   r%   rL   rQ   r*   r   closerE   rH   r   rF   rG   r(   rI   )r   sockrN   rA   r   r   r   r.   g   s   




zBaseReload.shutdownc                 C  s   t d)Nz2Reload strategies should override should_restart())NotImplementedErrorr5   r   r   r   r:   w   r<   zBaseReload.should_restartN)r   r	   r   r   r   r   r   r   )r   r   r    r!   r   r   )r   r   )r   r7   )r   r9   )__name__
__module____qualname__r   r&   r0   r6   r8   r;   r'   r-   r.   r:   r   r   r   r   r
      s    


	





r
   pathr   r   rH   c                 C  s8   zd|  t  dW S  ty   d|  d Y S w )N')relative_tor   cwd
ValueError)rX   r   r   r   r,   {   s
   r,   )rX   r   r   rH   )
__future__r   loggingr   rK   r#   r   pathlibr   r   typesr   typingr   r   rF   uvicorn._subprocessr   uvicorn.configr	   SIGINTSIGTERMrJ   	getLoggerr(   r
   r,   r   r   r   r   <module>   s&    
a