This release has been yanked by its maintainers, and will be ignored by installers, except when explicitly specified.
Consider using release 0.5.0 instead.
Reason given by maintainers: resetting versioning
Training Video Organizer
A CLI tool for organizing training videos and logging lift data with SQLite storage.
Features
- Add individual lifts or bulk import sessions from JSON
- List, update, and delete logged entries
- Filter by date, program, exercise, weight, RIR, etc.
- Open video files directly from the database
- Rich terminal output with tables and colors
Tech Stack
- Python 3.10+
- Typer (CLI framework)
- SQLite (via dynamic schema generation)
- Rich (terminal UI)
Quick Start
# Install dependencies
uv sync
# Initialize the database
tvo init -d db/training.db
# Add a single lift
tvo add lift --date 2026-09-30 --program "Push/Pull/Legs" \
--iteration 1 --lift squat --weight 225 --reps 8 \
--top-set -f /videos/squat_20260930.mp4
# List all lifts
tvo list lifts
# Filter by program and iteration
tvo list lifts --program "Push/Pull/Legs" --iteration 1
# Open videos for top sets
tvo open --top-set -l 50
# Update a lift entry (by ID)
tvo update 42 --weight 230
# Delete an entry
tvo delete 42 --force
Project Structure
src/training_vid_organizer/— core packagecli.py— Typer app with all commandsdb_handling/db.py— dynamic SQLite schema from dataclasslogging_config.py— structured logging setuputils.py— video path helpers
Environment Variables
TVO_DB_PATH— override default database locationTVO_VIDEO_DIR— base directory for video filesTVO_LOG_LEVEL— set to DEBUG or INFO for verbose output
CI/CD Workflows
Automated pipelines run on GitHub:
- CI (
ci.yml): Runs on every commit/PR against main. Executes lint checks and fast tests for developer feedback. - Build & Release (
build-and-release.yml): Triggers on push tomain. Uses Hatch to auto-detect semantic version bumps from conventional commits, builds distributions, creates annotated tags, and generates release notes. - Publish (
publish.yml): Manual trigger via workflow_dispatch. Publishes to TestPyPI or PyPI using GitHub Actions trusted publishing (id-token).
Local Development Hooks
A pre-commit hook validates commit messages against Conventional Commits format before allowing commits to be staged. Run git commit and it will automatically check your message.
Commit messages follow Conventional Commits to enable automated versioning and release notes generation.
Format:
<type>[optional scope]!: <description>
[optional body explaining the change]
[optional BREAKING CHANGE footer]
Version Bump Rules (auto-detected by Hatch in CI):
feat!→ MINOR bump (new feature)fix!→ PATCH bump (bug fix)BREAKING CHANGE:ortype!:→ MAJOR bump- All other types → no version change
Supported Types:
| Type | Example | Effect |
|---|---|---|
feat |
feat: add export command |
MINOR (new functionality) |
fix |
fix: correct query filter NULL |
PATCH (bug fixes) |
docs |
docs: update README examples |
No bump |
style |
style: format code with ruff |
No bump |
refactor |
refactor: simplify db init |
No bump |
perf |
perf: optimize query execution |
No bump |
test |
test: add edge case coverage |
No bump |
chore |
chore: update dependencies |
No bump |
Examples:
feat!: add export command # MINOR (breaking feature)
fix: correct query filter NULL # PATCH
refactor: simplify db init # No bump
BREAKING CHANGE: schema change # MAJOR (when used with type!)
Local commits are validated by pre-commit hooks before being pushed. CI uses Hatch to auto-detect and apply version bumps based on commit types.
Metadata
Release files for training-vid-organizer 1.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 | |
|---|---|---|---|---|
| training_vid_organizer-1.1.1.tar.gz | 25.5 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| training_vid_organizer-1.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 41.3 kB
Release files / training_vid_organizer-1.1.1.tar.gz
| Download URL | training_vid_organizer-1.1.1.tar.gz |
|---|---|
| Size | 25.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
169493b6a3113c5019f59343c3fa88a4f3fb9fedb5f9a3859d6a7697c7fdeb90
|
|
BLAKE2b-256 checksum How to use checksums |
b96f3f7615d9f1ce031d26bef6b58701e1d940753bdd9350b22f14a8c8b13ed7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.21 {"installer":{"name":"uv","version":"0.12.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / training_vid_organizer-1.1.1-py3-none-any.whl
| Download URL | training_vid_organizer-1.1.1-py3-none-any.whl |
|---|---|
| Size | 15.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
30971f04136069cbc824098892e5e03e5e962a4aa8702536d6558e0194ebf15e
|
|
BLAKE2b-256 checksum How to use checksums |
1681c1ccdec4195d5cc65f09cdae07d9bccbcff6be68ee4c6b3f5de1ba0ecd72
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.21 {"installer":{"name":"uv","version":"0.12.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Security for training-vid-organizer 1.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.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A 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.