o
    pi                     @   s>   d dl Z d dlZd dlZd dlZd dlZg ZG dd dZdS )    Nc                   @   sD   e Zd ZdZddddejdfddZd	d
 Zdd Zi fddZ	dS )ProgressBarzprogress barN      Tstepc                 C   s   || _ t|tr|dkrtd|  }t||| _d| _|| _|| _	i | _
g | _|r0t | _d| _|| _t| j	drA| j	 pOdtjv pOdtjv pOdtjv | _d S )Nr   z#num should be None or integer (> 0)isattyZ	ipykernelposixZPYCHARM_HOSTED)_num
isinstanceint	TypeError_get_max_widthmin_width_total_width_verbosefileZ_valuesZ_values_ordertime_start_last_updatenamehasattrr   sysmodulesosenviron_dynamic_display)selfnumwidthverbosestartr   r   	max_width r"   ^/home/app/PaddleOCR-VL/.venv_paddleocr/lib/python3.10/site-packages/paddle/hapi/progressbar.py__init__   s*   	
zProgressBar.__init__c                 C   s@   ddl m} | \}}|dkr|nd}tt|d |d }|S )Nr   )get_terminal_sizeP   g333333?2   )shutilr%   r   r
   )r   r%   terminal_width_r!   r"   r"   r#   r   ;   s
   
zProgressBar._get_max_widthc                 C   s   | j   t | _d S )N)r   flushr   r   )r   r"   r"   r#   r    C   s   
zProgressBar.startc                 C   sd  t   }dd }t|D ]&\}\}}|dkr2t|tr |d }n|}t|tjr2dt||f||< q|r=|| j | }	nd}	|	dksG|	dkrRd|	dd| j }
n|	d	krcd|	d
 dd| j }
nd|	d dd| j }
d}| jdkr| j	}| j
rtjd|  tjd ntjd | jd urtt| jd }| jd t| d || jf }t|| j }t| j| }|dkr|d|d  7 }|| jk r|d7 }n|d7 }|d| j|  7 }|d7 }n	| j d|d}t|| _	tj| |D ]N\}}|d| d7 }t|tr|n|g}t|D ]2\}}t|ttjtjfrBt|d	kr8|d|d7 }q|d|d7 }q|d| 7 }qq| jd ur|| jk r|	| j|  }|dkry|d  d|d d dd|d d}n|dkr|d  d|d d}n| d }|d!| 7 }||
7 }|  j	t|7  _	|| j	kr|d|| j	  7 }| jd ur|| jkr|d7 }| jd u r|d7 }tj| tj  || _d S | jd"ks| jd#kr| jrtt| jd }| jd t| d$ || jf }n	| j d|d}|| }|D ]\}}|d| d7 }t|tr+|n|g}|D ]h}t|ttjtjfrXt|d	krN|d|d7 }q0|d|d7 }q0t|tjr|jdkr|jtjtjfv rt| d	kr|d| d7 }q0|d| d7 }q0|d| 7 }q0q||
7 }|d7 }tj| tj  d S d S )%Nc                 S   s4   t | } t jdd t jgd| j}t || jS )Nc                 S   s   t dt d| d> d S )Nz<fz<I   r   )structunpackpack)xr"   r"   r#   <lambda>M   s    zEProgressBar.update.<locals>.convert_uint16_to_float.<locals>.<lambda>)Zotypes)npZasarrayZ	vectorizefloat32ZflatZreshapeshape)Zin_listoutr"   r"   r#   convert_uint16_to_floatJ   s   
z3ProgressBar.update.<locals>.convert_uint16_to_floatZlossr   r   z - z.0fzs/gMbP?g     @@zms/g    .Azus/ 
z %zd/%d [=>.] 3:z.4fz.4ei  <   Z02sz - ETA:       zd/%d)r   	enumerater	   listr2   Zuint16r   r   r   r   r   r   stdoutwriter   r
   log10strfloatr   lenr3   Zfloat64absr+   r   ZndarraysizeZdtypeitem)r   Zcurrent_numvaluesnowr6   ikvalZ
scalar_valZtime_per_unitZfpsinfoZprev_total_widthZ	numdigitsZ	bar_charsprogZ
prog_widthvetaZ
eta_formatcountr"   r"   r#   updateG   s   






	
&




zProgressBar.update)
__name__
__module____qualname____doc__r   rH   r$   r   r    r[   r"   r"   r"   r#   r      s    
r   )r   r-   r   r   numpyr2   __all__r   r"   r"   r"   r#   <module>   s   