
    +h
                     ^    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
e      Z	d Z
e	Ze
Zy)z
Asynchronous progressbar 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                   j     e Zd ZdZd
 fd	Zd Zd Zd Zeddddd       Z	eddddd	       Z
 xZS )r   z0
    Asynchronous-friendly version of tqdm.
    Nc                 $   t        t        | 
  |g|i | d| _        |ot	        |d      r|j
                  | _        d| _        y t	        |d      r|j                  | _        y t        |      | _	        | j                  j                  | _        y y )NF	__anext__T__next__)
superr   __init__iterable_awaitablehasattrr   iterable_nextr   iteriterable_iterator)selfiterableargskwargs	__class__s       ?/var/www/html/venv/lib/python3.12/site-packages/tqdm/asyncio.pyr   ztqdm_asyncio.__init__   s    lD*8EdEfE"'x-%-%7%7"*.':.%-%6%6")-h&%)%;%;%D%D"      c                     | S N )r   s    r   	__aiter__ztqdm_asyncio.__aiter__$   s    r   c                   K   	 | j                   r| j                          d {   }n| j                         }| j                          |S 7 '# t        $ r | j	                          t
        t        $ r | j	                           w xY wwr   )r   r   updateStopIterationcloseStopAsyncIterationBaseException)r   ress     r   r   ztqdm_asyncio.__anext__'   sy     	&& ..00((*KKMJ	 1
  	%JJL$$ 	JJL	s,   B	A A&A 
B	A 9BB	c                 :     | j                   j                  |i |S r   )r   send)r   r   r   s      r   r(   ztqdm_asyncio.send6   s    !t}}!!42622r   looptimeouttotalc             +      K   |t        |      }i }t        dd dk  r||d<    | t        j                  |fd|i|fd|i|E d{    y7 w)z5
        Wrapper for `asyncio.as_completed`.
        N   )   
   r*   r+   r,   )lenr   asyncioas_completed)clsfsr*   r+   r,   tqdm_kwargsr   s          r   r3   ztqdm_asyncio.as_completed9   sl     
 =GEg%!F6Nw++BJJ6J 3"3&13 	3 	3s   AAAAc                  K   d }t        |      D cg c]  \  }} |||       }	}} | j                  |	f|||d|D cg c]  }| d{    }
}t        |
      D cg c]  \  }}|	 c}}S c c}}w 7 ,c c}w c c}}w w)z/
        Wrapper for `asyncio.gather`.
        c                 &   K   | | d {   fS 7 wr   r   )ifs     r   wrap_awaitablez+tqdm_asyncio.gather.<locals>.wrap_awaitableK   s     Ag:gs   r)   N)	enumerater3   sorted)r4   r*   r+   r,   r5   r6   r;   r9   r:   ifsr&   _s               r   gatherztqdm_asyncio.gatherF   s     
	 1:">1~a#>> 0 0 0 !M47<!M@K!M N1Qww N N$Sk*da** ? N*s?   BA4B
A<A:
A<B$B0
B:A<<Br   )__name__
__module____qualname____doc__r   r   r   r(   classmethodr3   r@   __classcell__)r   s   @r   r   r      sS    E3 &*D 
3 
3 $($d 
+ 
+r   r   c                  &    t        t        |  fi |S )zE
    A shortcut for `tqdm.asyncio.tqdm(range(*args), **kwargs)`.
    )r   range)r   r   s     r   r   r   T   s     t///r   )rD   r2   sysr   stdr   std_tqdm
__author____all__r   r   r	   r   r   r   <module>rN      sD      !k]+

7>+8 >+B0 	r   