
    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jp                  e9      Z:dZ; ejx                  e;e=d       e:j}                  e;        G d de	      Z? G d d      Z@ G d de4      ZA G d de3      ZBy)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                  T    e Zd ZdZddZd	dZd	dZ	 	 	 	 	 	 	 	 	 	 	 	 	 	 d
dZddZy)FSEventsQueuezLow level FSEvents client.c           
        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)        |      y )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)selfpathcontextlatencyerrors        Q/var/www/openai/venv/lib/python3.12/site-packages/watchdog/observers/fsevents2.pyr5   zFSEventsQueue.__init__K   s    =B[[]dE";;t$D **5$7
.NNZZL)+.PP
 #8E%.  $    c                &   t         j                  j                         j                         }t	               | _        t        | j                  | j
                  t               t        | j                        s7t        | j                         t        | j                         d}t        |      t                t        | j                         t        | j                         t        | j                         ~| j                  j!                  d        y )Nz!FSEvents. Could not start stream.)AppKitNSAutoreleasePoolallocinitr   r9   r   rB   r   r   r
   r   rC   r   r   r8   put)rD   poolrH   s      rI   runzFSEventsQueue.runc   s    ''--/446,.()9)94>>K`a!$"2"23#D$4$45 !1!127E%. $**+ 0 01T--.rJ   c                H    | j                   t        | j                          y y N)r9   r   rD   s    rI   stopzFSEventsQueue.stopu   s    >>%$..) &rJ   c           
        t        |||      D 	cg c]  \  }}}	t        |||	       }
}}}	t        j                  d|       |
D ]  }t        j                  |        | j                  j                  |
       y c c}	}}w )Nz!FSEvents callback. Got %d events:)zipNativeEventloggerdebugr8   rP   )rD   
stream_refclient_callback_info
num_eventsevent_pathsevent_flags	event_idsrE   flags_ideventses               rI   rA   zFSEventsQueue._callbacky   sq     ILKYdfoHpqHp4DD%+dE3/Hpq8*EALLO 	 rs   A<c                Z    | j                         r| j                  j                         S dS )zfReturns a list or one or more events, or None if there are no more
        events to be read.
        N)is_aliver8   getrU   s    rI   read_eventszFSEventsQueue.read_events   s"     %)MMOt{{ ==rJ   N)rE   zbytes | strreturnNonerj   rk   )r\   intr]   r+   r^   rm   r_   zlist[bytes]r`   	list[int]ra   rn   rj   rk   )rj   zlist[NativeEvent] | None)	__name__
__module____qualname____doc__r5   rR   rV   rA   ri    rJ   rI   r2   r2   H   sb    $!0$*   '  	 
 !      
 >rJ   r2   c                  .    e Zd ZddZedd       ZddZy)rY   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        | _        y rT   )rE   rb   event_id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)rD   rE   rb   rv   s       rI   r5   zNativeEvent.__init__   s    	
 u'IIJu'IIJu'IIJ(K KL#E,R$RS!%e.U&U!V"&u/W'W"X )L!LMu'KKL )I!IJrJ   c                    | j                   ry| j                  ry| j                  ry| j                  ry| j                  ry| j
                  ryy)NCreatedRemovedRenamedModifiedInodeMetaModXattrModUnknown)rx   ry   rz   r{   r}   r   rU   s    rI   _event_typezNativeEvent._event_type   sG    ??????!!!rJ   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=>)typero   rE   r   r   hexrb   rv   rU   s    rI   __repr__zNativeEvent.__repr__   sd    T
##$GDII=@P@P?Q R(()#djj/1B%VWY	
rJ   N)rE   r;   rb   rm   rv   rm   rj   rk   )rj   str)ro   rp   rq   r5   propertyr   r   rs   rJ   rI   rY   rY      s!    K  
rJ   rY   c                  J     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_filterc                   t         |   ||||       t        |j                        | _        | j                  j                          y )Nr   )superr5   r2   rE   	_fseventsstart)rD   event_queuewatchr   r   	__class__s        rI   r5   zFSEventsEmitter.__init__   s;     	eW<X&uzz2rJ   c                8    | j                   j                          y rT   )r   rV   rU   s    rI   on_thread_stopzFSEventsEmitter.on_thread_stop   s    rJ   c           	        | j                   j                         }|y d}|t        |      k  r||   }|j                  r@|dz   t        |      k  r||dz      j                  r||dz      j                  |j                  dz   k(  r|j
                  rt        nt        }| j                   ||j                  ||dz      j                               | j                  t        t        j                  j                  |j                                     | j                  t        t        j                  j                  ||dz      j                                     |dz  }nt        j                  j                  |j                        r||j
                  rt        nt        }| j                   ||j                               | j                  t        t        j                  j                  |j                                     n|j
                  rt         nt"        }| j                   ||j                               | j                  t        t        j                  j                  |j                                     nl|j$                  s|j&                  s|j(                  r;|j
                  rt        nt*        }| j                   ||j                               n|j,                  r{|j
                  rt        nt        }| j                   ||j                               | j                  t        t        j                  j                  |j                                     n|j.                  rz|j
                  rt         nt"        }| j                   ||j                               | j                  t        t        j                  j                  |j                                     |dz  }|t        |      k  ry y )Nr   r.   )r   ri   lenrz   rv   r   r!   r%   queue_eventrE   r    r<   dirnameexistsr   r"   r   r#   r{   r}   r   r$   rx   ry   )rD   r   rd   ieventclss         rI   queue_eventszFSEventsEmitter.queue_events   s   ++->#f+o1IE  q53v;&6!a%=+C+CqSTuH^H^bgbpbpstbtHt+0+=+=->C$$SVAE]5G5G%HI$$%5bggooejj6Q%RS$$%5bggoofQQRUmFXFX6Y%Z[FAWW^^EJJ/-2-?-?/EUC$$S_5$$%5bggooejj6Q%RS-2-?-?/EUC$$S_5$$%5bggooejj6Q%RS ""e&=&=ASAS*/*<*<&BS  UZZ1!!).););oAQ  UZZ1  !1"''//%**2M!NO!!).););oAQ  UZZ1  !1"''//%**2M!NOFAW #f+orJ   )r   r,   r   r-   r   floatr   z"list[type[FileSystemEvent]] | Nonerl   r   r   rj   rk   )	ro   rp   rq   rr   r'   r5   r   r   __classcell__r   s   @rI   r   r      sC    L 1;?

 

 
 9
0rJ   r   c                  &     e Zd Zedd fdZ xZS )FSEventsObserver2r   c               0    t         |   t        |       y )Nr   )r   r5   r   )rD   r   r   s     rI   r5   zFSEventsObserver2.__init__   s    ':rJ   r   )ro   rp   rq   r(   r5   r   r   s   @rI   r   r      s    +C ; ;rJ   r   )Crr   
__future__r   loggingr<   r6   r>   warnings	threadingr   typingr   rL   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-   	getLoggerro   rZ   messagewarnDeprecationWarningwarningr2   rY   r   r   rs   rJ   rI   <module>r      s    #  	             6
 
 
 q p@			8	$
_ g 2q A w D>F D>N$
 $
NBl BJ; ;rJ   