#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
import time
from progressbar import AnimatedMarker, Bar, BouncingBar, Counter, ETA, \
AdaptiveETA, FileTransferSpeed, FormatLabel, Percentage, \
ProgressBar, ReverseBar, RotatingMarker, \
SimpleProgress, Timer, UnknownLength
examples = []
def example(fn):
try: name = 'Example %d' % int(fn.__name__[7:])
except: name = fn.__name__
def wrapped():
try:
sys.stdout.write('Running: %s\n' % name)
fn()
sys.stdout.write('\n')
except KeyboardInterrupt:
sys.stdout.write('\nSkipping example.\n\n')
examples.append(wrapped)
return wrapped
@example
def example0():
pbar = ProgressBar(widgets=[Percentage(), Bar()], maxval=300).start()
for i in range(300):
time.sleep(0.01)
pbar.update(i+1)
pbar.finish()
@example
def example1():
widgets = ['Test: ', Percentage(), ' ', Bar(marker=RotatingMarker()),
' ', ETA(), ' ', FileTransferSpeed()]
pbar = ProgressBar(widgets=widgets, maxval=10000).start()
for i in range(1000):
# do something
pbar.update(10*i+1)
pbar.finish()
@example
def example2():
class CrazyFileTransferSpeed(FileTransferSpeed):
"""It's bigger between 45 and 80 percent."""
def update(self, pbar):
if 45 < pbar.percentage() < 80:
return 'Bigger Now ' + FileTransferSpeed.update(self,pbar)
else:
return FileTransferSpeed.update(self,pbar)
widgets = [CrazyFileTransferSpeed(),' ',
Percentage(),' ', ETA()]
pbar = ProgressBar(widgets=widgets, maxval=10000)
# maybe do something
pbar.start()
for i in range(2000):
# do something
pbar.update(5*i+1)
pbar.finish()
@example
def example3():
widgets = [Bar('>'), ' ', ETA(), ' ', ReverseBar(' 400) * 0.9)
pbar.update(i + 1)
pbar.finish()
@example
def example19():
pbar = ProgressBar()
for i in pbar([]):
pass
pbar.finish()
@example
def example20():
"""Widgets that behave differently when length is unknown"""
widgets = ['[When length is unknown at first]',
' Progress: ', SimpleProgress(),
', Percent: ', Percentage(),
' ', ETA(),
' ', AdaptiveETA()]
pbar = ProgressBar(widgets=widgets, maxval=UnknownLength)
pbar.start()
for i in range(20):
time.sleep(0.5)
if i == 10:
pbar.maxval = 20
pbar.update(i + 1)
pbar.finish()
if __name__ == '__main__':
try:
for example in examples: example()
except KeyboardInterrupt:
sys.stdout.write('\nQuitting examples.\n')