pyrig 2.0.30__tar.gz → 3.0.9__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 (202) hide show
  1. {pyrig-2.0.30 → pyrig-3.0.9}/LICENSE +1 -1
  2. pyrig-3.0.9/PKG-INFO +219 -0
  3. pyrig-3.0.9/README.md +188 -0
  4. pyrig-3.0.9/pyproject.toml +122 -0
  5. pyrig-3.0.9/pyrig/dev/__init__.py +6 -0
  6. pyrig-3.0.9/pyrig/dev/builders/base/__init__.py +5 -0
  7. pyrig-3.0.9/pyrig/dev/builders/base/base.py +255 -0
  8. pyrig-3.0.9/pyrig/dev/builders/pyinstaller.py +229 -0
  9. pyrig-3.0.9/pyrig/dev/cli/__init__.py +5 -0
  10. pyrig-3.0.9/pyrig/dev/cli/cli.py +100 -0
  11. pyrig-3.0.9/pyrig/dev/cli/commands/build_artifacts.py +16 -0
  12. pyrig-3.0.9/pyrig/dev/cli/commands/create_root.py +100 -0
  13. {pyrig-2.0.30/pyrig/src/testing → pyrig-3.0.9/pyrig/dev/cli/commands}/create_tests.py +12 -9
  14. pyrig-3.0.9/pyrig/dev/cli/commands/init_project.py +169 -0
  15. pyrig-3.0.9/pyrig/dev/cli/commands/make_inits.py +28 -0
  16. pyrig-3.0.9/pyrig/dev/cli/commands/protect_repo.py +100 -0
  17. pyrig-3.0.9/pyrig/dev/cli/shared_subcommands.py +20 -0
  18. pyrig-3.0.9/pyrig/dev/cli/subcommands.py +83 -0
  19. pyrig-3.0.9/pyrig/dev/configs/base/__init__.py +5 -0
  20. pyrig-3.0.9/pyrig/dev/configs/base/badges_md.py +117 -0
  21. pyrig-3.0.9/pyrig/dev/configs/base/base.py +269 -0
  22. pyrig-3.0.9/pyrig/dev/configs/base/copy_module.py +72 -0
  23. pyrig-3.0.9/pyrig/dev/configs/base/copy_module_docstr.py +38 -0
  24. pyrig-3.0.9/pyrig/dev/configs/base/init.py +39 -0
  25. pyrig-3.0.9/pyrig/dev/configs/base/json.py +46 -0
  26. pyrig-3.0.9/pyrig/dev/configs/base/markdown.py +24 -0
  27. pyrig-3.0.9/pyrig/dev/configs/base/py_package.py +28 -0
  28. pyrig-3.0.9/pyrig/dev/configs/base/py_tests.py +23 -0
  29. pyrig-3.0.9/pyrig/dev/configs/base/python.py +25 -0
  30. pyrig-3.0.9/pyrig/dev/configs/base/text.py +92 -0
  31. pyrig-3.0.9/pyrig/dev/configs/base/toml.py +102 -0
  32. pyrig-3.0.9/pyrig/dev/configs/base/txt.py +23 -0
  33. pyrig-3.0.9/pyrig/dev/configs/base/typed.py +56 -0
  34. pyrig-3.0.9/pyrig/dev/configs/base/yaml.py +45 -0
  35. pyrig-3.0.9/pyrig/dev/configs/base/yml.py +22 -0
  36. pyrig-3.0.9/pyrig/dev/configs/branch_protection.py +98 -0
  37. pyrig-3.0.9/pyrig/dev/configs/containers/container_file.py +111 -0
  38. pyrig-3.0.9/pyrig/dev/configs/docs/mkdocs.py +64 -0
  39. pyrig-3.0.9/pyrig/dev/configs/dot_env.py +95 -0
  40. pyrig-3.0.9/pyrig/dev/configs/dot_python_version.py +88 -0
  41. pyrig-3.0.9/pyrig/dev/configs/git/__init__.py +5 -0
  42. pyrig-3.0.9/pyrig/dev/configs/git/gitignore.py +182 -0
  43. {pyrig-2.0.30 → pyrig-3.0.9}/pyrig/dev/configs/git/pre_commit.py +50 -47
  44. pyrig-3.0.9/pyrig/dev/configs/licence.py +112 -0
  45. pyrig-3.0.9/pyrig/dev/configs/markdown/docs/index.py +41 -0
  46. pyrig-3.0.9/pyrig/dev/configs/markdown/readme.py +45 -0
  47. pyrig-3.0.9/pyrig/dev/configs/py_typed.py +28 -0
  48. pyrig-3.0.9/pyrig/dev/configs/pyproject.py +444 -0
  49. pyrig-3.0.9/pyrig/dev/configs/python/__init__.py +5 -0
  50. pyrig-3.0.9/pyrig/dev/configs/python/builders_init.py +27 -0
  51. pyrig-3.0.9/pyrig/dev/configs/python/configs_init.py +28 -0
  52. pyrig-3.0.9/pyrig/dev/configs/python/dot_experiment.py +46 -0
  53. pyrig-3.0.9/pyrig/dev/configs/python/main.py +59 -0
  54. pyrig-3.0.9/pyrig/dev/configs/python/resources_init.py +27 -0
  55. pyrig-3.0.9/pyrig/dev/configs/python/shared_subcommands.py +31 -0
  56. pyrig-3.0.9/pyrig/dev/configs/python/src_init.py +27 -0
  57. pyrig-3.0.9/pyrig/dev/configs/python/subcommands.py +29 -0
  58. pyrig-3.0.9/pyrig/dev/configs/testing/__init__.py +5 -0
  59. pyrig-3.0.9/pyrig/dev/configs/testing/conftest.py +50 -0
  60. pyrig-3.0.9/pyrig/dev/configs/testing/fixtures_init.py +27 -0
  61. pyrig-3.0.9/pyrig/dev/configs/testing/main_test.py +81 -0
  62. pyrig-3.0.9/pyrig/dev/configs/testing/zero_test.py +43 -0
  63. pyrig-3.0.9/pyrig/dev/configs/workflows/__init__.py +5 -0
  64. pyrig-3.0.9/pyrig/dev/configs/workflows/base/__init__.py +5 -0
  65. pyrig-3.0.9/pyrig/dev/configs/workflows/base/base.py +1784 -0
  66. pyrig-3.0.9/pyrig/dev/configs/workflows/build.py +106 -0
  67. pyrig-3.0.9/pyrig/dev/configs/workflows/health_check.py +159 -0
  68. pyrig-3.0.9/pyrig/dev/configs/workflows/publish.py +98 -0
  69. pyrig-3.0.9/pyrig/dev/configs/workflows/release.py +90 -0
  70. pyrig-3.0.9/pyrig/dev/tests/__init__.py +5 -0
  71. pyrig-3.0.9/pyrig/dev/tests/conftest.py +39 -0
  72. pyrig-3.0.9/pyrig/dev/tests/fixtures/assertions.py +147 -0
  73. pyrig-3.0.9/pyrig/dev/tests/fixtures/autouse/__init__.py +5 -0
  74. {pyrig-2.0.30/pyrig/dev/tests/fixtures/scopes → pyrig-3.0.9/pyrig/dev/tests/fixtures/autouse}/class_.py +11 -3
  75. {pyrig-2.0.30/pyrig/dev/tests/fixtures/scopes → pyrig-3.0.9/pyrig/dev/tests/fixtures/autouse}/module.py +10 -7
  76. pyrig-3.0.9/pyrig/dev/tests/fixtures/autouse/session.py +617 -0
  77. pyrig-3.0.9/pyrig/dev/tests/fixtures/factories.py +118 -0
  78. pyrig-3.0.9/pyrig/dev/utils/__init__.py +5 -0
  79. pyrig-2.0.30/pyrig/src/git/github/repo/repo.py → pyrig-3.0.9/pyrig/dev/utils/github.py +165 -55
  80. pyrig-3.0.9/pyrig/dev/utils/packages.py +93 -0
  81. pyrig-3.0.9/pyrig/dev/utils/resources.py +77 -0
  82. pyrig-2.0.30/pyrig/dev/tests/utils/decorators.py → pyrig-3.0.9/pyrig/dev/utils/testing.py +30 -7
  83. {pyrig-2.0.30/pyrig/src/project → pyrig-3.0.9/pyrig/dev/utils}/versions.py +58 -4
  84. pyrig-3.0.9/pyrig/main.py +9 -0
  85. pyrig-3.0.9/pyrig/resources/GITIGNORE +216 -0
  86. pyrig-3.0.9/pyrig/resources/LATEST_PYTHON_VERSION +1 -0
  87. pyrig-3.0.9/pyrig/resources/MIT_LICENSE_TEMPLATE +21 -0
  88. pyrig-3.0.9/pyrig/src/cli.py +17 -0
  89. pyrig-3.0.9/pyrig/src/consts.py +3 -0
  90. pyrig-3.0.9/pyrig/src/git.py +229 -0
  91. pyrig-3.0.9/pyrig/src/graph.py +255 -0
  92. {pyrig-2.0.30 → pyrig-3.0.9}/pyrig/src/iterate.py +35 -20
  93. pyrig-3.0.9/pyrig/src/management/__init__.py +5 -0
  94. pyrig-3.0.9/pyrig/src/management/base/base.py +77 -0
  95. pyrig-3.0.9/pyrig/src/management/container_engine.py +49 -0
  96. pyrig-3.0.9/pyrig/src/management/package_manager.py +170 -0
  97. pyrig-3.0.9/pyrig/src/management/pre_committer.py +71 -0
  98. pyrig-3.0.9/pyrig/src/management/project_tester.py +48 -0
  99. pyrig-3.0.9/pyrig/src/management/pyrigger.py +67 -0
  100. pyrig-3.0.9/pyrig/src/management/version_controller.py +211 -0
  101. pyrig-3.0.9/pyrig/src/modules/__init__.py +22 -0
  102. pyrig-3.0.9/pyrig/src/modules/class_.py +303 -0
  103. pyrig-3.0.9/pyrig/src/modules/function.py +189 -0
  104. pyrig-3.0.9/pyrig/src/modules/imports.py +147 -0
  105. pyrig-3.0.9/pyrig/src/modules/inspection.py +170 -0
  106. pyrig-3.0.9/pyrig/src/modules/module.py +300 -0
  107. pyrig-3.0.9/pyrig/src/modules/package.py +420 -0
  108. pyrig-3.0.9/pyrig/src/modules/path.py +307 -0
  109. pyrig-3.0.9/pyrig/src/os/__init__.py +6 -0
  110. pyrig-3.0.9/pyrig/src/os/os.py +121 -0
  111. pyrig-3.0.9/pyrig/src/resource.py +58 -0
  112. pyrig-3.0.9/pyrig/src/string.py +100 -0
  113. pyrig-3.0.9/pyrig/src/testing/__init__.py +6 -0
  114. {pyrig-2.0.30 → pyrig-3.0.9}/pyrig/src/testing/assertions.py +0 -18
  115. {pyrig-2.0.30 → pyrig-3.0.9}/pyrig/src/testing/convention.py +45 -19
  116. pyrig-2.0.30/PKG-INFO +0 -856
  117. pyrig-2.0.30/README.md +0 -837
  118. pyrig-2.0.30/pyproject.toml +0 -103
  119. pyrig-2.0.30/pyrig/dev/artifacts/build.py +0 -8
  120. pyrig-2.0.30/pyrig/dev/artifacts/builder/base/base.py +0 -308
  121. pyrig-2.0.30/pyrig/dev/artifacts/builder/builder.py +0 -4
  122. pyrig-2.0.30/pyrig/dev/cli/cli.py +0 -46
  123. pyrig-2.0.30/pyrig/dev/cli/subcommands.py +0 -60
  124. pyrig-2.0.30/pyrig/dev/configs/base/base.py +0 -484
  125. pyrig-2.0.30/pyrig/dev/configs/configs.py +0 -4
  126. pyrig-2.0.30/pyrig/dev/configs/dot_env.py +0 -50
  127. pyrig-2.0.30/pyrig/dev/configs/dot_python_version.py +0 -50
  128. pyrig-2.0.30/pyrig/dev/configs/git/gitignore.py +0 -120
  129. pyrig-2.0.30/pyrig/dev/configs/licence.py +0 -34
  130. pyrig-2.0.30/pyrig/dev/configs/py_typed.py +0 -15
  131. pyrig-2.0.30/pyrig/dev/configs/pyproject.py +0 -295
  132. pyrig-2.0.30/pyrig/dev/configs/python/builder.py +0 -15
  133. pyrig-2.0.30/pyrig/dev/configs/python/configs.py +0 -18
  134. pyrig-2.0.30/pyrig/dev/configs/python/experiment.py +0 -28
  135. pyrig-2.0.30/pyrig/dev/configs/python/main.py +0 -42
  136. pyrig-2.0.30/pyrig/dev/configs/python/resources_init.py +0 -29
  137. pyrig-2.0.30/pyrig/dev/configs/python/src_init.py +0 -29
  138. pyrig-2.0.30/pyrig/dev/configs/python/subcommands.py +0 -15
  139. pyrig-2.0.30/pyrig/dev/configs/readme.py +0 -43
  140. pyrig-2.0.30/pyrig/dev/configs/testing/__init__.py +0 -1
  141. pyrig-2.0.30/pyrig/dev/configs/testing/conftest.py +0 -34
  142. pyrig-2.0.30/pyrig/dev/configs/testing/fixtures/__init__.py +0 -1
  143. pyrig-2.0.30/pyrig/dev/configs/testing/fixtures/fixture.py +0 -15
  144. pyrig-2.0.30/pyrig/dev/configs/testing/fixtures/scopes/__init__.py +0 -1
  145. pyrig-2.0.30/pyrig/dev/configs/testing/fixtures/scopes/class_.py +0 -15
  146. pyrig-2.0.30/pyrig/dev/configs/testing/fixtures/scopes/function.py +0 -15
  147. pyrig-2.0.30/pyrig/dev/configs/testing/fixtures/scopes/module.py +0 -15
  148. pyrig-2.0.30/pyrig/dev/configs/testing/fixtures/scopes/package.py +0 -15
  149. pyrig-2.0.30/pyrig/dev/configs/testing/fixtures/scopes/session.py +0 -15
  150. pyrig-2.0.30/pyrig/dev/configs/testing/main_test.py +0 -58
  151. pyrig-2.0.30/pyrig/dev/configs/testing/zero_test.py +0 -34
  152. pyrig-2.0.30/pyrig/dev/configs/workflows/__init__.py +0 -1
  153. pyrig-2.0.30/pyrig/dev/configs/workflows/base/__init__.py +0 -1
  154. pyrig-2.0.30/pyrig/dev/configs/workflows/base/base.py +0 -969
  155. pyrig-2.0.30/pyrig/dev/configs/workflows/health_check.py +0 -102
  156. pyrig-2.0.30/pyrig/dev/configs/workflows/publish.py +0 -51
  157. pyrig-2.0.30/pyrig/dev/configs/workflows/release.py +0 -94
  158. pyrig-2.0.30/pyrig/dev/tests/__init__.py +0 -1
  159. pyrig-2.0.30/pyrig/dev/tests/conftest.py +0 -33
  160. pyrig-2.0.30/pyrig/dev/tests/fixtures/__init__.py +0 -1
  161. pyrig-2.0.30/pyrig/dev/tests/fixtures/fixture.py +0 -64
  162. pyrig-2.0.30/pyrig/dev/tests/fixtures/scopes/__init__.py +0 -1
  163. pyrig-2.0.30/pyrig/dev/tests/fixtures/scopes/function.py +0 -8
  164. pyrig-2.0.30/pyrig/dev/tests/fixtures/scopes/package.py +0 -8
  165. pyrig-2.0.30/pyrig/dev/tests/fixtures/scopes/session.py +0 -388
  166. pyrig-2.0.30/pyrig/dev/tests/utils/__init__.py +0 -1
  167. pyrig-2.0.30/pyrig/main.py +0 -19
  168. pyrig-2.0.30/pyrig/src/git/__init__.py +0 -1
  169. pyrig-2.0.30/pyrig/src/git/github/__init__.py +0 -1
  170. pyrig-2.0.30/pyrig/src/git/github/github.py +0 -49
  171. pyrig-2.0.30/pyrig/src/git/github/repo/__init__.py +0 -1
  172. pyrig-2.0.30/pyrig/src/git/github/repo/protect.py +0 -103
  173. pyrig-2.0.30/pyrig/src/graph.py +0 -91
  174. pyrig-2.0.30/pyrig/src/modules/__init__.py +0 -1
  175. pyrig-2.0.30/pyrig/src/modules/class_.py +0 -267
  176. pyrig-2.0.30/pyrig/src/modules/function.py +0 -124
  177. pyrig-2.0.30/pyrig/src/modules/inspection.py +0 -56
  178. pyrig-2.0.30/pyrig/src/modules/module.py +0 -573
  179. pyrig-2.0.30/pyrig/src/modules/package.py +0 -420
  180. pyrig-2.0.30/pyrig/src/os/__init__.py +0 -1
  181. pyrig-2.0.30/pyrig/src/os/os.py +0 -88
  182. pyrig-2.0.30/pyrig/src/project/__init__.py +0 -1
  183. pyrig-2.0.30/pyrig/src/project/create_root.py +0 -8
  184. pyrig-2.0.30/pyrig/src/project/init.py +0 -55
  185. pyrig-2.0.30/pyrig/src/project/mgt.py +0 -90
  186. pyrig-2.0.30/pyrig/src/resource.py +0 -23
  187. pyrig-2.0.30/pyrig/src/string.py +0 -52
  188. pyrig-2.0.30/pyrig/src/testing/__init__.py +0 -1
  189. pyrig-2.0.30/pyrig/src/testing/utils.py +0 -80
  190. {pyrig-2.0.30 → pyrig-3.0.9}/pyrig/__init__.py +0 -0
  191. {pyrig-2.0.30/pyrig/dev → pyrig-3.0.9/pyrig/dev/builders}/__init__.py +0 -0
  192. {pyrig-2.0.30/pyrig/dev/artifacts → pyrig-3.0.9/pyrig/dev/cli/commands}/__init__.py +0 -0
  193. {pyrig-2.0.30/pyrig/dev/artifacts/builder → pyrig-3.0.9/pyrig/dev/configs}/__init__.py +0 -0
  194. {pyrig-2.0.30/pyrig/dev/artifacts/builder/base → pyrig-3.0.9/pyrig/dev/configs/containers}/__init__.py +0 -0
  195. {pyrig-2.0.30/pyrig/dev/artifacts/resources → pyrig-3.0.9/pyrig/dev/configs/docs}/__init__.py +0 -0
  196. {pyrig-2.0.30/pyrig/dev/cli → pyrig-3.0.9/pyrig/dev/configs/markdown}/__init__.py +0 -0
  197. {pyrig-2.0.30/pyrig/dev/configs → pyrig-3.0.9/pyrig/dev/configs/markdown/docs}/__init__.py +0 -0
  198. {pyrig-2.0.30/pyrig/dev/configs/base → pyrig-3.0.9/pyrig/dev/tests/fixtures}/__init__.py +0 -0
  199. {pyrig-2.0.30 → pyrig-3.0.9}/pyrig/py.typed +0 -0
  200. {pyrig-2.0.30/pyrig/dev/configs/git → pyrig-3.0.9/pyrig/resources}/__init__.py +0 -0
  201. {pyrig-2.0.30 → pyrig-3.0.9}/pyrig/src/__init__.py +0 -0
  202. {pyrig-2.0.30/pyrig/dev/configs/python → pyrig-3.0.9/pyrig/src/management/base}/__init__.py +0 -0
