Ë
    êmxiß$  ã                  óò  — 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        úS/home/htdocs/ttos/venv/lib/python3.12/site-packages/watchdog/observers/fsevents2.pyr5   zFSEventsQueue.__init__K   s¬   € Ü�‰˜ÔÜ=B¿[¹[»]ˆŒØˆŒä�dœEÔ"Ü—;‘;˜tÓ$ˆDÜ ×*Ñ*¨5°$Ó7ˆŒ
àˆØˆÜ.ÜØ�N‰NØØ�Z‰ZˆLÜ)ØÜ+Ô.PÑPó
ˆÔð ×ÑÐ#Ø8ˆEÜ˜%“.Ð ð $ó    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Ñ)9¸4¿>¹>ÔK`ÔaÜ! $×"2Ñ"2Ô3Ü# D×$4Ñ$4Ô5Ü  ×!1Ñ!1Ô2Ø7ˆEÜ˜%“.Ð äŒÜ˜$×*Ñ*Ô+Ü × 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   sv   € ô ILÈKÐYdÐfoÓHp×qÐqÑ4D°D¸%À”+˜d E¨3Õ/ÐqˆÒqÜ�‰Ð8¸*ÔEØò 	ˆAÜ�L‰L˜�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"   € ð %)§M¡M¤Oˆt�{‰{�‰Ó Ð=¸Ð=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“
×#Ñ#Ð$ G¨D¯I©I¨=¸À×@PÑ@PÐ?Qð RØ×(Ñ(Ð)¨´#°d·j±j³/Ð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;   ø€ ô 	‰Ñ˜ e°WÈ<ÐÔXÜ& u§z¡zÓ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  }�n�t        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Ø˜1‘IˆEð ×Óð �q‘5œ3˜v›;Ó&¨6°!°a±%©=×+CÒ+CÈÈqÐSTÉuÉ×H^ÑH^Ðbg×bpÑbpÐstÑbtÒHtØ+0×+=Ò+=�-Ä>�CØ×$Ñ$¡S¨¯©°V¸AÀ¹E±]×5GÑ5GÓ%HÔIØ×$Ñ$Ô%5´b·g±g·o±oÀeÇjÁjÓ6QÓ%RÔSØ×$Ñ$Ô%5´b·g±g·o±oÀfÈQÐQRÉUÁm×FXÑFXÓ6YÓ%ZÔ[Ø˜‘F’AÜ—W‘W—^‘^ E§J¡JÔ/Ø-2×-?Ò-?�/ÔEU�CØ×$Ñ$¡S¨¯©£_Ô5Ø×$Ñ$Ô%5´b·g±g·o±oÀeÇjÁjÓ6QÓ%RÖSà-2×-?Ò-?�/ÔEU�CØ×$Ñ$¡S¨¯©£_Ô5Ø×$Ñ$Ô%5´b·g±g·o±oÀeÇjÁjÓ6QÓ%RÖSð ×"Ò" e×&=Ò&=À×ASÒASØ*/×*<Ò*<Õ&ÔBS�Ø× Ñ ¡ U§Z¡Z£Ö1à×!Ò!Ø).×);Ò);•oÔAQ�Ø× Ñ ¡ U§Z¡Z£Ô1Ø× Ñ Ô!1´"·'±'·/±/À%Ç*Á*Ó2MÓ!NÕOà×!Ò!Ø).×);Ò);•oÔAQ�Ø× Ñ ¡ U§Z¡Z£Ô1Ø× Ñ Ô!1´"·'±'·/±/À%Ç*Á*Ó2MÓ!NÔOØ�‰FˆAðW ”#�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Ð 2¸qÕ AØ ‡�ˆwÔ ôD>�Fô D>÷N$
ñ $
ôNB�lô BôJ;˜õ ;rJ   