Push experiments, training curves, and figures (TensorBoard / wandb / matplotlib) into your self-hosted Thesis Tracker dashboard.
Project description
thesis-tracker (Python SDK)
Push ML experiments into the same dashboard as your papers and thesis plan.
The Thesis Tracker web app tracks literature, milestones, and report progress. This package connects your training scripts to that same Supabase database — runs, step-indexed curves, and figure artifacts show up under Experiments without a separate wandb/MLflow silo.
Why use it
| Problem | This SDK |
|---|---|
| Experiment logs live in TensorBoard; thesis context lives elsewhere | One DB: link runs to related_paper, compare sweeps in the PWA |
| Wiring a custom API for every project | Same RLS + migrations as the web app — self-host once |
| Heavy MLOps platforms | Lightweight decorator + optional Lightning/Keras callbacks |
Install
pip install thesis-tracker # core (supabase + httpx)
pip install 'thesis-tracker[figures]' # matplotlib/Pillow artifacts
pip install 'thesis-tracker[tensorboard]' # tbparse import
pip install 'thesis-tracker[wandb]' # wandb import
pip install 'thesis-tracker[all,dev]' # everything + pytest
Sync sources register at import time but stay unavailable until their extra is installed (clear error if you call one without deps).
Configure
One token auth: copy a bearer token from the Thesis Tracker dashboard (Settings → API token). The SDK sends it to your Thesis Tracker web app instance, which applies RLS using your session.
export THESIS_TRACKER_TOKEN=tt_...
# Optional; defaults to http://localhost:3000
export THESIS_TRACKER_API_URL=http://localhost:3000
export THESIS_TRACKER_PROJECT="My Thesis" # or THESIS_TRACKER_PROJECT_ID=<uuid>
Apply migrations through at least 0017 (metrics + artifacts bucket) — see root README § Database.
Quick example
from thesis_tracker import track_experiment
@track_experiment(name="beta-vae sweep", config={"latent_dim": 32},
sync={"tensorboard": "runs/beta4"})
def train(run, beta=4.0):
for step in range(100):
run.log_metric("val_loss", loss(step), step=step)
run.log_figure(fig, name="reconstruction")
return {"val_loss": 0.11}
train(beta=4.0)
@track_experiment— creates row (running), pins git state, logs metrics, uploads figures, setsdone/failedon exit.with track(...) as run:— same without a decorator.- Callbacks —
thesis_tracker.integrations.lightning.ThesisTrackerCallback,.keras.ThesisTrackerCallback.
CLI
thesis-tracker list --project "My Thesis"
thesis-tracker import-tb runs/beta4 --name "beta-vae sweep"
thesis-tracker import-wandb entity/project/run_id
Extend (Open/Closed)
Implement MetricSource (id, available(), read(ref)), register on default_registry, use track(sync={"my_source": ref}). Example: examples/custom_source.py.
Architecture
Mirrors the web app: features/experiments/{domain,application,infrastructure}, container.py composition root, repository interfaces tested with in-memory fakes. No duplicate schema — migrations in ../supabase/migrations/ are the contract.
Test
pip install -e '.[dev]'
pytest # offline; Supabase integration test skips without env creds
More
- Root pitch + web app: ../README.md
- Design principles: ../docs/DESIGN.md
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
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 thesis_tracker-1.0.3.tar.gz.
File metadata
- Download URL: thesis_tracker-1.0.3.tar.gz
- Upload date:
- Size: 37.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f14894af839734ace4f77dcf90d993ed4fd6079d9c1d53a54a94abedd08a69aa
|
|
| MD5 |
fc0d4fa9a7a7244b73254679ea5b97d4
|
|
| BLAKE2b-256 |
4a798c409c54b8d0d917efce95bffcbb99865a505d19b77c36e1c90597cea859
|
Provenance
The following attestation bundles were made for thesis_tracker-1.0.3.tar.gz:
Publisher:
publish-python.yml on Satwik-Miyyapuram/thesis_tracker
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
thesis_tracker-1.0.3.tar.gz -
Subject digest:
f14894af839734ace4f77dcf90d993ed4fd6079d9c1d53a54a94abedd08a69aa - Sigstore transparency entry: 2164992525
- Sigstore integration time:
-
Permalink:
Satwik-Miyyapuram/thesis_tracker@49a526d620c8f0df7cbadcb410d311acb53389b3 -
Branch / Tag:
refs/tags/v1.0.3 - Owner: https://github.com/Satwik-Miyyapuram
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-python.yml@49a526d620c8f0df7cbadcb410d311acb53389b3 -
Trigger Event:
release
-
Statement type:
File details
Details for the file thesis_tracker-1.0.3-py3-none-any.whl.
File metadata
- Download URL: thesis_tracker-1.0.3-py3-none-any.whl
- Upload date:
- Size: 46.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b39f08e7626cf9dc2c7122fd0ca2fc131ec4811e269eeeda0244d92d242d1440
|
|
| MD5 |
3faba82a41c66c03e47b7e04f7ecbfdf
|
|
| BLAKE2b-256 |
022325138bfe5875169bad388f3662472245d5fe4e04e58d7d99f9f0653df1fc
|
Provenance
The following attestation bundles were made for thesis_tracker-1.0.3-py3-none-any.whl:
Publisher:
publish-python.yml on Satwik-Miyyapuram/thesis_tracker
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
thesis_tracker-1.0.3-py3-none-any.whl -
Subject digest:
b39f08e7626cf9dc2c7122fd0ca2fc131ec4811e269eeeda0244d92d242d1440 - Sigstore transparency entry: 2164992548
- Sigstore integration time:
-
Permalink:
Satwik-Miyyapuram/thesis_tracker@49a526d620c8f0df7cbadcb410d311acb53389b3 -
Branch / Tag:
refs/tags/v1.0.3 - Owner: https://github.com/Satwik-Miyyapuram
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-python.yml@49a526d620c8f0df7cbadcb410d311acb53389b3 -
Trigger Event:
release
-
Statement type: