Skip to main content

Draw progress bars with room for colors and display rates and ETAs in your console applications. ETA library is its own class so it may be used in other non-console applications. ETAs calculated with simple linear regression.

This library supports both defined and undefined progress bars. Undefined progress bars are those that do not have a “total size”. Similar to when wget downloads a file with an unknown file size. Due to this, undefined progress bars have no percent and no ETA. Defined progress bars are the usual progress bars with percentages and ETAs.

  • Python 2.6, 2.7, 3.3, and 3.4 supported on Linux and OS X.

  • Python 2.7, 3.3, and 3.4 supported on Windows (both 32 and 64 bit versions of Python).

Tested on Windows XP and Windows 10 technical preview.

Build Status Windows Build Status Coverage Status Latest Version Downloads

Quickstart

Install:

pip install etaprogress

Example Implementations

Example Scripts Screenshot

Source code for examples: example.py, example_colors.py, and example_wget.py

Usage

If all you need is a progress bar with an ETA, you only have to import a class in the etaprogress.progress module. To get the progress bar itself just cast to string or print the instance.

Simple Usage

import time
from etaprogress.progress import ProgressBar
total = 5
bar = ProgressBar(total, max_width=40)
for i in range(total + 1):
    bar.numerator = i
    print bar
    time.sleep(1)
  0% (0/5) [               ] eta --:-- -
 20% (1/5) [###            ] eta 00:05 \
 40% (2/5) [######         ] eta 00:04 |
 60% (3/5) [#########      ] eta 00:03 /
 80% (4/5) [############   ] eta 00:02 -
100% (5/5) [###############] eta 00:00 \

Of course that’s not a very good progress bar animation. Here’s a better one with print_function:

from __future__ import print_function
import sys
import time
from etaprogress.progress import ProgressBar
total = 5
bar = ProgressBar(total, max_width=40)
for i in range(total + 1):
    bar.numerator = i
    print(bar, end='\r')
    sys.stdout.flush()
    time.sleep(1)
print()
100% (5/5) [###############] eta 00:00 \

Terminal Colors Support

Colors are supported using colorclass. Take a look at example_colors.py on how to implement colorful progress bars. You may have to subclass one of the ProgressBar classes (or even BaseProgressBar) to add colors to every nook and cranny of a progress bar.

Class Attributes

There are five different progress bar classes with visual differences:

  • ProgressBar – a simple progress bar.

  • ProgressBarBits – similar to ProgressBar but converts numbers to bits, kilobits, etc.

  • ProgressBarBytes – similar to ProgressBar but converts numbers to bytes, kibibytes (kilobytes), etc.

  • ProgressBarWget – a progress bar that looks like the one in the GNU wget application.

  • ProgressBarYum – a progress bar that looks like the one in CentOS/RHEL 7 yum utility.

Name

Description/Notes

max_width

Limit number of characters shown (by default the full progress bar takes up the entire terminal width).

eta_every

Calculate and cache the ETA string after this many numerator setting iteration. Default is every iter.

force_done

For undefined progress bars this indicates that the progress has completed.

filename

‘ProgressBarYum’ only. The string to display before the progress bar. Limited to whatever space is available in the terminal.

Class Properties

Name

Description/Notes

denominator

Returns the denominator of the progress bars. The same value provided when instantiating.

done

Returns True if the progress has completed.

numerator

Read/write. Returns the numerator as an integer or sets a new numerator. When setting a numerator it must be equal to or greater than the previous one.

percent

Returns the percent as a float.

rate

Returns the rate of the progress as a float.

undefined

Return True if the progress bar is undefined.

Release files for etaprogress 1.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for etaprogress 1.1.0
File Size Uploaded
etaprogress-1.1.0.tar.gz 4.8 kB Details

Release files / etaprogress-1.1.0.tar.gz

Download URL etaprogress-1.1.0.tar.gz
Size 4.8 kB
Tags Source
SHA-256 checksum
How to use checksums
f809238f0e19f04fb1adbc3af2c7fd669fc00f049e8a7e118abff8964a0349ef
BLAKE2b-256 checksum
How to use checksums
dcefa26d4e401a78333a306da80909cc64a5eb8d8c3ceb996fc188cdd06f24e8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

1.1.1

1 release file

This release

1.1.0 This release

1 release file

1.0.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page