§
    xÅjß$  ã                  ó  — 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        úMC:\Projects\Historical\venv\Lib\site-packages\watchdog/observers/fsevents2.pyr9   zFSEventsQueue.__init__K   s¼   € ÝŒ˜ÑÔÐÝ=B¼[¹]¼]ˆŒØˆŒå�d�EÑ"Ô"ð 	%Ý”;˜tÑ$Ô$ˆDÝ Ô*¨5°$Ñ7Ô7ˆŒ
àˆØˆÝ.ÝØŒNØØŒZˆLÝ)ØÝ+Õ.PÑPñ
ô 
ˆÔð ÔÐ#Ø8ˆEÝ˜%‘.”.Ð ð $Ð#ó    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ˆÝ,Ñ.Ô.ˆŒÝ(¨Ô)9¸4¼>ÕK`ÑaÔaÐaÝ! $Ô"2Ñ3Ô3ð 	!Ý# DÔ$4Ñ5Ô5Ð5Ý  Ô!1Ñ2Ô2Ð2Ø7ˆEÝ˜%‘.”.Ð å‰ŒˆÝ˜$Ô*Ñ+Ô+Ð+Ý Ô 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ÐqÑ4D°D¸%À•+˜d E¨3Ñ/Ô/Ð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ÍÈKÐYdÐfoÑHpÔHpÐqÑqÔqˆÝ�ŠÐ8¸*ÑEÔEÐEØð 	ð 	ˆAÝ�LŠL˜‰OŒOˆOˆOØŒ�Š˜ÑÔÐÐÐ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(   € ð %)§M¢M¡O¤OÐ=ˆ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¨D¬Ið Yð YÀÔ@Pð Yð YØÔ(ðYð YÝ25°d´j±/´/ð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   ø€ õ 	‰Œ×Ò˜ e°WÈ<ÐÑXÔXÐXÝ& u¤zÑ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‘+”+Šo‰oØ˜1”IˆEð Ôñ #Pð �q‘5�3˜v™;œ;Ò&Ñ&¨6°!°a±%¬=Ô+CÐ&ÈÈqÐSTÉuÌÔH^ÐbgÔbpÐstÑbtÒHtÐHtØ+0Ô+=ÐQ�-˜-Å>�CØ×$Ò$ S S¨¬°V¸AÀ¹E´]Ô5GÑ%HÔ%HÑIÔIÐIØ×$Ò$Õ%5µb´g·o²oÀeÄjÑ6QÔ6QÑ%RÔ%RÑSÔSÐSØ×$Ò$Õ%5µb´g·o²oÀfÈQÐQRÉUÄmÔFXÑ6YÔ6YÑ%ZÔ%ZÑ[Ô[Ð[Ø˜‘F�A‘AÝ”W—^’^ E¤JÑ/Ô/ð TØ-2Ô-?ÐU�/˜/ÕEU�CØ×$Ò$ S S¨¬¡_¤_Ñ5Ô5Ð5Ø×$Ò$Õ%5µb´g·o²oÀeÄjÑ6QÔ6QÑ%RÔ%RÑSÔSÐSÑSà-2Ô-?ÐU�/˜/ÕEU�CØ×$Ò$ S S¨¬¡_¤_Ñ5Ô5Ð5Ø×$Ò$Õ%5µb´g·o²oÀeÄjÑ6QÔ6QÑ%RÔ%RÑSÔSÐSÑSð Ô"ð P eÔ&=ð PÀÔASð PØ*/Ô*<ÐSÕ&Ð&ÕBS�Ø× Ò    U¤Z¡¤Ñ1Ô1Ð1Ñ1àÔ!ð PØ).Ô);ÐQ•o�oÕAQ�Ø× Ò    U¤Z¡¤Ñ1Ô1Ð1Ø× Ò Õ!1µ"´'·/²/À%Ä*Ñ2MÔ2MÑ!NÔ!NÑOÔOÐOÐOàÔ!ð PØ).Ô);ÐQ•o�oÕAQ�Ø× Ò    U¤Z¡¤Ñ1Ô1Ð1Ø× Ò Õ!1µ"´'·/²/À%Ä*Ñ2MÔ2MÑ!NÔ!NÑOÔOÐOØ�‰FˆAðW •#�f‘+”+Šo‰oˆoˆoˆoˆorM   )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Ð 2¸qÐ 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   