U
    a+d                     @   sL   d 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`.
    )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   =/tmp/pip-unpacked-wheel-tf4cttdx/tqdm/contrib/utils_worker.py__init__   s    zMonoWorker.__init__c              
   O   s   | j }t||jkrF| }| sFt|r<| }|  || z| jj	|f||}W n0 t
k
r } ztt| W 5 d}~X Y nX || |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
   ZrunningZwaitinger   r   r   r      s    
 
zMonoWorker.submitN)__name__
__module____qualname____doc__r   r   r   r   r   r   r      s   N)r#   collectionsr   concurrent.futuresr   autor   r   
__author____all__objectr   r   r   r   r   <module>   s   
