Skip to main content

A lightweight, ANSI-based progress bar for terminal output

Project description

ci Coverage PyPI version

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

example

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

example

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()

example

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

progress1bar-1.1.1.tar.gz (16.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

progress1bar-1.1.1-py3-none-any.whl (14.1 kB view details)

Uploaded Python 3

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

Hashes for progress1bar-1.1.1.tar.gz
Algorithm Hash digest
SHA256 711db0fde30826073159cf415fab3fcd29c276a1335faa719663e15efcde5ec3
MD5 16d3dd8a5336493d8008020b99aa3fa5
BLAKE2b-256 3402b5c59fe8c7df0a28dde7c562a96dbe211bd1997a61d558d413f00fa66209

See more details on using hashes here.

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

Hashes for progress1bar-1.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 68ca2fa59391efcdc2936dd6dc3b363eac4f5fb5effde5d25019eb6fabae568f
MD5 b28938c24befaa657606509ce67c17db
BLAKE2b-256 357dc8cc1812927f070cd21b5f21da9754237f6feda60892c5b49ed075031e95

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page