o
    Œõ±j¯  ã                   @   sJ   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ƒZ
d
S )z,
IO/concurrency helpers for `tqdm.contrib`.
é    )Údeque)ÚThreadPoolExecutoré   )Útqdmzgithub.com/Ú	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   úŒ/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/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   ÚrunningÚ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__r   r   r   r   r   Ú<module>   s    
