
    g!                        d dl m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mZ  ej                  d	      Z G d
 de      Zy)    )annotationsN)Iterator)Path)socket)Callable)Config)
BaseReloadzuvicorn.errorc                  L     e Zd Z	 	 	 	 	 	 	 	 d fdZddZd fdZddZ xZS )	
StatReloadc                    t         |   |||       d| _        i | _        |j                  s|j
                  rt        j                  d       y y )Nr   zT--reload-include and --reload-exclude have no effect unless watchfiles is installed.)super__init__reloader_namemtimesreload_excludesreload_includesloggerwarning)selfconfigtargetsockets	__class__s       S/var/www/openai/venv/lib/python3.12/site-packages/uvicorn/supervisors/statreload.pyr   zStatReload.__init__   sH     	1))+!!V%;%;NNtu &<    c                   | j                          | j                         D ]T  }	 |j                         j                  }| j
                  j                  |      }||| j
                  |<   K||kD  sQ|gc S  y # t        $ r Y cw xY wN)pauseiter_py_filesstatst_mtimeOSErrorr   get)r   filemtimeold_times       r   should_restartzStatReload.should_restart   s    

&&(D		,, {{t,H$)D!!v )   s   A99	BBc                .    i | _         t        | 	         S r   )r   r   restart)r   r   s    r   r)   zStatReload.restart.   s    w  r   c              #     K   | j                   j                  D ]3  }t        |j                  d            D ]  }|j	                           5 y w)Nz*.py)r   reload_dirslistrglobresolve)r   
reload_dirpaths      r   r   zStatReload.iter_py_files2   s@     ++11JZ--f56lln$ 7 2s   AA)r   r   r   z%Callable[[list[socket] | None], None]r   zlist[socket]returnNone)r1   zlist[Path] | None)r1   r2   )r1   zIterator[Path])__name__
__module____qualname__r   r'   r)   r   __classcell__)r   s   @r   r   r      sB    vv 6v 	v
 
v"!%r   r   )
__future__r   loggingcollections.abcr   pathlibr   r   typingr   uvicorn.configr   uvicorn.supervisors.basereloadr	   	getLoggerr   r    r   r   <module>r@      s;    "  $    ! 5			?	+&% &%r   