Skip to main content

A lightweight Python progress bar library with a simple API.

Project description

holdon

Holdon, pronounced "hold'n," is a lightweight Python progress bar library with a simple API.

$ pip install holdon

Get Started

Holdon is like tqdm, just wrap progress() around an iterator and we're good to go.

import time
from holdon import progress

for i in progress(range(100)):
    time.sleep(0.1)
 23.0% ━━━╸━━━━━━━━━━━━━━━━  23 / 100 (9.9it/s)

If you do not have any iterator, you can use class RawProgress() and update everything manually. To learn more, refer to the documentation below.

Documentation

Minimal, lol.

def progress()

progress(
    iterator: Iterator, 
    *, 
    width: Optional[int] = None, 
    size: Optional[int] = None,
    unit: Literal["it", "bytes"] = "it"
) -> Iterator[Any]

Creates a progress bar.

Example:

You can wrap progress() around any iterator:

for i in progress(range(100)):
    ... # do your work here

You can also wrap it around a custom iterator, but you'll need to specify its total iterations.

words = ["cheese", "is", "good", "but", "i'm", "lactose", "intolerant"]

def word_it():
    for word in words:
        yield word + " "

for word in progress(word_it(), size=len(words)):
    ... # do your work here

Args:

  • iterator (Iterator): The iterator. For instance, range or list.
  • width (int, optional): Width of the progress bar. Defaults to 50.
  • size (int, optional): Size of the iterator or the len() of the iterator.
  • unit (Literal["it", "bytes"]): Unit. Could be one of: "it" (iterations) or "bytes" (bytes).

class RawProgress

Attributes
  • const fmt (str): Progress bar format.
  • slots width (int): Progress bar width.
  • slots size (int): Total iterations as "size."
  • slots unit (Literal["it", "bytes"]): Unit. Could be one of: "it" (iterations) or "bytes" (bytes).


__init__(
    self, 
    width: int = 50, 
    size: int = 100,
    unit: Literal["it", "bytes"] = "it"
)

The progress bar.

Example:

A minimal example:

rp = RawProgress()

for i in range(500):
    rp.advance(1)

You can also change the unit parameter to "bytes" and specify the total content length (see requests) to indicate download progress:

rp = RawProgress(
    unit="bytes",
    size=int(http_response.headers['Content-Length'])
)

for chunk in http_response.iter_content():
    rp.advance(len(chunk))

Args:

  • width (int): Progress bar width.
  • size (int): Total iterations as "size."
  • unit (Literal["it", "bytes"]): Unit. Could be one of: "it" (iterations) or "bytes" (bytes).

def RawProgress.advance()

advance(self, i: int = 1) -> None

Advance.

Args:

  • i (int): Advance size.

def RawProgress.render()

render(self) -> None

Renders the progress bar.


(c) 2024 AWeirdDev

Project details


Release history Release notifications | RSS feed

This version

0.1

Download files

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

Source Distribution

holdon-0.1.tar.gz (5.4 kB view details)

Uploaded Source

File details

Details for the file holdon-0.1.tar.gz.

File metadata

  • Download URL: holdon-0.1.tar.gz
  • Upload date:
  • Size: 5.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.11.8

File hashes

Hashes for holdon-0.1.tar.gz
Algorithm Hash digest
SHA256 07f3b6ba589f8034850350bdcbc0dc74f9198473f1744045b5651ddad479c8ae
MD5 e95fc33f47255bacd9fe96779ab95f42
BLAKE2b-256 a8c9d8b65f9580fee4077a93a0f515f5e282d3d16691aa8187c6e8f76ad72d86

See more details on using hashes here.

Supported by

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