A progress tracker with methods for throughput, ETA and update notification
Project description
A progress tracker with methods for throughput, ETA and update notification.
Class CheckPoint
MRO: builtins.tuple
CheckPoint(time, position)
Class Progress
A progress counter to track task completion with various utility methods.
P = Progress(name="example") P #doctest: +ELLIPSIS Progress(name='example',start=0,position=0,start_time=...,thoughput_window=None,total=None):[CheckPoint(time=..., position=0)] P.advance(5) P #doctest: +ELLIPSIS Progress(name='example',start=0,position=5,start_time=...,thoughput_window=None,total=None):[CheckPoint(time=..., position=0), CheckPoint(time=..., position=5)] P.total = 100 P #doctest: +ELLIPSIS Progress(name='example',start=0,position=5,start_time=...,thoughput_window=None,total=100):[CheckPoint(time=..., position=0), CheckPoint(time=..., position=5)]
A Progress instance has an attribute notify_update
which
is a set of callables. Whenever the position is updates, each
of these will be called with the Progress instance and the
latest CheckPoint.
Progress objects also make a small pretense of being an integer.
The expression int(progress)
returns the current position,
and += and -= adjust the position.
This is convenient for coding, but importantly it is also important for discretionary use of a Progress with some other object. If you want to make a lightweight Progress capable class you can set a position attribute to an int and manipulate it carefully using += and -= entirely. If you decide to incur the cost of maintaining a Progress object you can slot it in:
# initial setup with just an int
my_thing.amount = 0
# later, or on some option, use a Progress instance
my_thing.amount = Progress(my_thing.amount)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.