All Projects → WoLpH → Python Progressbar

WoLpH / Python Progressbar

Licence: bsd-3-clause
Progressbar 2 - A progress bar for Python 2 and Python 3 - "pip install progressbar2"

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Python Progressbar

Tqdm
A Fast, Extensible Progress Bar for Python and CLI
Stars: ✭ 20,632 (+2925.22%)
Mutual labels:  cli, terminal, console, time, gui, progress, progress-bar, progressbar, rate
Alive Progress
A new kind of Progress Bar, with real-time throughput, ETA, and very cool animations!
Stars: ✭ 2,940 (+331.09%)
Mutual labels:  cli, terminal, progress, progress-bar, progressbar, bar
Ruby Progressbar
Ruby/ProgressBar is a text progress bar library for Ruby.
Stars: ✭ 1,378 (+102.05%)
Mutual labels:  cli, terminal, progress, progress-bar, progressbar
Listr2
NodeJS Task List derived from the best! Create beautiful CLI interfaces via easy and logical to implement task lists that feel alive and interactive.
Stars: ✭ 73 (-89.3%)
Mutual labels:  cli, terminal, console, progress
Wunderbar
Simple horizontal bar chart printer for your terminal
Stars: ✭ 572 (-16.13%)
Mutual labels:  cli, terminal, library, bar
Progressbar
Terminal-based progress bar for Java / JVM
Stars: ✭ 625 (-8.36%)
Mutual labels:  cli, terminal, console, progressbar
Progressbar
A really basic thread-safe progress bar for Golang applications
Stars: ✭ 2,212 (+224.34%)
Mutual labels:  terminal, library, progress-bar, progressbar
Spinner
Go (golang) package with 90 configurable terminal spinner/progress indicators.
Stars: ✭ 1,637 (+140.03%)
Mutual labels:  cli, terminal, progress-bar, progressbar
angular-progress-bar
This component allow you to easy incorporate progress-bar to angular/ionic project, providing binding and color options
Stars: ✭ 26 (-96.19%)
Mutual labels:  progress, progress-bar, progressbar, bar
Progress bar
Command-line progress bars and spinners for Elixir.
Stars: ✭ 281 (-58.8%)
Mutual labels:  cli, terminal, progress-bar, progressbar
Csconsoleformat
.NET C# library for advanced formatting of console output [Apache]
Stars: ✭ 296 (-56.6%)
Mutual labels:  terminal, console, library
Consola
Elegant Console Logger for Node.js and Browser 🐨
Stars: ✭ 3,461 (+407.48%)
Mutual labels:  cli, terminal, console
Console
The Hoa\Console library.
Stars: ✭ 354 (-48.09%)
Mutual labels:  terminal, console, library
Multiprogressview
📊 An animatable view that depicts multiple progresses over time. Modeled after UIProgressView
Stars: ✭ 614 (-9.97%)
Mutual labels:  progress, progress-bar, progressbar
Nestjs Console
A nestjs module that provide a cli to your application.
Stars: ✭ 284 (-58.36%)
Mutual labels:  cli, terminal, console
Lazykube
⎈ The lazier way to manage kubernetes.
Stars: ✭ 369 (-45.89%)
Mutual labels:  terminal, console, gui
Ng2 Slim Loading Bar
Angular 2 component shows slim loading bar at the top of the page.
Stars: ✭ 376 (-44.87%)
Mutual labels:  progress, progress-bar, bar
Chalk
🖍 Terminal string styling done right
Stars: ✭ 17,566 (+2475.66%)
Mutual labels:  cli, terminal, console
Stig
TUI and CLI for the BitTorrent client Transmission
Stars: ✭ 360 (-47.21%)
Mutual labels:  cli, terminal, console
Theglowingloader
TheGlowingLoader is the highly configurable library to indicate progress and is natively created for Android Platform. It is an implementation of a design composed by Shashank Sahay.
Stars: ✭ 379 (-44.43%)
Mutual labels:  library, progress, progressbar

############################################################################## Text progress bar library for Python. ##############################################################################

Travis status:

.. image:: https://travis-ci.org/WoLpH/python-progressbar.svg?branch=master :target: https://travis-ci.org/WoLpH/python-progressbar

Coverage:

.. image:: https://coveralls.io/repos/WoLpH/python-progressbar/badge.svg?branch=master :target: https://coveralls.io/r/WoLpH/python-progressbar?branch=master


Install


The package can be installed through pip (this is the recommended method):

pip install progressbar2

Or if pip is not available, easy_install should work as well:

easy_install progressbar2

