Ë
    êmxi‰R  ã                  óv  — 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Zd dlZd dl	Z	d dlm
Z
mZ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j*                  d«      Z eed«      r eed	«      r	 eed
«      sdej0                  › �Z ee«      ‚  ej4                  eee
ed¬«      d	ef«      Z  ej4                  eeed¬«      d
ef«      Z  ej4                  ed¬«      def«      Z G d„ d«      Z ed„ ej>                  ej@                  ejB                  ejD                  ejF                  ejH                  ejJ                  ejL                  ejN                  ejP                  ejR                  g«      Z* G d„ dejV                  «      Z, ejZ                  e,«      Z.dZ/e/e.dz   z  Z0 G d„ d«      Z1 G d„ d«      Z2y)é    )ÚannotationsN)Úc_char_pÚc_intÚc_uint32)Úreduce)ÚTYPE_CHECKING)ÚUnsupportedLibcError)Ú	GeneratorÚinotify_initÚinotify_add_watchÚinotify_rm_watchz Unsupported libc version found: T)Ú	use_errnoc                  óž   — e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZe	e
z  ZdZdZdZdZdZdZdZdZdZ ed„ eeeeeee	e
eeeeg«      ZdZdZy)ÚInotifyConstantsé   é   é   é   é   é    é@   é€   é   i   i   é   i    i @  i €  i   i   i   i    i   @l        c                ó   — | |z  S ©N© ©ÚxÚys     úS/home/htdocs/ttos/venv/lib/python3.12/site-packages/watchdog/observers/inotify_c.pyú<lambda>zInotifyConstants.<lambda>B   s
   € �Q˜‘U€ ó    N)Ú__name__Ú
__module__Ú__qualname__Ú	IN_ACCESSÚ	IN_MODIFYÚ	IN_ATTRIBÚIN_CLOSE_WRITEÚIN_CLOSE_NOWRITEÚIN_OPENÚIN_MOVED_FROMÚIN_MOVED_TOÚ	IN_CREATEÚ	IN_DELETEÚIN_DELETE_SELFÚIN_MOVE_SELFÚIN_MOVEÚ
IN_UNMOUNTÚIN_Q_OVERFLOWÚ
IN_IGNOREDÚ
IN_ONLYDIRÚIN_DONT_FOLLOWÚIN_EXCL_UNLINKÚIN_MASK_ADDÚIN_ISDIRÚ
IN_ONESHOTr   ÚIN_ALL_EVENTSÚ
IN_CLOEXECÚIN_NONBLOCKr   r#   r!   r   r   !   sÀ   „ à€IØ€IØ€IØ€NØ!ÐØ€GØ€MØ€KØ€IØ€IØ€NØ€Lð ˜kÑ)€Gð €JØ€MØ€Jð €JØ€NØ€NØ€KØ€HØ€Jñ ÙàØØØØØØØØØØØð	
ó€Mð& €JØ�Kr#   r   c                ó   — | |z  S r   r   r   s     r!   r"   r"   Z   s
   € ��Q‘€ r#   c                  ó2   — e Zd ZdZdefdefdefdefdeffZy)ÚInotifyEventStructaÈ  Structure representation of the inotify_event structure
    (used in buffer size calculations)::

        struct inotify_event {
            __s32 wd;            /* watch descriptor */
            __u32 mask;          /* watch mask */
            __u32 cookie;        /* cookie to synchronize two events */
            __u32 len;           /* length (including nulls) of name */
            char  name[0];       /* stub for possible name */
        };
    ÚwdÚmaskÚcookieÚlenÚnameN)r$   r%   r&   Ú__doc__r   r   r   Ú_fields_r   r#   r!   rB   rB   k   s7   „ ñ
ð 
ˆuˆØ	�ÐØ	�8ÐØ	�ÐØ	�Ðð�Hr#   rB   r   r   c                  óâ   — e Zd ZdZdddœdd„Zedd„«       Zedd„«       Zedd„«       Zedd	„«       Z	dd
„Z
dd„Zdd„Zdd„Zdd„Zdd„Zedœdd„Zdd„Zd d„Zd!d„Zedd„«       Zed"d„«       Zy)#ÚInotifya  Linux inotify(7) API wrapper class.

    :param path:
        The directory path for which we want an inotify object.
    :type path:
        :class:`bytes`
    :param recursive:
        ``True`` if subdirectories should be monitored; ``False`` otherwise.
    FN)Ú	recursiveÚ
