Skip to main content

pyrig is a python toolkit that rigs up your project by standardizing and automating project setup, configuration and maintenance

Project description

pyrig

SecurityChecker DependencyAuditor

VersionController RemoteVersionController ContainerEngine Pyrigger PackageManager

DocsBuilder Documentation

PreCommitter Linter MDLinter TypeChecker

PackageIndex ProgrammingLanguage License

ProjectTester ProjectCoverageTester

CI CD


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.

Config Architecture

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 mktests generates 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
  • Packaginguv_build backend with console script integration

Builders · Resources

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

CLI Reference

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

pyrig-11.0.8.tar.gz (131.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pyrig-11.0.8-py3-none-any.whl (197.0 kB view details)

Uploaded Python 3

File details

Details for the file pyrig-11.0.8.tar.gz.

File metadata

  • Download URL: pyrig-11.0.8.tar.gz
  • Upload date:
  • Size: 131.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.3 {"installer":{"name":"uv","version":"0.11.3","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

Hashes for pyrig-11.0.8.tar.gz
Algorithm Hash digest
SHA256 9e6929370028f4c6ad82296b0cee6d7936b8b6f24df940965157d013a6e89a7c
MD5 d2d7b2536902cd4f48dfaaecb95314e3
BLAKE2b-256 347d216a0e8a1210acbbc582f01bf32f932cb3fa3c7f8d2a35ee666752f1b234

See more details on using hashes here.

File details

Details for the file pyrig-11.0.8-py3-none-any.whl.

File metadata

  • Download URL: pyrig-11.0.8-py3-none-any.whl
  • Upload date:
  • Size: 197.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.3 {"installer":{"name":"uv","version":"0.11.3","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

Hashes for pyrig-11.0.8-py3-none-any.whl
Algorithm Hash digest
SHA256 81ccd000c1bda95133dd1554dfe2c795e7ab6ae91d94aa4d94455e6527aded8f
MD5 2a5f8579d34610fef96ddffa02e5f35c
BLAKE2b-256 b53984d191c1cf4770e0dcde27d3d5b0ed38a88a88caf2954cb942155b51372d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page