mirror of
https://github.com/verigak/progress.git
synced 2025-12-08 19:33:24 +00:00
92 lines
2.1 KiB
ReStructuredText
92 lines
2.1 KiB
ReStructuredText
Easy progress reporting for Python
|
|
==================================
|
|
|
|
Bars
|
|
----
|
|
|
|
There are 6 progress bars to choose from:
|
|
|
|
- Bar
|
|
- ChargingBar
|
|
- FillingSquaresBar
|
|
- FillingCirclesBar
|
|
- IncrementalBar
|
|
- ShadyBar
|
|
|
|
To use them, just call ``next`` to advance and ``finish`` to finish. ::
|
|
|
|
from progress.bar import Bar
|
|
|
|
bar = Bar('Working', max=20)
|
|
for i in range(20):
|
|
# Do some work
|
|
bar.next()
|
|
bar.finish()
|
|
|
|
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. ::
|
|
|
|
for i 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. ::
|
|
|
|
bar = Bar('Loading', fill='@', suffix='%(percent).1f%%')
|
|
|
|
This will produce a bar like the following: ::
|
|
|
|
Processing |@@@@@@@@@@@@@ | 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 rolling average time per item (in seconds)
|
|
eta avg * remaining
|
|
========= =============================
|
|
|
|
Instead of passing all configuration options on instatiation, you can create
|
|
your custom subclass. ::
|
|
|
|
class FancyBar(Bar):
|
|
message = 'Loading'
|
|
fill = '*'
|
|
suffix = '%(percent).1f%% - %(eta)ds'
|
|
|
|
|
|
Spinners
|
|
========
|
|
|
|
For actions with an unknown number of steps you can use a spinner. ::
|
|
|
|
from progress.spinner import Spinner
|
|
|
|
spinner = Spinner('Loading ')
|
|
while state != 'FINISHED':
|
|
# Do some work
|
|
spinner.next()
|
|
|
|
There are 4 predefined spinners:
|
|
|
|
- Spinner
|
|
- PieSpinner
|
|
- MoonSpinner
|
|
- LineSpinner
|
|
|
|
Other
|
|
=====
|
|
|
|
Thera are a number of other classes available too, please check the source or
|
|
subclass one of them to create your own.
|