Ë
    êmxi7
  ã                  óp   — d Z ddlmZ ddlZddlZddlmZ ddlmZm	Z	m
Z
  e
d«      Z G d„ de	e   «      Zy)	u‹   :module: watchdog.utils.delayed_queue
:author: thomas.amland@gmail.com (Thomas Amland)
:author: contact@tiger-222.fr (MickaÃ«l Schoentgen)
é    )ÚannotationsN)Údeque)ÚCallableÚGenericÚTypeVarÚTc                  ó:   — e Zd Zd	d„Zddœd
d„Zdd„Zdd„Zdd„Zy)ÚDelayedQueuec                ó¸   — || _         t        j                  «       | _        t        j                  | j                  «      | _        t        «       | _        d| _        y )NF)	Ú	delay_secÚ	threadingÚLockÚ_lockÚ	ConditionÚ
_not_emptyr   Ú_queueÚ_closed)ÚselfÚdelays     úS/home/htdocs/ttos/venv/lib/python3.12/site-packages/watchdog/utils/delayed_queue.pyÚ__init__zDelayedQueue.__init__   s=   € ØˆŒÜ—^‘^Ó%ˆŒ
Ü#×-Ñ-¨d¯j©jÓ9ˆŒÜ49³GˆŒØˆ�ó    F)r   c               ó   — | j                   j                  «        | j                  j                  |t	        j                  «       |f«       | j
                  j                  «        | j                   j                  «        y)zAdd element to queue.N)r   Úacquirer   ÚappendÚtimer   ÚnotifyÚrelease)r   Úelementr   s      r   ÚputzDelayedQueue.put   sQ   € à�
‰
×ÑÔØ�‰×Ñ˜G¤T§Y¡Y£[°%Ð8Ô9Ø�‰×ÑÔ Ø�
‰
×ÑÕr   c                ó®   — d| _         | j                  j                  «        | j                  j                  «        | j                  j	                  «        y)z4Close queue, indicating no more items will be added.TN)r   r   r   r   r   )r   s    r   ÚclosezDelayedQueue.close   s9   € àˆŒà�‰×ÑÔ!Ø�‰×ÑÔ Ø�‰×ÑÕ!r   c                ób  — 	 | j                   j                  «        t        | j                  «      dk(  rK| j                  s?| j                   j                  «        t        | j                  «      dk(  r| j                  sŒ?| j                  r| j                   j                  «        y| j                  d   \  }}}| j                   j                  «        |rh|| j                  z   t        j                  «       z
  }|dkD  r?t        j                  |«       || j                  z   t        j                  «       z
  }|dkD  rŒ?| j                  5  t        | j                  «      dkD  r9| j                  d   d   |u r%| j                  j                  «        |cddd«       S ddd«       �Œ£# 1 sw Y   ŒxY w)zwRemove and return an element from the queue, or this queue has been
        closed raise the Closed exception.
        r   N)r   r   Úlenr   r   Úwaitr   r   r   Úsleepr   Úpopleft)r   ÚheadÚinsert_timer   Ú	time_lefts        r   ÚgetzDelayedQueue.get'   sO  € ð à�O‰O×#Ñ#Ô%Ü�d—k‘kÓ" aÒ'°·²Ø—‘×$Ñ$Ô&ô �d—k‘kÓ" aÒ'°·³ð �|Š|Ø—‘×'Ñ'Ô)ØØ'+§{¡{°1¡~Ñ$ˆD�+˜uØ�O‰O×#Ñ#Ô%ñ Ø'¨$¯.©.Ñ8¼4¿9¹9»;ÑF�	Ø !’mÜ—J‘J˜yÔ)Ø +¨d¯n©nÑ <¼t¿y¹y»{Ñ J�Ið   !“mð
 —‘ñ  Ü�t—{‘{Ó# aÒ'¨D¯K©K¸©N¸1Ñ,=ÀÑ,EØ—K‘K×'Ñ'Ô)Ø÷ ÷  ñ  ñ) ÷( ð  ús   Å	AF%Æ%F.c                óÊ   — | j                   5  t        | j                  «      D ])  \  }^}} ||«      sŒ| j                  |= |c cddd«       S  	 ddd«       y# 1 sw Y   yxY w)z_Remove and return the first items for which predicate is True,
        ignoring delay.
        N)r   Ú	enumerater   )r   Ú	predicateÚiÚelemÚ_s        r   ÚremovezDelayedQueue.removeD   sf   € ð �Z‰Zñ 	 Ü!*¨4¯;©;Ó!7ò  ‘��:�D˜1Ù˜T•?ØŸ™ A˜Ø‘K÷		 ñ 	 ñ ÷	 ð
 ÷	 ð
 ús   �&A´AÁAÁA"N)r   ÚfloatÚreturnÚNone)r   r   r   Úboolr4   r5   )r4   r5   )r4   úT | None)r.   zCallable[[T], bool]r4   r7   )Ú__name__Ú
__module__Ú__qualname__r   r    r"   r+   r2   © r   r   r
   r
      s    „ óð 05õ ó"ó ô:	r   r
   )Ú__doc__Ú
__future__r   r   r   Úcollectionsr   Útypingr   r   r   r   r
   r;   r   r   ú<module>r@      s7   ðñõ
 #ã Û Ý ß -Ñ -áˆCƒL€ô=�7˜1‘:õ =r   