Graphs the progress of work across rows
Project description
progrow
progrow
is a Python package for graphing the progress of work across rows.
Installation
progrow
requires Python 3.6 or later.
pip install progrow
Rendering a single row
from progrow import Row
row = Row("apple harvest", current=23, maximum=100)
print(row.render())
apple harvest ████████▉
Including fractions, percentages and other styles
An optional Style
can be passed into render()
:
Property | Description | Default |
---|---|---|
color |
Render in colour | True |
name_suffix |
String to append after each row's name | " " |
show_fraction |
Include each row's fractional progress (<current> / <maximum> ) |
False |
show_percent |
Include each row's percentage progress | False |
width |
Width to draw | Terminal width |
from progrow import Row, Style
row = Row("apple harvest", current=23, maximum=100)
style = Style(name_suffix=" progress: ", show_fraction=True, show_percent=True)
print(row.render(style=style))
apple harvest progress: ███▌ 23 / 100 • 23%
Rendering rows from a generator
from progrow import Row, Style
style = Style(show_fraction=True, show_percent=True)
for harvest in harvest_generator():
row = Row(harvest[0], current=harvest[1], maximum=harvest[2])
print(row.render(style=style))
apple harvest ███ 1 / 9 • 11%
banana harvest ██▍ 9 / 99 • 9%
caramel harvest ███████████████████▉ 100 / 100 • 100%
Since the rows are "streaming" in from a generator, the layout cannot be pre-calculated and the columns don't align.
To make this output prettier, create a Layout
and guesstimate your columns:
Property | Description |
---|---|
left_fraction_length |
Width of the "current" part of the fraction. For example, 3 to accommodate a three-digit value. |
name_length |
Width of the name column. For example, 10 to accommodate a ten-character name. |
percent_length |
Width of the percentage column. For example, 3 to accommodate a two-digit value plus a % character. |
right_fraction_length |
Width of the "maximum" part of the fraction. For example, 3 to accommodate a three-digit value. |
from progrow import Layout, Row, Style
layout = Layout(
left_fraction_length=3,
name_length=16,
percent_length=4,
right_fraction_length=3,
)
style = Style(show_fraction=True, show_percent=True)
for harvest in harvest_generator():
row = Row(harvest[0], current=harvest[1], maximum=harvest[2])
print(row.render(layout, style))
apple harvest ██▏ 1 / 9 • 11%
banana harvest █▊ 9 / 99 • 9%
caramel harvest ███████████████████ 100 / 100 • 100%
Rendering rows from a list
When all the row data is available before rendering, create a Rows
instance to have the layout calculated automatically.
from progrow import Rows, Style
rows = Rows()
rows.append("apple harvest", current=1, maximum=9)
rows.append("banana harvest", current=9, maximum=99)
rows.append("caramel harvest", current=100, maximum=100)
style = Style(show_fraction=True, show_percent=True)
print(rows.render(style))
apple harvest ██▎ 1 / 9 • 11%
banana harvest █▊ 9 / 99 • 9%
caramel harvest ███████████████████▉ 100 / 100 • 100%
Thank you! 🎉
My name is Cariad, and I'm an independent freelance DevOps engineer.
I'd love to spend more time working on projects like this, but--as a freelancer--my income is sporadic and I need to chase gigs that pay the rent.
If this project has value to you, please consider ☕️ sponsoring me. Sponsorships grant me time to work on your wants rather than someone else's.
Thank you! ❤️
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
File details
Details for the file progrow-1.0.1-py3-none-any.whl
.
File metadata
- Download URL: progrow-1.0.1-py3-none-any.whl
- Upload date:
- Size: 8.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.0 importlib_metadata/3.7.3 packaging/20.9 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 127eab71bd6097f99ea232c3be157bc405cba322f4067f8ebb5a9a951240e21d |
|
MD5 | c29943e78c61d41aa890af97c6ffd899 |
|
BLAKE2b-256 | 2ca76ded92bef66939016952c9c28db66f41ad6739aa088abf2b5a00c072511a |