Source code for progbar

#!/bin/python3
# -*- coding: utf-8 -*-
"""Example usage of the tqdm and progressbar2 modules."""

import sys
from time import sleep

import progressbar
from pytest import mark
from tqdm import tqdm

examples = []

# Testing the progbars is a bit slow, so we'll skip them.
# Comment the following line if testing of progbar.py is required.
pytestmark = mark.skip(reason="Testing progbars takes a long time")


[docs]def example(fn): """Display progress bars.""" def wrapped(): try: sys.stdout.write("Running: %s\n" % fn.__name__) fn() sys.stdout.write("\n") except KeyboardInterrupt: sys.stdout.write("\nSkipping example.\n\n") examples.append(wrapped) return wrapped
@example def example99(): """ Display progress bar using tqdm. >>> example99() True """ for i in tqdm(range(100)): sleep(0.01) return True @example def example0(): """ Display progress bar using tqdm. >>> example0() True """ pbar = progressbar.ProgressBar( widgets=[progressbar.Percentage(), progressbar.Bar()], max_value=100 ).start() for i in range(100): sleep(0.02) pbar.update(i + 1) pbar.finish() return True @example def with_example0(): """ Display progress bar using tqdm. >>> with_example0() True """ with progressbar.ProgressBar(max_value=100) as progress: for i in range(100): sleep(0.02) progress.update(i) return True @example def example1(): """ Display progress bar using tqdm. >>> example1() True """ widgets = [ "Test: ", progressbar.Percentage(), " ", progressbar.Bar(marker=progressbar.RotatingMarker()), " ", progressbar.ETA(), " ", progressbar.FileTransferSpeed(), ] pbar = progressbar.ProgressBar(widgets=widgets, max_value=1000).start() for i in range(100): sleep(0.05) pbar.update(10 * i + 1) pbar.finish() return True @example def with_example1(): """ Display progress bar using tqdm. >>> with_example1() True """ with progressbar.ProgressBar(max_value=100, redirect_stdout=True) as p: for i in range(100): sleep(0.05) p.update(i) return True @example def example2(): """ Display progress bar using tqdm. >>> example2() True """ class CrazyFileTransferSpeed(progressbar.FileTransferSpeed): """ Display progress bar using tqdm. It's bigger between 45 and 80 percent. """ def update(self, pbar): """ Display progress bar using tqdm. >>> update() True """ if 45 < pbar.percentage() < 80: return "Bigger Now " + progressbar.FileTransferSpeed.update(self, pbar) else: return progressbar.FileTransferSpeed.update(self, pbar) widgets = [ CrazyFileTransferSpeed(), " <<<", progressbar.Bar(), ">>> ", progressbar.Percentage(), " ", progressbar.ETA(), ] pbar = progressbar.ProgressBar(widgets=widgets, max_value=1000) # maybe do something pbar.start() for i in range(200): sleep(0.01) pbar.update(5 * i + 1) pbar.finish() return True @example def example3(): """ Display progress bar using tqdm. >>> example3() True """ widgets = [progressbar.Bar(">"), " ", progressbar.ETA(), " ", progressbar.ReverseBar("<")] pbar = progressbar.ProgressBar(widgets=widgets, max_value=1000).start() for i in range(100): sleep(0.01) pbar.update(10 * i + 1) pbar.finish() return True @example def example4(): """ Display progress bar using tqdm. >>> example4() True """ widgets = [ "Test: ", progressbar.Percentage(), " ", progressbar.Bar(marker="0", left="[", right="]"), " ", progressbar.ETA(), " ", progressbar.FileTransferSpeed(), ] pbar = progressbar.ProgressBar(widgets=widgets, max_value=500) pbar.start() for i in range(100, 500 + 1, 50): sleep(0.2) pbar.update(i) pbar.finish() return True @example def example5(): """ Display progress bar using tqdm. >>> example5() True """ pbar = progressbar.ProgressBar(widgets=[progressbar.SimpleProgress()], max_value=17).start() for i in range(17): sleep(0.2) pbar.update(i + 1) pbar.finish() return True @example def example6(): """ Display progress bar using tqdm. >>> example6() True """ pbar = progressbar.ProgressBar().start() for i in range(10): sleep(0.2) pbar.update(i + 1) pbar.finish() return True @example def example7(): """ Display progress bar using tqdm. >>> example7() True """ pbar = progressbar.ProgressBar() # Progressbar can guess max_value automatically. for i in pbar(range(8)): sleep(0.2) return True @example def example8(): """ Display progress bar using tqdm. >>> example8() True """ pbar = progressbar.ProgressBar(max_value=8) # Progressbar can't guess max_value. for i in pbar((i for i in range(8))): sleep(0.2) return True @example def example9(): """ Display progress bar using tqdm. >>> example9() True """ pbar = progressbar.ProgressBar(widgets=["Working: ", progressbar.AnimatedMarker()]) for i in pbar((i for i in range(24))): sleep(0.2) return True @example def example10(): """ Display progress bar using tqdm. >>> example10() True """ widgets = ["Processed: ", progressbar.Counter(), " lines (", progressbar.Timer(), ")"] pbar = progressbar.ProgressBar(widgets=widgets) for i in pbar((i for i in range(15))): sleep(0.2) return True @example def example11(): """ Display progress bar using tqdm. >>> example11() True """ widgets = [progressbar.FormatLabel("Processed: %(value)d lines (in: %(elapsed)s)")] pbar = progressbar.ProgressBar(widgets=widgets) for i in pbar((i for i in range(15))): sleep(0.2) return True @example def example12(): """ Display progress bar using tqdm. >>> example12() True """ widgets = ["Balloon: ", progressbar.AnimatedMarker(markers=".oO@* ")] pbar = progressbar.ProgressBar(widgets=widgets) for i in pbar((i for i in range(24))): sleep(0.1) return True @example def example13(): """ Display progress bar using tqdm. >>> example13() True """ # You may need python 3.x to see this correctly try: widgets = ["Arrows: ", progressbar.AnimatedMarker(markers="←↖↑↗→↘↓↙")] pbar = progressbar.ProgressBar(widgets=widgets) for i in pbar((i for i in range(24))): sleep(0.1) except UnicodeError: sys.stdout.write("Unicode error: skipping example") return True @example def example14(): """ Display progress bar using tqdm. >>> example14() True """ # You may need python 3.x to see this correctly try: widgets = ["Arrows: ", progressbar.AnimatedMarker(markers="◢◣◤◥")] pbar = progressbar.ProgressBar(widgets=widgets) for i in pbar((i for i in range(24))): sleep(0.1) except UnicodeError: sys.stdout.write("Unicode error: skipping example") return True @example def example15(): """ Display progress bar using tqdm. >>> example15() True """ # You may need python 3.x to see this correctly try: widgets = ["Wheels: ", progressbar.AnimatedMarker(markers="◐◓◑◒")] pbar = progressbar.ProgressBar(widgets=widgets) for i in pbar((i for i in range(24))): sleep(0.1) except UnicodeError: sys.stdout.write("Unicode error: skipping example") return True @example def example16(): """ Display progress bar using tqdm. >>> example16() True """ widgets = [progressbar.FormatLabel("Bouncer: value %(value)d - "), progressbar.BouncingBar()] pbar = progressbar.ProgressBar(widgets=widgets) for i in pbar((i for i in range(25))): sleep(0.2) return True @example def example17(): """ Display progress bar using tqdm. >>> example17() True """ widgets = [ progressbar.FormatLabel("Animated Bouncer: value %(value)d - "), progressbar.BouncingBar(marker=progressbar.RotatingMarker()), ] pbar = progressbar.ProgressBar(widgets=widgets) for i in pbar((i for i in range(25))): sleep(0.2) return True # @example # def with_example18(): # """Display progress bar using tqdm.""" # with progressbar.ProgressBar(max_value=10, term_width=20, left_justify=False) as \ # progress: # assert progress._env_size() is not None # for i in range(10): # progress.update(i) @example def with_example19(): """ Display progress bar using tqdm. >>> example19() True """ with progressbar.ProgressBar(max_value=1) as progress: try: progress.update(2) except ValueError: pass return True @example def with_example20(): """ Display progress bar using tqdm. >>> example20() True """ progress = progressbar.ProgressBar(max_value=1) try: progress.update(1) except RuntimeError: pass return True @example def with_example21a(): """ Display progress bar using tqdm. >>> example21a() True """ with progressbar.ProgressBar(max_value=1, redirect_stdout=True) as progress: print("", sys.stdout) progress.update(0) return True @example def with_example21b(): """ Display progress bar using tqdm. >>> example21b() True """ with progressbar.ProgressBar(max_value=1, redirect_stderr=True) as progress: print("", sys.stderr) progress.update(0) return True @example def with_example22(): """ Display progress bar using tqdm. >>> example22() True """ try: with progressbar.ProgressBar(max_value=-1) as progress: progress.start() except ValueError: pass return True @example def example23(): """ Display progress bar using tqdm. >>> example23() True """ widgets = [progressbar.BouncingBar(marker=progressbar.RotatingMarker())] with progressbar.ProgressBar(widgets=widgets, max_value=20, term_width=10) as progress: for i in range(20): sleep(0.1) progress.update(i) widgets = [progressbar.BouncingBar(marker=progressbar.RotatingMarker(), fill_left=False)] with progressbar.ProgressBar(widgets=widgets, max_value=20, term_width=10) as progress: for i in range(20): sleep(0.1) progress.update(i) return True @example def example24(): """ Display progress bar using tqdm. >>> example24() True """ pbar = progressbar.ProgressBar( widgets=[progressbar.Percentage(), progressbar.Bar()], max_value=10 ).start() for i in range(10): # do something sleep(0.1) pbar += 1 pbar.finish() return True @example def example25(): """ Display progress bar using tqdm. >>> example25() True """ widgets = [ "Test: ", progressbar.Percentage(), " ", progressbar.Bar(marker=progressbar.RotatingMarker()), " ", progressbar.ETA(), " ", progressbar.FileTransferSpeed(), ] pbar = progressbar.ProgressBar(widgets=widgets, max_value=1000, redirect_stdout=True).start() for i in range(100): # do something pbar += 10 pbar.finish() return True @example def example26(): """ Display progress bar using tqdm. >>> example26() True """ widgets = [ progressbar.Percentage(), " ", progressbar.Bar(), " ", progressbar.ETA(), " ", progressbar.AdaptiveETA(), " ", progressbar.AdaptiveTransferSpeed(), ] pbar = progressbar.ProgressBar(widgets=widgets, max_value=500) pbar.start() for i in range(500): sleep(0.01 + (i < 100) * 0.0001 + (i > 400) * 0.009) pbar.update(i + 1) pbar.finish() return True @example def example27(): """ Display progress bar using tqdm. >>> example27() True """ # Testing AdaptiveETA when the value doesn't actually change pbar = progressbar.ProgressBar( widgets=[progressbar.AdaptiveETA(), progressbar.AdaptiveTransferSpeed()], max_value=2, poll=0.0001, ) pbar.start() pbar.update(1) sleep(0.01) pbar.update(1) pbar.finish() return True @example def example28(): """ Display progress bar using tqdm. >>> example28() True """ # Testing using progressbar as an iterator with a max value pbar = progressbar.ProgressBar() for n in pbar(iter(range(100)), 100): # iter range is a way to get an iterator in both python 2 and 3 pass return True @example def example29(): """ Display progress bar using tqdm. >>> example29() True """ widgets = [ "Test: ", progressbar.Percentage(), " | ", progressbar.ETA(), " | ", progressbar.AbsoluteETA(), ] pbar = progressbar.ProgressBar(widgets=widgets, maxval=500).start() for i in range(500): sleep(0.01) pbar.update(i + 1) pbar.finish() return True
[docs]def run(): """Display progress bar examples.""" for example in examples: example() return True
[docs]def test(): """Run tests.""" assert run() is True
if __name__ == "__main__": try: run() except KeyboardInterrupt: sys.stdout("\nQuitting examples.\n")