@@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
18
  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
19
  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
20
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
21
+ SOFTWARE.
pyrig-3.0.9/PKG-INFO ADDED
@@ -0,0 +1,219 @@
1
+ Metadata-Version: 2.4
2
+ Name: pyrig
3
+ Version: 3.0.9
4
+ Summary: A Python toolkit to rig up your project that standardizes and automates project setup, configuration and development.
5
+ Keywords: project-setup,automation,scaffolding,cli,testing,ci-cd,devops,packaging
6
+ Author: Winipedia
7
+ License-Expression: MIT
8
+ License-File: LICENSE
9
+ Classifier: Development Status :: 5 - Production/Stable
10
+ Classifier: Intended Audience :: Developers
11
+ Classifier: Programming Language :: Python :: 3.12
12
+ Classifier: Programming Language :: Python :: 3.13
13
+ Classifier: Programming Language :: Python :: 3.14
14
+ Classifier: Operating System :: OS Independent
15
+ Classifier: Topic :: Software Development :: Build Tools
16
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
17
+ Classifier: Topic :: Software Development :: Quality Assurance
18
+ Classifier: Topic :: Software Development :: Testing
19
+ Classifier: Topic :: System :: Installation/Setup
20
+ Classifier: Topic :: System :: Software Distribution
21
+ Classifier: Typing :: Typed
22
+ Requires-Dist: typer>=0.20.0
23
+ Maintainer: Winipedia
24
+ Requires-Python: >=3.12
25
+ Project-URL: Changelog, https://github.com/Winipedia/pyrig/releases
26
+ Project-URL: Documentation, https://Winipedia.github.io/pyrig
27
+ Project-URL: Homepage, https://github.com/Winipedia/pyrig
28
+ Project-URL: Issues, https://github.com/Winipedia/pyrig/issues
29
+ Project-URL: Source, https://github.com/Winipedia/pyrig
30
+ Description-Content-Type: text/markdown
31
+
32
+ # pyrig
33
+
34
+ <!-- tooling -->
35
+ [![pyrig](https://img.shields.io/badge/built%20with-pyrig-3776AB?logo=buildkite&logoColor=black)](https://github.com/Winipedia/pyrig)
36
+ [![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)
37
+ [![Container](https://img.shields.io/badge/Container-Podman-A23CD6?logo=podman&logoColor=grey&colorA=0D1F3F&colorB=A23CD6)](https://podman.io/)
38
+ [![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit)](https://pre-commit.com/)
39
+ [![MkDocs](https://img.shields.io/badge/MkDocs-Documentation-326CE5?logo=mkdocs&logoColor=white)](https://www.mkdocs.org/)
40
+ <!-- code-quality -->
41
+ [![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)
42
+ [![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/)
43
+ [![security: bandit](https://img.shields.io/badge/security-bandit-yellow.svg)](https://github.com/PyCQA/bandit)
44
+ [![pytest](https://img.shields.io/badge/tested%20with-pytest-46a2f1.svg?logo=pytest)](https://pytest.org/)
45
+ [![codecov](https://codecov.io/gh/Winipedia/pyrig/branch/main/graph/badge.svg)](https://codecov.io/gh/Winipedia/pyrig)
46
+ <!-- package-info -->
47
+ [![PyPI](https://img.shields.io/pypi/v/pyrig?logo=pypi&logoColor=white)](https://pypi.org/project/pyrig)
48
+ [![Python](https://img.shields.io/badge/python-3.12|3.13|3.14-blue.svg?logo=python&logoColor=white)](https://www.python.org/)
49
+ [![License](https://img.shields.io/github/license/Winipedia/pyrig)](https://github.com/Winipedia/pyrig/blob/main/LICENSE)
50
+ <!-- ci/cd -->
51
+ [![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)
52
+ [![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)
53
+ <!-- documentation -->
54
+ [![Documentation](https://img.shields.io/badge/Docs-GitHub%20Pages-black?style=for-the-badge&logo=github&logoColor=white)](https://Winipedia.github.io/pyrig)
55
+
56
+ ---
57
+
58
+ > A Python toolkit to rig up your project that standardizes and automates project setup, configuration and development.
59
+
60
+ ---
61
+
62
+ ## What is pyrig?
63
+
64
+ pyrig is an opinionated Python project toolkit that eliminates setup time and enforces best practices. Run one command to get a complete, production-ready project structure with CI/CD, testing, documentation, and more.
65
+
66
+ **Philosophy**: pyrig provides **minimal best practices fully working defaults for everything a project needs**. Every configuration, workflow, and tool is pre-configured and working from day one, so you can focus on writing code and start immediately developing your application, project or library.
67
+
68
+ ### Key Features
69
+
70
+ **Zero Configuration Setup**:
71
+ - Complete project structure in minutes
72
+ - Pre-configured tools (uv, ruff, mypy, pytest, MkDocs)
73
+ - GitHub Actions workflows (health check, build, release, publish)
74
+ - 90% test coverage enforcement
75
+ - Pre-commit hooks with all quality checks
76
+
77
+ **Automated Project Management**:
78
+ - CLI framework with automatic command discovery
79
+ - Configuration file system with validation
80
+ - Automatic test skeleton generation
81
+ - PyInstaller executable building
82
+ - Multi-package architecture support
83
+
84
+ **Opinionated Best Practices**:
85
+ - Python >=3.12 with modern type hints
86
+ - All ruff linting rules enabled
87
+ - Strict mypy type checking
88
+ - Signed commits and linear history
89
+ - Repository protection rules
90
+
91
+ ### Quick Example
92
+
93
+ ```bash
94
+ # Create repository on GitHub
95
+ git clone https://github.com/username/my-project.git
96
+ cd my-project
97
+
98
+ # Initialize with uv and pyrig
99
+ uv init
100
+ uv add pyrig
101
+ uv run pyrig init
102
+
103
+ # Complete project ready in minutes:
104
+ # ✓ Source code structure
105
+ # ✓ Test framework with 90% coverage
106
+ # ✓ CI/CD workflows
107
+ # ✓ Documentation site
108
+ # ✓ Pre-commit hooks
109
+ # ✓ Container support
110
+ ```
111
+
112
+ ### What You Get
113
+
114
+ **Complete Project Structure**:
115
+ ```
116
+ my-project/
117
+ ├── my_project/ # Source code package
118
+ │ ├── __init__.py
119
+ │ ├── main.py # CLI entry point
120
+ │ ├── py.typed # PEP 561 type marker
121
+ │ ├── dev/ # Development infrastructure
122
+ │ │ ├── __init__.py
123
+ │ │ ├── builders/ # Build artifact definitions
124
+ │ │ │ ├── __init__.py
125
+ │ │ ├── cli/ # CLI command system
126
+ │ │ │ ├── __init__.py
127
+ │ │ │ ├── subcommands.py # Project commands
128
+ │ │ │ ├── shared_subcommands.py # Shared commands
129
+ │ │ ├── configs/ # Config file managers
130
+ │ │ │ ├── __init__.py
131
+ │ │ ├── tests/ # Test infrastructure
132
+ │ │ │ ├── __init__.py
133
+ │ │ │ └── fixtures/
134
+ │ │ │ └── __init__.py
135
+ │ ├── resources/ # Static resources
136
+ │ │ └── __init__.py
137
+ │ └── src/ # Application logic
138
+ │ └── __init__.py
139
+
140
+ ├── tests/ # Test files (mirrors source)
141
+ │ ├── __init__.py
142
+ │ ├── conftest.py # Pytest configuration
143
+ │ ├── test_zero.py # Initial test
144
+ │ └── test_my_project/ # Mirrors my_project/ structure
145
+ │ ├── __init__.py
146
+ │ ├── test_main.py
147
+ │ ├── test_dev/ # Mirrors my_project/dev/
148
+ │ │ ├── __init__.py
149
+ │ │ ├── test_builders/
150
+ │ │ │ └── __init__.py
151
+ │ │ ├── test_cli/
152
+ │ │ │ ├── __init__.py
153
+ │ │ │ ├── test_subcommands.py
154
+ │ │ │ └── test_shared_subcommands.py
155
+ │ │ ├── test_configs/
156
+ │ │ │ └── __init__.py
157
+ │ │ └── test_tests/
158
+ │ │ └── __init__.py
159
+ │ ├── test_resources/ # Mirrors my_project/resources/
160
+ │ │ └── __init__.py
161
+ │ └── test_src/ # Mirrors my_project/src/
162
+ │ └── __init__.py
163
+
164
+ ├── docs/ # MkDocs documentation
165
+ │ └── index.md # Documentation homepage
166
+
167
+ ├── .github/ # GitHub configuration
168
+ │ └── workflows/ # CI/CD workflows
169
+ │ ├── health_check.yaml # Tests, linting, type checking
170
+ │ ├── build.yaml # Build artifacts
171
+ │ ├── release.yaml # Version and release
172
+ │ └── publish.yaml # PyPI and docs publishing
173
+
174
+ ├── .env # Environment variables (not committed)
175
+ ├── .experiment.py # Scratch file for local experiments (not committed)
176
+ ├── .gitignore # Git ignore patterns
177
+ ├── .pre-commit-config.yaml # Pre-commit hooks
178
+ ├── .python-version # Python version (3.12+)
179
+ ├── Containerfile # Podman/Docker image definition
180
+ ├── LICENSE # MIT license
181
+ ├── README.md # Project readme
182
+ ├── mkdocs.yml # MkDocs configuration
183
+ ├── pyproject.toml # Project metadata and tool configs
184
+ └── uv.lock # Dependency lock file
185
+ ```
186
+
187
+ **CI/CD Workflows**:
188
+ - **Health Check** - Tests, linting, type checking on every PR
189
+ - **Build** - Creates executables and container images
190
+ - **Release** - Automated version bumping and GitHub releases
191
+ - **Publish** - PyPI and GitHub Pages deployment
192
+
193
+ **Development Tools**:
194
+ - **uv** - Fast package management (10-100x faster than pip)
195
+ - **ruff** - Linting and formatting (all rules enabled)
196
+ - **mypy** - Static type checking (strict mode)
197
+ - **pytest** - Testing with coverage reporting
198
+ - **MkDocs** - Documentation generation
199
+ - **Podman** - Container support
200
+
201
+ ### CLI Commands
202
+
203
+ ```bash
204
+ uv run pyrig init # Complete project initialization
205
+ uv run pyrig mkroot # Update project structure
206
+ uv run pyrig mktests # Generate test skeletons
207
+ uv run pyrig build # Build all artifacts
208
+ uv run my-project --help # Your custom CLI
209
+ ```
210
+
211
+ ## Quick Start
212
+
213
+ New to pyrig? Start here:
214
+
215
+ **[Getting Started Guide](https://winipedia.github.io/pyrig/more/getting-started/)** - Complete setup from zero to fully configured project
216
+
217
+ **[Full Documentation](https://winipedia.github.io/pyrig/)** - Comprehensive documentation on GitHub Pages
218
+
219
+ ---
pyrig-3.0.9/README.md ADDED
@@ -0,0 +1,188 @@
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
+ [![MkDocs](https://img.shields.io/badge/MkDocs-Documentation-326CE5?logo=mkdocs&logoColor=white)](https://www.mkdocs.org/)
9
+ <!-- code-quality -->
10
+ [![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)
11
+ [![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/)
12
+ [![security: bandit](https://img.shields.io/badge/security-bandit-yellow.svg)](https://github.com/PyCQA/bandit)
13
+ [![pytest](https://img.shields.io/badge/tested%20with-pytest-46a2f1.svg?logo=pytest)](https://pytest.org/)
14
+ [![codecov](https://codecov.io/gh/Winipedia/pyrig/branch/main/graph/badge.svg)](https://codecov.io/gh/Winipedia/pyrig)
15
+ <!-- package-info -->
16
+ [![PyPI](https://img.shields.io/pypi/v/pyrig?logo=pypi&logoColor=white)](https://pypi.org/project/pyrig)
17
+ [![Python](https://img.shields.io/badge/python-3.12|3.13|3.14-blue.svg?logo=python&logoColor=white)](https://www.python.org/)
18
+ [![License](https://img.shields.io/github/license/Winipedia/pyrig)](https://github.com/Winipedia/pyrig/blob/main/LICENSE)
19
+ <!-- ci/cd -->
20
+ [![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)
21
+ [![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)
22
+ <!-- documentation -->
23
+ [![Documentation](https://img.shields.io/badge/Docs-GitHub%20Pages-black?style=for-the-badge&logo=github&logoColor=white)](https://Winipedia.github.io/pyrig)
24
+
25
+ ---
26
+
27
+ > A Python toolkit to rig up your project that standardizes and automates project setup, configuration and development.
28
+
29
+ ---
30
+
31
+ ## What is pyrig?
32
+
33
+ pyrig is an opinionated Python project toolkit that eliminates setup time and enforces best practices. Run one command to get a complete, production-ready project structure with CI/CD, testing, documentation, and more.
34
+
35
+ **Philosophy**: pyrig provides **minimal best practices fully working defaults for everything a project needs**. Every configuration, workflow, and tool is pre-configured and working from day one, so you can focus on writing code and start immediately developing your application, project or library.
36
+
37
+ ### Key Features
38
+
39
+ **Zero Configuration Setup**:
40
+ - Complete project structure in minutes
41
+ - Pre-configured tools (uv, ruff, mypy, pytest, MkDocs)
42
+ - GitHub Actions workflows (health check, build, release, publish)
43
+ - 90% test coverage enforcement
44
+ - Pre-commit hooks with all quality checks
45
+
46
+ **Automated Project Management**:
47
+ - CLI framework with automatic command discovery
48
+ - Configuration file system with validation
49
+ - Automatic test skeleton generation
50
+ - PyInstaller executable building
51
+ - Multi-package architecture support
52
+
53
+ **Opinionated Best Practices**:
54
+ - Python >=3.12 with modern type hints
55
+ - All ruff linting rules enabled
56
+ - Strict mypy type checking
57
+ - Signed commits and linear history
58
+ - Repository protection rules
59
+
60
+ ### Quick Example
61
+
62
+ ```bash
63
+ # Create repository on GitHub
64
+ git clone https://github.com/username/my-project.git
65
+ cd my-project
66
+
67
+ # Initialize with uv and pyrig
68
+ uv init
69
+ uv add pyrig
70
+ uv run pyrig init
71
+
72
+ # Complete project ready in minutes:
73
+ # ✓ Source code structure
74
+ # ✓ Test framework with 90% coverage
75
+ # ✓ CI/CD workflows
76
+ # ✓ Documentation site
77
+ # ✓ Pre-commit hooks
78
+ # ✓ Container support
79
+ ```
80
+
81
+ ### What You Get
82
+
83
+ **Complete Project Structure**:
84
+ ```
85
+ my-project/
86
+ ├── my_project/ # Source code package
87
+ │ ├── __init__.py
88
+ │ ├── main.py # CLI entry point
89
+ │ ├── py.typed # PEP 561 type marker
90
+ │ ├── dev/ # Development infrastructure
91
+ │ │ ├── __init__.py
92
+ │ │ ├── builders/ # Build artifact definitions
93
+ │ │ │ ├── __init__.py
94
+ │ │ ├── cli/ # CLI command system
95
+ │ │ │ ├── __init__.py
96
+ │ │ │ ├── subcommands.py # Project commands
97
+ │ │ │ ├── shared_subcommands.py # Shared commands
98
+ │ │ ├── configs/ # Config file managers
99
+ │ │ │ ├── __init__.py
100
+ │ │ ├── tests/ # Test infrastructure
101
+ │ │ │ ├── __init__.py
102
+ │ │ │ └── fixtures/
103
+ │ │ │ └── __init__.py
104
+ │ ├── resources/ # Static resources
105
+ │ │ └── __init__.py
106
+ │ └── src/ # Application logic
107
+ │ └── __init__.py
108
+
109
+ ├── tests/ # Test files (mirrors source)
110
+ │ ├── __init__.py
111
+ │ ├── conftest.py # Pytest configuration
112
+ │ ├── test_zero.py # Initial test
113
+ │ └── test_my_project/ # Mirrors my_project/ structure
114
+ │ ├── __init__.py
115
+ │ ├── test_main.py
116
+ │ ├── test_dev/ # Mirrors my_project/dev/
117
+ │ │ ├── __init__.py
118
+ │ │ ├── test_builders/
119
+ │ │ │ └── __init__.py
120
+ │ │ ├── test_cli/
121
+ │ │ │ ├── __init__.py
122
+ │ │ │ ├── test_subcommands.py
123
+ │ │ │ └── test_shared_subcommands.py
124
+ │ │ ├── test_configs/
125
+ │ │ │ └── __init__.py
126
+ │ │ └── test_tests/
127
+ │ │ └── __init__.py
128
+ │ ├── test_resources/ # Mirrors my_project/resources/
129
+ │ │ └── __init__.py
130
+ │ └── test_src/ # Mirrors my_project/src/
131
+ │ └── __init__.py
132
+
133
+ ├── docs/ # MkDocs documentation
134
+ │ └── index.md # Documentation homepage
135
+
136
+ ├── .github/ # GitHub configuration
137
+ │ └── workflows/ # CI/CD workflows
138
+ │ ├── health_check.yaml # Tests, linting, type checking
139
+ │ ├── build.yaml # Build artifacts
140
+ │ ├── release.yaml # Version and release
141
+ │ └── publish.yaml # PyPI and docs publishing
142
+
143
+ ├── .env # Environment variables (not committed)
144
+ ├── .experiment.py # Scratch file for local experiments (not committed)
145
+ ├── .gitignore # Git ignore patterns
146
+ ├── .pre-commit-config.yaml # Pre-commit hooks
147
+ ├── .python-version # Python version (3.12+)
148
+ ├── Containerfile # Podman/Docker image definition
149
+ ├── LICENSE # MIT license
150
+ ├── README.md # Project readme
151
+ ├── mkdocs.yml # MkDocs configuration
152
+ ├── pyproject.toml # Project metadata and tool configs
153
+ └── uv.lock # Dependency lock file
154
+ ```
155
+
156
+ **CI/CD Workflows**:
157
+ - **Health Check** - Tests, linting, type checking on every PR
158
+ - **Build** - Creates executables and container images
159
+ - **Release** - Automated version bumping and GitHub releases
160
+ - **Publish** - PyPI and GitHub Pages deployment
161
+
162
+ **Development Tools**:
163
+ - **uv** - Fast package management (10-100x faster than pip)
164
+ - **ruff** - Linting and formatting (all rules enabled)
165
+ - **mypy** - Static type checking (strict mode)
166
+ - **pytest** - Testing with coverage reporting
167
+ - **MkDocs** - Documentation generation
168
+ - **Podman** - Container support
169
+
170
+ ### CLI Commands
171
+
172
+ ```bash
173
+ uv run pyrig init # Complete project initialization
174
+ uv run pyrig mkroot # Update project structure
175
+ uv run pyrig mktests # Generate test skeletons
176
+ uv run pyrig build # Build all artifacts
177
+ uv run my-project --help # Your custom CLI
178
+ ```
179
+
180
+ ## Quick Start
181
+
182
+ New to pyrig? Start here:
183
+
184
+ **[Getting Started Guide](https://winipedia.github.io/pyrig/more/getting-started/)** - Complete setup from zero to fully configured project
185
+
186
+ **[Full Documentation](https://winipedia.github.io/pyrig/)** - Comprehensive documentation on GitHub Pages
187
+
188
+ ---
@@ -0,0 +1,122 @@
1
+ [project]
2
+ name = "pyrig"
3
+ version = "3.0.9"
4
+ description = "A Python toolkit to rig up your project that standardizes and automates project setup, configuration and development."
5
+ authors = [
6
+ {name = "Winipedia"},
7
+ ]
8
+ maintainers = [
9
+ {name = "Winipedia"},
10
+ ]
11
+ license = "MIT"
12
+ license-files = [
13
+ "LICENSE",
14
+ ]
15
+ readme = "README.md"
16
+ requires-python = ">=3.12"
17
+ dependencies = [
18
+ "typer>=0.20.0",
19
+ ]
20
+ classifiers = [
21
+ "Development Status :: 5 - Production/Stable",
22
+ "Intended Audience :: Developers",
23
+ "Programming Language :: Python :: 3.12",
24
+ "Programming Language :: Python :: 3.13",
25
+ "Programming Language :: Python :: 3.14",
26
+ "Operating System :: OS Independent",
27
+ "Topic :: Software Development :: Build Tools",
28
+ "Topic :: Software Development :: Libraries :: Python Modules",
29
+ "Topic :: Software Development :: Quality Assurance",
30
+ "Topic :: Software Development :: Testing",
31
+ "Topic :: System :: Installation/Setup",
32
+ "Topic :: System :: Software Distribution",
33
+ "Typing :: Typed",
34
+ ]
35
+ keywords = [
36
+ "project-setup",
37
+ "automation",
38
+ "scaffolding",
39
+ "cli",
40
+ "testing",
41
+ "ci-cd",
42
+ "devops",
43
+ "packaging",
44
+ ]
45
+
46
+ [project.urls]
47
+ Homepage = "https://github.com/Winipedia/pyrig"
48
+ Documentation = "https://Winipedia.github.io/pyrig"
49
+ Source = "https://github.com/Winipedia/pyrig"
50
+ Issues = "https://github.com/Winipedia/pyrig/issues"
51
+ Changelog = "https://github.com/Winipedia/pyrig/releases"
52
+
53
+ [project.scripts]
54
+ pyrig = "pyrig.dev.cli.cli:main"
55
+
56
+ [dependency-groups]
57
+ dev = [
58
+ "pyrig-dev>=0.1.1",
59
+ ]
60
+
61
+ [build-system]
62
+ requires = [
63
+ "uv_build",
64
+ ]
65
+ build-backend = "uv_build"
66
+
67
+ [tool.uv.build-backend]
68
+ module-name = "pyrig"
69
+ module-root = ""
70
+
71
+ [tool.ruff]
72
+ exclude = [
73
+ ".*",
74
+ "**/migrations/*.py",
75
+ ]
76
+
77
+ [tool.ruff.lint]
78
+ select = [
79
+ "ALL",
80
+ ]
81
+ ignore = [
82
+ "D203",
83
+ "D213",
84
+ "COM812",
85
+ "ANN401",
86
+ ]
87
+ fixable = [
88
+ "ALL",
89
+ ]
90
+
91
+ [tool.ruff.lint.per-file-ignores]
92
+ "**/tests/**/*.py" = [
93
+ "S101",
94
+ ]
95
+
96
+ [tool.ruff.lint.pydocstyle]
97
+ convention = "google"
98
+
99
+ [tool.ty.terminal]
100
+ error-on-warning = true
101
+
102
+ [tool.mypy]
103
+ strict = true
104
+ warn_unreachable = true
105
+ show_error_codes = true
106
+ files = "."
107
+
108
+ [tool.pytest.ini_options]
109
+ addopts = "--cov=pyrig --cov-report=term-missing --cov-fail-under=90"
110
+ testpaths = [
111
+ "tests",
112
+ ]
113
+
114
+ [tool.bandit]
115
+ exclude_dirs = [
116
+ ".*",
117
+ ]
118
+
119
+ [tool.bandit.assert_used]
120
+ skips = [
121
+ "*/tests/*.py",
122
+ ]
@@ -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,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
+ """