Or download the latest release from Pypi (https://pypi.python.org/pypi/progressbar2) or Github.

Note that the releases on Pypi are signed with my GPG key (https://pgp.mit.edu/pks/lookup?op=vindex&search=0xE81444E9CE1F695D) and can be checked using GPG:

 gpg --verify progressbar2-<version>.tar.gz.asc progressbar2-<version>.tar.gz

Introduction


A text progress bar is typically used to display the progress of a long running operation, providing a visual cue that processing is underway.

The progressbar is based on the old Python progressbar package that was published on the now defunct Google Code. Since that project was completely abandoned by its developer and the developer did not respond to email, I decided to fork the package. This package is still backwards compatible with the original progressbar package so you can safely use it as a drop-in replacement for existing project.

The ProgressBar class manages the current progress, and the format of the line is given by a number of widgets. A widget is an object that may display differently depending on the state of the progress bar. There are many types of widgets:

  • AbsoluteETA <http://progressbar-2.readthedocs.io/en/latest/_modules/progressbar/widgets.html#AbsoluteETA>_
  • AdaptiveETA <http://progressbar-2.readthedocs.io/en/latest/_modules/progressbar/widgets.html#AdaptiveETA>_
  • AdaptiveTransferSpeed <http://progressbar-2.readthedocs.io/en/latest/_modules/progressbar/widgets.html#AdaptiveTransferSpeed>_
  • AnimatedMarker <http://progressbar-2.readthedocs.io/en/latest/_modules/progressbar/widgets.html#AnimatedMarker>_
  • Bar <http://progressbar-2.readthedocs.io/en/latest/_modules/progressbar/widgets.html#Bar>_
  • BouncingBar <http://progressbar-2.readthedocs.io/en/latest/_modules/progressbar/widgets.html#BouncingBar>_
  • Counter <http://progressbar-2.readthedocs.io/en/latest/_modules/progressbar/widgets.html#Counter>_
  • CurrentTime <http://progressbar-2.readthedocs.io/en/latest/_modules/progressbar/widgets.html#CurrentTime>_
  • DataSize <http://progressbar-2.readthedocs.io/en/latest/_modules/progressbar/widgets.html#DataSize>_
  • DynamicMessage <http://progressbar-2.readthedocs.io/en/latest/_modules/progressbar/widgets.html#DynamicMessage>_
  • ETA <http://progressbar-2.readthedocs.io/en/latest/_modules/progressbar/widgets.html#ETA>_
  • FileTransferSpeed <http://progressbar-2.readthedocs.io/en/latest/_modules/progressbar/widgets.html#FileTransferSpeed>_
  • FormatCustomText <http://progressbar-2.readthedocs.io/en/latest/_modules/progressbar/widgets.html#FormatCustomText>_
  • FormatLabel <http://progressbar-2.readthedocs.io/en/latest/_modules/progressbar/widgets.html#FormatLabel>_
  • Percentage <http://progressbar-2.readthedocs.io/en/latest/_modules/progressbar/widgets.html#Percentage>_
  • ReverseBar <http://progressbar-2.readthedocs.io/en/latest/_modules/progressbar/widgets.html#ReverseBar>_
  • RotatingMarker <http://progressbar-2.readthedocs.io/en/latest/_modules/progressbar/widgets.html#RotatingMarker>_
  • SimpleProgress <http://progressbar-2.readthedocs.io/en/latest/_modules/progressbar/widgets.html#SimpleProgress>_
  • Timer <http://progressbar-2.readthedocs.io/en/latest/_modules/progressbar/widgets.html#Timer>_

The progressbar module is very easy to use, yet very powerful. It will also automatically enable features like auto-resizing when the system supports it.


Known issues


Due to limitations in both the IDLE shell and the Jetbrains (Pycharm) shells this progressbar cannot function properly within those.


Links



Usage


There are many ways to use Python Progressbar, you can see a few basic examples here but there are many more in the examples file.

Wrapping an iterable

.. code:: python

import time
import progressbar

for i in progressbar.progressbar(range(100)):
    time.sleep(0.02)

Progressbars with logging

Progressbars with logging require stderr redirection before the StreamHandler is initialized. To make sure the stderr stream has been redirected on time make sure to call progressbar.streams.wrap_stderr() before you initialize the logger.

One option to force early initialization is by using the WRAP_STDERR environment variable, on Linux/Unix systems this can be done through:

.. code:: sh

# WRAP_STDERR=true python your_script.py

If you need to flush manually while wrapping, you can do so using:

.. code:: python

import progressbar

progressbar.streams.flush()

In most cases the following will work as well, as long as you initialize the StreamHandler after the wrapping has taken place.

.. code:: python

import time
import logging
import progressbar

progressbar.streams.wrap_stderr()
logging.basicConfig()

for i in progressbar.progressbar(range(10)):
    logging.error('Got %d', i)
    time.sleep(0.2)

Context wrapper

.. code:: python

import time import progressbar

with progressbar.ProgressBar(max_value=10) as bar: for i in range(10): time.sleep(0.1) bar.update(i)

Combining progressbars with print output

.. code:: python

import time
import progressbar

for i in progressbar.progressbar(range(100), redirect_stdout=True):
    print('Some text', i)
    time.sleep(0.1)

Progressbar with unknown length

.. code:: python

import time
import progressbar

bar = progressbar.ProgressBar(max_value=progressbar.UnknownLength)
for i in range(20):
    time.sleep(0.1)
    bar.update(i)

Bar with custom widgets

.. code:: python

import time
import progressbar

widgets=[
    ' [', progressbar.Timer(), '] ',
    progressbar.Bar(),
    ' (', progressbar.ETA(), ') ',
]
for i in progressbar.progressbar(range(20), widgets=widgets):
    time.sleep(0.1)

Bar with wide Chinese (or other multibyte) characters

.. code:: python

# vim: fileencoding=utf-8
import time
import progressbar


def custom_len(value):
    # These characters take up more space
    characters = {
        '进': 2,
        '度': 2,
    }

    total = 0
    for c in value:
        total += characters.get(c, 1)

    return total


bar = progressbar.ProgressBar(
    widgets=[
        '进度: ',
        progressbar.Bar(),
        ' ',
        progressbar.Counter(format='%(value)02d/%(max_value)d'),
    ],
    len_func=custom_len,
)
for i in bar(range(10)):
    time.sleep(0.1)
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].