▲ 2 r/madeinpython+1 crossposts

I built pyrig: scaffold a fully configured Python project with one command, and keep it in sync

Every new Python project needs the same setup: linting, type checking, tests, pre-commit hooks, CI/CD, docs, release workflow, repo protection. I got tired of copying it between projects and watching the copies drift as the tools changed, so I built pyrig (written in Python).

What it does

pyrig init generates a complete, working project:

  • project layout, pyproject.toml, README, LICENSE and other standard files

  • dev tooling configured out of the box: ruff, ty, pytest, prek hooks, deptry, bandit, zizmor and more

  • GitHub Actions CI/CD and GitHub branch protection rules

  • a working CLI for your project (pyrig mk cmd <name> adds commands)

  • test skeletons that mirror your source tree

    uv init my-project --python 3.12 cd my-project uv add pyrig --dev uv run pyrig init

How it works

Every file pyrig manages is a Python class that declares the state the file should have. pyrig sync creates or updates the files to match, so the project doesn't drift when tools change. You customize by subclassing (pyrig mk subcls), not with flags or template edits. A small plugin system, pyrig-runtime, discovers your subclasses automatically across installed packages, so any behavior can be changed, removed or extended.

Trade-offs

It's deliberately opinionated: no on/off toggles (you override a class instead), GitHub only, signed commits and linear history on the generated branch rules, and it adopts new tools like ty and zensical quickly, so expect rough edges. pyrig rm pyrig removes it, and most generated files keep working without it. Full list: https://winipedia.github.io/pyrig/drawbacks

Links

I'd like feedback on which defaults you'd disagree with and what's missing for your workflow.

reddit.com
u/Win_ipedia — 11 days ago
▲ 4 r/madeinpython+3 crossposts

I built a registerless plugin system based on classes for Python

Overview

Put simply, pyrig-runtime is a plugin system based on classes that declare functionality through code, and via subclassing these classes any state and functionality can be changed, removed or extended by overriding the methods of parent classes. For pyrig-runtime itself this applies to the CLI class it provides.

Specifically, pyrig-runtime defines one base class DependencySubclass at the root of this plugin system. All classes that inherit from it are automatically discoverable. The discovery is achieved as follows: pyrig-runtime builds a directed graph from all installed dependencies in the current Python environment, and finds all packages that have pyrig-runtime as their ancestor in the graph. Those packages are then imported and scanned for any classes that inherit from DependencySubclass. Through the DependencySubclass base class, every subclass has a .leaf() method that returns the leaf class of the inheritance tree. If several leaf classes are found by the discovery mechanism, they are dynamically merged into a single class with multiple inheritance. This is what lets independently installed packages cooperatively extend the same piece of behaviour. It is then simply possible in code logic to access the leaf and work with it.

Features

  • Plugin discovery via classes — define a base class and its subclasses are discovered automatically across every installed package that depends on it without the need for registration. Learn more.

Documentation

For anything beyond this overview, see the Documentation.

reddit.com
u/Win_ipedia — 1 month ago
▲ 3 r/madeinpython+1 crossposts

I was tired maintaining several projects so I built pyrig

Hi,

ever had the problem that if you have several projects and need to maintain them over time you are all the time stuck fixing configuration files or changing dev tools.

Decided to switch from black to ruff or decided to add a new dev dependency like a spell checker or decided to enable or disable a config setting in some file?

The problem now you need to repeat the same process manually in every project you have that you want to do this in.

I hated doing this kind of tasks over and over again whenever I wanted to use or change a setting or tool. Also whenever I started a new project I had to copy over files and adjust them properly, there was always something I forgot to do and I often spend valuable unnecessary time to fix things. Once I was done, I did not even feel like the change was worth the effort, although rationally I knew I made my project better with it.

So I built pyrig: https://github.com/Winipedia/pyrig

pyrig is a package and tool that rigs up Python projects. It scaffolds and initializes a complete, fully configured, installed and working Python project with everything a modern Python project should have and makes the process of developing and maintaining it more seamless and efficient by automating things like configuration management, CLI generation, testing infrastructure, and more.

pyrig has a opinionated default for literally everything a python project needs. You do not like smth? Create your own plugin for pyrig, override and adjust any value it scaffolds or sets via the plugin system, then just install your plugin as a dev dependency.

