Skip to main content

Terminal Progress Bar

Project description

Easy progress reporting for Python

Bars

There are 7 progress bars to choose from:

  • Bar
  • ChargingBar
  • FillingSquaresBar
  • FillingCirclesBar
  • IncrementalBar
  • PixelBar
  • ShadyBar

To use them, just call next to advance and finish to finish:

.. code-block:: python

from pgbar.pgbar import Bar

bar = Bar('Processing', max=20)
for i in range(20):
    # Do some work
    bar.next()
bar.finish()

or use any bar of this class as a context manager:

.. code-block:: python

from pgbar.pgbar import Bar

with Bar('Processing', max=20) as bar:
    for i in range(20):
        # Do some work
        bar.next()

The result will be a bar like the following: ::

Processing |#############                   | 42/100

To simplify the common case where the work is done in an iterator, you can use the iter method:

.. code-block:: python

for pgbar.pgbar in Bar('Processing').iter(it):
    # Do some work

Progress bars are very customizable, you can change their width, their fill character, their suffix and more:

.. code-block:: python

bar = Bar('Loading', fill='@', suffix='%(percent)d%%')

This will produce a bar like the following: ::

Loading |@@@@@@@@@@@@@                   | 42%

You can use a number of template arguments in message and suffix:

========== ================================ Name Value ========== ================================ index current value max maximum value remaining max - index progress index / max percent progress * 100 avg simple moving average time per item (in seconds) elapsed elapsed time in seconds elapsed_td elapsed as a timedelta (useful for printing as a string) eta avg * remaining eta_td eta as a timedelta (useful for printing as a string) ========== ================================

Instead of passing all configuration options on instatiation, you can create your custom subclass:

.. code-block:: python

class FancyBar(Bar):
    message = 'Loading'
    fill = '*'
    suffix = '%(percent).1f%% - %(eta)ds'

You can also override any of the arguments or create your own:

.. code-block:: python

class SlowBar(Bar):
    suffix = '%(remaining_hours)d hours remaining'
    @property
    def remaining_hours(self):
        return self.eta // 3600

Spinners

For actions with an unknown number of steps you can use a spinner:

.. code-block:: python

from pgbar.pgspinner import Spinner

spinner = Spinner('Loading ')
while state != 'FINISHED':
    # Do some work
    spinner.next()

There are 5 predefined spinners:

  • Spinner
  • PieSpinner
  • MoonSpinner
  • LineSpinner
  • PixelSpinner

Installation

Download from PyPi

.. code-block:: shell

pip install pgbar

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

pgbar-0.3.tar.gz (5.1 kB view details)

Uploaded Source

Built Distribution

pgbar-0.3-py3-none-any.whl (7.9 kB view details)

Uploaded Python 3

File details

Details for the file pgbar-0.3.tar.gz.

File metadata

  • Download URL: pgbar-0.3.tar.gz
  • Upload date:
  • Size: 5.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/39.1.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.4

File hashes

Hashes for pgbar-0.3.tar.gz
Algorithm Hash digest
SHA256 9655f19f1eb3d69ff8dcddd261cf61dd5078fd27d624cdfffb07b61bbe4b265a
MD5 564fe9959020c7cce4a80404b49a23f6
BLAKE2b-256 39a538636277e6f2596e508f463dd4406a0f19960f639118d2dd8929f0b95e01

See more details on using hashes here.

File details

Details for the file pgbar-0.3-py3-none-any.whl.

File metadata

  • Download URL: pgbar-0.3-py3-none-any.whl
  • Upload date:
  • Size: 7.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/39.1.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.4

File hashes

Hashes for pgbar-0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 d8ad05b4909c6ee325d14de4a40f700a122f498eb5e7c654c82a296b24df11bb
MD5 4b4c35adcb79a8842c7445632be3eb50
BLAKE2b-256 f699f8a568ee7f3fbe87fcd59f1236fcb7933cd780030112446ef6b01d86916d

See more details on using hashes here.

Supported by

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