
    $g7
                        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dS )	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dS )DelayedQueuedelayfloatreturnNonec                    || _         t          j                    | _        t          j        | j                  | _        t                      | _        d| _        d S )NF)		delay_sec	threadingLock_lock	Condition
_not_emptyr   _queue_closed)selfr   s     \/var/www/html/netbox-4.1.3/venv/lib/python3.11/site-packages/watchdog/utils/delayed_queue.py__init__zDelayedQueue.__init__   sB    ^%%
#-dj9949GG    F)r   elementr   boolc                   | j                                          | j                            |t	          j                    |f           | j                                         | j                                          dS )zAdd element to queue.N)r   acquirer   appendtimer   notifyrelease)r   r   r   s      r   putzDelayedQueue.put   sg    
GTY[[%8999   
r   c                    d| _         | j                                         | j                                         | j                                         dS )z4Close queue, indicating no more items will be added.TN)r   r   r   r"   r#   )r   s    r   closezDelayedQueue.close   sK    !!!   !!!!!r   T | Nonec                "   	 | j                                          t          | j                  dk    r?| j        s8| j                                          t          | j                  dk    r| j        8| j        r| j                                          dS | j        d         \  }}}| j                                          |r\|| j        z   t          j                    z
  }|dk    r8t          j	        |           || j        z   t          j                    z
  }|dk    8| j
        5  t          | j                  dk    r<| j        d         d         |u r'| j                                         |cddd           S ddd           n# 1 swxY w Y   )zwRemove and return an element from the queue, or this queue has been
        closed raise the Closed exception.
        Tr   N)r   r   lenr   r   waitr#   r   r!   sleepr   popleft)r   headinsert_timer   	time_lefts        r   getzDelayedQueue.get'   s   	 O##%%%dk""a'''$$&&& dk""a''' | '')))t'+{1~$D+uO##%%%  K'$.849;;F	!mmJy))) +dn <ty{{ JI  !mm
     t{##a''DKN1,=,E,EK'')))                                             )	 s   #AFFF	predicateCallable[[T], bool]c                    | j         5  t          | j                  D ]*\  }^}} ||          r| j        |= |c cddd           S +	 ddd           n# 1 swxY w Y   dS )z_Remove and return the first items for which predicate is True,
        ignoring delay.
        N)r   	enumerater   )r   r1   ielem_s        r   removezDelayedQueue.removeD   s     Z 	  	 !*4;!7!7    :D19T??  AKK		  	  	  	  	  	  	  	   	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 
 ts   2AAAAN)r   r   r   r   )r   r   r   r   r   r   )r   r   )r   r'   )r1   r2   r   r'   )__name__
__module____qualname__r   r$   r&   r0   r8    r   r   r
   r
      s            05      " " " "       :	 	 	 	 	 	r   r
   )__doc__
__future__r   r   r!   collectionsr   typingr   r   r   r   r
   r<   r   r   <module>rA      s    
 # " " " " "            - - - - - - - - - -GCLL= = = = =71: = = = = =r   