Remote progress bar tracking — wrap your loop, watch from anywhere
Project description
Fernsicht (Python)
Remote progress tracking over WebRTC. Wrap your loop, get a shareable URL, watch from anywhere.
Install
pip install fernsicht
Quick Start
from fernsicht import blick
# Wrap any iterable
for item in blick(range(10000), desc="Training"):
process(item)
# Allow up to 4 concurrent viewers
for item in blick(range(10000), desc="Training", max_viewers=4):
process(item)
# Manual updates
from fernsicht import manual
bar = manual(total=100, desc="Uploading")
for chunk in stream:
upload(chunk)
bar.update(len(chunk))
bar.close()
# Context manager
with blick(total=500, desc="Epochs") as bar:
for batch in data_loader:
train(batch)
bar.update(len(batch))
A URL like https://.../#room=<id>&role=viewer is printed when the bar starts.
Open it on your phone or another machine to watch live progress including
elapsed time, ETA, rate, and item count.
Configuration
No configuration is required for the default hosted node — the SDK points at
https://signal.fernsicht.space out of the box.
Self-hosting
To use your own signaling server:
export FERNSICHT_SERVER_URL="https://your-signal-domain"
Authenticated session endpoint
If your server requires an API key on POST /session:
export FERNSICHT_SESSION_API_KEY="your-api-key"
Viewer limits
- Default is
max_viewers=8(matches the R SDK and CLI defaults). - Pass
max_viewers=1for a single-viewer-only room, or any value up to the server'sMAX_VIEWERS_PER_ROOMcap. - The server enforces an upper bound via
MAX_VIEWERS_PER_ROOM.
How it works
blick()callsPOST /sessionon the signaling server, which creates a new room and returns asender_secret.- A background thread polls
GET /poll/{room}?secret=…every ~25 seconds to check for viewer connections. - When a viewer opens the link, it posts a WebRTC offer; the sender thread picks it up, creates an answer, and completes the handshake.
- Progress data flows directly over the WebRTC DataChannel — the server is never in the data path.
No persistent connection is held by the SDK. Between polls, the background thread is idle.
Other ways to use Fernsicht
Don't want to add a blick() import? Two alternatives:
- CLI —
fernsicht run -- python train.pywraps any command and auto-detects tqdm/[N/M]/percent-style progress with no code change. Seecli/README.md. - R —
remotes::install_github("MuteJester/Fernsicht", subdir="publishers/r")for the R sibling SDK.
All three speak the same wire protocol; rooms / viewer URLs / hosted defaults are identical.
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 fernsicht-0.1.2.tar.gz.
File metadata
- Download URL: fernsicht-0.1.2.tar.gz
- Upload date:
- Size: 28.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
55554f91d8e5b87940e9aefd7ae6de0d4b4617a28cf5182c71547a8f3b88841b
|
|
| MD5 |
fc890894ea4057481baa19b914f243dd
|
|
| BLAKE2b-256 |
adaf69b40c057d13ccd8692c13957385ae2061267513c85bfa8b5decd4699551
|
Provenance
The following attestation bundles were made for fernsicht-0.1.2.tar.gz:
Publisher:
python-release.yml on MuteJester/Fernsicht
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fernsicht-0.1.2.tar.gz -
Subject digest:
55554f91d8e5b87940e9aefd7ae6de0d4b4617a28cf5182c71547a8f3b88841b - Sigstore transparency entry: 1361459718
- Sigstore integration time:
-
Permalink:
MuteJester/Fernsicht@b740416bda2a572ded16f72c849f1e856368306b -
Branch / Tag:
refs/tags/py/v0.1.2 - Owner: https://github.com/MuteJester
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-release.yml@b740416bda2a572ded16f72c849f1e856368306b -
Trigger Event:
push
-
Statement type:
File details
Details for the file fernsicht-0.1.2-py3-none-any.whl.
File metadata
- Download URL: fernsicht-0.1.2-py3-none-any.whl
- Upload date:
- Size: 25.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
78b611c7b7084f6344edb0abc1fcb280907ec0b006c389c2c723f95fa7b12371
|
|
| MD5 |
d435f93818ad32bb7d475b36b4b98262
|
|
| BLAKE2b-256 |
55fd7c023a8c32ea954986163cf9cd70156144aa38d1eb8e04df443c8591a844
|
Provenance
The following attestation bundles were made for fernsicht-0.1.2-py3-none-any.whl:
Publisher:
python-release.yml on MuteJester/Fernsicht
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fernsicht-0.1.2-py3-none-any.whl -
Subject digest:
78b611c7b7084f6344edb0abc1fcb280907ec0b006c389c2c723f95fa7b12371 - Sigstore transparency entry: 1361459732
- Sigstore integration time:
-
Permalink:
MuteJester/Fernsicht@b740416bda2a572ded16f72c849f1e856368306b -
Branch / Tag:
refs/tags/py/v0.1.2 - Owner: https://github.com/MuteJester
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-release.yml@b740416bda2a572ded16f72c849f1e856368306b -
Trigger Event:
push
-
Statement type: