A lightweight, ANSI-based progress bar for terminal output
Project description
progress1bar
A lightweight, ANSI-based progress bar for terminal output — configurable, readable, and easy to drop into loops or long-running jobs.
Installation
pip install progress1bar
Quick start
Use ProgressBar as a context manager. Set total, then increment count.
import time
from progress1bar import ProgressBar
with ProgressBar(total=250) as pb:
for _ in range(pb.total):
pb.count += 1
time.sleep(0.01) # simulate work
Showing what’s being processed (alias)
If you want the bar to show the “current item”, set alias as you go. You can also set a custom ticker.
import time
from faker import Faker
from colorama import Fore
from colorama import Style
from progress1bar import ProgressBar
kwargs = {
'total': 75,
'show_complete': False,
'clear_alias': True,
'show_duration': False,
'ticker': Style.BRIGHT + Fore.RED + chr(9644) + Style.RESET_ALL,
}
with ProgressBar(**kwargs) as pb:
for _ in range(pb.total):
pb.alias = Faker().name()
time.sleep(.08) # simulate work
pb.count += 1
Configuration
ProgressBar(
total=None,
fill=None,
regex=None,
completed_message=None,
clear_alias=False,
show_fraction=True,
show_percentage=True,
show_duration=False,
show_complete=True,
ticker=None,
use_color=True,
show_bar=True)
| Option | Type | What it does | Default |
|---|---|---|---|
total |
int |
Total units of work to complete | None |
completed_message |
str |
Message shown when complete | "Processing complete" |
show_fraction |
bool |
Show count/total |
True |
show_percentage |
bool |
Show percent complete | True |
show_duration |
bool |
Print elapsed time after completion | False |
show_complete |
bool |
Show completion message | True |
use_color |
bool |
Alias is displayed in color | True |
show_bar |
bool |
Render ticker characters (the “bar” itself) | True |
ticker |
int or str |
Unicode code point to use as the ticker character - (must be in the range 33–65532). Useful when color output is disabled. A single character or ANSI-styled string. Intended for colored or styled output. |
9632 (■) |
Number formatting (fill)
fill lets you pad the displayed total / count with leading zeros for a consistent look.
fill = {"max_total": 4, "max_completed": 4}
Regex-driven updates (regex)
If you’d rather drive the progress bar by feeding it messages (instead of setting attributes directly), you can supply regex patterns for total, count, and optionally alias. When a message matches, the captured value is applied.
import random
from faker import Faker
from progress1bar import ProgressBar
kwargs = {
"ticker": 9733, # ★
"regex": {
"total": r"^processing total of (?P<value>\d+)$",
"count": r"^processed .*$",
"alias": r"^processor is (?P<value>.*)$",
},
"use_color": False,
}
with ProgressBar(**kwargs) as pb:
pb.match(f"processor is {Faker().name()}")
total = random.randint(500, 750)
pb.match(f"processing total of {total}")
for _ in range(total):
pb.match(f"processed {Faker().name()}")
Reuse the same progress bar (reset())
If you want to reuse one ProgressBar instance across multiple runs (and keep track of repeated usage), call:
pb.reset()
More Examples
The repo includes multiple runnable examples (including variations like “no bar, just percentage/fraction”, custom tickers, regex matching, and multiple iterations with resets).
Development
Clone the repository and ensure the latest version of Docker is installed on your development server.
Build the Docker image:
docker image build \
-t progress1bar:latest .
Run the Docker container:
docker container run \
--rm \
-it \
-v $PWD:/code \
progress1bar:latest \
bash
Execute the build:
make dev
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 Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file progress1bar-1.1.1.tar.gz.
File metadata
- Download URL: progress1bar-1.1.1.tar.gz
- Upload date:
- Size: 16.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
711db0fde30826073159cf415fab3fcd29c276a1335faa719663e15efcde5ec3
|
|
| MD5 |
16d3dd8a5336493d8008020b99aa3fa5
|
|
| BLAKE2b-256 |
3402b5c59fe8c7df0a28dde7c562a96dbe211bd1997a61d558d413f00fa66209
|
File details
Details for the file progress1bar-1.1.1-py3-none-any.whl.
File metadata
- Download URL: progress1bar-1.1.1-py3-none-any.whl
- Upload date:
- Size: 14.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
68ca2fa59391efcdc2936dd6dc3b363eac4f5fb5effde5d25019eb6fabae568f
|
|
| MD5 |
b28938c24befaa657606509ce67c17db
|
|
| BLAKE2b-256 |
357dc8cc1812927f070cd21b5f21da9754237f6feda60892c5b49ed075031e95
|