pyrig 2.2.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- pyrig-2.2.2/LICENSE +21 -0
- pyrig-2.2.2/PKG-INFO +169 -0
- pyrig-2.2.2/README.md +156 -0
- pyrig-2.2.2/pyproject.toml +88 -0
- pyrig-2.2.2/pyrig/__init__.py +1 -0
- pyrig-2.2.2/pyrig/dev/__init__.py +6 -0
- pyrig-2.2.2/pyrig/dev/builders/__init__.py +1 -0
- pyrig-2.2.2/pyrig/dev/builders/base/__init__.py +5 -0
- pyrig-2.2.2/pyrig/dev/builders/base/base.py +256 -0
- pyrig-2.2.2/pyrig/dev/builders/pyinstaller.py +229 -0
- pyrig-2.2.2/pyrig/dev/cli/__init__.py +5 -0
- pyrig-2.2.2/pyrig/dev/cli/cli.py +89 -0
- pyrig-2.2.2/pyrig/dev/cli/commands/__init__.py +1 -0
- pyrig-2.2.2/pyrig/dev/cli/commands/build_artifacts.py +16 -0
- pyrig-2.2.2/pyrig/dev/cli/commands/create_root.py +25 -0
- pyrig-2.2.2/pyrig/dev/cli/commands/create_tests.py +244 -0
- pyrig-2.2.2/pyrig/dev/cli/commands/init_project.py +160 -0
- pyrig-2.2.2/pyrig/dev/cli/commands/make_inits.py +27 -0
- pyrig-2.2.2/pyrig/dev/cli/commands/protect_repo.py +145 -0
- pyrig-2.2.2/pyrig/dev/cli/subcommands.py +73 -0
- pyrig-2.2.2/pyrig/dev/configs/__init__.py +1 -0
- pyrig-2.2.2/pyrig/dev/configs/base/__init__.py +5 -0
- pyrig-2.2.2/pyrig/dev/configs/base/base.py +826 -0
- pyrig-2.2.2/pyrig/dev/configs/containers/__init__.py +1 -0
- pyrig-2.2.2/pyrig/dev/configs/containers/container_file.py +111 -0
- pyrig-2.2.2/pyrig/dev/configs/dot_env.py +95 -0
- pyrig-2.2.2/pyrig/dev/configs/dot_python_version.py +88 -0
- pyrig-2.2.2/pyrig/dev/configs/git/__init__.py +5 -0
- pyrig-2.2.2/pyrig/dev/configs/git/gitignore.py +181 -0
- pyrig-2.2.2/pyrig/dev/configs/git/pre_commit.py +170 -0
- pyrig-2.2.2/pyrig/dev/configs/licence.py +112 -0
- pyrig-2.2.2/pyrig/dev/configs/markdown/__init__.py +1 -0
- pyrig-2.2.2/pyrig/dev/configs/markdown/docs/__init__.py +1 -0
- pyrig-2.2.2/pyrig/dev/configs/markdown/docs/index.py +38 -0
- pyrig-2.2.2/pyrig/dev/configs/markdown/readme.py +132 -0
- pyrig-2.2.2/pyrig/dev/configs/py_typed.py +28 -0
- pyrig-2.2.2/pyrig/dev/configs/pyproject.py +436 -0
- pyrig-2.2.2/pyrig/dev/configs/python/__init__.py +5 -0
- pyrig-2.2.2/pyrig/dev/configs/python/builders_init.py +27 -0
- pyrig-2.2.2/pyrig/dev/configs/python/configs_init.py +28 -0
- pyrig-2.2.2/pyrig/dev/configs/python/dot_experiment.py +46 -0
- pyrig-2.2.2/pyrig/dev/configs/python/main.py +59 -0
- pyrig-2.2.2/pyrig/dev/configs/python/resources_init.py +27 -0
- pyrig-2.2.2/pyrig/dev/configs/python/src_init.py +27 -0
- pyrig-2.2.2/pyrig/dev/configs/python/subcommands.py +27 -0
- pyrig-2.2.2/pyrig/dev/configs/testing/__init__.py +5 -0
- pyrig-2.2.2/pyrig/dev/configs/testing/conftest.py +64 -0
- pyrig-2.2.2/pyrig/dev/configs/testing/fixtures_init.py +27 -0
- pyrig-2.2.2/pyrig/dev/configs/testing/main_test.py +74 -0
- pyrig-2.2.2/pyrig/dev/configs/testing/zero_test.py +43 -0
- pyrig-2.2.2/pyrig/dev/configs/workflows/__init__.py +5 -0
- pyrig-2.2.2/pyrig/dev/configs/workflows/base/__init__.py +5 -0
- pyrig-2.2.2/pyrig/dev/configs/workflows/base/base.py +1662 -0
- pyrig-2.2.2/pyrig/dev/configs/workflows/build.py +106 -0
- pyrig-2.2.2/pyrig/dev/configs/workflows/health_check.py +133 -0
- pyrig-2.2.2/pyrig/dev/configs/workflows/publish.py +68 -0
- pyrig-2.2.2/pyrig/dev/configs/workflows/release.py +90 -0
- pyrig-2.2.2/pyrig/dev/tests/__init__.py +5 -0
- pyrig-2.2.2/pyrig/dev/tests/conftest.py +40 -0
- pyrig-2.2.2/pyrig/dev/tests/fixtures/__init__.py +1 -0
- pyrig-2.2.2/pyrig/dev/tests/fixtures/assertions.py +147 -0
- pyrig-2.2.2/pyrig/dev/tests/fixtures/autouse/__init__.py +5 -0
- pyrig-2.2.2/pyrig/dev/tests/fixtures/autouse/class_.py +42 -0
- pyrig-2.2.2/pyrig/dev/tests/fixtures/autouse/module.py +40 -0
- pyrig-2.2.2/pyrig/dev/tests/fixtures/autouse/session.py +589 -0
- pyrig-2.2.2/pyrig/dev/tests/fixtures/factories.py +118 -0
- pyrig-2.2.2/pyrig/dev/utils/__init__.py +1 -0
- pyrig-2.2.2/pyrig/dev/utils/git.py +312 -0
- pyrig-2.2.2/pyrig/dev/utils/packages.py +91 -0
- pyrig-2.2.2/pyrig/dev/utils/resources.py +77 -0
- pyrig-2.2.2/pyrig/dev/utils/testing.py +66 -0
- pyrig-2.2.2/pyrig/dev/utils/versions.py +268 -0
- pyrig-2.2.2/pyrig/main.py +9 -0
- pyrig-2.2.2/pyrig/py.typed +0 -0
- pyrig-2.2.2/pyrig/resources/GITIGNORE +216 -0
- pyrig-2.2.2/pyrig/resources/LATEST_PYTHON_VERSION +1 -0
- pyrig-2.2.2/pyrig/resources/MIT_LICENSE_TEMPLATE +21 -0
- pyrig-2.2.2/pyrig/resources/__init__.py +1 -0
- pyrig-2.2.2/pyrig/src/__init__.py +1 -0
- pyrig-2.2.2/pyrig/src/git/__init__.py +6 -0
- pyrig-2.2.2/pyrig/src/git/git.py +146 -0
- pyrig-2.2.2/pyrig/src/graph.py +189 -0
- pyrig-2.2.2/pyrig/src/iterate.py +107 -0
- pyrig-2.2.2/pyrig/src/modules/__init__.py +22 -0
- pyrig-2.2.2/pyrig/src/modules/class_.py +369 -0
- pyrig-2.2.2/pyrig/src/modules/function.py +189 -0
- pyrig-2.2.2/pyrig/src/modules/inspection.py +148 -0
- pyrig-2.2.2/pyrig/src/modules/module.py +658 -0
- pyrig-2.2.2/pyrig/src/modules/package.py +449 -0
- pyrig-2.2.2/pyrig/src/os/__init__.py +6 -0
- pyrig-2.2.2/pyrig/src/os/os.py +121 -0
- pyrig-2.2.2/pyrig/src/project/__init__.py +5 -0
- pyrig-2.2.2/pyrig/src/project/mgt.py +83 -0
- pyrig-2.2.2/pyrig/src/resource.py +58 -0
- pyrig-2.2.2/pyrig/src/string.py +100 -0
- pyrig-2.2.2/pyrig/src/testing/__init__.py +6 -0
- pyrig-2.2.2/pyrig/src/testing/assertions.py +66 -0
- pyrig-2.2.2/pyrig/src/testing/convention.py +203 -0
pyrig-2.2.2/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Winipedia
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
pyrig-2.2.2/PKG-INFO
ADDED
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: pyrig
|
|
3
|
+
Version: 2.2.2
|
|
4
|
+
Summary: A Python toolkit that standardizes and automates project setup, configuration and development.
|
|
5
|
+
Author: Winipedia
|
|
6
|
+
License-File: LICENSE
|
|
7
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
8
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
9
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
10
|
+
Requires-Dist: typer>=0.20.0
|
|
11
|
+
Requires-Python: >=3.12
|
|
12
|
+
Description-Content-Type: text/markdown
|
|
13
|
+
|
|
14
|
+
# pyrig
|
|
15
|
+
|
|
16
|
+
<!-- tooling -->
|
|
17
|
+
[](https://github.com/Winipedia/pyrig)
|
|
18
|
+
[](https://github.com/astral-sh/uv)
|
|
19
|
+
[](https://podman.io/)
|
|
20
|
+
[](https://pre-commit.com/)
|
|
21
|
+
<!-- code-quality -->
|
|
22
|
+
[](https://github.com/astral-sh/ruff)
|
|
23
|
+
[](https://github.com/astral-sh/ty)[](https://mypy-lang.org/)
|
|
24
|
+
[](https://github.com/PyCQA/bandit)
|
|
25
|
+
[](https://pytest.org/)
|
|
26
|
+
[](https://codecov.io/gh/Winipedia/pyrig)
|
|
27
|
+
<!-- package-info -->
|
|
28
|
+
[](https://pypi.org/project/pyrig/)
|
|
29
|
+
[](https://www.python.org/)
|
|
30
|
+
[](https://github.com/Winipedia/pyrig/blob/main/LICENSE)
|
|
31
|
+
<!-- ci/cd -->
|
|
32
|
+
[](https://github.com/Winipedia/pyrig/actions/workflows/health_check.yaml)
|
|
33
|
+
[](https://github.com/Winipedia/pyrig/actions/workflows/release.yaml)
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
> A Python toolkit that standardizes and automates project setup, configuration and development.
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## What is pyrig?
|
|
42
|
+
|
|
43
|
+
**pyrig** is an opinionated Python project framework that enforces best practices and keeps your projects up-to-date automatically. Unlike traditional project templates, pyrig is a living system that manages your entire development lifecycle. Pyrig makes project development seemless and keeps you focused on your code. It allows even in bigger project to not lose the overview. It opinionated and best practices approach allows you to always know what belongs where and where to find things.
|
|
44
|
+
|
|
45
|
+
### Key Features
|
|
46
|
+
|
|
47
|
+
- **Automated Setup** - Initialize production-ready projects in seconds with `pyrig init`
|
|
48
|
+
- **Living Configuration** - Configs stay synchronized automatically, no manual maintenance
|
|
49
|
+
- **Enforced Quality** - Strict linting, type checking, testing, and security scanning out of the box
|
|
50
|
+
- **Always Current** - Automatic dependency updates and latest tool versions via CI/CD
|
|
51
|
+
- **Multi-Package Support** - Build package ecosystems with cross-package discovery
|
|
52
|
+
- **Extensible Architecture** - Plugin system for custom ConfigFiles and Builders
|
|
53
|
+
|
|
54
|
+
### Philosophy
|
|
55
|
+
|
|
56
|
+
pyrig is designed for **serious, long-term Python projects** where code quality and maintainability matter. It makes opinionated choices about tooling and enforces best practices, so you can focus on building features instead of configuring tools and wondering whta is the best way to do something.
|
|
57
|
+
|
|
58
|
+
## Quick Start
|
|
59
|
+
|
|
60
|
+
### Prerequisites
|
|
61
|
+
|
|
62
|
+
- **Git** with username matching your GitHub username
|
|
63
|
+
- **uv** package manager
|
|
64
|
+
- **Podman** (for containerization)
|
|
65
|
+
|
|
66
|
+
### Installation
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
# Create a new GitHub repository (don't initialize with README)
|
|
70
|
+
# Clone it locally
|
|
71
|
+
git clone https://github.com/YourUsername/your-project.git
|
|
72
|
+
cd your-project
|
|
73
|
+
|
|
74
|
+
# Initialize with uv
|
|
75
|
+
uv init
|
|
76
|
+
|
|
77
|
+
# Add pyrig
|
|
78
|
+
uv add pyrig
|
|
79
|
+
|
|
80
|
+
# Initialize your project (this does everything!)
|
|
81
|
+
uv run pyrig init
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
That's it! You now have a fully configured project with:
|
|
85
|
+
- Automated testing with pytest (90% coverage requirement)
|
|
86
|
+
- Linting and formatting with ruff (ALL rules enabled)
|
|
87
|
+
- Type checking with ty and mypy (strict mode)
|
|
88
|
+
- Security scanning with bandit
|
|
89
|
+
- Pre-commit hooks for quality enforcement
|
|
90
|
+
- GitHub Actions CI/CD workflows
|
|
91
|
+
- Branch protection and repository security
|
|
92
|
+
- Containerfile for deployment
|
|
93
|
+
|
|
94
|
+
### Next Steps
|
|
95
|
+
|
|
96
|
+
After initialization, start coding in `<package>/src/` and run:
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
uv run pyrig mktests # Generate test skeletons
|
|
100
|
+
uv run pytest # Run tests
|
|
101
|
+
git add .
|
|
102
|
+
git commit -m "Add feature" # Pre-commit hooks run automatically
|
|
103
|
+
git push
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
## Documentation
|
|
107
|
+
- **[Documentation Index](docs/index.md)** - Full documentation
|
|
108
|
+
|
|
109
|
+
## Technology Stack
|
|
110
|
+
|
|
111
|
+
pyrig uses cutting-edge Python tooling:
|
|
112
|
+
|
|
113
|
+
- **[uv](https://github.com/astral-sh/uv)** - Fast Python package manager
|
|
114
|
+
- **[ruff](https://github.com/astral-sh/ruff)** - Extremely fast linter and formatter
|
|
115
|
+
- **[ty](https://github.com/astral-sh/ty)** - Fast type checker
|
|
116
|
+
- **[mypy](https://mypy-lang.org/)** - Static type checker
|
|
117
|
+
- **[pytest](https://pytest.org/)** - Testing framework
|
|
118
|
+
- **[bandit](https://github.com/PyCQA/bandit)** - Security scanner
|
|
119
|
+
- **[pre-commit](https://pre-commit.com/)** - Git hook framework
|
|
120
|
+
- **[Podman](https://podman.io/)** - Daemonless container runtime
|
|
121
|
+
- **[GitHub Actions](https://github.com/features/actions)** - CI/CD platform
|
|
122
|
+
|
|
123
|
+
## What Makes pyrig Different?
|
|
124
|
+
|
|
125
|
+
Unlike cookiecutter, copier, or other project templates:
|
|
126
|
+
|
|
127
|
+
- **Living** - Configs stay synchronized automatically, not just at creation time
|
|
128
|
+
- **Opinionated** - Best practices enforced, not suggested
|
|
129
|
+
- **Comprehensive** - Handles everything from init to deployment
|
|
130
|
+
- **Current** - Automatically updates to latest tools and standards
|
|
131
|
+
- **Extensible** - Plugin architecture for custom functionality
|
|
132
|
+
|
|
133
|
+
## Project Structure
|
|
134
|
+
|
|
135
|
+
pyrig creates a clean, organized structure:
|
|
136
|
+
|
|
137
|
+
```
|
|
138
|
+
your-project/
|
|
139
|
+
├── <package>/
|
|
140
|
+
│ ├── dev/ # Development tools (not in production)
|
|
141
|
+
│ ├── src/ # Your application code
|
|
142
|
+
│ └── resources/ # Static files
|
|
143
|
+
├── tests/ # Test suite (mirrors src/)
|
|
144
|
+
├── docs/ # Documentation
|
|
145
|
+
├── .github/ # CI/CD workflows
|
|
146
|
+
└── ... # Config files
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
## Requirements
|
|
150
|
+
|
|
151
|
+
- Git (any recent version)
|
|
152
|
+
- uv package manager
|
|
153
|
+
- GitHub account (for CI/CD and repository protection)
|
|
154
|
+
- Podman (optional, for containerization)
|
|
155
|
+
|
|
156
|
+
## Contributing
|
|
157
|
+
|
|
158
|
+
Contributions are welcome! pyrig is built with pyrig itself, so you can explore the codebase to see how it works.
|
|
159
|
+
|
|
160
|
+
## License
|
|
161
|
+
|
|
162
|
+
MIT License - see [LICENSE](LICENSE) for details.
|
|
163
|
+
|
|
164
|
+
## Links
|
|
165
|
+
|
|
166
|
+
- **PyPI**: [pypi.org/project/pyrig](https://pypi.org/project/pyrig/)
|
|
167
|
+
- **Documentation**: [docs/](docs/)
|
|
168
|
+
- **Issues**: [github.com/Winipedia/pyrig/issues](https://github.com/Winipedia/pyrig/issues)
|
|
169
|
+
- **Source**: [github.com/Winipedia/pyrig](https://github.com/Winipedia/pyrig)
|
pyrig-2.2.2/README.md
ADDED
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
# pyrig
|
|
2
|
+
|
|
3
|
+
<!-- tooling -->
|
|
4
|
+
[](https://github.com/Winipedia/pyrig)
|
|
5
|
+
[](https://github.com/astral-sh/uv)
|
|
6
|
+
[](https://podman.io/)
|
|
7
|
+
[](https://pre-commit.com/)
|
|
8
|
+
<!-- code-quality -->
|
|
9
|
+
[](https://github.com/astral-sh/ruff)
|
|
10
|
+
[](https://github.com/astral-sh/ty)[](https://mypy-lang.org/)
|
|
11
|
+
[](https://github.com/PyCQA/bandit)
|
|
12
|
+
[](https://pytest.org/)
|
|
13
|
+
[](https://codecov.io/gh/Winipedia/pyrig)
|
|
14
|
+
<!-- package-info -->
|
|
15
|
+
[](https://pypi.org/project/pyrig/)
|
|
16
|
+
[](https://www.python.org/)
|
|
17
|
+
[](https://github.com/Winipedia/pyrig/blob/main/LICENSE)
|
|
18
|
+
<!-- ci/cd -->
|
|
19
|
+
[](https://github.com/Winipedia/pyrig/actions/workflows/health_check.yaml)
|
|
20
|
+
[](https://github.com/Winipedia/pyrig/actions/workflows/release.yaml)
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
> A Python toolkit that standardizes and automates project setup, configuration and development.
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## What is pyrig?
|
|
29
|
+
|
|
30
|
+
**pyrig** is an opinionated Python project framework that enforces best practices and keeps your projects up-to-date automatically. Unlike traditional project templates, pyrig is a living system that manages your entire development lifecycle. Pyrig makes project development seemless and keeps you focused on your code. It allows even in bigger project to not lose the overview. It opinionated and best practices approach allows you to always know what belongs where and where to find things.
|
|
31
|
+
|
|
32
|
+
### Key Features
|
|
33
|
+
|
|
34
|
+
- **Automated Setup** - Initialize production-ready projects in seconds with `pyrig init`
|
|
35
|
+
- **Living Configuration** - Configs stay synchronized automatically, no manual maintenance
|
|
36
|
+
- **Enforced Quality** - Strict linting, type checking, testing, and security scanning out of the box
|
|
37
|
+
- **Always Current** - Automatic dependency updates and latest tool versions via CI/CD
|
|
38
|
+
- **Multi-Package Support** - Build package ecosystems with cross-package discovery
|
|
39
|
+
- **Extensible Architecture** - Plugin system for custom ConfigFiles and Builders
|
|
40
|
+
|
|
41
|
+
### Philosophy
|
|
42
|
+
|
|
43
|
+
pyrig is designed for **serious, long-term Python projects** where code quality and maintainability matter. It makes opinionated choices about tooling and enforces best practices, so you can focus on building features instead of configuring tools and wondering whta is the best way to do something.
|
|
44
|
+
|
|
45
|
+
## Quick Start
|
|
46
|
+
|
|
47
|
+
### Prerequisites
|
|
48
|
+
|
|
49
|
+
- **Git** with username matching your GitHub username
|
|
50
|
+
- **uv** package manager
|
|
51
|
+
- **Podman** (for containerization)
|
|
52
|
+
|
|
53
|
+
### Installation
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
# Create a new GitHub repository (don't initialize with README)
|
|
57
|
+
# Clone it locally
|
|
58
|
+
git clone https://github.com/YourUsername/your-project.git
|
|
59
|
+
cd your-project
|
|
60
|
+
|
|
61
|
+
# Initialize with uv
|
|
62
|
+
uv init
|
|
63
|
+
|
|
64
|
+
# Add pyrig
|
|
65
|
+
uv add pyrig
|
|
66
|
+
|
|
67
|
+
# Initialize your project (this does everything!)
|
|
68
|
+
uv run pyrig init
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
That's it! You now have a fully configured project with:
|
|
72
|
+
- Automated testing with pytest (90% coverage requirement)
|
|
73
|
+
- Linting and formatting with ruff (ALL rules enabled)
|
|
74
|
+
- Type checking with ty and mypy (strict mode)
|
|
75
|
+
- Security scanning with bandit
|
|
76
|
+
- Pre-commit hooks for quality enforcement
|
|
77
|
+
- GitHub Actions CI/CD workflows
|
|
78
|
+
- Branch protection and repository security
|
|
79
|
+
- Containerfile for deployment
|
|
80
|
+
|
|
81
|
+
### Next Steps
|
|
82
|
+
|
|
83
|
+
After initialization, start coding in `<package>/src/` and run:
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
uv run pyrig mktests # Generate test skeletons
|
|
87
|
+
uv run pytest # Run tests
|
|
88
|
+
git add .
|
|
89
|
+
git commit -m "Add feature" # Pre-commit hooks run automatically
|
|
90
|
+
git push
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
## Documentation
|
|
94
|
+
- **[Documentation Index](docs/index.md)** - Full documentation
|
|
95
|
+
|
|
96
|
+
## Technology Stack
|
|
97
|
+
|
|
98
|
+
pyrig uses cutting-edge Python tooling:
|
|
99
|
+
|
|
100
|
+
- **[uv](https://github.com/astral-sh/uv)** - Fast Python package manager
|
|
101
|
+
- **[ruff](https://github.com/astral-sh/ruff)** - Extremely fast linter and formatter
|
|
102
|
+
- **[ty](https://github.com/astral-sh/ty)** - Fast type checker
|
|
103
|
+
- **[mypy](https://mypy-lang.org/)** - Static type checker
|
|
104
|
+
- **[pytest](https://pytest.org/)** - Testing framework
|
|
105
|
+
- **[bandit](https://github.com/PyCQA/bandit)** - Security scanner
|
|
106
|
+
- **[pre-commit](https://pre-commit.com/)** - Git hook framework
|
|
107
|
+
- **[Podman](https://podman.io/)** - Daemonless container runtime
|
|
108
|
+
- **[GitHub Actions](https://github.com/features/actions)** - CI/CD platform
|
|
109
|
+
|
|
110
|
+
## What Makes pyrig Different?
|
|
111
|
+
|
|
112
|
+
Unlike cookiecutter, copier, or other project templates:
|
|
113
|
+
|
|
114
|
+
- **Living** - Configs stay synchronized automatically, not just at creation time
|
|
115
|
+
- **Opinionated** - Best practices enforced, not suggested
|
|
116
|
+
- **Comprehensive** - Handles everything from init to deployment
|
|
117
|
+
- **Current** - Automatically updates to latest tools and standards
|
|
118
|
+
- **Extensible** - Plugin architecture for custom functionality
|
|
119
|
+
|
|
120
|
+
## Project Structure
|
|
121
|
+
|
|
122
|
+
pyrig creates a clean, organized structure:
|
|
123
|
+
|
|
124
|
+
```
|
|
125
|
+
your-project/
|
|
126
|
+
├── <package>/
|
|
127
|
+
│ ├── dev/ # Development tools (not in production)
|
|
128
|
+
│ ├── src/ # Your application code
|
|
129
|
+
│ └── resources/ # Static files
|
|
130
|
+
├── tests/ # Test suite (mirrors src/)
|
|
131
|
+
├── docs/ # Documentation
|
|
132
|
+
├── .github/ # CI/CD workflows
|
|
133
|
+
└── ... # Config files
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
## Requirements
|
|
137
|
+
|
|
138
|
+
- Git (any recent version)
|
|
139
|
+
- uv package manager
|
|
140
|
+
- GitHub account (for CI/CD and repository protection)
|
|
141
|
+
- Podman (optional, for containerization)
|
|
142
|
+
|
|
143
|
+
## Contributing
|
|
144
|
+
|
|
145
|
+
Contributions are welcome! pyrig is built with pyrig itself, so you can explore the codebase to see how it works.
|
|
146
|
+
|
|
147
|
+
## License
|
|
148
|
+
|
|
149
|
+
MIT License - see [LICENSE](LICENSE) for details.
|
|
150
|
+
|
|
151
|
+
## Links
|
|
152
|
+
|
|
153
|
+
- **PyPI**: [pypi.org/project/pyrig](https://pypi.org/project/pyrig/)
|
|
154
|
+
- **Documentation**: [docs/](docs/)
|
|
155
|
+
- **Issues**: [github.com/Winipedia/pyrig/issues](https://github.com/Winipedia/pyrig/issues)
|
|
156
|
+
- **Source**: [github.com/Winipedia/pyrig](https://github.com/Winipedia/pyrig)
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
[project]
|
|
2
|
+
name = "pyrig"
|
|
3
|
+
version = "2.2.2"
|
|
4
|
+
description = "A Python toolkit that standardizes and automates project setup, configuration and development."
|
|
5
|
+
authors = [
|
|
6
|
+
{name = "Winipedia"},
|
|
7
|
+
]
|
|
8
|
+
license-files = [
|
|
9
|
+
"LICENSE",
|
|
10
|
+
]
|
|
11
|
+
readme = "README.md"
|
|
12
|
+
requires-python = ">=3.12"
|
|
13
|
+
dependencies = [
|
|
14
|
+
"typer>=0.20.0",
|
|
15
|
+
]
|
|
16
|
+
classifiers = [
|
|
17
|
+
"Programming Language :: Python :: 3.12",
|
|
18
|
+
"Programming Language :: Python :: 3.13",
|
|
19
|
+
"Programming Language :: Python :: 3.14",
|
|
20
|
+
]
|
|
21
|
+
|
|
22
|
+
[project.scripts]
|
|
23
|
+
pyrig = "pyrig.dev.cli.cli:main"
|
|
24
|
+
|
|
25
|
+
[dependency-groups]
|
|
26
|
+
dev = [
|
|
27
|
+
"pyrig-dev>=0.1.1",
|
|
28
|
+
]
|
|
29
|
+
|
|
30
|
+
[build-system]
|
|
31
|
+
requires = [
|
|
32
|
+
"uv_build",
|
|
33
|
+
]
|
|
34
|
+
build-backend = "uv_build"
|
|
35
|
+
|
|
36
|
+
[tool.uv.build-backend]
|
|
37
|
+
module-name = "pyrig"
|
|
38
|
+
module-root = ""
|
|
39
|
+
|
|
40
|
+
[tool.ruff]
|
|
41
|
+
exclude = [
|
|
42
|
+
".*",
|
|
43
|
+
"**/migrations/*.py",
|
|
44
|
+
]
|
|
45
|
+
|
|
46
|
+
[tool.ruff.lint]
|
|
47
|
+
select = [
|
|
48
|
+
"ALL",
|
|
49
|
+
]
|
|
50
|
+
ignore = [
|
|
51
|
+
"D203",
|
|
52
|
+
"D213",
|
|
53
|
+
"COM812",
|
|
54
|
+
"ANN401",
|
|
55
|
+
]
|
|
56
|
+
fixable = [
|
|
57
|
+
"ALL",
|
|
58
|
+
]
|
|
59
|
+
|
|
60
|
+
[tool.ruff.lint.per-file-ignores]
|
|
61
|
+
"**/tests/**/*.py" = [
|
|
62
|
+
"S101",
|
|
63
|
+
]
|
|
64
|
+
|
|
65
|
+
[tool.ruff.lint.pydocstyle]
|
|
66
|
+
convention = "google"
|
|
67
|
+
|
|
68
|
+
[tool.mypy]
|
|
69
|
+
strict = true
|
|
70
|
+
warn_unreachable = true
|
|
71
|
+
show_error_codes = true
|
|
72
|
+
files = "."
|
|
73
|
+
|
|
74
|
+
[tool.pytest.ini_options]
|
|
75
|
+
addopts = "--cov=pyrig --cov-report=term-missing --cov-fail-under=90"
|
|
76
|
+
testpaths = [
|
|
77
|
+
"tests",
|
|
78
|
+
]
|
|
79
|
+
|
|
80
|
+
[tool.bandit]
|
|
81
|
+
exclude_dirs = [
|
|
82
|
+
".*",
|
|
83
|
+
]
|
|
84
|
+
|
|
85
|
+
[tool.bandit.assert_used]
|
|
86
|
+
skips = [
|
|
87
|
+
"*/tests/*.py",
|
|
88
|
+
]
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""__init__ module."""
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"""Development-time infrastructure for pyrig projects.
|
|
2
|
+
|
|
3
|
+
This package contains development tools, configuration management, CLI,
|
|
4
|
+
artifact building, and testing infrastructure. These components are used
|
|
5
|
+
during development and CI/CD but are not required at runtime.
|
|
6
|
+
"""
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""__init__ module."""
|