event_maskc               ó@  ‡ — t        «       }|dk(  rt        j                  «        |‰ _        t	        j
                  «       ‰ _        d‰ _        d‰ _        t        j                  «       \  ‰ _        ‰ _        t        t        d«      r�t        j                  «       ‰ _        ‰ j                   j#                  ‰ j                  t        j$                  «       ‰ j                   j#                  ‰ j                  t        j$                  «       dˆ fd„}|‰ _        ndˆ fd„}|‰ _        i ‰ _        i ‰ _        |‰ _        |€t.        }|‰ _        |‰ _        t        j4                  j7                  |«      r‰ j9                  |||¬«       i ‰ _        y ‰ j;                  ||«       i ‰ _        y )	NéÿÿÿÿFTÚpollc                 ó\   •— t        ˆ fd„‰ j                  j                  «       D «       «      S )Nc              3  óB   •K  — | ]  \  }}|‰j                   k(  –— Œ y ­wr   ©Ú_inotify_fd)Ú.0ÚfdÚ_Úselfs      €r!   ú	<genexpr>z4Inotify.__init__.<locals>.do_poll.<locals>.<genexpr>£   s    øè ø€ ÒS±e°b¸!˜2 ×!1Ñ!1Õ1ÑSùs   ƒ)ÚanyÚ_pollerrP   ©rX   s   €r!   Údo_pollz!Inotify.__init__.<locals>.do_poll¢   s!   ø€ ÜÓS¸t¿|¹|×?PÑ?PÓ?RÔSÓSÐSr#   c                 ó€   •— t        j                   ‰j                  ‰j                  gg g «      } ‰j                  | d   v S ©Nr   )ÚselectrT   Ú_kill_r)ÚresultrX   s    €r!   Ú	do_selectz#Inotify.__init__.<locals>.do_select¨   s9   ø€ ÜŸ™¨×(8Ñ(8¸$¿,¹,Ð'GÈÈRÓP�Ø×'Ñ'¨6°!©9Ð4Ð4r#   )rL   ©ÚreturnÚbool)r   rK   Ú_raise_errorrT   Ú	threadingÚLockÚ_lockÚ_closedÚ_is_readingÚosÚpipera   Ú_kill_wÚhasattrr`   rP   r[   ÚregisterÚPOLLINÚ_check_inotify_fdÚ_wd_for_pathÚ_path_for_wdÚ_pathÚWATCHDOG_ALL_EVENTSÚ_event_maskÚ_is_recursiveÚpathÚisdirÚ_add_dir_watchÚ
_add_watchÚ_moved_from_events)rX   rz   rL   rM   Ú
inotify_fdr]   rc   s   `      r!   Ú__init__zInotify.__init__‘   sD  ø€ ä!“^ˆ
Ø˜ÒÜ× Ñ Ô"Ø%ˆÔÜ—^‘^Ó%ˆŒ
ØˆŒØˆÔÜ%'§W¡W£YÑ"ˆŒ�d”lô ”6˜6Ô"Ü!Ÿ;™;›=ˆDŒLØ�L‰L×!Ñ! $×"2Ñ"2´F·M±MÔBØ�L‰L×!Ñ! $§,¡,´·±Ô>õTð &-ˆDÕ"õ5ð &/ˆDÔ"ð /1ˆÔØ.0ˆÔàˆŒ
àÐÜ,ˆJØ%ˆÔØ&ˆÔÜ�7‰7�=‰=˜ÔØ×Ñ  j¸IÐÔFð <>ˆÕð �O‰O˜D *Ô-Ø;=ˆÕr#   c                ó   — | j                   S )z)The event mask for this inotify instance.)rx   r\   s    r!   rM   zInotify.event_mask¾   ó   € ð ×ÑÐr#   c                ó   — | j                   S )z.The path associated with the inotify instance.)rv   r\   s    r!   rz   zInotify.pathÃ   s   € ð �z‰zÐr#   c                ó   — | j                   S )z0Whether we are watching directories recursively.)ry   r\   s    r!   Úis_recursivezInotify.is_recursiveÈ   s   € ð ×!Ñ!Ð!r#   c                ó   — | j                   S )z9The file descriptor associated with the inotify instance.rS   r\   s    r!   rV   z
Inotify.fdÍ   r‚   r#   c                ó   — i | _         y)z)Clear cached records of MOVED_FROM eventsN)r~   r\   s    r!   Úclear_move_recordszInotify.clear_move_recordsÒ   s
   € à"$ˆÕr#   c                óz   — |j                   | j                  v r#| j                  |j                      j                  S y)z§The source path corresponding to the given MOVED_TO event.

        If the source path is outside the monitored directories, None
        is returned instead.
        N)rE   r~   Úsrc_path)rX   Údestination_events     r!   Úsource_for_movezInotify.source_for_moveÖ   s9   € ð ×#Ñ# t×'>Ñ'>Ñ>Ø×*Ñ*Ð+<×+CÑ+CÑD×MÑMÐMàr#   c                ó6   — || j                   |j                  <   y)z]Save this event as the source event for future MOVED_TO events to
        reference.
        N)r~   rE   )rX   Úevents     r!   Úremember_move_from_eventz Inotify.remember_move_from_eventá   s   € ð 16ˆ×Ñ §¡Ò-r#   c                ó~   — | j                   5  | j                  || j                  «       ddd«       y# 1 sw Y   yxY w)zeAdds a watch for the given path.

        :param path:
            Path to begin monitoring.
        N)rj   r}   rx   )rX   rz   s     r!   Ú	add_watchzInotify.add_watchç   s4   € ð �Z‰Zñ 	4Ø�O‰O˜D $×"2Ñ"2Ô3÷	4÷ 	4ñ 	4ús   �3³<c                óð   — | j                   5  | j                  j                  |«      }| j                  |= t	        | j
                  |«      dk(  rt        j                  «        ddd«       y# 1 sw Y   yxY w)zRemoves a watch for the given path.

        :param path:
            Path string for which the watch will be removed.
        rO   N)rj   rt   Úpopru   r   rT   rK   rg   )rX   rz   rC   s      r!   Úremove_watchzInotify.remove_watchð   se   € ð �Z‰Zñ 	'Ø×"Ñ"×&Ñ& tÓ,ˆBØ×!Ñ! "Ð%Ü × 0Ñ 0°"Ó5¸Ò;Ü×$Ñ$Ô&÷		'÷ 	'ñ 	'ús   �AA,Á,A5c                ót  — | j                   5  | j                  s‹d| _        | j                  | j                  v r/| j                  | j                     }t	        | j
                  |«       | j                  r!t        j                  | j                  d«       n| j                  «        ddd«       y# 1 sw Y   yxY w)z?Closes the inotify instance and removes all associated watches.Tó   !N)rj   rk   rv   rt   r   rT   rl   rm   Úwritero   Ú_close_resources)rX   rC   s     r!   ÚclosezInotify.closeü   s‹   € à�Z‰Zñ 	,Ø—<’<Ø#�”à—:‘: ×!2Ñ!2Ñ2Ø×*Ñ*¨4¯:©:Ñ6�BÜ$ T×%5Ñ%5°rÔ:à×#Ò#ô —H‘H˜TŸ\™\¨4Õ0à×)Ñ)Ô+÷	,÷ 	,ñ 	,ús   �BB.Â.B7)Úevent_buffer_sizec          	     ó   ‡ — dˆ fd„}d}	 	 ‰ j                   5  ‰ j                  rg cddd«       S d‰ _        ddd«       ‰ j                  «       r t	        j
                  ‰ j                  |«      }‰ j                   5  d‰ _        ‰ j                  r‰ j                  «        g cddd«       S 	 ddd«       	 ‰ j                   5  g }t        j                  |«      D �]‰  \  }}}}	|dk(  rŒ‰ j                  |   }
|	r t        j                  j!                  |
|	«      n|
}t#        ||||	|«      }|j$                  r‰ j'                  |«       �ne|j(                  �rX‰ j+                  |«      }|‰ j,                  v �r	‰ j,                  |   }‰ j,                  |= |‰ j,                  |j.                  <   |j.                  ‰ j                  |<   ‰ j0                  r¯‰ j,                  j3                  «       D ]’  }|j5                  |t        j                  j6                  j9                  «       z   «      sŒ>‰ j,                  j;                  |«      }|j=                  ||j.                  «      }|‰ j,                  |<   |‰ j                  |<   Œ” t        j                  j!                  |
|	«      }t#        ||||	|«      }|j>                  r:‰ j                  j;                  |«      }‰ j,                  |   |k(  r‰ j,                  |= |jA                  |«       ‰ j0                  s�Œ:|jB                  s�ŒH|jD                  s�ŒV	 ‰ jG                  |‰ jH                  «       |jK                   ||«      «       �ŒŒ 	 ddd«       |S # 1 sw Y   �Œ;xY w# 1 sw Y   �ŒÔxY w# t        $ rM}|j                  t        j                  k(  rY d}~�Œ¬|j                  t        j                  k(  rg cY d}~S ‚ d}~ww xY w# t        $ r Y �Œw xY w# 1 sw Y   S xY w)z*Reads events from inotify and yields them.c           
     ó°  •— g }t        j                  | «      D �],  \  }}}|D ]Ÿ  }t        j                  t        «      5  t         j
                  j                  ||«      }‰j                  |‰j                  «      }t        |t        j                  t        j                  z  d||«      }|j                  |«       d d d «       Œ¡ |D ]|  }	t         j
                  j                  ||	«      }‰j                  t         j
                  j                  |«         }
t        |
t        j                  d|	|«      }|j                  |«       Œ~ �Œ/ |S # 1 sw Y   �Œ2xY wr_   )rm   ÚwalkÚ
contextlibÚsuppressÚOSErrorrz   Újoinr}   rx   ÚInotifyEventr   r/   r;   Úappendrt   Údirname)rŠ   ÚeventsÚrootÚdirnamesÚ	filenamesr¤   Ú	full_pathÚwd_dirÚeÚfilenameÚwd_parent_dirrX   s              €r!   Ú_recursive_simulatez0Inotify.read_events.<locals>._recursive_simulate  s7  ø€ ØˆFÜ-/¯W©W°XÓ->ó %Ñ)��h 	Ø'ò )�GÜ#×,Ñ,¬WÓ5ñ 
)Ü$&§G¡G§L¡L°°wÓ$?˜	Ø!%§¡°¸D×<LÑ<LÓ!M˜Ü(Ø"Ü,×6Ñ6Ô9I×9RÑ9RÑRØØ#Ø%ó˜ð Ÿ™ aÔ(÷
)ð 
)ð)ð !*ò 
%�HÜ "§¡§¡¨T°8Ó <�IØ$(×$5Ñ$5´b·g±g·o±oÀiÓ6PÑ$Q�MÜ$Ø%Ü(×2Ñ2ØØ Ø!ó�Að —M‘M !Õ$ò
%ð%ð0 ˆM÷-
)ñ 
)ús   ¿A<EÅEr#   TNFrO   )rŠ   Úbytesre   úlist[InotifyEvent])&rj   rk   rl   rs   rm   ÚreadrT   r˜   r    ÚerrnoÚEINTRÚEBADFrK   Ú_parse_event_bufferru   rz   r¡   r¢   Úis_moved_fromr�   Úis_moved_torŒ   rt   rŠ   r…   ÚcopyÚ
startswithÚsepÚencoder“   ÚreplaceÚ
is_ignoredr£   Úis_directoryÚ	is_creater}   rx   Úextend)rX   rš   r®   Úevent_bufferr«   Ú
event_listrC   rD   rE   rG   Úwd_pathrŠ   Úinotify_eventÚmove_src_pathÚmoved_wdrv   Ú_move_to_pathrz   s   `                 r!   Úread_eventszInotify.read_events  s‘  ø€ õ	ð8 ˆØðØ—Z‘Zñ ,Ø—|’|Ø!÷,ñ ,ð (,�DÔ$÷	,ð ×)Ñ)Ô+Ü#%§7¡7¨4×+;Ñ+;Ð=NÓ#O�Là—Z‘Zñ "Ø',�DÔ$à—|’|Ø×-Ñ-Ô/Ø!÷"ñ "ð $÷"ð à�Z‰Zñ 1	EØˆJÜ*1×*EÑ*EÀlÓ*Só /EÑ&��D˜& $Ø˜’8ØØ×+Ñ+¨BÑ/�Ù:>œ2Ÿ7™7Ÿ<™<¨°Ô6ÀG�Ü ,¨R°°v¸tÀXÓ N�à ×.Ò.Ø×1Ñ1°-Ö@Ø"×.Ó.Ø$(×$8Ñ$8¸Ó$G�MØ$¨×(9Ñ(9Ò9Ø#'×#4Ñ#4°]Ñ#C˜Ø ×-Ñ-¨mÐ<ØDL˜×)Ñ)¨-×*@Ñ*@ÑAØ6C×6LÑ6L˜×)Ñ)¨(Ñ3Ø×,Ò,Ø)-×):Ñ):×)?Ñ)?Ó)Aò P Ø#(×#3Ñ#3°MÄBÇGÁGÇKÁK×DVÑDVÓDXÑ4XÕ#YØ/3×/@Ñ/@×/DÑ/DÀUÓ/K HØ49·M±MÀ-ÐQ^×QgÑQgÓ4h MØGO D×$5Ñ$5°mÑ$DØBO D×$5Ñ$5°hÒ$?ðPô  "Ÿw™wŸ|™|¨G°TÓ:�HÜ$0°°T¸6À4ÈÓ$R�Mà ×+Ò+à×,Ñ,×0Ñ0°Ó4�DØ×(Ñ(¨Ñ.°"Ò4Ø ×-Ñ-¨dÐ3à×!Ñ! -Ô0à×$Ô$¨×)CÔ)CÈ×H_ÔH_ð!ØŸ™¨°$×2BÑ2BÔCð ×%Ñ%Ñ&9¸(Ó&CÖDñ_/E÷1	Eðf Ð÷Y,ñ ,ú÷"ñ "ûô ò Ø—7‘7œeŸk™kÒ)Ýà—7‘7œeŸk™kÒ)Ø•Iàûðûôp #ò !Ú ð!ú÷]1	Eðf Ðús¬   ŒN
 ˜M0¦	N
 °M0·AN
 Á;%M=Â 	N
 Â+N
 Ã E&O3È'C)O3ÌO3Ì O3Ì/O#ÍO3Í0M:Í5N
 Í=NÎN
 Î
	O ÎOÎ6OÏO ÏOÏO Ï#	O0Ï,O3Ï/O0Ï0O3Ï3O=c                ó¾   — t        j                  | j                  «       t        j                  | j                  «       t        j                  | j                  «       y r   )rm   r™   rT   ra   ro   r\   s    r!   r˜   zInotify._close_resources�  s4   € Ü
