pyrig is a python toolkit that rigs up your project by standardizing and automating project setup, configuration and maintenance
Project description
pyrig
pyrig is a python toolkit that rigs up your project by standardizing and automating project setup, configuration and maintenance
What is pyrig?
pyrig generates and maintains a complete, production-ready Python project from a single command. It creates all the files you need — source structure, tests, CI/CD, documentation, configs — and keeps them in sync as your project evolves. Rerun it anytime: pyrig is idempotent.
Quick Start
uv init
uv add pyrig
uv run pyrig init
See the Getting Started Guide for detailed setup instructions.
Features
Idempotent Project Scaffolding
pyrig init generates a complete project in one command — source tree, tests,
CI/CD workflows, documentation, configs, and a working CLI. Run it again
anytime to sync everything; pyrig never overwrites your customizations.
→ Getting Started · Generated Structure
Config File System
Every generated file is backed by a Python class that validates and merges automatically. Override any config by subclassing, or define entirely new config files — pyrig discovers and manages them for you.
Automatic CLI
pyrig init sets up a CLI for your project that works immediately. Add
commands by defining functions in <package>.rig.cli.subcommands — they're
discovered automatically. Shared commands propagate across the entire
dependency chain.
→ CLI docs
Testing Infrastructure
- pytest as the test runner with autouse fixtures that enforce best practices
pyrig mktestsgenerates test skeletons mirroring your source structure- Autouse fixtures validate project invariants — init files, config correctness, dependency freshness
→ Test Structure · Autouse Fixtures
Multi-Package Inheritance (.I pattern)
Override almost any behavior — configs, tools, CLI commands, builders — by subclassing the pyrig-provided class. pyrig discovers your implementation automatically and uses it instead of the default.
This enables creating a personal pyrig package with your own standards,
adding it as a dependency to any project, and having pyrig init apply
everything automatically.
→ Tool Architecture · Config Architecture
Tool Wrappers
Type-safe wrappers around uv, git, ruff, pytest, bandit, and more.
Customizable via subclassing for organization-wide or per-project overrides.
→ Tools · Tooling Choices
Builders, Resources & Packaging
- Builders — PyInstaller integration and extensible build system
- Resources — Reliable file access in both development and PyInstaller bundles
- Packaging —
uv_buildbackend with console script integration
CI/CD & Repository Automation
Generates GitHub Actions workflows, branch protection configs, issue/PR
templates, and release flows. Verbosity flags (-v, -vv, -q) provide
flexible logging across all commands.
→ Workflows · Branch Protection
CLI Commands
uv run pyrig init # Full project initialization
uv run pyrig mkroot # Create/update all config files
uv run pyrig mktests # Generate test skeletons
uv run pyrig mkinits # Create missing __init__.py files
uv run pyrig build # Build artifacts (PyInstaller, etc.)
uv run pyrig protect-repo # Configure repository protection
uv run pyrig scratch # Execute the project's .scratch file
uv run pyrig rmpyc # Remove __pycache__ directories
uv run my-project --help # Your project's CLI
uv run my-project version # Show pyrig or project version
Documentation
| Getting Started | Complete setup guide |
| Full Documentation | Comprehensive reference |
| Trade-offs | What you give up and what you gain |
| CodeWiki | AI-generated docs |
| Tutorials | YouTube tutorials for pyrig |
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 pyrig-10.1.16.tar.gz.
File metadata
- Download URL: pyrig-10.1.16.tar.gz
- Upload date:
- Size: 134.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cf50ee0b9efb9b5d43cc03fa65a097a013b23b1dff9878d6a1d94f4201013155
|
|
| MD5 |
af174251378127b0775401af18a16352
|
|
| BLAKE2b-256 |
ee1196b417606053528320109f51d27bcf12d63e180d52388c1fd22a32192247
|
File details
Details for the file pyrig-10.1.16-py3-none-any.whl.
File metadata
- Download URL: pyrig-10.1.16-py3-none-any.whl
- Upload date:
- Size: 204.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1a8e48a0f8d137c49b3cd6d4eff8c9a0cacc71ccfd6f3d006769ad8e9acd96d4
|
|
| MD5 |
31efadb1dd931787ac1a659cc7a7d9d2
|
|
| BLAKE2b-256 |
402d2d1f34e4fc207a921c2de454035ecd98965cc9dfa51731337e2cb9737f92
|