Now whenever you want to change a setting of file that pyrig manages, you just simply adjust in that plugin and see it automatically applied in all your projects automatically, no more forgetting to adjust smth in a project and no more pain when switching tools.

I can now genuinely say that I spend so much less time on these kind of maintenance tasks. For example recently I decided to switch from mkdocs to zensical, but I had to do that in 15 projects, Usually this would have taken many many hours until everything works in all projects, even with the use and help of AI. With pyrig I was done in a few minutes, I just switched the tool in pyrig and ran a quick shell script on all my repos to call the pyrig sync command and I was done.

If you want to know more about the specifics, here are the links to the docs:

Full Documentation The manually written documentation
CodeWiki AI-generated documentation
Tutorials YouTube tutorials for pyrig
u/Win_ipedia — 1 month ago

pyrig - A tool that standardizes and automates Python project setup, configuration, development, and maintenance.

What is pyrig?

pyrig is a package and tool that rigs up Python projects. It scaffolds and initializes a complete, fully configured, installed and working Python project with everything a modern Python project should have and makes the process of developing and maintaining it more seamless and efficient by automating things like configuration management, CLI generation, testing infrastructure, and more.

Requirements

  • Python 3.12+
  • Git
  • uv

Quick Start

uv init my-project --python 3.12
cd my-project
uv add pyrig --dev
uv run pyrig init

See the Getting Started Guide for detailed setup instructions to also fully integrate with GitHub and CI/CD from the start.

Features

Project Scaffolding & Initialization

The pyrig init command generates a complete project, this includes, but is not limited to:

  • Standardized directory structure
  • Fully configured dev tools (linters, formatters, type checkers, test frameworks, git hooks, etc.)
  • End-to-end CI/CD pipeline with GitHub Actions and integrated repository protection
  • Complete and working CLI
  • And much more...

File & Configuration Management

pyrig manages and validates project files via classes, where every file is treated as a data structure (dict or list), the content is loaded and validated against the class schema. This makes it possible to override and adjust any and all behaviour of pyrig via subclassing said classes. pyrig will automatically discover and use your custom classes without any additional configuration. Run pyrig mk subcls to generate a subclass for any pyrig class. Run pyrig sync to create or update all config files at once.

Automatic CLI

pyrig init sets up a CLI for your project that works immediately. Generate and add new commands by running pyrig mk cmd <name>. An automatic version command is included that shows the version of your project. Run my-project version to see it in action.

Mirror Test Generation & Maintenance

Generate test skeletons with pyrig sync. This will generate test skeletons for all source modules and update them automatically as your project evolves.

Multi-Package Inheritance and Extensibility Architecture

Override and customize any and all behavior to suit your project's needs. pyrig's classes are designed for inheritance and composition, allowing you to create custom configurations, tools, and more by subclassing and simply overriding methods. pyrig will automatically discover and use your custom classes without any additional configuration. Run pyrig mk subcls to generate a subclass for any pyrig class.

CI/CD & Repository Protection

Pyrig generates GitHub Actions workflows for CI/CD which automatically test and release your code. They also configure and apply repository protection settings and protection rulesets. Push your code to GitHub after initialization and see it in action.

Commands

Run pyrig --help to see a list of all available commands and their usage. Run pyrig <command> --help for more information about a specific command and its usage. Run my-project --help to see the automatically generated CLI for your project.

Comparisons

pyrig isn't the only tool in this field. See how it compares to other popular tools like cookiecutter, copier or pyscaffold.

Documentation

Full Documentation The manually written documentation
CodeWiki AI-generated documentation
Tutorials YouTube tutorials for pyrig
reddit.com
u/Win_ipedia — 2 months ago
▲ 4 r/madeinpython+1 crossposts

Asking for survey participants for my project

So basically for my Masters in Computer Science I am doing a project regarding Python project setup and maintenance and I need to do a survey to get feedback on what I am developing and so far there have been only limited responses. So I wanted to ask for anyone who would be willing to help with this and fill out the survey or give feedback. It is max 5 minutes and almost all question are multiple choice. You can find the survey at: https://forms.cloud.microsoft/e/LjnvzX0JpK Any and all responses are insanely appreciated. If you want to check out the tool itself and just give feedback in here that is also cool: https://github.com/Winipedia/pyrig

reddit.com
u/Win_ipedia — 2 months ago

pyrig - A tool that standardizes and automates Python project setup, configuration, development, and maintenance

