A Fast, Extensible Progress Bar for Python and CLI
Go to file
Casper da Costa-Luis 81b9f1f238 Merge branch 'flexibility-tweaks' of github.com:tqdm/tqdm into flexibility-tweaks
Conflicts:
	tqdm/tests/tests_tqdm.py
2015-09-13 18:59:54 +01:00
tqdm formatting and removal of redundant debugging 2015-09-13 18:56:50 +01:00
.coveragerc cleanup 2015-06-08 03:06:41 +05:00
.gitignore cleanup 2015-06-08 03:06:41 +05:00
.mailmap mailmap to merge duplicate auth entries 2015-06-19 12:04:55 +01:00
.travis.yml Use python 3.4 for main travis python 2015-06-19 00:04:36 +02:00
LICENSE Initial commit 2013-10-26 11:50:04 -07:00
Makefile make automates all tests by default, version changed to 2.0 in anticipation of pypi 2015-06-18 15:58:29 +01:00
README.md Fixed doc about unit_scale 2015-07-12 06:27:12 +02:00
logo.png Add logo to tqdm 2015-06-06 16:12:49 +02:00
setup.cfg cleanup 2015-06-08 03:06:41 +05:00
setup.py argh revert to 1.0 2015-06-18 19:20:40 +01:00
tox.ini Another try 2015-06-19 00:02:13 +02:00
tqdm.gif New tqdm module structure and add a Makefile 2015-06-06 15:35:28 +02:00

README.md

Logo

tqdm

Build Status Coverage Status

tqdm (read taqadum, تقدّم) means "progress" in arabic.

Instantly make your loops show a progress meter - just wrap any iterable with "tqdm(iterable)", and you're done! Here's what the output looks like:

76%|████████████████████ | 7641/10000 [00:34<00:10, 222.22 it/s]

You can also use trange(N) as a shortcut for tqdm(xrange(N))

Screenshot

Overhead is low -- about 55ns per iteration. By comparison, our esteemed competition, ProgressBar, has an 878ns/iter overhead. It's a matter of taste, but we also like to think our version is much more visually appealing.

Installation

pip install tqdm
# or
pip install -e git+https://github.com/tqdm/tqdm.git#egg=master

Documentation

class tqdm:

    def __init__(self, iterable=None, desc=None, total=None, leave=False, file=sys.stderr,
         ncols=None, mininterval=0.1, miniters=None, unit=None, unit_scale=False,
         ascii=None, disable=False):
    """
    Decorate an iterable object, returning an iterator which acts exactly
    like the orignal iterable, but prints a dynamically updating
    progressbar.

    Parameters
    ----------
    iterable  : iterable
        Iterable to decorate with a progressbar. You can leave
        it to None if you want to manually manage the updates.
    desc  : str, optional
        Prefix for the progressbar.
    total  : int, optional
        The number of expected iterations. If not given, len(iterable) is
        used if possible. As a last resort, only basic progress statistics
        are displayed.
    file  : `io.TextIOWrapper` or `io.StringIO`, optional
        Specifies where to output the progress messages.
        Uses file.write(str) and file.flush() methods.
    leave  : bool, optional
        if unset, removes all traces of the progressbar upon termination of
        iteration [default: False].
    ncols  : int, optional
        The width of the entire output message. If specified, dynamically
        resizes the progress meter to stay within this bound [default: None].
        The fallback meter width is 10 for the progress bar + no limit for
        the iterations counter and statistics.
    mininterval  : float, optional
        Minimum progress update interval, in seconds [default: 0.1].
    miniters  : int, optional
        Minimum progress update interval, in iterations [default: None].
    unit  : str, optional
        String that will be used to define the unit of each iteration.
        [default: "it"]
    unit_scale  : bool, optional
        If set, the number of iterations will be reduced/scaled automatically
        and a metric prefix following the International System of Units standard
        will be added (kilo, mega, etc.). [default: False]
    ascii  : bool, optional
        If not set, use unicode (▏▎▋█ █) to fill the meter
        [default: False]. The fallback is to use ASCII characters (1-9 #).
    disable : bool
        Disable the progress bar if True [default: False].

    Returns
    -------
    out  : decorated iterator or just a progressbar manager.
    """

    def update(self, n=1):
        """
        Manually update the progress bar, useful for streams such as reading files (set init(total=filesize) and then in the reading loop, use update(len(current_buffer)) )

        Parameters
        ----------
        n  : int
            Increment to add to the internal counter of iterations.
        """

    def close(self):
        """
        Call this method to force print the last progress bar update based on the latest n value
        """

def trange(*args, **kwargs):
    """
    A shortcut for tqdm(xrange(*args), **kwargs).
    On Python3+ range is used instead of xrange.
    """

Contributions

To run the testing suite please make sure tox (http://tox.testrun.org/) is installed, then type tox from the command line.

Alternatively if you don't want to use tox, a Makefile is provided with the following command:

$ make flake8
$ make test
$ make coverage

License

MIT LICENSE.

Authors

  • noamraph (original author)
  • JackMc
  • arkottke
  • obiwanus
  • fordhurley
  • kmike
  • hadim
  • casperdcl