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.
Files changed (98) hide show
  1. pyrig-2.2.2/LICENSE +21 -0
  2. pyrig-2.2.2/PKG-INFO +169 -0
  3. pyrig-2.2.2/README.md +156 -0
  4. pyrig-2.2.2/pyproject.toml +88 -0
  5. pyrig-2.2.2/pyrig/__init__.py +1 -0
  6. pyrig-2.2.2/pyrig/dev/__init__.py +6 -0
  7. pyrig-2.2.2/pyrig/dev/builders/__init__.py +1 -0
  8. pyrig-2.2.2/pyrig/dev/builders/base/__init__.py +5 -0
  9. pyrig-2.2.2/pyrig/dev/builders/base/base.py +256 -0
  10. pyrig-2.2.2/pyrig/dev/builders/pyinstaller.py +229 -0
  11. pyrig-2.2.2/pyrig/dev/cli/__init__.py +5 -0
  12. pyrig-2.2.2/pyrig/dev/cli/cli.py +89 -0
  13. pyrig-2.2.2/pyrig/dev/cli/commands/__init__.py +1 -0
  14. pyrig-2.2.2/pyrig/dev/cli/commands/build_artifacts.py +16 -0
  15. pyrig-2.2.2/pyrig/dev/cli/commands/create_root.py +25 -0
  16. pyrig-2.2.2/pyrig/dev/cli/commands/create_tests.py +244 -0
  17. pyrig-2.2.2/pyrig/dev/cli/commands/init_project.py +160 -0
  18. pyrig-2.2.2/pyrig/dev/cli/commands/make_inits.py +27 -0
  19. pyrig-2.2.2/pyrig/dev/cli/commands/protect_repo.py +145 -0
  20. pyrig-2.2.2/pyrig/dev/cli/subcommands.py +73 -0
  21. pyrig-2.2.2/pyrig/dev/configs/__init__.py +1 -0
  22. pyrig-2.2.2/pyrig/dev/configs/base/__init__.py +5 -0
  23. pyrig-2.2.2/pyrig/dev/configs/base/base.py +826 -0
  24. pyrig-2.2.2/pyrig/dev/configs/containers/__init__.py +1 -0
  25. pyrig-2.2.2/pyrig/dev/configs/containers/container_file.py +111 -0
  26. pyrig-2.2.2/pyrig/dev/configs/dot_env.py +95 -0
  27. pyrig-2.2.2/pyrig/dev/configs/dot_python_version.py +88 -0
  28. pyrig-2.2.2/pyrig/dev/configs/git/__init__.py +5 -0
  29. pyrig-2.2.2/pyrig/dev/configs/git/gitignore.py +181 -0
  30. pyrig-2.2.2/pyrig/dev/configs/git/pre_commit.py +170 -0
  31. pyrig-2.2.2/pyrig/dev/configs/licence.py +112 -0
  32. pyrig-2.2.2/pyrig/dev/configs/markdown/__init__.py +1 -0
  33. pyrig-2.2.2/pyrig/dev/configs/markdown/docs/__init__.py +1 -0
  34. pyrig-2.2.2/pyrig/dev/configs/markdown/docs/index.py +38 -0
  35. pyrig-2.2.2/pyrig/dev/configs/markdown/readme.py +132 -0
  36. pyrig-2.2.2/pyrig/dev/configs/py_typed.py +28 -0
  37. pyrig-2.2.2/pyrig/dev/configs/pyproject.py +436 -0
  38. pyrig-2.2.2/pyrig/dev/configs/python/__init__.py +5 -0
  39. pyrig-2.2.2/pyrig/dev/configs/python/builders_init.py +27 -0
  40. pyrig-2.2.2/pyrig/dev/configs/python/configs_init.py +28 -0
  41. pyrig-2.2.2/pyrig/dev/configs/python/dot_experiment.py +46 -0
  42. pyrig-2.2.2/pyrig/dev/configs/python/main.py +59 -0
  43. pyrig-2.2.2/pyrig/dev/configs/python/resources_init.py +27 -0
  44. pyrig-2.2.2/pyrig/dev/configs/python/src_init.py +27 -0
  45. pyrig-2.2.2/pyrig/dev/configs/python/subcommands.py +27 -0
  46. pyrig-2.2.2/pyrig/dev/configs/testing/__init__.py +5 -0
  47. pyrig-2.2.2/pyrig/dev/configs/testing/conftest.py +64 -0
  48. pyrig-2.2.2/pyrig/dev/configs/testing/fixtures_init.py +27 -0
  49. pyrig-2.2.2/pyrig/dev/configs/testing/main_test.py +74 -0
  50. pyrig-2.2.2/pyrig/dev/configs/testing/zero_test.py +43 -0
  51. pyrig-2.2.2/pyrig/dev/configs/workflows/__init__.py +5 -0
  52. pyrig-2.2.2/pyrig/dev/configs/workflows/base/__init__.py +5 -0
  53. pyrig-2.2.2/pyrig/dev/configs/workflows/base/base.py +1662 -0
  54. pyrig-2.2.2/pyrig/dev/configs/workflows/build.py +106 -0
  55. pyrig-2.2.2/pyrig/dev/configs/workflows/health_check.py +133 -0
  56. pyrig-2.2.2/pyrig/dev/configs/workflows/publish.py +68 -0
  57. pyrig-2.2.2/pyrig/dev/configs/workflows/release.py +90 -0
  58. pyrig-2.2.2/pyrig/dev/tests/__init__.py +5 -0
  59. pyrig-2.2.2/pyrig/dev/tests/conftest.py +40 -0
  60. pyrig-2.2.2/pyrig/dev/tests/fixtures/__init__.py +1 -0
  61. pyrig-2.2.2/pyrig/dev/tests/fixtures/assertions.py +147 -0
  62. pyrig-2.2.2/pyrig/dev/tests/fixtures/autouse/__init__.py +5 -0
  63. pyrig-2.2.2/pyrig/dev/tests/fixtures/autouse/class_.py +42 -0
  64. pyrig-2.2.2/pyrig/dev/tests/fixtures/autouse/module.py +40 -0
  65. pyrig-2.2.2/pyrig/dev/tests/fixtures/autouse/session.py +589 -0
  66. pyrig-2.2.2/pyrig/dev/tests/fixtures/factories.py +118 -0
  67. pyrig-2.2.2/pyrig/dev/utils/__init__.py +1 -0
  68. pyrig-2.2.2/pyrig/dev/utils/git.py +312 -0
  69. pyrig-2.2.2/pyrig/dev/utils/packages.py +91 -0
  70. pyrig-2.2.2/pyrig/dev/utils/resources.py +77 -0
  71. pyrig-2.2.2/pyrig/dev/utils/testing.py +66 -0
  72. pyrig-2.2.2/pyrig/dev/utils/versions.py +268 -0
  73. pyrig-2.2.2/pyrig/main.py +9 -0
  74. pyrig-2.2.2/pyrig/py.typed +0 -0
  75. pyrig-2.2.2/pyrig/resources/GITIGNORE +216 -0
  76. pyrig-2.2.2/pyrig/resources/LATEST_PYTHON_VERSION +1 -0
  77. pyrig-2.2.2/pyrig/resources/MIT_LICENSE_TEMPLATE +21 -0
  78. pyrig-2.2.2/pyrig/resources/__init__.py +1 -0
  79. pyrig-2.2.2/pyrig/src/__init__.py +1 -0
  80. pyrig-2.2.2/pyrig/src/git/__init__.py +6 -0
  81. pyrig-2.2.2/pyrig/src/git/git.py +146 -0
  82. pyrig-2.2.2/pyrig/src/graph.py +189 -0
  83. pyrig-2.2.2/pyrig/src/iterate.py +107 -0
  84. pyrig-2.2.2/pyrig/src/modules/__init__.py +22 -0
  85. pyrig-2.2.2/pyrig/src/modules/class_.py +369 -0
  86. pyrig-2.2.2/pyrig/src/modules/function.py +189 -0
  87. pyrig-2.2.2/pyrig/src/modules/inspection.py +148 -0
  88. pyrig-2.2.2/pyrig/src/modules/module.py +658 -0
  89. pyrig-2.2.2/pyrig/src/modules/package.py +449 -0
  90. pyrig-2.2.2/pyrig/src/os/__init__.py +6 -0
  91. pyrig-2.2.2/pyrig/src/os/os.py +121 -0
  92. pyrig-2.2.2/pyrig/src/project/__init__.py +5 -0
  93. pyrig-2.2.2/pyrig/src/project/mgt.py +83 -0
  94. pyrig-2.2.2/pyrig/src/resource.py +58 -0
  95. pyrig-2.2.2/pyrig/src/string.py +100 -0
  96. pyrig-2.2.2/pyrig/src/testing/__init__.py +6 -0
  97. pyrig-2.2.2/pyrig/src/testing/assertions.py +66 -0
  98. 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