What is pyrig?

pyrig is a package and tool that rigs up your project. It scaffolds and initializes a complete, fully configured, installed and working Python project with one command and makes the process of developing and maintaining it more seamless and efficient by automating things like configuration management, CLI generation, testing infrastructure, and more.

Requirements

  • Python 3.12+
  • Git
  • uv

Quick Start

uv init my-project --python 3.12
cd my-project
uv add pyrig --dev
uv run pyrig init

See the Getting Started Guide for detailed setup instructions to also fully integrate with GitHub and CI/CD from the start.

Features

Project Scaffolding & Initialization

pyrig init generates a complete project in one command that works out of the box. This includes everything a modern python project needs:

  • Standardized directory structure
  • Fully configured dev tools (linters, formatters, type checkers, test frameworks, git hooks, etc.)
  • End-to-end CI/CD pipeline with GitHub Actions and integrated repository protection
  • Complete and working CLI
  • And much more...

File & Configuration Management

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. Run pyrig sync to create or update all config files at once. Run pyrig mk subcls to generate a subclass for overriding a specific file.

Automatic CLI

pyrig init sets up a CLI for your project that works immediately. Generate and add new commands by running pyrig mk cmd <name>. An automatic version command is included that shows the version of your project. Run my-project version to see it in action.

Mirror Test Generation & Maintenance

Generate test skeletons with pyrig sync. This will generate test skeletons for all source modules and update them automatically as your project evolves.

Multi-Package Inheritance and Extensibility Architecture

Override and customize any and all behaviour to suit your project's needs. pyrig's classes are designed for inheritance and composition, allowing you to create custom configurations, tools, and more by subclassing and simply overriding methods. pyrig will automatically discover and use your custom classes without any additional configuration. Run pyrig mk subcls to generate a subclass for any pyrig class.

CI/CD & Repository Protection

Pyrig generates GitHub Actions workflows for CI/CD which automatically test and release your code. They also configure and apply repository protection settings and protection rulesets. Push your code to GitHub after initialization and see it in action.

Commands

Run pyrig --help to see a list of all available commands and their usage. Run pyrig <command> --help for more information about a specific command and its usage. Run my-project --help to see the automatically generated CLI for your project.

Documentation

Full Documentation The manually written documentation
CodeWiki AI-generated documentation
Tutorials YouTube tutorials for pyrig
reddit.com
u/Win_ipedia — 2 months ago

Asking for feedback on my tool I built

Hi there,

I am building a tool as my project for my Masters in Computer Science and I need to make a survey to evaluate my tool.

The tool is concerned with project setup and maintenance.

The survey has about 18 questions and almost all of them multiple choice. So it should not take very long, max 5 min. Any responses are greatly appreciated: https://forms.cloud.microsoft/e/LjnvzX0JpK

If you want to checkout the project itself you can find it here: https://github.com/Winipedia/pyrig

Also drop any ideas or feedback you have in the comments if you like. I am open for any discussions.

reddit.com
u/Win_ipedia — 2 months ago

Need help and feedback for my Masters project

Hi there,

I am trying to figure out ways to automate my Python development tasks and also working on this topic for my Masters project. I am trying to build a tool that can automate and simplify a bunch of things like project setup, development and maintenance. It is just my project and topic for my Masters in Computer Science and I wanted to ask if anyone would like to take part in the survey I have to do. Takes about 5 min. Also would like to ask for any ideas and help that people have?

You can find the survey at: https://forms.cloud.microsoft/e/LjnvzX0JpK

Any ideas and responses are greatly appreciated.

Drop any ideas you have in the comments. What do you think should be more automated in your day to day python development?

reddit.com
u/Win_ipedia — 2 months ago

pyrig - A tool that standardizes and automates Python project setup, configuration, development, and maintenance

What is pyrig?

pyrig is a package and tool that rigs up your project. It scaffolds and initializes a complete, fully configured, installed and working Python project with one command and makes the process of developing and maintaining it more seamless and efficient by automating things like configuration management, CLI generation, testing infrastructure, and more.

Requirements

  • Python 3.12+
  • Git
  • uv

Quick Start

uv init my-project --python 3.12
cd my-project
uv add pyrig --dev
uv run pyrig init

See the Getting Started Guide for detailed setup instructions to also fully integrate with GitHub and CI/CD from the start.

Features

Project Scaffolding & Initialization