�‰�×!Ñ!Ô"Ü
�‰�—‘ÔÜ
�‰�—‘Õr#   c               óÒ  — t         j                  j                  |«      s<t        t        j
                  t        j                  t        j
                  «      |«      ‚| j                  ||«       |rxt        j                  |«      D ]_  \  }}}|D ]T  }t         j                  j                  ||«      }t         j                  j                  |«      rŒC| j                  ||«       ŒV Œa yy)a&  Adds a watch (optionally recursively) for the given directory path
        to monitor events specified by the mask.

        :param path:
            Path to monitor
        :param recursive:
            ``True`` to monitor recursively.
        :param mask:
            Event bit mask.
        N)rm   rz   r{   r    r²   ÚENOTDIRÚstrerrorr}   r�   r¡   Úislink)	rX   rz   rD   rL   r¦   r§   rW   r¤   r©   s	            r!   r|   zInotify._add_dir_watch‡  s¬   € ô �w‰w�}‰}˜TÔ"Üœ%Ÿ-™-¬¯©´U·]±]Ó)CÀTÓJÐJØ�‰˜˜dÔ#ÙÜ%'§W¡W¨T£]ò 5Ñ!��h Ø'ò 5�GÜ "§¡§¡¨T°7Ó ;�IÜ—w‘w—~‘~ iÔ0Ø Ø—O‘O I¨tÕ4ñ	5ñ5ð r#   c                ó¢   — t        | j                  ||«      }|dk(  rt        j                  «        || j                  |<   || j
                  |<   |S )z¼Adds a watch for the given path to monitor events specified by the
        mask.

        :param path:
            Path to monitor
        :param mask:
            Event bit mask.
        rO   )r   rT   rK   rg   rt   ru   )rX   rz   rD   rC   s       r!   r}   zInotify._add_watch�  sP   € ô ˜t×/Ñ/°°tÓ<ˆØ�Š8Ü× Ñ Ô"Ø"$ˆ×Ñ˜$ÑØ $ˆ×Ñ˜"ÑØˆ	r#   c                 óD  — t        j                  «       } | t        j                  k(  rt	        t        j                  d«      ‚| t        j
                  k(  rt	        t        j
                  d«      ‚| t        j                  k7  rt	        | t        j                  | «      «      ‚y)z#Raises errors for inotify failures.zinotify watch limit reachedzinotify instance limit reachedN)	ÚctypesÚ	get_errnor²   ÚENOSPCr    ÚEMFILEÚEACCESrm   rÌ   )Úerrs    r!   rg   zInotify._raise_error­  su   € ô ×ÑÓ ˆà”%—,‘,ÒÜœ%Ÿ,™,Ð(EÓFÐFà”%—,‘,ÒÜœ%Ÿ,™,Ð(HÓIÐIà”%—,‘,ÒÜ˜#œrŸ{™{¨3Ó/Ó0Ð0ð r#   c              #  óê   K  — d}|dz   t        | «      k  r\t        j                  d| |«      \  }}}}| |dz   |dz   |z    j                  d«      }|d|z   z  }||||f–— |dz   t        | «      k  rŒ[yy­w)aƒ  Parses an event buffer of ``inotify_event`` structs returned by
        inotify::

            struct inotify_event {
                __s32 wd;            /* watch descriptor */
                __u32 mask;          /* watch mask */
                __u32 cookie;        /* cookie to synchronize two events */
                __u32 len;           /* length (including nulls) of name */
                char  name[0];       /* stub for possible name */
            };

        The ``cookie`` member of this struct is used to pair two related
        events, for example, it pairs an IN_MOVED_FROM event with an
        IN_MOVED_TO event.
        r   r   ÚiIIIó    N)rF   ÚstructÚunpack_fromÚrstrip)rÁ   ÚirC   rD   rE   ÚlengthrG   s          r!   rµ   zInotify._parse_event_buffer»  s�   è ø€ ð" ˆØ�"‰fœ˜LÓ)Ò)Ü'-×'9Ñ'9¸&À,ÐPQÓ'RÑ$ˆB��f˜fØ  B¡¨¨R©°&©Ð9×@Ñ@ÀÓGˆDØ��f‘ÑˆAØ�d˜F DÐ(Ò(ð	 �"‰fœ˜LÓ)Õ)ùs   ‚A.A3Á1A3)rz   r¯   rL   rf   rM   z
int | Nonere   ÚNone©re   Úint©re   r¯   rd   )re   rÞ   )r‹   r¢   re   zbytes | None)rŽ   r¢   re   rÞ   )rz   r¯   re   rÞ   )rš   rà   re   r°   )rz   r¯   rD   rà   rL   rf   re   rÞ   )rz   r¯   rD   rà   re   rà   )rÁ   r¯   re   z&Generator[tuple[int, int, int, bytes]])r$   r%   r&   rH   r€   ÚpropertyrM   rz   r…   rV   rˆ   rŒ   r�   r‘   r”   r™   ÚDEFAULT_EVENT_BUFFER_SIZErÈ   r˜   r|   r}   Ústaticmethodrg   rµ   r   r#   r!   rK   rK   †   sÇ   „ ñð :?ÐY]õ +>ðZ ò ó ð ð òó ðð ò"ó ð"ð ò ó ð ó%ó	ó6ó4ó
'ó,ð" 7Põ róhó5ó,ð  ò1ó ð1ð ò)ó ñ)r#   rK   c                  óÄ  — e Zd ZdZdd„Zedd„«       Zed d„«       Zed d„«       Zed d„«       Z	edd„«       Z
ed!d„«       Zed!d	„«       Zed!d
„«       Zed!d„«       Zed!d„«       Zed!d„«       Zed!d„«       Zed!d„«       Zed!d„«       Zed!d„«       Zed!d„«       Zed!d„«       Zed!d„«       Zed!d„«       Zed!d„«       Zed"d„«       Zd#d„Zd#d„Zd d„Zed$d„«       Zd%d„Z y)&r¢   a	  Inotify event struct wrapper.

    :param wd:
        Watch descriptor
    :param mask:
        Event mask
    :param cookie:
        Event cookie
    :param name:
        Base name of the event source path.
    :param src_path:
        Full event source path.
    c                óJ   — || _         || _        || _        || _        || _        y r   )Ú_wdÚ_maskÚ_cookieÚ_nameÚ	_src_path)rX   rC   rD   rE   rG   rŠ   s         r!   r€   zInotifyEvent.__init__ã  s%   € ØˆŒØˆŒ
