o
    j|                     @   sZ   d Z ddlZddlmZ ddlmZ ddgiZg dZG d	d
 d
eZ	dd Z
e	Ze
ZdS )z
Asynchronous progress bar decorator for iterators.
Includes a default `range` iterator printing to `stderr`.

Usage:
>>> from tqdm.asyncio import trange, tqdm
>>> async for i in trange(10):
...     ...
    N)version_info   )tqdmzgithub.com/	casperdcl)tqdm_asynciotaranger   trangec                       sh   e Zd ZdZd fdd	Zdd Zdd Zd	d
 ZeddddddZ	edddddddZ
  ZS )r   z0
    Asynchronous-friendly version of tqdm.
    Nc                    s   t  j|g|R i | d| _|d urMt|dr"|j| _d| _d S t|dr6| | _| jj| _d| _d S t|drA|j| _d S t	|| _| jj| _d S d S )NF	__anext__T	__aiter____next__)
super__init__iterable_awaitablehasattrr	   iterable_nextr
   iterable_iteratorr   iter)selfiterableargskwargs	__class__ /root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/tqdm/asyncio.pyr      s   







ztqdm_asyncio.__init__c                 C   s   | S Nr   )r   r   r   r   r
   (   s   ztqdm_asyncio.__aiter__c                    s`   z| j r|  I d H }n|  }|   |W S  ty$   |   t ty/   |    w r   )r   r   updateStopIterationcloseStopAsyncIterationBaseException)r   resr   r   r   r	   +   s   ztqdm_asyncio.__anext__c                 O   s   | j j|i |S r   )r   send)r   r   r   r   r   r   r"   :   s   ztqdm_asyncio.sendlooptimeouttotalc                k   s^    |du r	t |}i }tdd dk r||d< | tj|fd|i|fd|i|E dH  dS )z5
        Wrapper for `asyncio.as_completed`.
        N   )   
   r$   r%   r&   )lenr   asyncioas_completed)clsfsr$   r%   r&   tqdm_kwargsr   r   r   r   r,   =   s   ztqdm_asyncio.as_completedF)r$   r%   r&   return_exceptionsc          	         s`    fddfddt |D }dd | j|f|||d|D I dH }dd t|D S )	z/
        Wrapper for `asyncio.gather`.
        c              
      sF   z| |I d H fW S  t y" } z r| |fW  Y d }~S  d }~ww r   )	Exception)ife)r0   r   r   wrap_awaitableP   s   z+tqdm_asyncio.gather.<locals>.wrap_awaitablec                    s   g | ]	\}} ||qS r   r   ).0r2   r3   )r5   r   r   
<listcomp>X   s    z'tqdm_asyncio.gather.<locals>.<listcomp>c                    s   g | ]}|I d H qS r   r   )r6   r3   r   r   r   r7   Y   s    r#   Nc                 S   s   g | ]\}}|qS r   r   )r6   _r2   r   r   r   r7   [   s    )	enumerater,   sorted)	r-   r$   r%   r&   r0   r.   r/   ifsr!   r   )r0   r5   r   gatherJ   s   ztqdm_asyncio.gatherr   )__name__
__module____qualname____doc__r   r
   r	   r"   classmethodr,   r<   __classcell__r   r   r   r   r      s    r   c                  O   s   t t|  fi |S )zE
    A shortcut for `tqdm.asyncio.tqdm(range(*args), **kwargs)`.
    )r   range)r   r   r   r   r   r   ^   s   r   )r@   r+   sysr   stdr   std_tqdm
__author____all__r   r   r   r   r   r   r   <module>   s    	
K