
    $g$                       d Z 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ZddlmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z% ddl&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/ ddl0m1Z1m2Z2m3Z3m4Z4 erdd	l
m5Z5 dd
l0m6Z6m7Z7  ej8        e9          Z:dZ; ej<        e;e=d           e:>                    e;            G d de	          Z? G d d          Z@ G d de4          ZA G d de3          ZBdS )u   :module: watchdog.observers.fsevents2
:synopsis: FSEvents based emitter implementation.
:author: thomas.amland@gmail.com (Thomas Amland)
:author: contact@tiger-222.fr (Mickaël Schoentgen)
:platforms: macOS
    )annotationsN)Thread)TYPE_CHECKING)CFRunLoopGetCurrentCFRunLoopRunCFRunLoopStopFSEventStreamCreateFSEventStreamInvalidateFSEventStreamRelease FSEventStreamScheduleWithRunLoopFSEventStreamStartFSEventStreamStopkCFAllocatorDefaultkCFRunLoopDefaultMode"kFSEventStreamCreateFlagFileEventskFSEventStreamCreateFlagNoDefer&kFSEventStreamEventFlagItemChangeOwner"kFSEventStreamEventFlagItemCreated(kFSEventStreamEventFlagItemFinderInfoMod'kFSEventStreamEventFlagItemInodeMetaMod kFSEventStreamEventFlagItemIsDir$kFSEventStreamEventFlagItemIsSymlink#kFSEventStreamEventFlagItemModified"kFSEventStreamEventFlagItemRemoved"kFSEventStreamEventFlagItemRenamed#kFSEventStreamEventFlagItemXattrModkFSEventStreamEventIdSinceNow)	DirCreatedEventDirDeletedEventDirModifiedEventDirMovedEventFileCreatedEventFileDeletedEventFileModifiedEventFileMovedEventFileSystemEvent)DEFAULT_EMITTER_TIMEOUTDEFAULT_OBSERVER_TIMEOUTBaseObserverEventEmitter)Callable)
EventQueueObservedWatchzSwatchdog.observers.fsevents2 is deprecated and will be removed in a future release.   )category
stacklevelc                  :    e Zd ZdZddZddZddZddZddZdS )FSEventsQueuezLow level FSEvents client.pathbytes | strreturnNonec           
        t          j        |            t          j                    | _        d | _        t          |t                    rt          j	        |          }t          j        d|          | _        d }d}t          t          | j        || j        gt           |t"          t$          z            | _        | j        d}t)          |          d S )NNFCg      ?z"FSEvents. Could not create stream.)r   __init__queueQueue_queue	_run_loop
isinstancebytesosfsdecodeunicodedata	normalize_pathr	   r   	_callbackr   r   r   _stream_refOSError)selfr3   contextlatencyerrors        \/var/www/html/netbox-4.1.3/venv/lib/python3.11/site-packages/watchdog/observers/fsevents2.pyr9   zFSEventsQueue.__init__K   s    =B[]]dE"" 	%;t$$D *5$77
.NZL)+.PP
 
 #8E%..  $#    c                0   t           j                                                                        }t	                      | _        t          | j        | j        t                     t          | j                  s9t          | j                   t          | j                   d}t          |          t                       t          | j                   t          | j                   t          | j                   ~| j                            d            d S )Nz!FSEvents. Could not start stream.)AppKitNSAutoreleasePoolallocinitr   r=   r   rF   r   r   r
   r   rG   r   r   r<   put)rH   poolrK   s      rL   runzFSEventsQueue.runc   s    '--//4466,..()94>K`aaa!$"233 	!#D$4555 !12227E%.. $*+++ 0111T-...rM   c                @    | j         t          | j                    d S d S N)r=   r   rH   s    rL   stopzFSEventsQueue.stopu   s(    >%$.))))) &%rM   
