U
    fw%Z		  ã                   @   s&   d dl Z d dlZG dd„ dejƒZdS )é    Nc                   @   s6   e Zd ZdZdZddd„Zdd„ Zdd	„ Zd
d„ ZdS )Ú	ByteSpeedz%Display data size in bytes, KiB, etc.FNc                 C   s&   || _ |d krd nt|ƒ| _g | _d S )N)ÚnameÚfloatÚ	_durationÚ_data_points)Úselfr   Úduration© r	   ú5/usr/lib/python3/dist-packages/ttystatus/bytespeed.pyÚ__init__   s    zByteSpeed.__init__c                 C   s   t   ¡ S )z5Wrapper around time.time for unit tests to overrride.)Útime)r   r	   r	   r
   Únow!   s    zByteSpeed.nowc                 C   sŒ   d}t | jƒdk rdS | jd \}}| jd \}}|| }|  ¡ | }|| }	|D ]0\}
}}|	|
krRd|t|	ƒt|
ƒ |f   S qRd|	 S )N))l        é   zTiB/s)i   @r   zGiB/s)i   r   zMiB/s)i   é   zKiB/sr   z0 B/sr   éÿÿÿÿz%.*f %sz%.0f B/s)Úlenr   r   r   )r   ÚwidthZunitsZoldest_bytesZstartedZlatest_bytesZdummyÚ	num_bytesr   ZspeedZfactorZdecimalsZunitr	   r	   r
   Úrender%   s    þzByteSpeed.renderc                 C   sr   || j  }|  ¡ }| j ||f¡ | jd krHt| jƒdkrn| jdd…= n&|| j }| jd d |k rn| jd= qRd S )Nr   r   r   r   )r   r   r   Úappendr   r   )r   Zmasterr   r   Úcutoffr	   r	   r
   Úupdate=   s    


zByteSpeed.update)N)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__Zstatic_widthr   r   r   r   r	   r	   r	   r
   r      s   
r   )r   Z	ttystatusZWidgetr   r	   r	   r	   r
   Ú<module>   s   