progrow 1.0.1

Creator: railscoder56

Last updated:

Add to Cart

Description:

progrow 1.0.1

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! ❤️

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.