ØˆŒØˆŒ
Ø!ˆ�r#   c                ó   — | j                   S r   )rë   r\   s    r!   rŠ   zInotifyEvent.src_pathê  s   € à�~‰~Ðr#   c                ó   — | j                   S r   )rç   r\   s    r!   rC   zInotifyEvent.wdî  s   € à�x‰xˆr#   c                ó   — | j                   S r   )rè   r\   s    r!   rD   zInotifyEvent.maskò  ó   € à�z‰zÐr#   c                ó   — | j                   S r   )ré   r\   s    r!   rE   zInotifyEvent.cookieö  s   € à�|‰|Ðr#   c                ó   — | j                   S r   )rê   r\   s    r!   rG   zInotifyEvent.nameú  rï   r#   c                óB   — | j                   t        j                  z  dkD  S r_   )rè   r   r(   r\   s    r!   Ú	is_modifyzInotifyEvent.is_modifyþ  ó   € à�z‰zÔ,×6Ñ6Ñ6¸Ñ:Ð:r#   c                óB   — | j                   t        j                  z  dkD  S r_   )rè   r   r*   r\   s    r!   Úis_close_writezInotifyEvent.is_close_write  ó   € à�z‰zÔ,×;Ñ;Ñ;¸aÑ?Ð?r#   c                óB   — | j                   t        j                  z  dkD  S r_   )rè   r   r+   r\   s    r!   Úis_close_nowritezInotifyEvent.is_close_nowrite  s   € à�z‰zÔ,×=Ñ=Ñ=ÀÑAÐAr#   c                óB   — | j                   t        j                  z  dkD  S r_   )rè   r   r,   r\   s    r!   Úis_openzInotifyEvent.is_open
  ó   € à�z‰zÔ,×4Ñ4Ñ4°qÑ8Ð8r#   c                óB   — | j                   t        j                  z  dkD  S r_   )rè   r   r'   r\   s    r!   Ú	is_accesszInotifyEvent.is_access  rô   r#   c                óB   — | j                   t        j                  z  dkD  S r_   )rè   r   r0   r\   s    r!   Ú	is_deletezInotifyEvent.is_delete  rô   r#   c                óB   — | j                   t        j                  z  dkD  S r_   )rè   r   r1   r\   s    r!   Úis_delete_selfzInotifyEvent.is_delete_self  r÷   r#   c                óB   — | j                   t        j                  z  dkD  S r_   )rè   r   r/   r\   s    r!   r¿   zInotifyEvent.is_create  rô   r#   c                óB   — | j                   t        j                  z  dkD  S r_   )rè   r   r-   r\   s    r!   r¶   zInotifyEvent.is_moved_from  s   € à�z‰zÔ,×:Ñ:Ñ:¸QÑ>Ð>r#   c                óB   — | j                   t        j                  z  dkD  S r_   )rè   r   r.   r\   s    r!   r·   zInotifyEvent.is_moved_to"  s   € à�z‰zÔ,×8Ñ8Ñ8¸1Ñ<Ð<r#   c                óB   — | j                   t        j                  z  dkD  S r_   )rè   r   r3   r\   s    r!   Úis_movezInotifyEvent.is_move&  rü   r#   c                óB   — | j                   t        j                  z  dkD  S r_   )rè   r   r2   r\   s    r!   Úis_move_selfzInotifyEvent.is_move_self*  s   € à�z‰zÔ,×9Ñ9Ñ9¸AÑ=Ð=r#   c                óB   — | j                   t        j                  z  dkD  S r_   )rè   r   r)   r\   s    r!   Ú	is_attribzInotifyEvent.is_attrib.  rô   r#   c                óB   — | j                   t        j                  z  dkD  S r_   )rè   r   r6   r\   s    r!   r½   zInotifyEvent.is_ignored2  s   € à�z‰zÔ,×7Ñ7Ñ7¸!Ñ;Ð;r#   c                óz   — | j                   xs. | j                  xs  | j                  t        j                  z  dkD  S r_   )r  r	  rè   r   r;   r\   s    r!   r¾   zInotifyEvent.is_directory6  s6   € ð
 ×"Ñ"Òe d×&7Ñ&7Òe¸4¿:¹:ÔHX×HaÑHaÑ;aÐdeÑ;eÐer#   c                ót   — | j                   | j                  | j                  | j                  | j                  fS r   )rë   rç   rè   ré   rê   r\   s    r!   ÚkeyzInotifyEvent.key=  s'   € à�~‰~˜tŸx™x¨¯©°T·\±\À4Ç:Á:ÐMÐMr#   c                ó`   — t        |t        «      st        S | j                  |j                  k(  S r   ©Ú
