oe-python-template 0.6.1__tar.gz → 0.6.4__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.
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/.copier-answers.yml +1 -1
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/CHANGELOG.md +19 -1
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/PKG-INFO +5 -10
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/README.md +4 -9
- oe_python_template-0.6.4/RELEASE_NOTES.md +12 -0
- oe_python_template-0.6.4/VERSION +1 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/docs/partials/README_main.md +4 -9
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/docs/source/conf.py +1 -1
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/noxfile.py +1 -1
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/pyproject.toml +5 -5
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/sonar-project.properties +1 -1
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/src/oe_python_template/api.py +12 -9
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/docs/partials/README_main.md.jinja +4 -9
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/noxfile.py.jinja +1 -1
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/src/{{ project_name_snake_case }}/api.py.jinja +12 -10
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/tests/api_test.py.jinja +20 -14
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/tests/api_test.py +20 -14
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/uv.lock +1 -1
- oe_python_template-0.6.1/RELEASE_NOTES.md +0 -8
- oe_python_template-0.6.1/VERSION +0 -1
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/.act-env-public +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/.devcontainer/Dockerfile +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/.devcontainer/devcontainer.json +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/.devcontainer/onCreateCommand +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/.devcontainer/postAttachCommand +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/.devcontainer/postCreateCommand +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/.env.example +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/.github/copilot-instructions.md +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/.github/dependabot.yml +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/.github/prompts/.keep +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/.github/workflows/codeql.yml +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/.github/workflows/docker-image-build-publish.yml +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/.github/workflows/package-build-publish-release.yml +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/.github/workflows/test-and-report.yml +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/.gitignore +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/.pre-commit-config.yaml +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/.python-version +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/.readthedocs.yml +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/.secrets.baseline +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/.vscode/extensions.json +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/.vscode/settings.json +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/CODEOWNERS +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/CODE_STYLE.md +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/CONTRIBUTING.md +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/Dockerfile +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/LICENSE +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/SECURITY.md +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/SERVICE_CONNECTIONS.md +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/bin/git-cliff +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/codecov.yml +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/compose.yaml +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/copier.yml +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/docs/Makefile +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/docs/make.bat +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/docs/partials/README_footer.md +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/docs/partials/README_header.md +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/docs/source/_static/.keep +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/docs/source/_static/openapi_v1.json +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/docs/source/_static/openapi_v1.yaml +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/docs/source/_static/openapi_v2.json +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/docs/source/_static/openapi_v2.yaml +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/docs/source/api_v1.rst +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/docs/source/api_v2.rst +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/docs/source/code-style.rst +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/docs/source/contributing.rst +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/docs/source/index.rst +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/docs/source/latexmkrc +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/docs/source/main.rst +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/docs/source/reference.rst +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/docs/source/release-notes.rst +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/docs/source/security.rst +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/examples/__init__.py +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/examples/notebook.ipynb +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/examples/notebook.py +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/examples/script.py +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/examples/streamlit.py +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/git-cliff-2.7.0/CHANGELOG.md +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/git-cliff-2.7.0/LICENSE-APACHE +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/git-cliff-2.7.0/LICENSE-MIT +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/git-cliff-2.7.0/README.md +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/git-cliff-2.7.0/completions/_git-cliff +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/git-cliff-2.7.0/completions/_git-cliff.ps1 +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/git-cliff-2.7.0/completions/git-cliff.bash +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/git-cliff-2.7.0/completions/git-cliff.elv +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/git-cliff-2.7.0/completions/git-cliff.fish +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/git-cliff-2.7.0/git-cliff-completions +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/git-cliff-2.7.0/git-cliff-mangen +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/git-cliff-2.7.0/man/git-cliff.1 +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/git-cliff-2.7.0-x86_64-unknown-linux-gnu.tar.gz +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/github-action-run +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/logo.png +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/n +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/renovate.json +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/reports/.keep +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/src/oe_python_template/__init__.py +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/src/oe_python_template/cli.py +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/src/oe_python_template/constants.py +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/src/oe_python_template/service.py +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/.act-env-public.jinja +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/.devcontainer/Dockerfile.jinja +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/.devcontainer/devcontainer.json.jinja +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/.devcontainer/onCreateCommand.jinja +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/.devcontainer/postAttachCommand.jinja +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/.devcontainer/postCreateCommand.jinja +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/.env.example.jinja +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/.github/copilot-instructions.md +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/.github/dependabot.yml +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/.github/workflows/codeql.yml +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/.github/workflows/docker-image-build-publish.yml.jinja +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/.github/workflows/package-build-publish-release.yml.jinja +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/.github/workflows/test-and-report.yml.jinja +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/.gitignore.jinja +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/.pre-commit-config.yaml.jinja +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/.python-version +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/.readthedocs.yml.jinja +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/.vscode/extensions.json +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/.vscode/settings.json.jinja +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/CHANGELOG.md +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/CODEOWNERS.jinja +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/CODE_STYLE.md.jinja +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/CONTRIBUTING.md.jinja +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/Dockerfile.jinja +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/LICENSE.jinja +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/README.md +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/SECURITY.md.jinja +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/SERVICE_CONNECTIONS.md.jinja +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/VERSION +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/codecov.yml.jinja +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/compose.yaml.jinja +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/docs/Makefile.jinja +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/docs/make.bat.jinja +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/docs/partials/README_footer.md.jinja +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/docs/partials/README_header.md.jinja +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/docs/source/_static/.keep +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/docs/source/api_v1.rst.jinja +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/docs/source/api_v2.rst.jinja +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/docs/source/code-style.rst.jinja +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/docs/source/conf.py.jinja +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/docs/source/contributing.rst.jinja +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/docs/source/index.rst.jinja +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/docs/source/main.rst.jinja +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/docs/source/reference.rst.jinja +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/docs/source/release-notes.rst.jinja +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/docs/source/security.rst.jinja +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/examples/__init__.py.jinja +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/examples/notebook.ipynb.jinja +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/examples/notebook.py.jinja +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/examples/script.py.jinja +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/examples/streamlit.py.jinja +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/github-action-run.jinja +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/logo.png +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/n.jinja +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/pyproject.toml.jinja +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/renovate.json +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/reports/.keep +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/sonar-project.properties.jinja +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/src/{{ project_name_snake_case }}/__init__.py.jinja +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/src/{{ project_name_snake_case }}/cli.py.jinja +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/src/{{ project_name_snake_case }}/constants.py.jinja +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/src/{{ project_name_snake_case }}/service.py.jinja +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/tests/__init__.py.jinja +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/tests/cli_test.py.jinja +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/tests/fixtures/.keep +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/{{_copier_conf.answers_file}}.jinja +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/tests/__init__.py +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/tests/cli_test.py +0 -0
- {oe_python_template-0.6.1 → oe_python_template-0.6.4}/tests/fixtures/.keep +0 -0
|
@@ -1,6 +1,24 @@
|
|
|
1
1
|
[🧠 OE Python Template](https://oe-python-template.readthedocs.io/en/latest/)
|
|
2
2
|
|
|
3
|
-
## [0.6.
|
|
3
|
+
## [0.6.4](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/compare/v0.6.2..0.6.4) - 2025-03-17
|
|
4
|
+
|
|
5
|
+
### 🚜 Refactor
|
|
6
|
+
|
|
7
|
+
- Dry - ([c427611](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/commit/c4276118dfbef8c729011462550e1a2d565fe7b6))
|
|
8
|
+
|
|
9
|
+
### ⚙️ Miscellaneous Tasks
|
|
10
|
+
|
|
11
|
+
- Bump - ([e5993ee](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/commit/e5993eee24425279d2aed636c913d49b4aa0149a))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
## [0.6.2](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/compare/v0.6.1..v0.6.2) - 2025-03-17
|
|
15
|
+
|
|
16
|
+
### 📚 Documentation
|
|
17
|
+
|
|
18
|
+
- *(README)* Add --trust, and simplify by removing manual setup step - ([c4f5ec5](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/commit/c4f5ec569007f852191029a16b9b6743ef0a5cee))
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
## [0.6.1](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/compare/v0.6.0..v0.6.1) - 2025-03-17
|
|
4
22
|
|
|
5
23
|
### 🐛 Bug Fixes
|
|
6
24
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: oe-python-template
|
|
3
|
-
Version: 0.6.
|
|
3
|
+
Version: 0.6.4
|
|
4
4
|
Summary: 🧠 Copier template to scaffold Python projects compliant with best practices and modern tooling.
|
|
5
5
|
Project-URL: Homepage, https://oe-python-template.readthedocs.io/en/latest/
|
|
6
6
|
Project-URL: Documentation, https://oe-python-template.readthedocs.io/en/latest/
|
|
@@ -130,15 +130,10 @@ uv tool install copier # Install copier as global
|
|
|
130
130
|
|
|
131
131
|
**Step 3**: Scaffold the project
|
|
132
132
|
```shell
|
|
133
|
-
copier copy gh:helmut-hoffer-von-ankershoffen/oe-python-template .
|
|
133
|
+
copier copy --trust gh:helmut-hoffer-von-ankershoffen/oe-python-template . --trust
|
|
134
134
|
```
|
|
135
|
-
**Step 4**: Setup the local environment
|
|
136
135
|
|
|
137
|
-
|
|
138
|
-
uv run nox -s setup_dev
|
|
139
|
-
```
|
|
140
|
-
|
|
141
|
-
**Step 5**: Perform initial commit and push
|
|
136
|
+
**Step 4**: Perform initial commit and push
|
|
142
137
|
```shell
|
|
143
138
|
git add .
|
|
144
139
|
git commit -m "feat: Initial commit"
|
|
@@ -148,10 +143,10 @@ git push
|
|
|
148
143
|
Visit your GitHub repository and check the Actions tab. The CI workflow should fail at the SonarQube step,
|
|
149
144
|
as this external service is not yet configured for our new repository.
|
|
150
145
|
|
|
151
|
-
**Step
|
|
146
|
+
**Step 5**: Follow the [instructions](SERVICE_CONNECTIONS.md) to wire up
|
|
152
147
|
external services such as Cloudcov, SonarQube Cloud, Read The Docs, Docker.io, GHCR.io and Streamlit Community Cloud.
|
|
153
148
|
|
|
154
|
-
**Step
|
|
149
|
+
**Step 6**: Release the first versions
|
|
155
150
|
```shell
|
|
156
151
|
./n bump
|
|
157
152
|
```
|
|
@@ -69,15 +69,10 @@ uv tool install copier # Install copier as global
|
|
|
69
69
|
|
|
70
70
|
**Step 3**: Scaffold the project
|
|
71
71
|
```shell
|
|
72
|
-
copier copy gh:helmut-hoffer-von-ankershoffen/oe-python-template .
|
|
72
|
+
copier copy --trust gh:helmut-hoffer-von-ankershoffen/oe-python-template . --trust
|
|
73
73
|
```
|
|
74
|
-
**Step 4**: Setup the local environment
|
|
75
74
|
|
|
76
|
-
|
|
77
|
-
uv run nox -s setup_dev
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
**Step 5**: Perform initial commit and push
|
|
75
|
+
**Step 4**: Perform initial commit and push
|
|
81
76
|
```shell
|
|
82
77
|
git add .
|
|
83
78
|
git commit -m "feat: Initial commit"
|
|
@@ -87,10 +82,10 @@ git push
|
|
|
87
82
|
Visit your GitHub repository and check the Actions tab. The CI workflow should fail at the SonarQube step,
|
|
88
83
|
as this external service is not yet configured for our new repository.
|
|
89
84
|
|
|
90
|
-
**Step
|
|
85
|
+
**Step 5**: Follow the [instructions](SERVICE_CONNECTIONS.md) to wire up
|
|
91
86
|
external services such as Cloudcov, SonarQube Cloud, Read The Docs, Docker.io, GHCR.io and Streamlit Community Cloud.
|
|
92
87
|
|
|
93
|
-
**Step
|
|
88
|
+
**Step 6**: Release the first versions
|
|
94
89
|
```shell
|
|
95
90
|
./n bump
|
|
96
91
|
```
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
## [0.6.4](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/compare/v0.6.2..v0.6.4) - 2025-03-17
|
|
2
|
+
|
|
3
|
+
### 🚜 Refactor
|
|
4
|
+
|
|
5
|
+
- Dry - ([c427611](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/commit/c4276118dfbef8c729011462550e1a2d565fe7b6))
|
|
6
|
+
|
|
7
|
+
### ⚙️ Miscellaneous Tasks
|
|
8
|
+
|
|
9
|
+
- Bump - ([e5993ee](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/commit/e5993eee24425279d2aed636c913d49b4aa0149a))
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0.6.4
|
|
@@ -27,15 +27,10 @@ uv tool install copier # Install copier as global
|
|
|
27
27
|
|
|
28
28
|
**Step 3**: Scaffold the project
|
|
29
29
|
```shell
|
|
30
|
-
copier copy gh:helmut-hoffer-von-ankershoffen/oe-python-template .
|
|
30
|
+
copier copy --trust gh:helmut-hoffer-von-ankershoffen/oe-python-template . --trust
|
|
31
31
|
```
|
|
32
|
-
**Step 4**: Setup the local environment
|
|
33
32
|
|
|
34
|
-
|
|
35
|
-
uv run nox -s setup_dev
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
**Step 5**: Perform initial commit and push
|
|
33
|
+
**Step 4**: Perform initial commit and push
|
|
39
34
|
```shell
|
|
40
35
|
git add .
|
|
41
36
|
git commit -m "feat: Initial commit"
|
|
@@ -45,10 +40,10 @@ git push
|
|
|
45
40
|
Visit your GitHub repository and check the Actions tab. The CI workflow should fail at the SonarQube step,
|
|
46
41
|
as this external service is not yet configured for our new repository.
|
|
47
42
|
|
|
48
|
-
**Step
|
|
43
|
+
**Step 5**: Follow the [instructions](SERVICE_CONNECTIONS.md) to wire up
|
|
49
44
|
external services such as Cloudcov, SonarQube Cloud, Read The Docs, Docker.io, GHCR.io and Streamlit Community Cloud.
|
|
50
45
|
|
|
51
|
-
**Step
|
|
46
|
+
**Step 6**: Release the first versions
|
|
52
47
|
```shell
|
|
53
48
|
./n bump
|
|
54
49
|
```
|
|
@@ -29,7 +29,7 @@ extensions = [
|
|
|
29
29
|
project = "oe-python-template"
|
|
30
30
|
author = "Helmut Hoffer von Ankershoffen"
|
|
31
31
|
copyright = f" (c) 2025-{datetime.now(UTC).year}, {author}" # noqa: A001
|
|
32
|
-
version = "0.6.
|
|
32
|
+
version = "0.6.4"
|
|
33
33
|
release = version
|
|
34
34
|
github_username = "helmut-hoffer-von-ankershoffen"
|
|
35
35
|
github_repository = "oe-python-template"
|
|
@@ -191,7 +191,7 @@ def bump(session: nox.Session) -> None:
|
|
|
191
191
|
version_part = session.posargs[0] if session.posargs else "patch"
|
|
192
192
|
|
|
193
193
|
# Check if the version_part is a specific version (e.g., 1.2.3)
|
|
194
|
-
if re.match(r"
|
|
194
|
+
if re.match(r"^\d+\.\d+\.\d+$", version_part):
|
|
195
195
|
session.run("bump-my-version", "bump", "--new-version", version_part, external=True)
|
|
196
196
|
else:
|
|
197
197
|
session.run("bump-my-version", "bump", version_part, external=True)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "oe-python-template"
|
|
3
|
-
version = "0.6.
|
|
3
|
+
version = "0.6.4"
|
|
4
4
|
description = "🧠 Copier template to scaffold Python projects compliant with best practices and modern tooling."
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
authors = [
|
|
@@ -188,7 +188,7 @@ ignore = [
|
|
|
188
188
|
[tool.ruff.lint.extend-per-file-ignores]
|
|
189
189
|
"examples/notebook.py" = [
|
|
190
190
|
# we are more relaxed in notebooks, while sill applying hundreds of rules
|
|
191
|
-
"B018",
|
|
191
|
+
"B018", # notebooks surface variable without print
|
|
192
192
|
]
|
|
193
193
|
|
|
194
194
|
[tool.ruff.format]
|
|
@@ -197,7 +197,7 @@ docstring-code-format = true
|
|
|
197
197
|
[tool.ruff.lint.pydocstyle]
|
|
198
198
|
convention = "google"
|
|
199
199
|
|
|
200
|
-
[tool.mypy]
|
|
200
|
+
[tool.mypy] # https://mypy.readthedocs.io/en/latest/config_file.html
|
|
201
201
|
junit_xml = "reports/mypy_junit.xml"
|
|
202
202
|
plugins = "pydantic.mypy"
|
|
203
203
|
strict = true
|
|
@@ -210,7 +210,7 @@ show_error_codes = true
|
|
|
210
210
|
show_error_context = true
|
|
211
211
|
warn_unreachable = true
|
|
212
212
|
|
|
213
|
-
[tool.pydantic-mypy]
|
|
213
|
+
[tool.pydantic-mypy] # https://docs.pydantic.dev/latest/integrations/mypy/#configuring-the-plugin
|
|
214
214
|
init_forbid_extra = true
|
|
215
215
|
init_typed = true
|
|
216
216
|
warn_required_dynamic_aliases = true
|
|
@@ -242,7 +242,7 @@ source = ["src/"]
|
|
|
242
242
|
|
|
243
243
|
|
|
244
244
|
[tool.bumpversion]
|
|
245
|
-
current_version = "0.6.
|
|
245
|
+
current_version = "0.6.4"
|
|
246
246
|
parse = "(?P<major>\\d+)\\.(?P<minor>\\d+)\\.(?P<patch>\\d+)"
|
|
247
247
|
serialize = ["{major}.{minor}.{patch}"]
|
|
248
248
|
search = "{current_version}"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
sonar.projectKey=helmut-hoffer-von-ankershoffen_oe-python-template
|
|
2
2
|
sonar.organization=helmut-hoffer-von-ankershoffen
|
|
3
|
-
sonar.projectVersion=0.6.
|
|
3
|
+
sonar.projectVersion=0.6.4
|
|
4
4
|
sonar.projectDescription=🧠 Copier template to scaffold Python projects compliant with best practices and modern tooling.
|
|
5
5
|
sonar.links.homepage=https://oe-python-template.readthedocs.io/en/latest/
|
|
6
6
|
sonar.links.scm=https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template
|
|
@@ -21,6 +21,9 @@ from oe_python_template import Service
|
|
|
21
21
|
HELLO_WORLD_EXAMPLE = "Hello, world!"
|
|
22
22
|
UVICORN_HOST = os.environ.get("UVICORN_HOST", "127.0.0.1")
|
|
23
23
|
UVICORN_PORT = os.environ.get("UVICORN_PORT", "8000")
|
|
24
|
+
CONTACT_NAME = "Helmut Hoffer von Ankershoffen"
|
|
25
|
+
CONTACT_EMAIL = "helmuthva@gmail.com"
|
|
26
|
+
CONTACT_URL = "https://github.com/helmut-hoffer-von-ankershoffen"
|
|
24
27
|
|
|
25
28
|
|
|
26
29
|
def get_service() -> Generator[Service, None, None]:
|
|
@@ -41,9 +44,9 @@ api = FastAPI(
|
|
|
41
44
|
root_path="/api",
|
|
42
45
|
title="OE Python Template",
|
|
43
46
|
contact={
|
|
44
|
-
"name":
|
|
45
|
-
"email":
|
|
46
|
-
"url":
|
|
47
|
+
"name": CONTACT_NAME,
|
|
48
|
+
"email": CONTACT_EMAIL,
|
|
49
|
+
"url": CONTACT_URL,
|
|
47
50
|
},
|
|
48
51
|
terms_of_service="https://oe-python-template.readthedocs.io/en/latest/",
|
|
49
52
|
openapi_tags=[
|
|
@@ -70,9 +73,9 @@ api_v1 = FastAPI(
|
|
|
70
73
|
version="1.0.0",
|
|
71
74
|
title="OE Python Template",
|
|
72
75
|
contact={
|
|
73
|
-
"name":
|
|
74
|
-
"email":
|
|
75
|
-
"url":
|
|
76
|
+
"name": CONTACT_NAME,
|
|
77
|
+
"email": CONTACT_EMAIL,
|
|
78
|
+
"url": CONTACT_URL,
|
|
76
79
|
},
|
|
77
80
|
terms_of_service="https://oe-python-template.readthedocs.io/en/latest/",
|
|
78
81
|
)
|
|
@@ -81,9 +84,9 @@ api_v2 = FastAPI(
|
|
|
81
84
|
version="2.0.0",
|
|
82
85
|
title="OE Python Template",
|
|
83
86
|
contact={
|
|
84
|
-
"name":
|
|
85
|
-
"email":
|
|
86
|
-
"url":
|
|
87
|
+
"name": CONTACT_NAME,
|
|
88
|
+
"email": CONTACT_EMAIL,
|
|
89
|
+
"url": CONTACT_URL,
|
|
87
90
|
},
|
|
88
91
|
terms_of_service="https://oe-python-template.readthedocs.io/en/latest/",
|
|
89
92
|
)
|
{oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/docs/partials/README_main.md.jinja
RENAMED
|
@@ -27,15 +27,10 @@ uv tool install copier # Install copier as global
|
|
|
27
27
|
|
|
28
28
|
**Step 3**: Scaffold the project
|
|
29
29
|
```shell
|
|
30
|
-
copier copy gh:helmut-hoffer-von-ankershoffen/oe-python-template .
|
|
30
|
+
copier copy --trust gh:helmut-hoffer-von-ankershoffen/oe-python-template . --trust
|
|
31
31
|
```
|
|
32
|
-
**Step 4**: Setup the local environment
|
|
33
32
|
|
|
34
|
-
|
|
35
|
-
uv run nox -s setup_dev
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
**Step 5**: Perform initial commit and push
|
|
33
|
+
**Step 4**: Perform initial commit and push
|
|
39
34
|
```shell
|
|
40
35
|
git add .
|
|
41
36
|
git commit -m "feat: Initial commit"
|
|
@@ -45,10 +40,10 @@ git push
|
|
|
45
40
|
Visit your GitHub repository and check the Actions tab. The CI workflow should fail at the SonarQube step,
|
|
46
41
|
as this external service is not yet configured for our new repository.
|
|
47
42
|
|
|
48
|
-
**Step
|
|
43
|
+
**Step 5**: Follow the [instructions](SERVICE_CONNECTIONS.md) to wire up
|
|
49
44
|
external services such as Cloudcov, SonarQube Cloud, Read The Docs, Docker.io, GHCR.io and Streamlit Community Cloud.
|
|
50
45
|
|
|
51
|
-
**Step
|
|
46
|
+
**Step 6**: Release the first versions
|
|
52
47
|
```shell
|
|
53
48
|
./n bump
|
|
54
49
|
```
|
|
@@ -191,7 +191,7 @@ def bump(session: nox.Session) -> None:
|
|
|
191
191
|
version_part = session.posargs[0] if session.posargs else "patch"
|
|
192
192
|
|
|
193
193
|
# Check if the version_part is a specific version (e.g., 1.2.3)
|
|
194
|
-
if re.match(r"
|
|
194
|
+
if re.match(r"^\d+\.\d+\.\d+$", version_part):
|
|
195
195
|
session.run("bump-my-version", "bump", "--new-version", version_part, external=True)
|
|
196
196
|
else:
|
|
197
197
|
session.run("bump-my-version", "bump", version_part, external=True)
|
|
@@ -21,7 +21,9 @@ from {{ project_name_snake_case }} import Service
|
|
|
21
21
|
HELLO_WORLD_EXAMPLE = "Hello, world!"
|
|
22
22
|
UVICORN_HOST = os.environ.get("UVICORN_HOST", "127.0.0.1")
|
|
23
23
|
UVICORN_PORT = os.environ.get("UVICORN_PORT", "8000")
|
|
24
|
-
|
|
24
|
+
CONTACT_NAME = "{{ org_name }}"
|
|
25
|
+
CONTACT_EMAIL = "{{ org_email }}"
|
|
26
|
+
CONTACT_URL = "https://github.com/{{ github_repository_owner }}"
|
|
25
27
|
|
|
26
28
|
def get_service() -> Generator[Service, None, None]:
|
|
27
29
|
"""Get the service instance.
|
|
@@ -41,9 +43,9 @@ api = FastAPI(
|
|
|
41
43
|
root_path="/api",
|
|
42
44
|
title="{{ project_name }}",
|
|
43
45
|
contact={
|
|
44
|
-
"name":
|
|
45
|
-
"email":
|
|
46
|
-
"url":
|
|
46
|
+
"name": CONTACT_NAME,
|
|
47
|
+
"email": CONTACT_EMAIL,
|
|
48
|
+
"url": CONTACT_URL,
|
|
47
49
|
},
|
|
48
50
|
terms_of_service="https://{{ readthedocs_project_key }}.readthedocs.io/en/latest/",
|
|
49
51
|
openapi_tags=[
|
|
@@ -70,9 +72,9 @@ api_v1 = FastAPI(
|
|
|
70
72
|
version="1.0.0",
|
|
71
73
|
title="{{ project_name }}",
|
|
72
74
|
contact={
|
|
73
|
-
"name":
|
|
74
|
-
"email":
|
|
75
|
-
"url":
|
|
75
|
+
"name": CONTACT_NAME,
|
|
76
|
+
"email": CONTACT_EMAIL,
|
|
77
|
+
"url": CONTACT_URL,
|
|
76
78
|
},
|
|
77
79
|
terms_of_service="https://{{ readthedocs_project_key }}.readthedocs.io/en/latest/",
|
|
78
80
|
)
|
|
@@ -81,9 +83,9 @@ api_v2 = FastAPI(
|
|
|
81
83
|
version="2.0.0",
|
|
82
84
|
title="{{ project_name }}",
|
|
83
85
|
contact={
|
|
84
|
-
"name":
|
|
85
|
-
"email":
|
|
86
|
-
"url":
|
|
86
|
+
"name": CONTACT_NAME,
|
|
87
|
+
"email": CONTACT_EMAIL,
|
|
88
|
+
"url": CONTACT_URL,
|
|
87
89
|
},
|
|
88
90
|
terms_of_service="https://{{ readthedocs_project_key }}.readthedocs.io/en/latest/",
|
|
89
91
|
)
|
|
@@ -19,6 +19,12 @@ HEALTH_PATH_V2 = "/api/v2/health"
|
|
|
19
19
|
HEALTHZ_PATH_V1 = "/api/v1/healthz"
|
|
20
20
|
HEALTHZ_PATH_V2 = "/api/v2/healthz"
|
|
21
21
|
|
|
22
|
+
HELLO_WORLD = "Hello, world!"
|
|
23
|
+
|
|
24
|
+
SERVICE_UP = "UP"
|
|
25
|
+
SERVICE_DOWN = "DOWN"
|
|
26
|
+
SERVICE_IS_UNHEALTHY = "Service is unhealthy"
|
|
27
|
+
|
|
22
28
|
|
|
23
29
|
@pytest.fixture
|
|
24
30
|
def client() -> TestClient:
|
|
@@ -37,11 +43,11 @@ def test_hello_world_endpoint(client: TestClient) -> None:
|
|
|
37
43
|
"""Test that the hello-world endpoint returns the expected message."""
|
|
38
44
|
response = client.get(HELLO_WORLD_PATH_V1)
|
|
39
45
|
assert response.status_code == 200
|
|
40
|
-
assert response.json()["message"].startswith(
|
|
46
|
+
assert response.json()["message"].startswith(HELLO_WORLD)
|
|
41
47
|
|
|
42
48
|
response = client.get(HELLO_WORLD_PATH_V2)
|
|
43
49
|
assert response.status_code == 200
|
|
44
|
-
assert response.json()["message"].startswith(
|
|
50
|
+
assert response.json()["message"].startswith(HELLO_WORLD)
|
|
45
51
|
|
|
46
52
|
|
|
47
53
|
def test_echo_endpoint_valid_input(client: TestClient) -> None:
|
|
@@ -79,22 +85,22 @@ def test_health_endpoint(client: TestClient) -> None:
|
|
|
79
85
|
"""Test that the health endpoint returns UP status."""
|
|
80
86
|
response = client.get(HEALTH_PATH_V1)
|
|
81
87
|
assert response.status_code == 200
|
|
82
|
-
assert response.json()["status"] ==
|
|
88
|
+
assert response.json()["status"] == SERVICE_UP
|
|
83
89
|
assert response.json()["reason"] is None
|
|
84
90
|
|
|
85
91
|
response = client.get(HEALTH_PATH_V2)
|
|
86
92
|
assert response.status_code == 200
|
|
87
|
-
assert response.json()["status"] ==
|
|
93
|
+
assert response.json()["status"] == SERVICE_UP
|
|
88
94
|
assert response.json()["reason"] is None
|
|
89
95
|
|
|
90
96
|
response = client.get(HEALTHZ_PATH_V1)
|
|
91
97
|
assert response.status_code == 200
|
|
92
|
-
assert response.json()["status"] ==
|
|
98
|
+
assert response.json()["status"] == SERVICE_UP
|
|
93
99
|
assert response.json()["reason"] is None
|
|
94
100
|
|
|
95
101
|
response = client.get(HEALTHZ_PATH_V2)
|
|
96
102
|
assert response.status_code == 200
|
|
97
|
-
assert response.json()["status"] ==
|
|
103
|
+
assert response.json()["status"] == SERVICE_UP
|
|
98
104
|
assert response.json()["reason"] is None
|
|
99
105
|
|
|
100
106
|
|
|
@@ -107,20 +113,20 @@ def test_health_endpoint_down(mock_service, client: TestClient) -> None:
|
|
|
107
113
|
|
|
108
114
|
response = client.get(HEALTH_PATH_V1)
|
|
109
115
|
assert response.status_code == 500
|
|
110
|
-
assert response.json()["status"] ==
|
|
111
|
-
assert response.json()["reason"] ==
|
|
116
|
+
assert response.json()["status"] == SERVICE_DOWN
|
|
117
|
+
assert response.json()["reason"] == SERVICE_IS_UNHEALTHY
|
|
112
118
|
|
|
113
119
|
response = client.get(HEALTH_PATH_V2)
|
|
114
120
|
assert response.status_code == 500
|
|
115
|
-
assert response.json()["status"] ==
|
|
116
|
-
assert response.json()["reason"] ==
|
|
121
|
+
assert response.json()["status"] == SERVICE_DOWN
|
|
122
|
+
assert response.json()["reason"] == SERVICE_IS_UNHEALTHY
|
|
117
123
|
|
|
118
124
|
response = client.get(HEALTHZ_PATH_V1)
|
|
119
125
|
assert response.status_code == 500
|
|
120
|
-
assert response.json()["status"] ==
|
|
121
|
-
assert response.json()["reason"] ==
|
|
126
|
+
assert response.json()["status"] == SERVICE_DOWN
|
|
127
|
+
assert response.json()["reason"] == SERVICE_IS_UNHEALTHY
|
|
122
128
|
|
|
123
129
|
response = client.get(HEALTHZ_PATH_V2)
|
|
124
130
|
assert response.status_code == 500
|
|
125
|
-
assert response.json()["status"] ==
|
|
126
|
-
assert response.json()["reason"] ==
|
|
131
|
+
assert response.json()["status"] == SERVICE_DOWN
|
|
132
|
+
assert response.json()["reason"] == SERVICE_IS_UNHEALTHY
|
|
@@ -19,6 +19,12 @@ HEALTH_PATH_V2 = "/api/v2/health"
|
|
|
19
19
|
HEALTHZ_PATH_V1 = "/api/v1/healthz"
|
|
20
20
|
HEALTHZ_PATH_V2 = "/api/v2/healthz"
|
|
21
21
|
|
|
22
|
+
HELLO_WORLD = "Hello, world!"
|
|
23
|
+
|
|
24
|
+
SERVICE_UP = "UP"
|
|
25
|
+
SERVICE_DOWN = "DOWN"
|
|
26
|
+
SERVICE_IS_UNHEALTHY = "Service is unhealthy"
|
|
27
|
+
|
|
22
28
|
|
|
23
29
|
@pytest.fixture
|
|
24
30
|
def client() -> TestClient:
|
|
@@ -37,11 +43,11 @@ def test_hello_world_endpoint(client: TestClient) -> None:
|
|
|
37
43
|
"""Test that the hello-world endpoint returns the expected message."""
|
|
38
44
|
response = client.get(HELLO_WORLD_PATH_V1)
|
|
39
45
|
assert response.status_code == 200
|
|
40
|
-
assert response.json()["message"].startswith(
|
|
46
|
+
assert response.json()["message"].startswith(HELLO_WORLD)
|
|
41
47
|
|
|
42
48
|
response = client.get(HELLO_WORLD_PATH_V2)
|
|
43
49
|
assert response.status_code == 200
|
|
44
|
-
assert response.json()["message"].startswith(
|
|
50
|
+
assert response.json()["message"].startswith(HELLO_WORLD)
|
|
45
51
|
|
|
46
52
|
|
|
47
53
|
def test_echo_endpoint_valid_input(client: TestClient) -> None:
|
|
@@ -79,22 +85,22 @@ def test_health_endpoint(client: TestClient) -> None:
|
|
|
79
85
|
"""Test that the health endpoint returns UP status."""
|
|
80
86
|
response = client.get(HEALTH_PATH_V1)
|
|
81
87
|
assert response.status_code == 200
|
|
82
|
-
assert response.json()["status"] ==
|
|
88
|
+
assert response.json()["status"] == SERVICE_UP
|
|
83
89
|
assert response.json()["reason"] is None
|
|
84
90
|
|
|
85
91
|
response = client.get(HEALTH_PATH_V2)
|
|
86
92
|
assert response.status_code == 200
|
|
87
|
-
assert response.json()["status"] ==
|
|
93
|
+
assert response.json()["status"] == SERVICE_UP
|
|
88
94
|
assert response.json()["reason"] is None
|
|
89
95
|
|
|
90
96
|
response = client.get(HEALTHZ_PATH_V1)
|
|
91
97
|
assert response.status_code == 200
|
|
92
|
-
assert response.json()["status"] ==
|
|
98
|
+
assert response.json()["status"] == SERVICE_UP
|
|
93
99
|
assert response.json()["reason"] is None
|
|
94
100
|
|
|
95
101
|
response = client.get(HEALTHZ_PATH_V2)
|
|
96
102
|
assert response.status_code == 200
|
|
97
|
-
assert response.json()["status"] ==
|
|
103
|
+
assert response.json()["status"] == SERVICE_UP
|
|
98
104
|
assert response.json()["reason"] is None
|
|
99
105
|
|
|
100
106
|
|
|
@@ -107,20 +113,20 @@ def test_health_endpoint_down(mock_service, client: TestClient) -> None:
|
|
|
107
113
|
|
|
108
114
|
response = client.get(HEALTH_PATH_V1)
|
|
109
115
|
assert response.status_code == 500
|
|
110
|
-
assert response.json()["status"] ==
|
|
111
|
-
assert response.json()["reason"] ==
|
|
116
|
+
assert response.json()["status"] == SERVICE_DOWN
|
|
117
|
+
assert response.json()["reason"] == SERVICE_IS_UNHEALTHY
|
|
112
118
|
|
|
113
119
|
response = client.get(HEALTH_PATH_V2)
|
|
114
120
|
assert response.status_code == 500
|
|
115
|
-
assert response.json()["status"] ==
|
|
116
|
-
assert response.json()["reason"] ==
|
|
121
|
+
assert response.json()["status"] == SERVICE_DOWN
|
|
122
|
+
assert response.json()["reason"] == SERVICE_IS_UNHEALTHY
|
|
117
123
|
|
|
118
124
|
response = client.get(HEALTHZ_PATH_V1)
|
|
119
125
|
assert response.status_code == 500
|
|
120
|
-
assert response.json()["status"] ==
|
|
121
|
-
assert response.json()["reason"] ==
|
|
126
|
+
assert response.json()["status"] == SERVICE_DOWN
|
|
127
|
+
assert response.json()["reason"] == SERVICE_IS_UNHEALTHY
|
|
122
128
|
|
|
123
129
|
response = client.get(HEALTHZ_PATH_V2)
|
|
124
130
|
assert response.status_code == 500
|
|
125
|
-
assert response.json()["status"] ==
|
|
126
|
-
assert response.json()["reason"] ==
|
|
131
|
+
assert response.json()["status"] == SERVICE_DOWN
|
|
132
|
+
assert response.json()["reason"] == SERVICE_IS_UNHEALTHY
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
## [0.6.1](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/compare/v0.6.0..v0.6.1) - 2025-03-17
|
|
2
|
-
|
|
3
|
-
### 🐛 Bug Fixes
|
|
4
|
-
|
|
5
|
-
- *(sonarqube)* Path of coverage.xml - ([3679537](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/commit/367953781b8b4592124dc91cd3829fc6e380810e))
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
oe_python_template-0.6.1/VERSION
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
0.6.1
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{oe_python_template-0.6.1 → oe_python_template-0.6.4}/git-cliff-2.7.0/completions/_git-cliff
RENAMED
|
File without changes
|
{oe_python_template-0.6.1 → oe_python_template-0.6.4}/git-cliff-2.7.0/completions/_git-cliff.ps1
RENAMED
|
File without changes
|
{oe_python_template-0.6.1 → oe_python_template-0.6.4}/git-cliff-2.7.0/completions/git-cliff.bash
RENAMED
|
File without changes
|
{oe_python_template-0.6.1 → oe_python_template-0.6.4}/git-cliff-2.7.0/completions/git-cliff.elv
RENAMED
|
File without changes
|
{oe_python_template-0.6.1 → oe_python_template-0.6.4}/git-cliff-2.7.0/completions/git-cliff.fish
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/.devcontainer/Dockerfile.jinja
RENAMED
|
File without changes
|
{oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/.devcontainer/devcontainer.json.jinja
RENAMED
|
File without changes
|
{oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/.devcontainer/onCreateCommand.jinja
RENAMED
|
File without changes
|
{oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/.devcontainer/postAttachCommand.jinja
RENAMED
|
File without changes
|
{oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/.devcontainer/postCreateCommand.jinja
RENAMED
|
File without changes
|
|
File without changes
|
{oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/.github/copilot-instructions.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/.pre-commit-config.yaml.jinja
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/docs/partials/README_footer.md.jinja
RENAMED
|
File without changes
|
{oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/docs/partials/README_header.md.jinja
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/docs/source/code-style.rst.jinja
RENAMED
|
File without changes
|
|
File without changes
|
{oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/docs/source/contributing.rst.jinja
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/docs/source/reference.rst.jinja
RENAMED
|
File without changes
|
{oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/docs/source/release-notes.rst.jinja
RENAMED
|
File without changes
|
{oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/docs/source/security.rst.jinja
RENAMED
|
File without changes
|
|
File without changes
|
{oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/examples/notebook.ipynb.jinja
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/sonar-project.properties.jinja
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{oe_python_template-0.6.1 → oe_python_template-0.6.4}/template/{{_copier_conf.answers_file}}.jinja
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|