+ [![pyrig](https://img.shields.io/badge/built%20with-pyrig-3776AB?logo=buildkite&logoColor=black)](https://github.com/Winipedia/pyrig)
18
+ [![uv](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/uv/main/assets/badge/v0.json)](https://github.com/astral-sh/uv)
19
+ [![Container](https://img.shields.io/badge/Container-Podman-A23CD6?logo=podman&logoColor=grey&colorA=0D1F3F&colorB=A23CD6)](https://podman.io/)
20
+ [![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit)](https://pre-commit.com/)
21
+ <!-- code-quality -->
22
+ [![ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
23
+ [![ty](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ty/main/assets/badge/v0.json)](https://github.com/astral-sh/ty)[![mypy](https://img.shields.io/badge/type%20checked-mypy-039dfc.svg)](https://mypy-lang.org/)
24
+ [![security: bandit](https://img.shields.io/badge/security-bandit-yellow.svg)](https://github.com/PyCQA/bandit)
25
+ [![pytest](https://img.shields.io/badge/tested%20with-pytest-46a2f1.svg?logo=pytest)](https://pytest.org/)
26
+ [![codecov](https://codecov.io/gh/Winipedia/pyrig/branch/main/graph/badge.svg)](https://codecov.io/gh/Winipedia/pyrig)
27
+ <!-- package-info -->
28
+ [![PyPI](https://img.shields.io/pypi/v/pyrig?logo=pypi&logoColor=white)](https://pypi.org/project/pyrig/)
29
+ [![Python](https://img.shields.io/badge/python-3.12|3.13|3.14-blue.svg?logo=python&logoColor=white)](https://www.python.org/)
30
+ [![License](https://img.shields.io/github/license/Winipedia/pyrig)](https://github.com/Winipedia/pyrig/blob/main/LICENSE)
31
+ <!-- ci/cd -->
32
+ [![CI](https://img.shields.io/github/actions/workflow/status/Winipedia/pyrig/health_check.yaml?label=CI&logo=github)](https://github.com/Winipedia/pyrig/actions/workflows/health_check.yaml)
33
+ [![CD](https://img.shields.io/github/actions/workflow/status/Winipedia/pyrig/release.yaml?label=CD&logo=github)](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
+ [![pyrig](https://img.shields.io/badge/built%20with-pyrig-3776AB?logo=buildkite&logoColor=black)](https://github.com/Winipedia/pyrig)
5
+ [![uv](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/uv/main/assets/badge/v0.json)](https://github.com/astral-sh/uv)
6
+ [![Container](https://img.shields.io/badge/Container-Podman-A23CD6?logo=podman&logoColor=grey&colorA=0D1F3F&colorB=A23CD6)](https://podman.io/)
7
+ [![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit)](https://pre-commit.com/)
8
+ <!-- code-quality -->
9
+ [![ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
10
+ [![ty](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ty/main/assets/badge/v0.json)](https://github.com/astral-sh/ty)[![mypy](https://img.shields.io/badge/type%20checked-mypy-039dfc.svg)](https://mypy-lang.org/)
11
+ [![security: bandit](https://img.shields.io/badge/security-bandit-yellow.svg)](https://github.com/PyCQA/bandit)
12
+ [![pytest](https://img.shields.io/badge/tested%20with-pytest-46a2f1.svg?logo=pytest)](https://pytest.org/)
13
+ [![codecov](https://codecov.io/gh/Winipedia/pyrig/branch/main/graph/badge.svg)](https://codecov.io/gh/Winipedia/pyrig)
14
+ <!-- package-info -->
15
+ [![PyPI](https://img.shields.io/pypi/v/pyrig?logo=pypi&logoColor=white)](https://pypi.org/project/pyrig/)
16
+ [![Python](https://img.shields.io/badge/python-3.12|3.13|3.14-blue.svg?logo=python&logoColor=white)](https://www.python.org/)
17
+ [![License](https://img.shields.io/github/license/Winipedia/pyrig)](https://github.com/Winipedia/pyrig/blob/main/LICENSE)
18
+ <!-- ci/cd -->
19
+ [![CI](https://img.shields.io/github/actions/workflow/status/Winipedia/pyrig/health_check.yaml?label=CI&logo=github)](https://github.com/Winipedia/pyrig/actions/workflows/health_check.yaml)
20
+ [![CD](https://img.shields.io/github/actions/workflow/status/Winipedia/pyrig/release.yaml?label=CD&logo=github)](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."""
@@ -0,0 +1,5 @@
1
+ """Base classes for artifact builders.
2
+
3
+ This package provides the abstract Builder base class that all
4
+ artifact builders must inherit from.
5
+ """