o
    Ne                     @   sp   d dl mZ d dl mZ d dl mZ d dlZd dlZd dlZd dlZd dl	Z	d dl
mZ g ZG dd deZdS )    )absolute_import)division)print_functionN
namedtuplec                   @   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 bar N      Tstepc                 C   s   || _ t|tr|dkrtd|  }||kr|n|| _d| _|| _|| _i | _	g | _
|r3t | _d| _|| _t| jdrD| j pRdtjv pRdtjv pRd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_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&   GD:\Projects\ConvertPro\env\Lib\site-packages\paddle/hapi/progressbar.py__init__    s.   
zProgressBar.__init__c                 C   sn   t jdkrddlm} nzddlm} W n   dd }Y | \}}|dkr(|nd}tt|d |d }|S )	N)   r)   r   )get_terminal_sizec                  S   s   t dd} | ddS )Nterminal_sizezcolumns linesP      r   )r+   r&   r&   r'   r*   D   s   

z5ProgressBar._get_max_width.<locals>.get_terminal_sizer,   g333333?2   )r   version_infoshutilr*   Z"backports.shutil_get_terminal_sizeminr   )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$   M   s   
zProgressBar.startc                 C   s   t   }dd }t|D ],\}\}}|dkr8t|ts!t|tjr#|n|g}t|d tjr8dt||f||< q|rC|| j | }nd}|dksM|dkrUd|| jf }	n|dkrcd|d	 | jf }	n	d
|d | jf }	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|  }t|| _
tj| |D ]G\}}|
d| 7 }
t|tr
|n|g}t|D ]-\}}t|ttjtjfr7t|dkr/|
d| 7 }
q|
d| 7 }
q|
d| 7 }
qq| jd ur|| jk r|| j|  }|dkrhd|d |d d |d f }n|dkrxd|d |d f }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rtt| jd }| jd t| d$ || jf }n| jd|  }||
 }
|D ]x\}}|
d| 7 }
t|tr|n|g}|D ]_}t|ttjtjfr;t|dkr3|
d| 7 }
q|
d| 7 }
qt|tjro|jdkro|jtjtjfv rot|d dkre|
d|d  7 }
q|
d|d  7 }
q|
d| 7 }
q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>W   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_floatT   s   
z3ProgressBar.update.<locals>.convert_uint16_to_floatZlossr   r	   z - %.0fs/%sgMbP?z - %.0fms/%sg     @@z - %.0fus/%sg    .A 
z %zd/%d [=>.]z %3dz - %s:z %.4fz %.4ez %si  z%d:%02d:%02d<   z%d:%02dz%dsz
 - ETA: %s    r)   zd/%d)r   	enumerater   listr;   ZndarrayZuint16r   r   r   r   r   r   stdoutwriter   r   log10strfloatr   lenr<   Zfloat64absr4   r   sizeZdtype)r    Zcurrent_numvaluesnowr?   ikvalZtime_per_unitZfpsinfoZprev_total_widthZ	numdigitsZ	bar_charsprogZ
prog_widthvetaZ
eta_formatcountr&   r&   r'   updateQ   s   




	



zProgressBar.update)
__name__
__module____qualname____doc__r   rM   r(   r   r$   r_   r&   r&   r&   r'   r      s    
r   )
__future__r   r   r   r   r   r   numpyr;   r6   collectionsr   __all__objectr   r&   r&   r&   r'   <module>   s   