o
    *ªZh·  ã                   @   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   úP/var/www/html/lang_env/lib/python3.10/site-packages/tqdm/contrib/utils_worker.pyÚ__init__   s   zMonoWorker.__init__c              
   O   s¨   | j }t|ƒ|jkr#| ¡ }| ¡ s#t|ƒr| ¡ }| ¡  | |¡ z| jj	|g|¢R i |¤Ž}W n t
yL } zt t|ƒ¡ W Y d}~dS d}~ww | |¡ |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    
