o
    Xh                     @  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 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d
ZG dd dZdddZdS )    )annotationsN)Iterator)Path)socket)	FrameType)Callable)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   j/var/www/www-root/data/www/bot.pdev.uz/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   run3   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__D   s   zBaseReload.__iter__list[Path] | Nonec                 C  s   |   S r1   )should_restartr5   r   r   r   __next__G      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'   J   s   zBaseReload.startupc                 C  s   t jdkr%d| _| jjd usJ t| jjtj t j	
d t j	  n| j  | j  t| j| j| jd| _| j  d S )Nr"   T rD   )r#   r$   r   rL   r   r   killrK   CTRL_C_EVENTstdoutwriteflush	terminater*   r   r   r   r   rM   r5   r   r   r   r-   X   s   


zBaseReload.restartc                 C  s   t jdkr| j  n| j  | j  | jD ]}|  qdt	| j
 d}dtjt	| j
ddd}tj|d|id	 d S )
Nr"   zStopping reloader process []zStopping reloader process [{}]r=   Tr>   rA   rB   )r#   r$   r   r%   rL   rU   r*   r   closerH   r   rE   rF   rG   r(   rI   )r   sockrN   rA   r   r   r   r.   h   s   




zBaseReload.shutdownc                 C  s   t d)Nz2Reload strategies should override should_restart())NotImplementedErrorr5   r   r   r   r:   v   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)r]   r   r   r   r,   z   s
   r,   )r]   r   r   rH   )
__future__r   loggingr   rK   r#   r   collections.abcr   pathlibr   r   typesr   typingr   rF   uvicorn._subprocessr   uvicorn.configr	   SIGINTSIGTERMrJ   	getLoggerr(   r
   r,   r   r   r   r   <module>   s(    
_