Файловый менеджер - Редактировать - /home/digitalm/venv/lib/python3.7/site-packages/watchdog/utils/__pycache__/delayed_queue.cpython-37.pyc
Назад
B �P�g � @ sh d dl mZ d dlZd dlZd dlmZ d dlmZmZm Z m Z mZmZ ed�Z G dd� de e �ZdS )� )�annotationsN)�deque)�Callable�Deque�Generic�Optional�Tuple�TypeVar�Tc @ sN e Zd Zdd� Zddddd�dd �Zd d� Zdd �dd�Zddd�dd�ZdS )�DelayedQueuec C s0 || _ t�� | _t�| j�| _t� | _d| _d S )NF) � delay_sec� threading�Lock�_lock� Condition� _not_emptyr �_queue�_closed)�self�delay� r �R/home/digitalm-up/venv/lib/python3.7/site-packages/watchdog/utils/delayed_queue.py�__init__ s zDelayedQueue.__init__Fr �bool�None)�elementr �returnc C s8 | j �� | j�|t�� |f� | j�� | j �� dS )zAdd element to queue.N)r �acquirer �append�timer �notify�release)r r r r r r �put! s zDelayedQueue.putc C s( d| _ | j�� | j�� | j�� dS )z4Close queue, indicating no more items will be added.TN)r r r r r! )r r r r �close( s zDelayedQueue.closezOptional[T])r c C s� x�| j �� x"t| j�dkr.| js.| j �� qW | jrD| j �� dS | jd \}}}| j �� |r�|| j t�� }x(|dkr�t� |� || j t�� }qvW | j �4 t| j�dkr�| jd d |kr�| j�� |S W dQ R X qW dS )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 �headZinsert_timer Z time_leftr r r �get0 s$ zDelayedQueue.getzCallable[[T], bool])� predicater c C sH | j �8 x0t| j�D ]"\}\}}}||�r| j|= |S qW W dQ R X dS )zVRemove and return the first items for which predicate is True, ignoring delay.N)r � enumerater )r r* �i�elem�tr r r r �removeM s zDelayedQueue.removeN)F)�__name__� __module__�__qualname__r r"