
    9Cgn                        d dl mZ d dlZd dlZd dlmZ d dlmZ d dlmZm	Z	 d dl
mZ d dlmZ d dlmZ erd dlZej        e         Z ej        d	          Z G d
 de          Z G d de          ZdS )    )annotationsNPath)socket)TYPE_CHECKINGCallable)DefaultWatcher)Config)
BaseReloadzuvicorn.errorc                  0     e Zd Zd fdZdd
ZddZ xZS )CustomWatcher	root_pathr   configr
   c                b   dg}fd|D             | _         | j                             j                   t          t	          | j                             | _         g d}fd|D             | _        | j                            j                   t          t	          | j                            | _        i | _        i | _        t	          j	                  | _
        t	          j                  | _        || _        t                                          t!          |                     d S )Nz*.pyc                &    g | ]}|j         v|S  )reload_excludes.0defaultr   s     T/var/www/api/venv/lib/python3.11/site-packages/uvicorn/supervisors/watchgodreload.py
<listcomp>z*CustomWatcher.__init__.<locals>.<listcomp>   '    jjjWGSYSiDiDiDiDiDi    )z.*z.py[cod]z.sw.*z~*c                &    g | ]}|j         v|S r   )reload_includesr   s     r   r   z*CustomWatcher.__init__.<locals>.<listcomp>   r   r   )includesextendr   listsetexcludesr   watched_dirswatched_filesreload_dirsdirs_includesreload_dirs_excludesdirs_excludesresolved_rootsuper__init__str)selfr   r   default_includesdefault_excludes	__class__s     `  r   r*   zCustomWatcher.__init__   s   "8jjjj0@jjjV3444S//00<<<jjjj0@jjjV3444S//00-/.0 !344 !<==&Y(((((r   entryDirEntryreturnboolc                D   | j                             |j                  }||S t          |          }|j        t          j                    k    r+t          j                    | j        vrd| j         |j        <   dS | j        D ]}t          |          	                    |          rd| j         |j        <    dS |
                    |          rD| j        D ]*}|
                    |          rd| j         |j        <     dS +d| j         |j        <    dS d| j         |j        <   dS )NFT)r#   getpathr   parentcwdr%   r   r+   endswithmatchr!   )r,   r0   cached_result
entry_pathinclude_patternexclude_patterns         r   should_watch_filezCustomWatcher.should_watch_file)   s>   *..uz::$  %[[
 

**txzzAS/S/S-2Duz*5#} 
	 
	O:''88 15"5:.tt00 '+} % %O!''88 %9>*5:6$uuu% 26"5:.tt */5:&ur   c           	        | j                             |j                  }||S t          |          }|| j        v rd| j         |j        <   dS | j        D ]}|                    |          rd}|| j        v rd}| j        D ]}||j        v rd}|rFt          
                    d|                    | j                  t          | j                             d| j         |j        <   | j                            |            dS || j        v rd| j         |j        <   dS | j        D ]}||j        v rd| j         |j        <    dS | j        D ]}|                    |          rt                              dt          |                    | j                            t          | j                             | j                            |           d| j         |j        <    dS d| j         |j        <   dS )NFTzPWatchGodReload detected a new excluded dir '%s' in '%s'; Adding to exclude list.zLWatchGodReload detected a new reload dir '%s' in '%s'; Adding to watch list.)r"   r5   r6   r   r'   r!   r:   r%   parentsloggerdebugrelative_tor(   r+   addr   info)r,   r0   r;   r<   r>   
is_watched	directoryr=   s           r   should_watch_dirzCustomWatcher.should_watch_dirB   sD   )--ej99$  %[[
+++,1Dej)5#} 	 	O00 "
!333!%J!%!3 * *I J$666%)
 LLm"..t/ABBD.//  
 16!%*-"&&z222uu#& +++,0Dej)4+ 	 	IJ...04!%*-tt /  $} 		 		O00 e
..t/ABBCC*++  
 "&&z22204!%*-tt ).%*%ur   )r   r   r   r
   )r0   r1   r2   r3   )__name__
__module____qualname__r*   r?   rI   __classcell__r/   s   @r   r   r      se        ) ) ) ) ) )$   24 4 4 4 4 4 4 4r   r   c                  (     e Zd Zd fd	ZddZ xZS )WatchGodReloadr   r
   target%Callable[[list[socket] | None], None]socketslist[socket]r2   Nonec                   t          j        dt                     t                                          |||           d| _        g | _        g }|j        D ]1}t          j	                    |j
        vr|                    |           2t          j	                    |vr&|                    t          j	                               |D ]A}| j                            t          |                                | j                             Bd S )NzU"watchgod" is deprecated, you should switch to watchfiles (`pip install watchfiles`).WatchGod)warningswarnDeprecationWarningr)   r*   reloader_namewatchersr$   r   r8   rA   appendr   resolver   )r,   r   rQ   rS   r$   rH   wr/   s          r   r*   zWatchGodReload.__init__z   s    	f	
 	
 	
 	111'+ 	. 	.Ixzz!222""9---8::[((txzz*** 	J 	JAM  qyy{{DK!H!HIIII	J 	Jr   list[Path] | Nonec                    |                                   | j        D ]C}|                                }|t                      k    rt	          d |D                       c S Dd S )Nc                8    h | ]}t          |d                    S )   r   )r   cs     r   	<setcomp>z0WatchGodReload.should_restart.<locals>.<setcomp>   s"    888AT!A$ZZ888r   )pauser\   checkr    r   )r,   watcherchanges      r   should_restartzWatchGodReload.should_restart   si    

} 	: 	:G]]__F8888899999  tr   )r   r
   rQ   rR   rS   rT   r2   rU   )r2   r`   )rJ   rK   rL   r*   rj   rM   rN   s   @r   rP   rP   y   sW        J J J J J J,       r   rP   )
__future__r   loggingrX   pathlibr   r   typingr   r   watchgodr	   uvicorn.configr
   uvicorn.supervisors.basereloadr   osr1   r+   	getLoggerrB   r   rP   r   r   r   <module>rt      s1   " " " " " "               * * * * * * * * # # # # # # ! ! ! ! ! ! 5 5 5 5 5 5  III{3H		?	+	+` ` ` ` `N ` ` `F    Z     r   