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
orlist
. - width (
int
, optional): Width of the progress bar. Defaults to 50. - size (
int
, optional): Size of the iterator or thelen()
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
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 07f3b6ba589f8034850350bdcbc0dc74f9198473f1744045b5651ddad479c8ae |
|
MD5 | e95fc33f47255bacd9fe96779ab95f42 |
|
BLAKE2b-256 | a8c9d8b65f9580fee4077a93a0f515f5e282d3d16691aa8187c6e8f76ad72d86 |