
    &e                     "   d dl Z d dlZd dlZd dlZd dlmZmZmZmZm	Z	 d dl
mZmZ d dlmZ d dlmZ d dlmZ d dlmZmZ  ee          Z e j        dd	d
g          Zda G d d          Zdej        de	e         fdZdee         defdZ dS )    N)CallableDictListOptionalSet)config	file_util)FolderBlackList)
get_logger)	get_pages)NoOpPathWatcherget_default_path_watcher_classWatchedModulewatchermodule_namec                       e Zd ZdefdZddZdeegdf         ddfdZd Zd	 Z	d
 Z
d Zd Zd Zd Zdeeee         f         ddfdZdee         dee         fdZdS )LocalSourcesWatchermain_script_pathc                    t           j                            |          | _        t           j                            | j                  | _        g | _        d| _        t                      | _	        t          t          j        d                    | _        i | _        t                      | _        |                                  d S )NFzserver.folderWatchBlacklist)ospathabspath_main_script_pathdirname_script_folder_on_file_changed
_is_closedset_cached_sys_modulesr
   r   
get_option_folder_black_list_watched_modules_watched_pagesupdate_watched_pages)selfr   s     Glib/python3.11/site-packages/streamlit/watcher/local_sources_watcher.py__init__zLocalSourcesWatcher.__init__(   s    !#1A!B!B good.DEE=?-0UU  #2;<<#
 #
 ;=(+!!#####    returnNc                 P   | j         }t                      }t          | j                                                  D ]D}|                    |d                    |d         |vr|                     |d         d            E|D ]}||vr|                     |           || _         d S )Nscript_path)r   )r#   r   r   r   valuesadd_register_watcher_deregister_watcher)r%   old_watched_pagesnew_pages_paths	page_infoold_page_paths        r&   r$   z(LocalSourcesWatcher.update_watched_pages9   s     /$'EE"4#9::AACC 	 	I	- 8999'/@@@&&m, $ '   
 / 	8 	8MO33((777-r(   cbc                 :    | j                             |           d S N)r   append)r%   r4   s     r&   register_file_change_callbackz1LocalSourcesWatcher.register_file_change_callbackK   s    $$R(((((r(   c                    || j         vrt                              d|           d S | j                                         D ].}|j        %|j        t
          j        v rt
          j        |j        = /| j        D ]} ||           d S )Nz'Received event for non-watched file: %s)r"   LOGGERerrorr,   r   sysmodulesr   )r%   filepathwmr4   s       r&   on_file_changedz#LocalSourcesWatcher.on_file_changedN   s    4000LLBHMMMF '..00 	0 	0B~)bn.K.KK/' 	 	BBxLLLL	 	r(   c                     | j                                         D ]}|j                                         i | _         t	                      | _        d| _        d S )NT)r"   r,   r   closer   r#   r   )r%   r?   s     r&   rB   zLocalSourcesWatcher.closef   sV    '..00 	 	BJ "!eer(   c                     t           t                      a t           t          u rd S 	 t          t          || j                  |          }n# t
          $ r Y d S w xY w|| j        |<   d S )N)r   r   )PathWatcherr   r   r   r@   PermissionErrorr"   )r%   r>   r   r?   s       r&   r.   z%LocalSourcesWatcher._register_watcherm   s    8::K/))F	#Hd.BCC'  BB  	 	 	 FF	
 +-h'''s   $A 
AAc                     || j         vrd S || j        k    rd S | j         |         }|j                                         | j         |= d S r6   )r"   r   r   rB   )r%   r>   r?   s      r&   r/   z'LocalSourcesWatcher._deregister_watcher   sZ    4000Ft---F"8,

!(+++r(   c                     || j         vS r6   )r"   r%   r>   s     r&   _file_is_newz LocalSourcesWatcher._file_is_new   s    t444r(   c                     |                      |          o-t          j        || j                  pt          j        |          S r6   )rI   r	   file_is_in_folder_globr   file_in_pythonpathrH   s     r&   _file_should_be_watchedz+LocalSourcesWatcher._file_should_be_watched   sC      ** 
,Xt7JKK 6+H55	
r(   c                 6     j         rd S t          t          j                   j        k    rl fdt          t          j                                                  D             }t          t          j                   _                             |           d S d S )Nc                 \    i | ](\  }}|                     t          |                    )S  )_exclude_blacklisted_pathsget_module_paths).0namemoduler%   s      r&   
<dictcomp>z>LocalSourcesWatcher.update_watched_modules.<locals>.<dictcomp>   sF        D& d556Fv6N6NOO  r(   )r   r   r<   r=   r   dictitems_register_necessary_watchers)r%   modules_pathss   ` r&   update_watched_modulesz*LocalSourcesWatcher.update_watched_modules   s    ? 	Fs{t777   $($5$5$;$;$=$=  M (+3;'7'7D$--m<<<<< 87r(   module_pathsc                     |                                 D ]5\  }}|D ]-}|                     |          r|                     ||           .6d S r6   )rX   rM   r.   )r%   r\   rT   pathsr   s        r&   rY   z0LocalSourcesWatcher._register_necessary_watchers   sl    '--// 	7 	7KD% 7 7//55 7**46667	7 	7r(   r^   c                        fd|D             S )Nc                 H    h | ]}j                             |          |S rP   )r!   is_blacklisted)rS   pr%   s     r&   	<setcomp>zALocalSourcesWatcher._exclude_blacklisted_paths.<locals>.<setcomp>   s/    RRRa(?(N(Nq(Q(QRRRRr(   rP   )r%   r^   s   ` r&   rQ   z.LocalSourcesWatcher._exclude_blacklisted_paths   s    RRRR5RRRRr(   )r)   N)__name__
__module____qualname__strr'   r$   r   r8   r@   rB   r.   r/   rI   rM   r[   r   r   rY   rQ   rP   r(   r&   r   r   '   s;       $ $ $ $ $". . . .$)#0E )$ ) ) ) )  0  - - -(	, 	, 	,5 5 5
 
 

= 
= 
=7c3s8m9L 7QU 7 7 7 7SC SSX S S S S S Sr(   r   rU   r)   c                 &   d d d g}t                      }|D ]w}g }	  ||           }nG# t          $ r Y n;t          $ r/}t                              d| j         d|            Y d }~nd }~ww xY w|                    d |D                        x|S )Nc                     | j         gS r6   )__file__ms    r&   <lambda>z"get_module_paths.<locals>.<lambda>   s
    1:, r(   c                     | j         j        gS r6   )__spec__originrk   s    r&   rm   z"get_module_paths.<locals>.<lambda>   s    1:$% r(   c                 .    d | j         j        D             S )Nc                     g | ]}|S rP   rP   rS   rb   s     r&   
<listcomp>z6get_module_paths.<locals>.<lambda>.<locals>.<listcomp>   s    ///1///r(   )__path___pathrk   s    r&   rm   z"get_module_paths.<locals>.<lambda>   s    //aj./// r(   zExamining the path of z	 raised: c                     g | ]=}t          |          t          j                            t	          |                    >S rP   )_is_valid_pathr   r   r   rg   rs   s     r&   rt   z$get_module_paths.<locals>.<listcomp>   s:    SSSPQARARSRW__SVV$$SSSr(   )r   AttributeError	Exceptionr:   warningrd   update)rU   paths_extractors	all_pathsextract_pathspotential_pathses         r&   rR   rR      s     	 	&%
 	0/). I) 
 
	S+mF33OO 	 	 	D 	S 	S 	SNNQFOQQaQQRRRRRRRR	S 	SSoSSS	
 	
 	
 	
 s   *
A.	A.%A))A.r   c                     t          | t                    o=t          j                            |           pt          j                            |           S r6   )
isinstancerg   r   r   isfileisdir)r   s    r&   rx   rx      s8    dC  RbgnnT&:&:&QbgmmD>Q>QRr(   )!collectionsr   r<   typestypingr   r   r   r   r   	streamlitr   r	   streamlit.folder_black_listr
   streamlit.loggerr   streamlit.source_utilr   streamlit.watcher.path_watcherr   r   rd   r:   
namedtupler   rD   r   
ModuleTyperg   rR   boolrx   rP   r(   r&   <module>r      s       				 



  6 6 6 6 6 6 6 6 6 6 6 6 6 6 ' ' ' ' ' ' ' ' 7 7 7 7 7 7 ' ' ' ' ' ' + + + + + +       
 
H		&&M8RSS BS BS BS BS BS BS BS BSJ&U- &#c( & & & &RS# S4 S S S S S Sr(   