Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/verigak/progress
Easy to use progress bars for Python
https://github.com/verigak/progress
Last synced: 24 days ago
JSON representation
Easy to use progress bars for Python
- Host: GitHub
- URL: https://github.com/verigak/progress
- Owner: verigak
- License: isc
- Created: 2012-04-18T16:29:32.000Z (over 12 years ago)
- Default Branch: master
- Last Pushed: 2023-05-18T17:10:28.000Z (over 1 year ago)
- Last Synced: 2024-05-22T23:31:37.872Z (6 months ago)
- Language: Python
- Homepage:
- Size: 645 KB
- Stars: 1,390
- Watchers: 18
- Forks: 181
- Open Issues: 34
-
Metadata Files:
- Readme: README.rst
- License: LICENSE
Awesome Lists containing this project
- awesome-loading-indicators - Easy progress reporting for Python - Easy to use progress bars for Python. (Python)
README
Easy progress reporting for Python
==================================|pypi|
|demo|
.. |pypi| image:: https://img.shields.io/pypi/v/progress.svg
:target: https://pypi.org/project/progress/
.. |demo| image:: https://raw.github.com/verigak/progress/master/demo.gif
:alt: DemoBars
----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 progress.bar 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 progress.bar 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 i in Bar('Processing').iter(it):
# Do some workProgress 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 // 3600Spinners
========For actions with an unknown number of steps you can use a spinner:
.. code-block:: python
from progress.spinner 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 progress
Other
=====There are a number of other classes available too, please check the source or
subclass one of them to create your own.License
=======progress is licensed under ISC