a
    -=ic                     @   sX   d Z ddlmZ ddlmZ ddlmZ ddlmZ	 ddgiZ
d	gZG d
d	 d	eZdS )z,
IO/concurrency helpers for `tqdm.contrib`.
    )absolute_import)deque)ThreadPoolExecutor   )tqdmzgithub.com/Z	casperdcl
MonoWorkerc                   @   s    e Zd ZdZdd Zdd ZdS )r   z
    Supports one running task and one waiting task.
    The waiting task is the most recent submitted (others are discarded).
    c                 C   s   t dd| _tg d| _d S )N   )max_workersr   )r   poolr   futures)self r   j/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/lib/python3.9/site-packages/tqdm/contrib/utils_worker.py__init__   s    zMonoWorker.__init__c              
   O   s   | j }t||jkrF| }| sFt|r<| }|  || z| jj	|g|R i |}W n2 t
y } ztt| W Y d}~nd}~0 0 || |S dS )z;`func(*args, **kwargs)` may replace currently waiting task.N)r   lenmaxlenpopleftdonepopcancel
appendleftr
   submit	Exception	tqdm_autowritestrappend)r   funcargskwargsr   runningZwaitinger   r   r   r      s    
$
zMonoWorker.submitN)__name__
__module____qualname____doc__r   r   r   r   r   r   r      s   N)r%   
__future__r   collectionsr   concurrent.futuresr   autor   r   
__author____all__objectr   r   r   r   r   <module>   s   
