webprogress-python
The progress-reporter client for webprogress: a
drop-in tqdm that renders the usual local progress bar and mirrors each
tick, best-effort, to a webprogress server so you can watch a long-running task
from your browser dashboard.
Reporting is a transparent side effect — if the server is down, slow, or rejecting, updates are silently dropped and your task runs unaffected.
Install
uv pip install -e . # or: pip install -e .
Configure
The reporter needs two inputs — a server base address and a credential
token (minted in the web UI). Supply them via the environment (optionally a
local .env):
export WEBPROGRESS_HOST=http://localhost:8775
export WEBPROGRESS_KEY=<your credential token>
…or directly in code, which takes precedence over the environment.
Use
import time
from webprogress_python import tqdm
from webprogress_python.config import settings
for a in tqdm(range(10), desc="foo", endpoint=settings):
time.sleep(1)
tqdm accepts all standard tqdm arguments plus:
| Argument | Meaning |
|---|---|
endpoint |
A Settings (or anything with host/key); defaults to the env-loaded settings. |
host |
Server base address; overrides endpoint.host. |
key |
Credential token; overrides endpoint.key. |
script |
Script the task belongs to; groups tasks on the dashboard. |
tags |
Free-form labels shown as chips on the dashboard (protocol v2). |
report_timeout |
Per-send timeout in seconds, or a (connect, read) tuple. |
tags was added in protocol version 2. It is only put on the wire once the
client has negotiated a v2 server through the
/version handshake — which a Tracker
does automatically. Against a v1 server it is silently omitted.
If the handshake finds the server advertising a protocol version this client
does not implement (e.g. a newer server), the client cannot safely shape a
message for it: it emits an UnsupportedProtocolWarning and disables
reporting for that session — nothing is sent to the server. The tracked task
still runs unaffected. (A server that is simply unreachable or that advertises
no version is different: the client falls back to its default protocol and keeps
reporting best-effort.)
A Tracker can set run-wide tags for every bar it creates; a bar's own tags
merge on top:
with Tracker(script="train.py", tags=["gpu", "nightly"]) as t:
for _ in t.tqdm(range(1000), desc="epoch 3/12", tags=["batch-7"]):
...
How it works
On each display tick the reporter draws the local bar first, builds one update
message from the current progress state (the shared contract),
attaches the token, and POSTs it to the server's /handler endpoint with a
short timeout. Any transport failure or rejection is caught and ignored.
Develop
uv pip install -e '.[dev]'
pytest
Metadata
Release files for webprogress-python 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| webprogress_python-0.1.1.tar.gz | 15.6 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| webprogress_python-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 33.6 kB
Release files / webprogress_python-0.1.1.tar.gz
| Download URL | webprogress_python-0.1.1.tar.gz |
|---|---|
| Size | 15.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5d73d140f8965e09eb308fcb1b7d3bdc4309b255eb1d0d621367653432f6e841
|
|
BLAKE2b-256 checksum How to use checksums |
fedea03077db372b1072070f1a2c4a2f0bff3907ef1685df4a59e6f32f0bd649
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 1, 2026.
Transparency logRelease files / webprogress_python-0.1.1-py3-none-any.whl
| Download URL | webprogress_python-0.1.1-py3-none-any.whl |
|---|---|
| Size | 18.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c3b52aa700555c5d0850310fe806d594d203c7c8dccf1f68ca94c58e22b910ae
|
|
BLAKE2b-256 checksum How to use checksums |
a941651dc1dc21b91247a510ba79aa74dbeaaa4da440b70239ab79f4d9dcff4b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 1, 2026.
Transparency logSecurity for webprogress-python 0.1.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for webprogress_python-0.1.1.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 1, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.