isinstancer¢   ÚNotImplementedr  ©rX   rÄ   s     r!   Ú__eq__zInotifyEvent.__eq__A  ó'   € Ü˜-¬Ô6Ü!Ð!Ø�x‰x˜=×,Ñ,Ñ,Ð,r#   c                ó`   — t        |t        «      st        S | j                  |j                  k7  S r   r  r  s     r!   Ú__ne__zInotifyEvent.__ne__F  r  r#   c                ó,   — t        | j                  «      S r   )Úhashr  r\   s    r!   Ú__hash__zInotifyEvent.__hash__K  s   € Ü�D—H‘H‹~Ðr#   c                óÌ   — g }t        t        «      D ]@  }|j                  d«      sŒ|dvsŒt        t        |«      }| |z  sŒ0|j	                  |«       ŒB dj                  |«      S )NÚIN_>   r3   r=   ú|)Údirr   r¹   Úgetattrr£   r¡   )rD   ÚmasksÚcÚc_vals       r!   Ú_get_mask_stringzInotifyEvent._get_mask_stringN  s_   € àˆÜÔ%Ó&ò 	$ˆAØ�|‰|˜EÕ" qÐ0LÒ'LÜÔ 0°!Ó4�Ø˜%“<Ø—L‘L •Oð		$ð
 �x‰x˜‹Ðr#   c                óú   — dt        | «      j                  › d| j                  ›d| j                  › d| j	                  | j
                  «      › d| j                  › dt        j                  | j                  «      ›d�S )Nú<z: src_path=z, wd=z, mask=z	, cookie=z, name=ú>)
