Ë
    úmxi2  ã                  óÐ   — U d Z ddlm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 dd
lmZ e	rddlmZ  ee«      Zded<   dZded<   dZded<    G d„ d«      Zy)z.A class that watches a given path via polling.é    )ÚannotationsN)ÚThreadPoolExecutor)ÚPath)ÚTYPE_CHECKINGÚFinal)ÚStreamlitMaxRetriesError)Ú
get_logger©Úrepr_)Úutil)ÚCallabler   Ú_LOGGERé   Ú_MAX_WORKERSgš™™™™™É?Ú_POLLING_PERIOD_SECSc                  óv   — e Zd ZdZ ee¬«      Zedd„«       Zdddœ	 	 	 	 	 	 	 	 	 dd„Z	dd„Z
dd	„Zdd
„Zdd„Zy)ÚPollingPathWatcherz*Watches a path on disk via a polling loop.)Úmax_workersc                 ó.   — t         j                  d«       y)z†Close top-level watcher object.

        This is a no-op, and exists for interface parity with
        EventBasedPathWatcher.
        zWatcher closedN)r   Údebug© ó    ú]/home/htdocs/ttos/venv/lib/python3.12/site-packages/streamlit/watcher/polling_path_watcher.pyÚ	close_allzPollingPathWatcher.close_all+   s   € ô 	�‰Ð&Õ'r   NF©Úglob_patternÚallow_nonexistentc               ót  — t        |«      | _        || _        || _        || _        d| _        t        j                  t        | j                  «      | j                  «      | _	        t        j                  t        | j                  «      | j                  | j                  ¬«      | _        | j                  «        y)zâConstructor.

        You do not need to retain a reference to a PollingPathWatcher to
        prevent it from being garbage collected. (The global _executor object
        retains references to all active instances.)
        Tr   N)r   Ú_pathÚ_on_changedÚ_glob_patternÚ_allow_nonexistentÚ_activer   Úpath_modification_timeÚstrÚ_modification_timeÚcalc_md5_with_blocking_retriesÚ_md5Ú	_schedule)ÚselfÚpathÚ
on_changedr   r   s        r   Ú__init__zPollingPathWatcher.__init__4   s‘   € ô ˜$“ZˆŒ
Ø%ˆÔà)ˆÔØ"3ˆÔàˆŒä"&×"=Ñ"=Ü�—
‘
‹O˜T×4Ñ4ó#
ˆÔô ×7Ñ7Ü�—
‘
‹OØ×+Ñ+Ø"×5Ñ5ô
ˆŒ	ð
 	�‰Õr   c                ó   — t        | «      S ©Nr
   ©r*   s    r   Ú__repr__zPollingPathWatcher.__repr__U   s   € Ü�T‹{Ðr   c                óP   ‡ — dˆ fd„}t         j                  j                  |«       y )Nc                 óX   •— t        j                  t        «       ‰ j                  «        y r/   )ÚtimeÚsleepr   Ú_check_if_path_changedr0   s   €r   Útaskz*PollingPathWatcher._schedule.<locals>.taskY   s   ø€ Ü�J‰JÔ+Ô,Ø×'Ñ'Õ)r   ©ÚreturnÚNone)r   Ú	_executorÚsubmit)r*   r7   s   ` r   r)   zPollingPathWatcher._scheduleX   s   ø€ õ	*ô 	×$Ñ$×+Ñ+¨DÕ1r   c                óÄ  — | j                   sy 	 t        j                  t        | j                  «      | j
                  «      }|dk7  r || j                  k  r| j                  «        y || _        t        j                  t        | j                  «      | j                  | j
                  ¬«      }|| j                  k(  r| j                  «        y 	 || _
        t        j                  d| j                  «       | j                  t        | j                  «      «       | j                  «        y # t        $ r,}t        j                  d| j                  |¬«       Y d }~y d }~ww xY w)Ng        r   z9Ignoring file change. Failed to calculate MD5 for path %s)Úexc_infozChange detected: %s)r#   r   r$   r%   r   r"   r&   r)   r'   r!   r(   r   r   r   r    )r*   Úmodification_timeÚmd5Úexs       r   r6   z)PollingPathWatcher._check_if_path_changed_   s   € Ø�|Š|àð	Ü $× ;Ñ ;Ü�D—J‘J“ ×!8Ñ!8ó!Ðð " SÒ(Ø%¨×)@Ñ)@Ò@à—‘Ô Øà&7ˆDÔ#ä×5Ñ5Ü�D—J‘J“Ø!×/Ñ/Ø"&×"9Ñ"9ôˆCð
 �d—i‘iÒØ—‘Ô Øð  ð ˆŒ	ä�‰Ð+¨T¯Z©ZÔ8Ø×Ñœ˜TŸZ™Z›Ô)à�‰Õøô (ò 	Ü�M‰MØKØ—
‘
Øð ô ô
 ûð	ús   �AD* Á'A%D* Ä*	EÄ3"EÅEc                ó   — d| _         y)zStop watching the file system.FN)r#   r0   s    r   ÚclosezPollingPathWatcher.closeŠ   s	   € àˆ�r   r8   )
r+   r%   r,   zCallable[[str], None]r   z
str | Noner   Úboolr9   r:   )r9   r%   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r;   Ústaticmethodr   r-   r1   r)   r6   rC   r   r   r   r   r   &   st   „ Ù4á"¨|Ô<€Iàò(ó ð(ð $(Ø"'ñàðð *ðð
 !ðð  ðð 
óóBó2ó)ôVr   r   )rH   Ú
__future__r   r4   Úconcurrent.futuresr   Úpathlibr   Útypingr   r   Ústreamlit.errorsr   Ústreamlit.loggerr	   Ústreamlit.utilr   Ústreamlit.watcherr   Úcollections.abcr   rE   r   Ú__annotations__r   r   r   r   r   r   ú<module>rT      s[   ðò 5å "ã Ý 1Ý ß 'å 5Ý 'Ý  Ý "áÝ(á˜HÓ%€ˆÓ %à€ˆeÓ Ø!Ð �eÓ !÷fò fr   