pyrig init generates a complete project in one command that works out of the box. This includes everything a modern python project needs:

  • Standardized directory structure
  • Fully configured dev tools (linters, formatters, type checkers, test frameworks, git hooks, etc.)
  • End-to-end CI/CD pipeline with GitHub Actions and integrated repository protection
  • Complete and working CLI
  • And much more...

File & Configuration Management

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. Run pyrig sync to create or update all config files at once. Run pyrig mk subcls to generate a subclass for overriding a specific file.

Automatic CLI

pyrig init sets up a CLI for your project that works immediately. Generate and add new commands by running pyrig mk cmd <name>. An automatic version command is included that shows the version of your project. Run my-project version to see it in action.

Mirror Test Generation & Maintenance

Generate test skeletons with pyrig sync. This will generate test skeletons for all source modules and update them automatically as your project evolves.

Multi-Package Inheritance and Extensibility Architecture

Override and customize any and all behaviour to suit your project's needs. pyrig's classes are designed for inheritance and composition, allowing you to create custom configurations, tools, and more by subclassing and simply overriding methods. pyrig will automatically discover and use your custom classes without any additional configuration. Run pyrig mk subcls to generate a subclass for any pyrig class.

CI/CD & Repository Protection

Pyrig generates GitHub Actions workflows for CI/CD which automatically test and release your code. They also configure and apply repository protection settings and protection rulesets. Push your code to GitHub after initialization and see it in action.

Commands

Run pyrig --help to see a list of all available commands and their usage. Run pyrig <command> --help for more information about a specific command and its usage. Run my-project --help to see the automatically generated CLI for your project.

Documentation

Full Documentation The manually written documentation
CodeWiki AI-generated documentation
Tutorials YouTube tutorials for pyrig
reddit.com
u/Win_ipedia — 2 months ago
▲ 0 r/Python

Improving Project Maintenance

Hi there,

I am trying to figure out ways to automate my Python development and maintenance tasks and also working on this topic for my Masters project. I am trying to build a tool that can automate and simplify a bunch of things like project setup, development and maintenance. This is not a showcase at all, it is just my project and topic for my Masters in Computer Science and I wanted to ask if anyone would like to take part in the survey I have to do. Takes about 5 min.

You can find the survey at: https://forms.cloud.microsoft/e/LjnvzX0JpK

Any ideas and responses are greatly appreciated.

Also drop any ideas you have in the comments. What do you think should be more automated or at least improved in your day to day project maintenance?

reddit.com
u/Win_ipedia — 2 months ago
▲ 0 r/Python

I am trying to automate the Python Development Lifecycle

Hi there,

I am trying to figure out ways to automate my Python development tasks and also working on this topic for my Masters project. I am trying to build a tool that can automate and simplify a bunch of things like project setup, development and maintenance. This is not a showcase at all, it is just my project and topic for my Masters in Computer Science and I wanted to ask if anyone would like to take part in the survey I have to do. Takes about 5 min.

You can find the survey at: https://forms.cloud.microsoft/e/LjnvzX0JpK

Any ideas and responses are greatly appreciated.

Also drop any ideas you have in the comments. What do you think should be more automated in your day to day python development?

reddit.com
u/Win_ipedia — 2 months ago
▲ 0 r/Python

Can we make Python Development less frustrating?

Hi there,

I wondering what tools improve frustrations for developers when developing software with Python.

I am currently doing my Masters in Computer Science and as part of my project I am doing a very simple survey about what can make the usual Python development lifecycle less frustrating. I am basically trying to find out what the main friction points are for Python Developers and I am simultaneously developing a tool to address those friction points . It just takes a 2-3 minutes and every response is greatly appreciated.

You can find the survey at: https://forms.cloud.microsoft/e/LjnvzX0JpK

reddit.com
u/Win_ipedia — 2 months ago
▲ 42 r/Python

What frustrates you the most about Python Development

Hi there,

I wondering what frustrates developers the most when developing software with Python.

I am currently doing my Masters in Computer Science and as part of my project I am doing a very simple survey about the usual Python development lifecycle. I am basically trying to find out what the main friction points are for Python Developers and I am simultaneously developing a tool to address those friction points . It just takes a 2-3 minutes and every response is greatly appreciated.

You can find the survey at: Microsoft Forms

reddit.com
u/Win_ipedia — 3 months ago