stream_refintclient_callback_infor+   
num_eventsevent_pathslist[bytes]event_flags	list[int]	event_idsc                    d t          |||          D             }t                              d|           |D ]}t                              |           | j                            |           d S )Nc                8    g | ]\  }}}t          |||          S  )NativeEvent).0r3   flags_ids       rL   
<listcomp>z+FSEventsQueue._callback.<locals>.<listcomp>   s+    qqq4DD%+dE3//qqqrM   z!FSEvents callback. Got %d events:)ziploggerdebugr<   rS   )	rH   rZ   r\   r]   r^   r`   rb   eventses	            rL   rE   zFSEventsQueue._callbacky   su     rqKYdfoHpHpqqq8*EEE 	 	ALLOOOOrM   list[NativeEvent] | Nonec                `    |                                  r| j                                        ndS )zfReturns a list or one or more events, or None if there are no more
        events to be read.
        N)is_aliver<   getrX   s    rL   read_eventszFSEventsQueue.read_events   s(     %)MMOO=t{   =rM   N)r3   r4   r5   r6   r5   r6   )rZ   r[   r\   r+   r]   r[   r^   r_   r`   ra   rb   ra   r5   r6   )r5   rp   )	__name__
__module____qualname____doc__r9   rU   rY   rE   rt   re   rM   rL   r2   r2   H   s~        $$! ! ! !0   $* * * *       > > > > > >rM   r2   c                  6    e Zd ZddZedd
            ZddZdS )rf   r3   r?   rh   r[   event_idr5   r6   c                `   || _         || _        || _        t          |t          z            | _        t          |t          z            | _        t          |t          z            | _	        t          |t          z            | _        t          |t          z            | _        t          |t          z            | _        t          |t           z            | _        t          |t$          z            | _        t          |t(          z            | _        t          |t,          z            | _        d S rW   )r3   rh   r{   boolr   
is_createdr   
is_removedr   
is_renamedr   is_modifiedr   is_change_ownerr   is_inode_meta_modr   is_finder_info_modr   is_xattr_modr   
is_symlinkr   is_directory)rH   r3   rh   r{   s       rL   r9   zNativeEvent.__init__   s    	
 u'IIJJu'IIJJu'IIJJ(K KLL#E,R$RSS!%e.U&U!V!V"&u/W'W"X"X )L!LMMu'KKLL )I!IJJrM   strc                r    | j         rdS | j        rdS | j        rdS | j        rdS | j        rdS | j        rdS dS )NCreatedRemovedRenamedModifiedInodeMetaModXattrModUnknown)r~   r   r   r   r   r   rX   s    rL   _event_typezNativeEvent._event_type   sd    ? 	9? 	9? 	9 	:! 	"!> 	:yrM   c                    dt          |           j         d| j        d| j         d| j         dt          | j                   d| j         dS )N<z: path=z, type=z	, is_dir=z, flags=z, id=>)typerv   r3   r   r   hexrh   r{   rX   s    rL   __repr__zNativeEvent.__repr__   s    YT

# Y YDI Y Y@P Y Y(Y Y25dj//Y YHLY Y Y	
rM   N)r3   r?   rh   r[   r{   r[   r5   r6   )r5   r   )rv   rw   rx   r9   propertyr   r   re   rM   rL   rf   rf      s`        K K K K    X
 
 
 
 
 
rM   rf   c                  <     e Zd ZdZeddd fdZddZddZ xZS )FSEventsEmitterzBFSEvents based event emitter. Handles conversion of native events.Ntimeoutevent_filterevent_queuer,   watchr-   r   floatr   "list[type[FileSystemEvent]] | Nonec                   t                                          ||||           t          |j                  | _        | j                                         d S )Nr   )superr9   r2   r3   	_fseventsstart)rH   r   r   r   r   	__class__s        rL   r9   zFSEventsEmitter.__init__   sQ     	eW<XXX&uz22rM   r5   r6   c                8    | j                                          d S rW   )r   rY   rX   s    rL   on_thread_stopzFSEventsEmitter.on_thread_stop   s    rM   c           	        | j                                         }|d S d}|t          |          k     r||         }|j        rB|dz   t          |          k     r||dz            j        r||dz            j        |j        dz   k    r|j        rt          nt          }|                      ||j	        ||dz            j	                             |                     t          t          j	                            |j	                                       |                     t          t          j	                            ||dz            j	                                       |dz  }nvt          j	                            |j	                  r~|j        rt          nt          }|                      ||j	                             |                     t          t          j	                            |j	                                       n|j        rt           nt"          }|                      ||j	                             |                     t          t          j	                            |j	                                       nV|j        s|j        s|j        r:|j        rt          nt*          }|                      ||j	                             n|j        r}|j        rt          nt          }|                      ||j	                             |                     t          t          j	                            |j	                                       n|j        r||j        rt           nt"          }|                      ||j	                             |                     t          t          j	                            |j	                                       |dz  }|t          |          k     d S d S )Nr   r.   )r   rt   lenr   r{   r   r!   r%   queue_eventr3   r    r@   dirnameexistsr   r"   r   r#   r   r   r   r$   r~   r   )rH   r   rn   ieventclss         rL   queue_eventszFSEventsEmitter.queue_events   sh   ++-->F#f++oo1IE  #P q53v;;&&6!a%=+C&qSTuH^bgbpstbtHtHt+0+=Q-->C$$SSVAE]5G%H%HIII$$%5bgooej6Q6Q%R%RSSS$$%5bgoofQQRUmFX6Y6Y%Z%Z[[[FAAW^^EJ// T-2-?U//EUC$$SS__555$$%5bgooej6Q6Q%R%RSSSS-2-?U//EUC$$SS__555$$%5bgooej6Q6Q%R%RSSSS " Pe&= PAS P*/*<S&&BS  UZ1111! P).);QooAQ  UZ111  !1"'//%*2M2M!N!NOOOO! P).);QooAQ  UZ111  !1"'//%*2M2M!N!NOOOFAW #f++oooooorM   )r   r,   r   r-   r   r   r   r   ru   r   r   r5   r6   )	rv   rw   rx   ry   r'   r9   r   r   __classcell__r   s   @rL   r   r      s}        LL 1;?
 
 
 
 
 
 
 
   0 0 0 0 0 0 0 0rM   r   c                  &     e Zd Zedd fdZ xZS )FSEventsObserver2r   r   r   r5   r6   c               X    t                                          t          |           d S )Nr   )r   r9   r   )rH   r   r   s     rL   r9   zFSEventsObserver2.__init__   s&    ':::::rM   r   )rv   rw   rx   r(   r9   r   r   s   @rL   r   r      sJ        +C ; ; ; ; ; ; ; ; ; ; ; ;rM   r   )Cry   
__future__r   loggingr@   r:   rB   warnings	threadingr   typingr   rO   FSEventsr   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   watchdog.eventsr   r   r    r!   r"   r#   r$   r%   r&   watchdog.observers.apir'   r(   r)   r*   r+   r,   r-   	getLoggerrv   rl   messagewarnDeprecationWarningwarningr2   rf   r   r   re   rM   rL   <module>r      sT    # " " " " "  				                                                                            6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 q p p p p p p p p p p p A@@@@@@@@		8	$	$
_ g 2q A A A A w   D> D> D> D> D>F D> D> D>N$
 $
 $
 $
 $
 $
 $
 $
NB B B B Bl B B BJ; ; ; ; ; ; ; ; ; ;rM   