Skip to main content

A progress tracker with methods for throughput, ETA and update notification

Project description

Release 20190812: New OverProgress class which is a composite of a set of subsidiary Progress instances. Assorted other small updates.

A progress tracker with methods for throughput, ETA and update notification.

Class BaseProgress

The base class for Progress and OverProcess with various common methods.

Note that durations are in seconds and that absolute time is in seconds since the UNIX epoch (the basis of time.time()).

Class CheckPoint

MRO: builtins.tuple
CheckPoint(time, position)

Class OverProgress

MRO: BaseProgress
A Progress-like class computed from a set of subsidiary Processes.

Example:

>>> P = OverProgress(name="over")
>>> P1 = Progress(name="progress1", position=12)
>>> P1.total = 100
>>> P1.advance(7)
>>> P2 = Progress(name="progress2", position=20)
>>> P2.total = 50
>>> P2.advance(9)
>>> P.add(P1)
>>> P.add(P2)
>>> P1.total
100
>>> P2.total
50
>>> P.total
150
>>> P1.start
12
>>> P2.start
20
>>> P.start
0
>>> P1.position
19
>>> P2.position
29
>>> P.position
16

Class Progress

MRO: BaseProgress
A progress counter to track task completion with various utility methods.

Example:

>>> 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 updated, 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 useful 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)

Method Progress.__init__(self, position=None, name=None, start=None, start_time=None, throughput_window=None, total=None)

Initialise the Progesss object.

Parameters:

  • position: initial position, default 0.
  • name: optional name for this instance.
  • start: starting position of progress range, default from position.
  • start_time: start time of the process, default now.
  • throughput_window: length of throughput time window in seconds, default None.
  • total: expected completion value, default None.

Release Log

Release 20190812: New OverProgress class which is a composite of a set of subsidiary Progress instances. Assorted other small updates.

Release 20190220: Progress: be somewhat like an int. New status() method returning a convenient one line progress status report.

Release 20180703.2: Progress: make .total into a property in order to fire the update notifications.

Release 20180703.1: Progress: additions and changes to API: new .ratio, .elapsed_time, rename .projected to .remaining_time.

Release 20180703: Initial release of cs.progress.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cs.progress-20190812.tar.gz (7.0 kB view details)

Uploaded Source

File details

Details for the file cs.progress-20190812.tar.gz.

File metadata

  • Download URL: cs.progress-20190812.tar.gz
  • Upload date:
  • Size: 7.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/39.0.1 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.7.4

File hashes

Hashes for cs.progress-20190812.tar.gz
Algorithm Hash digest
SHA256 7a4f762a99f8311d3ef98b64d042d42ebd9b341fb691140f72331736f810ae35
MD5 2f2fa8634b00122a1d48aef6ba2ba140
BLAKE2b-256 9c7fac13cf9f3d60b709b640abcda6d6d96c5908c2c30e26e7637ca5d7578809

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page