Source code for bitmath.integrations.bmprogressbar

import bitmath
import progressbar.widgets


[docs] class BitmathFileTransferSpeed(progressbar.widgets.Widget): """Widget for showing the transfer speed (useful for file transfers).""" __slots__ = ('system', 'format') def __init__(self, system=bitmath.NIST, format="{value:.2f} {unit}/s"): self.system = system self.format = format def update(self, pbar): """Updates the widget with the current NIST/SI speed. Basically, this calculates the average rate of update and figures out how to make a "pretty" prefix unit""" if pbar.seconds_elapsed < 2e-6 or pbar.currval < 2e-6: scaled = bitmath.Byte() else: speed = pbar.currval / pbar.seconds_elapsed scaled = bitmath.Byte(speed).best_prefix(system=self.system) return scaled.format(self.format)