Útyper$   rŠ   rC   r$  rD   rE   rm   ÚfsdecoderG   r\   s    r!   Ú__repr__zInotifyEvent.__repr__X  ss   € à”�T“
×#Ñ#Ð$ K°·±Ð/@ÀÀdÇgÁgÀYð OØ×*Ñ*¨4¯9©9Ó5Ð6°iÀÇÁ¸}ð MÜ—[‘[ §¡Ó+Ð.¨að1ð	
r#   N)rC   rà   rD   rà   rE   rà   rG   r¯   rŠ   r¯   re   rÞ   rá   rß   rd   )re   z"tuple[bytes, int, int, int, bytes])rÄ   Úobjectre   rf   )rD   rà   re   Ústr)re   r,  )!r$   r%   r&   rH   r€   râ   rŠ   rC   rD   rE   rG   ró   rö   rù   rû   rþ   r   r  r¿   r¶   r·   r  r	  r  r½   r¾   r  r  r  r  rä   r$  r*  r   r#   r!   r¢   r¢   Ô  sâ  „ ñó"ð òó ðð òó ðð òó ðð òó ðð òó ðð ò;ó ð;ð ò@ó ð@ð òBó ðBð ò9ó ð9ð ò;ó ð;ð ò;ó ð;ð ò@ó ð@ð ò;ó ð;ð ò?ó ð?ð ò=ó ð=ð ò9ó ð9ð ò>ó ð>ð ò;ó ð;ð ò<ó ð<ð òfó ðfð òNó ðNó-ó
-ó
ð òó ðô
r#   r¢   )3Ú
__future__r   rž   rÐ   Úctypes.utilr²   rm   r`   rÙ   rh   r   r   r   Ú	functoolsr   Útypingr   Úwatchdog.utilsr	   Úcollections.abcr
   ÚCDLLÚlibcrp   rê   ÚerrorÚ	CFUNCTYPEr   r   r   r   r(   r)   r-   r.   r/   r0   r1   r8   r*   r+   r,   rw   Ú	StructurerB   ÚsizeofÚ
EVENT_SIZEÚDEFAULT_NUM_EVENTSrã   rK   r¢   r   r#   r!   ú<module>r;     sÊ  ðÝ "ã Û Û Û Û 	Û Û Û ß ,Ñ ,Ý Ý  å /áÝ)à€v‡{�{�4Ó€áˆt�^Ô$©G°DÐ:MÔ,NÑV]Ð^bÐdvÔVwØ.¨t¯z©z¨lÐ;€EÙ
˜uÓ
%Ð%àVÐ$�F×$Ñ$ U¨E°8¸XÐQUÔVÐXkÐmqÐWrÓsÐ àKÐ#�6×#Ñ# E¨5°(ÀdÔKÐM_ÐaeÐLfÓgÐ à6Ðˆv×Ñ °Ô6¸ÈÐ7MÓN€÷4ñ 4ñp Ùà×"Ñ"Ø×"Ñ"Ø×&Ñ&Ø×$Ñ$Ø×"Ñ"Ø×"Ñ"Ø×'Ñ'Ø×'Ñ'Ø×'Ñ'Ø×)Ñ)Ø× Ñ ðóÐ ô$˜×)Ñ)ô ð, ˆV�]‰]Ð-Ó.€
ØÐ Ø.°*¸r±/ÑBÐ ÷K)ñ K)÷\
I
ò I
r#   