
    e`                     \    d dl mZmZ d dlZd dlZd dlZd dlmZ d Z G d de	          Z
dS )    )divisionabsolute_importN)default_timerc                     t          | d          \  }}t          |d          \  }}|rd                    |||          S |rd                    ||          S d                    |          S )zFormat seconds into a human readable form.

    >>> format_time(10.4)
    '10.4s'
    >>> format_time(1000.4)
    '16min 40.4s'
    <   z {0:2.0f}hr {1:2.0f}min {2:4.1f}sz{0:2.0f}min {1:4.1f}sz	{0:4.1f}s)divmodformat)tmshs       4lib/python3.11/site-packages/conda_pack/_progress.pyformat_timer   	   sx     !R==DAq!R==DAq %188AqAAA	
 %&--a333!!!$$$    c                   8    e Zd ZdZddZd Zd Zd Zd	 Zd
 Z	dS )progressbara  A simple progressbar for iterables.

    Displays a progress bar showing progress through an iterable.

    Parameters
    ----------
    iterable : iterable
        The object to iterate over.
    width : int, optional
        Width of the bar in characters.
    enabled : bool, optional
        Whether to log progress. Useful for turning off progress reports
        without changing your code. Default is True.
    file : file, optional
        Where to log progress. Default is ``sys.stdout``.

    Example
    -------
    >>> with progressbar(iterable) as itbl:  # doctest: +SKIP
    ...     for i in itbl:
    ...         do_stuff(i)
    [########################################] | 100% Completed | 5.2 s
    (   TNc                     || _         d| _        t          |          dz   | _        || _        || _        |t          j        n|| _        d S )Nr      )		_iterable_ndonelen_ntotal_width_enabledsysstdout_file)selfiterablewidthenabledfiles        r   __init__zprogressbar.__init__3   sE    !8}}q(#'<SZZT


r   c                     | j         r^t                      | _        d| _        t	          j        | j                  | _        d| j        _        | j        	                                 | S )NT)target)
r   r   _start_time_running	threadingThread_timer_func_timerdaemonstartr   s    r   	__enter__zprogressbar.__enter__;   sZ    = 	 ,D DM#*$2BCCCDK!%DKKr   c                 
   | j         r{d| _        | j                                         || xj        dz  c_        |                                  | j                            d           | j                                         d S d S )NFr   
)	r   r(   r,   joinr   _update_barr   writeflush)r   typevalue	tracebacks       r   __exit__zprogressbar.__exit__E   s    = 	!DMK|q JT"""J	 	r   c              #   F   K   | j         D ]}| xj        dz  c_        |V  d S )Nr   )r   r   )r   is     r   __iter__zprogressbar.__iter__O   s<       	 	AKK1KKGGGG	 	r   c                 v    | j         r1|                                  t          j        d           | j         /d S d S )Ng?)r(   r4   timesleepr/   s    r   r+   zprogressbar._timer_funcT   sK    m 	JsOOO m 	 	 	 	 	r   c                    t                      | j        z
  }| j        r| j        | j        z  nd}dt	          | j        |z            z  }t	          d|z            }t          |          }d                    || j        ||          }	 | j        	                    |           | j        
                                 d S # t          $ r Y d S w xY w)Nr   #d   z"[{0:<{1}}] | {2}% Completed | {3})r   r'   r   r   intr   r   r	   r   r5   r6   
ValueError)r   elapsedfracbarpercentmsgs         r   r4   zprogressbar._update_barY   s    //D$44/3|Bdl**Cd*+++cDj//g&&3::3;BGM M	JS!!!J 	 	 	DD	s   3B= =
C
C)r   TN)
__name__
__module____qualname____doc__r$   r0   r:   r=   r+   r4    r   r   r   r      s}         .: : : :      
  
    r   r   )
__future__r   r   r   r)   r?   timeitr   r   objectr   rO   r   r   <module>rS      s    0 0 0 0 0 0 0 0 



                 % % %$J J J J J& J J J J Jr   