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.
- {pyrig-2.0.30 → pyrig-3.0.9}/LICENSE +1 -1
- pyrig-3.0.9/PKG-INFO +219 -0
- pyrig-3.0.9/README.md +188 -0
- pyrig-3.0.9/pyproject.toml +122 -0
- pyrig-3.0.9/pyrig/dev/__init__.py +6 -0
- pyrig-3.0.9/pyrig/dev/builders/base/__init__.py +5 -0
- pyrig-3.0.9/pyrig/dev/builders/base/base.py +255 -0
- pyrig-3.0.9/pyrig/dev/builders/pyinstaller.py +229 -0
- pyrig-3.0.9/pyrig/dev/cli/__init__.py +5 -0
- pyrig-3.0.9/pyrig/dev/cli/cli.py +100 -0
- pyrig-3.0.9/pyrig/dev/cli/commands/build_artifacts.py +16 -0
- pyrig-3.0.9/pyrig/dev/cli/commands/create_root.py +100 -0
- {pyrig-2.0.30/pyrig/src/testing → pyrig-3.0.9/pyrig/dev/cli/commands}/create_tests.py +12 -9
- pyrig-3.0.9/pyrig/dev/cli/commands/init_project.py +169 -0
- pyrig-3.0.9/pyrig/dev/cli/commands/make_inits.py +28 -0
- pyrig-3.0.9/pyrig/dev/cli/commands/protect_repo.py +100 -0
- pyrig-3.0.9/pyrig/dev/cli/shared_subcommands.py +20 -0
- pyrig-3.0.9/pyrig/dev/cli/subcommands.py +83 -0
- pyrig-3.0.9/pyrig/dev/configs/base/__init__.py +5 -0
- pyrig-3.0.9/pyrig/dev/configs/base/badges_md.py +117 -0
- pyrig-3.0.9/pyrig/dev/configs/base/base.py +269 -0
- pyrig-3.0.9/pyrig/dev/configs/base/copy_module.py +72 -0
- pyrig-3.0.9/pyrig/dev/configs/base/copy_module_docstr.py +38 -0
- pyrig-3.0.9/pyrig/dev/configs/base/init.py +39 -0
- pyrig-3.0.9/pyrig/dev/configs/base/json.py +46 -0
- pyrig-3.0.9/pyrig/dev/configs/base/markdown.py +24 -0
- pyrig-3.0.9/pyrig/dev/configs/base/py_package.py +28 -0
- pyrig-3.0.9/pyrig/dev/configs/base/py_tests.py +23 -0
- pyrig-3.0.9/pyrig/dev/configs/base/python.py +25 -0
- pyrig-3.0.9/pyrig/dev/configs/base/text.py +92 -0
- pyrig-3.0.9/pyrig/dev/configs/base/toml.py +102 -0
- pyrig-3.0.9/pyrig/dev/configs/base/txt.py +23 -0
- pyrig-3.0.9/pyrig/dev/configs/base/typed.py +56 -0
- pyrig-3.0.9/pyrig/dev/configs/base/yaml.py +45 -0
- pyrig-3.0.9/pyrig/dev/configs/base/yml.py +22 -0
- pyrig-3.0.9/pyrig/dev/configs/branch_protection.py +98 -0
- pyrig-3.0.9/pyrig/dev/configs/containers/container_file.py +111 -0
- pyrig-3.0.9/pyrig/dev/configs/docs/mkdocs.py +64 -0
- pyrig-3.0.9/pyrig/dev/configs/dot_env.py +95 -0
- pyrig-3.0.9/pyrig/dev/configs/dot_python_version.py +88 -0
- pyrig-3.0.9/pyrig/dev/configs/git/__init__.py +5 -0
- pyrig-3.0.9/pyrig/dev/configs/git/gitignore.py +182 -0
- {pyrig-2.0.30 → pyrig-3.0.9}/pyrig/dev/configs/git/pre_commit.py +50 -47
- pyrig-3.0.9/pyrig/dev/configs/licence.py +112 -0
- pyrig-3.0.9/pyrig/dev/configs/markdown/docs/index.py +41 -0
- pyrig-3.0.9/pyrig/dev/configs/markdown/readme.py +45 -0
- pyrig-3.0.9/pyrig/dev/configs/py_typed.py +28 -0
- pyrig-3.0.9/pyrig/dev/configs/pyproject.py +444 -0
- pyrig-3.0.9/pyrig/dev/configs/python/__init__.py +5 -0
- pyrig-3.0.9/pyrig/dev/configs/python/builders_init.py +27 -0
- pyrig-3.0.9/pyrig/dev/configs/python/configs_init.py +28 -0
- pyrig-3.0.9/pyrig/dev/configs/python/dot_experiment.py +46 -0
- pyrig-3.0.9/pyrig/dev/configs/python/main.py +59 -0
- pyrig-3.0.9/pyrig/dev/configs/python/resources_init.py +27 -0
- pyrig-3.0.9/pyrig/dev/configs/python/shared_subcommands.py +31 -0
- pyrig-3.0.9/pyrig/dev/configs/python/src_init.py +27 -0
- pyrig-3.0.9/pyrig/dev/configs/python/subcommands.py +29 -0
- pyrig-3.0.9/pyrig/dev/configs/testing/__init__.py +5 -0
- pyrig-3.0.9/pyrig/dev/configs/testing/conftest.py +50 -0
- pyrig-3.0.9/pyrig/dev/configs/testing/fixtures_init.py +27 -0
- pyrig-3.0.9/pyrig/dev/configs/testing/main_test.py +81 -0
- pyrig-3.0.9/pyrig/dev/configs/testing/zero_test.py +43 -0
- pyrig-3.0.9/pyrig/dev/configs/workflows/__init__.py +5 -0
- pyrig-3.0.9/pyrig/dev/configs/workflows/base/__init__.py +5 -0
- pyrig-3.0.9/pyrig/dev/configs/workflows/base/base.py +1784 -0
- pyrig-3.0.9/pyrig/dev/configs/workflows/build.py +106 -0
- pyrig-3.0.9/pyrig/dev/configs/workflows/health_check.py +159 -0
- pyrig-3.0.9/pyrig/dev/configs/workflows/publish.py +98 -0
- pyrig-3.0.9/pyrig/dev/configs/workflows/release.py +90 -0
- pyrig-3.0.9/pyrig/dev/tests/__init__.py +5 -0
- pyrig-3.0.9/pyrig/dev/tests/conftest.py +39 -0
- pyrig-3.0.9/pyrig/dev/tests/fixtures/assertions.py +147 -0
- pyrig-3.0.9/pyrig/dev/tests/fixtures/autouse/__init__.py +5 -0
- {pyrig-2.0.30/pyrig/dev/tests/fixtures/scopes → pyrig-3.0.9/pyrig/dev/tests/fixtures/autouse}/class_.py +11 -3
- {pyrig-2.0.30/pyrig/dev/tests/fixtures/scopes → pyrig-3.0.9/pyrig/dev/tests/fixtures/autouse}/module.py +10 -7
- pyrig-3.0.9/pyrig/dev/tests/fixtures/autouse/session.py +617 -0
- pyrig-3.0.9/pyrig/dev/tests/fixtures/factories.py +118 -0
- pyrig-3.0.9/pyrig/dev/utils/__init__.py +5 -0
- pyrig-2.0.30/pyrig/src/git/github/repo/repo.py → pyrig-3.0.9/pyrig/dev/utils/github.py +165 -55
- pyrig-3.0.9/pyrig/dev/utils/packages.py +93 -0
- pyrig-3.0.9/pyrig/dev/utils/resources.py +77 -0
- pyrig-2.0.30/pyrig/dev/tests/utils/decorators.py → pyrig-3.0.9/pyrig/dev/utils/testing.py +30 -7
- {pyrig-2.0.30/pyrig/src/project → pyrig-3.0.9/pyrig/dev/utils}/versions.py +58 -4
- pyrig-3.0.9/pyrig/main.py +9 -0
- pyrig-3.0.9/pyrig/resources/GITIGNORE +216 -0
- pyrig-3.0.9/pyrig/resources/LATEST_PYTHON_VERSION +1 -0
- pyrig-3.0.9/pyrig/resources/MIT_LICENSE_TEMPLATE +21 -0
- pyrig-3.0.9/pyrig/src/cli.py +17 -0
- pyrig-3.0.9/pyrig/src/consts.py +3 -0
- pyrig-3.0.9/pyrig/src/git.py +229 -0
- pyrig-3.0.9/pyrig/src/graph.py +255 -0
- {pyrig-2.0.30 → pyrig-3.0.9}/pyrig/src/iterate.py +35 -20
- pyrig-3.0.9/pyrig/src/management/__init__.py +5 -0
- pyrig-3.0.9/pyrig/src/management/base/base.py +77 -0
- pyrig-3.0.9/pyrig/src/management/container_engine.py +49 -0
- pyrig-3.0.9/pyrig/src/management/package_manager.py +170 -0
- pyrig-3.0.9/pyrig/src/management/pre_committer.py +71 -0
- pyrig-3.0.9/pyrig/src/management/project_tester.py +48 -0
- pyrig-3.0.9/pyrig/src/management/pyrigger.py +67 -0
- pyrig-3.0.9/pyrig/src/management/version_controller.py +211 -0
- pyrig-3.0.9/pyrig/src/modules/__init__.py +22 -0
- pyrig-3.0.9/pyrig/src/modules/class_.py +303 -0
- pyrig-3.0.9/pyrig/src/modules/function.py +189 -0
- pyrig-3.0.9/pyrig/src/modules/imports.py +147 -0
- pyrig-3.0.9/pyrig/src/modules/inspection.py +170 -0
- pyrig-3.0.9/pyrig/src/modules/module.py +300 -0
- pyrig-3.0.9/pyrig/src/modules/package.py +420 -0
- pyrig-3.0.9/pyrig/src/modules/path.py +307 -0
- pyrig-3.0.9/pyrig/src/os/__init__.py +6 -0
- pyrig-3.0.9/pyrig/src/os/os.py +121 -0
- pyrig-3.0.9/pyrig/src/resource.py +58 -0
- pyrig-3.0.9/pyrig/src/string.py +100 -0
- pyrig-3.0.9/pyrig/src/testing/__init__.py +6 -0
- {pyrig-2.0.30 → pyrig-3.0.9}/pyrig/src/testing/assertions.py +0 -18
- {pyrig-2.0.30 → pyrig-3.0.9}/pyrig/src/testing/convention.py +45 -19
- pyrig-2.0.30/PKG-INFO +0 -856
- pyrig-2.0.30/README.md +0 -837
- pyrig-2.0.30/pyproject.toml +0 -103
- pyrig-2.0.30/pyrig/dev/artifacts/build.py +0 -8
- pyrig-2.0.30/pyrig/dev/artifacts/builder/base/base.py +0 -308
- pyrig-2.0.30/pyrig/dev/artifacts/builder/builder.py +0 -4
- pyrig-2.0.30/pyrig/dev/cli/cli.py +0 -46
- pyrig-2.0.30/pyrig/dev/cli/subcommands.py +0 -60
- pyrig-2.0.30/pyrig/dev/configs/base/base.py +0 -484
- pyrig-2.0.30/pyrig/dev/configs/configs.py +0 -4
- pyrig-2.0.30/pyrig/dev/configs/dot_env.py +0 -50
- pyrig-2.0.30/pyrig/dev/configs/dot_python_version.py +0 -50
- pyrig-2.0.30/pyrig/dev/configs/git/gitignore.py +0 -120
- pyrig-2.0.30/pyrig/dev/configs/licence.py +0 -34
- pyrig-2.0.30/pyrig/dev/configs/py_typed.py +0 -15
- pyrig-2.0.30/pyrig/dev/configs/pyproject.py +0 -295
- pyrig-2.0.30/pyrig/dev/configs/python/builder.py +0 -15
- pyrig-2.0.30/pyrig/dev/configs/python/configs.py +0 -18
- pyrig-2.0.30/pyrig/dev/configs/python/experiment.py +0 -28
- pyrig-2.0.30/pyrig/dev/configs/python/main.py +0 -42
- pyrig-2.0.30/pyrig/dev/configs/python/resources_init.py +0 -29
- pyrig-2.0.30/pyrig/dev/configs/python/src_init.py +0 -29
- pyrig-2.0.30/pyrig/dev/configs/python/subcommands.py +0 -15
- pyrig-2.0.30/pyrig/dev/configs/readme.py +0 -43
- pyrig-2.0.30/pyrig/dev/configs/testing/__init__.py +0 -1
- pyrig-2.0.30/pyrig/dev/configs/testing/conftest.py +0 -34
- pyrig-2.0.30/pyrig/dev/configs/testing/fixtures/__init__.py +0 -1
- pyrig-2.0.30/pyrig/dev/configs/testing/fixtures/fixture.py +0 -15
- pyrig-2.0.30/pyrig/dev/configs/testing/fixtures/scopes/__init__.py +0 -1
- pyrig-2.0.30/pyrig/dev/configs/testing/fixtures/scopes/class_.py +0 -15
- pyrig-2.0.30/pyrig/dev/configs/testing/fixtures/scopes/function.py +0 -15
- pyrig-2.0.30/pyrig/dev/configs/testing/fixtures/scopes/module.py +0 -15
- pyrig-2.0.30/pyrig/dev/configs/testing/fixtures/scopes/package.py +0 -15
- pyrig-2.0.30/pyrig/dev/configs/testing/fixtures/scopes/session.py +0 -15
- pyrig-2.0.30/pyrig/dev/configs/testing/main_test.py +0 -58
- pyrig-2.0.30/pyrig/dev/configs/testing/zero_test.py +0 -34
- pyrig-2.0.30/pyrig/dev/configs/workflows/__init__.py +0 -1
- pyrig-2.0.30/pyrig/dev/configs/workflows/base/__init__.py +0 -1
- pyrig-2.0.30/pyrig/dev/configs/workflows/base/base.py +0 -969
- pyrig-2.0.30/pyrig/dev/configs/workflows/health_check.py +0 -102
- pyrig-2.0.30/pyrig/dev/configs/workflows/publish.py +0 -51
- pyrig-2.0.30/pyrig/dev/configs/workflows/release.py +0 -94
- pyrig-2.0.30/pyrig/dev/tests/__init__.py +0 -1
- pyrig-2.0.30/pyrig/dev/tests/conftest.py +0 -33
- pyrig-2.0.30/pyrig/dev/tests/fixtures/__init__.py +0 -1
- pyrig-2.0.30/pyrig/dev/tests/fixtures/fixture.py +0 -64
- pyrig-2.0.30/pyrig/dev/tests/fixtures/scopes/__init__.py +0 -1
- pyrig-2.0.30/pyrig/dev/tests/fixtures/scopes/function.py +0 -8
- pyrig-2.0.30/pyrig/dev/tests/fixtures/scopes/package.py +0 -8
- pyrig-2.0.30/pyrig/dev/tests/fixtures/scopes/session.py +0 -388
- pyrig-2.0.30/pyrig/dev/tests/utils/__init__.py +0 -1
- pyrig-2.0.30/pyrig/main.py +0 -19
- pyrig-2.0.30/pyrig/src/git/__init__.py +0 -1
- pyrig-2.0.30/pyrig/src/git/github/__init__.py +0 -1
- pyrig-2.0.30/pyrig/src/git/github/github.py +0 -49
- pyrig-2.0.30/pyrig/src/git/github/repo/__init__.py +0 -1
- pyrig-2.0.30/pyrig/src/git/github/repo/protect.py +0 -103
- pyrig-2.0.30/pyrig/src/graph.py +0 -91
- pyrig-2.0.30/pyrig/src/modules/__init__.py +0 -1
- pyrig-2.0.30/pyrig/src/modules/class_.py +0 -267
- pyrig-2.0.30/pyrig/src/modules/function.py +0 -124
- pyrig-2.0.30/pyrig/src/modules/inspection.py +0 -56
- pyrig-2.0.30/pyrig/src/modules/module.py +0 -573
- pyrig-2.0.30/pyrig/src/modules/package.py +0 -420
- pyrig-2.0.30/pyrig/src/os/__init__.py +0 -1
- pyrig-2.0.30/pyrig/src/os/os.py +0 -88
- pyrig-2.0.30/pyrig/src/project/__init__.py +0 -1
- pyrig-2.0.30/pyrig/src/project/create_root.py +0 -8
- pyrig-2.0.30/pyrig/src/project/init.py +0 -55
- pyrig-2.0.30/pyrig/src/project/mgt.py +0 -90
- pyrig-2.0.30/pyrig/src/resource.py +0 -23
- pyrig-2.0.30/pyrig/src/string.py +0 -52
- pyrig-2.0.30/pyrig/src/testing/__init__.py +0 -1
- pyrig-2.0.30/pyrig/src/testing/utils.py +0 -80
- {pyrig-2.0.30 → pyrig-3.0.9}/pyrig/__init__.py +0 -0
- {pyrig-2.0.30/pyrig/dev → pyrig-3.0.9/pyrig/dev/builders}/__init__.py +0 -0
- {pyrig-2.0.30/pyrig/dev/artifacts → pyrig-3.0.9/pyrig/dev/cli/commands}/__init__.py +0 -0
- {pyrig-2.0.30/pyrig/dev/artifacts/builder → pyrig-3.0.9/pyrig/dev/configs}/__init__.py +0 -0
- {pyrig-2.0.30/pyrig/dev/artifacts/builder/base → pyrig-3.0.9/pyrig/dev/configs/containers}/__init__.py +0 -0
- {pyrig-2.0.30/pyrig/dev/artifacts/resources → pyrig-3.0.9/pyrig/dev/configs/docs}/__init__.py +0 -0
- {pyrig-2.0.30/pyrig/dev/cli → pyrig-3.0.9/pyrig/dev/configs/markdown}/__init__.py +0 -0
- {pyrig-2.0.30/pyrig/dev/configs → pyrig-3.0.9/pyrig/dev/configs/markdown/docs}/__init__.py +0 -0
- {pyrig-2.0.30/pyrig/dev/configs/base → pyrig-3.0.9/pyrig/dev/tests/fixtures}/__init__.py +0 -0
- {pyrig-2.0.30 → pyrig-3.0.9}/pyrig/py.typed +0 -0
- {pyrig-2.0.30/pyrig/dev/configs/git → pyrig-3.0.9/pyrig/resources}/__init__.py +0 -0
- {pyrig-2.0.30 → pyrig-3.0.9}/pyrig/src/__init__.py +0 -0
- {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
|
+
[](https://github.com/Winipedia/pyrig)
|
|
36
|
+
[](https://github.com/astral-sh/uv)
|
|
37
|
+
[](https://podman.io/)
|
|
38
|
+
[](https://pre-commit.com/)
|
|
39
|
+
[](https://www.mkdocs.org/)
|
|
40
|
+
<!-- code-quality -->
|
|
41
|
+
[](https://github.com/astral-sh/ruff)
|
|
42
|
+
[](https://github.com/astral-sh/ty)[](https://mypy-lang.org/)
|
|
43
|
+
[](https://github.com/PyCQA/bandit)
|
|
44
|
+
[](https://pytest.org/)
|
|
45
|
+
[](https://codecov.io/gh/Winipedia/pyrig)
|
|
46
|
+
<!-- package-info -->
|
|
47
|
+
[](https://pypi.org/project/pyrig)
|
|
48
|
+
[](https://www.python.org/)
|
|
49
|
+
[](https://github.com/Winipedia/pyrig/blob/main/LICENSE)
|
|
50
|
+
<!-- ci/cd -->
|
|
51
|
+
[](https://github.com/Winipedia/pyrig/actions/workflows/health_check.yaml)
|
|
52
|
+
[](https://github.com/Winipedia/pyrig/actions/workflows/release.yaml)
|
|
53
|
+
<!-- documentation -->
|
|
54
|
+
[](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
|
+
[](https://github.com/Winipedia/pyrig)
|
|
5
|
+
[](https://github.com/astral-sh/uv)
|
|
6
|
+
[](https://podman.io/)
|
|
7
|
+
[](https://pre-commit.com/)
|
|
8
|
+
[](https://www.mkdocs.org/)
|
|
9
|
+
<!-- code-quality -->
|
|
10
|
+
[](https://github.com/astral-sh/ruff)
|
|
11
|
+
[](https://github.com/astral-sh/ty)[](https://mypy-lang.org/)
|
|
12
|
+
[](https://github.com/PyCQA/bandit)
|
|
13
|
+
[](https://pytest.org/)
|
|
14
|
+
[](https://codecov.io/gh/Winipedia/pyrig)
|
|
15
|
+
<!-- package-info -->
|
|
16
|
+
[](https://pypi.org/project/pyrig)
|
|
17
|
+
[](https://www.python.org/)
|
|
18
|
+
[](https://github.com/Winipedia/pyrig/blob/main/LICENSE)
|
|
19
|
+
<!-- ci/cd -->
|
|
20
|
+
[](https://github.com/Winipedia/pyrig/actions/workflows/health_check.yaml)
|
|
21
|
+
[](https://github.com/Winipedia/pyrig/actions/workflows/release.yaml)
|
|
22
|
+
<!-- documentation -->
|
|
23
|
+
[](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
|
+
"""
|