#!/usr/bin/python
import sys
import time
from progressbar import (
ETA,
AdaptiveETA,
AnimatedMarker,
Bar,
BouncingBar,
Counter,
FileTransferSpeed,
FormatLabel,
Percentage,
ProgressBar,
ReverseBar,
RotatingMarker,
SimpleProgress,
Timer,
UnknownLength,
)
examples = []
def example(fn):
try:
name = 'Example %d' % int(fn.__name__[7:])
except Exception:
name = fn.__name__
def wrapped():
try:
sys.stdout.write(f'Running: {name}\n')
fn()
sys.stdout.write('\n')
except KeyboardInterrupt:
sys.stdout.write('\nSkipping example.\n\n')
examples.append(wrapped)
return wrapped
@example
def example0() -> None:
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() -> None:
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() -> None:
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() -> None:
widgets = [Bar('>'), ' ', ETA(), ' ', ReverseBar(' None:
pbar = ProgressBar(widgets=['Working: ', AnimatedMarker()])
for _i in pbar(i for i in range(50)):
time.sleep(0.08)
@example
def example10() -> None:
widgets = ['Processed: ', Counter(), ' lines (', Timer(), ')']
pbar = ProgressBar(widgets=widgets)
for _i in pbar(i for i in range(150)):
time.sleep(0.1)
@example
def example11() -> None:
widgets = [FormatLabel('Processed: %(value)d lines (in: %(elapsed)s)')]
pbar = ProgressBar(widgets=widgets)
for _i in pbar(i for i in range(150)):
time.sleep(0.1)
@example
def example12() -> None:
widgets = ['Balloon: ', AnimatedMarker(markers='.oO@* ')]
pbar = ProgressBar(widgets=widgets)
for _i in pbar(i for i in range(24)):
time.sleep(0.3)
@example
def example13() -> None:
# You may need python 3.x to see this correctly
try:
widgets = ['Arrows: ', AnimatedMarker(markers='')]
pbar = ProgressBar(widgets=widgets)
for _i in pbar(i for i in range(24)):
time.sleep(0.3)
except UnicodeError:
sys.stdout.write('Unicode error: skipping example')
@example
def example14() -> None:
# You may need python 3.x to see this correctly
try:
widgets = ['Arrows: ', AnimatedMarker(markers='')]
pbar = ProgressBar(widgets=widgets)
for _i in pbar(i for i in range(24)):
time.sleep(0.3)
except UnicodeError:
sys.stdout.write('Unicode error: skipping example')
@example
def example15() -> None:
# You may need python 3.x to see this correctly
try:
widgets = ['Wheels: ', AnimatedMarker(markers='')]
pbar = ProgressBar(widgets=widgets)
for _i in pbar(i for i in range(24)):
time.sleep(0.3)
except UnicodeError:
sys.stdout.write('Unicode error: skipping example')
@example
def example16() -> None:
widgets = [FormatLabel('Bouncer: value %(value)d - '), BouncingBar()]
pbar = ProgressBar(widgets=widgets)
for _i in pbar(i for i in range(180)):
time.sleep(0.05)
@example
def example17() -> None:
widgets = [
FormatLabel('Animated Bouncer: value %(value)d - '),
BouncingBar(marker=RotatingMarker()),
]
pbar = ProgressBar(widgets=widgets)
for _i in pbar(i for i in range(180)):
time.sleep(0.05)
@example
def example18() -> None:
widgets = [Percentage(), ' ', Bar(), ' ', ETA(), ' ', AdaptiveETA()]
pbar = ProgressBar(widgets=widgets, maxval=500)
pbar.start()
for i in range(500):
time.sleep(0.01 + (i < 100) * 0.01 + (i > 400) * 0.9)
pbar.update(i + 1)
pbar.finish()
@example
def example19() -> None:
pbar = ProgressBar()
for _i in pbar([]):
pass
pbar.finish()
@example
def example20() -> None:
"""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')