a
    Lªf·  ã                   @   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   úR/var/www/ai-form-bot/venv/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$   Úcollectionsr   Úconcurrent.futuresr   Úautor   r   Ú
__author__Ú__all__Úobjectr   r   r   r   r   Ú<module>   s   
