oe-python-template 0.6.2__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.2 → oe_python_template-0.6.4}/.copier-answers.yml +1 -1
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/CHANGELOG.md +12 -1
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/PKG-INFO +2 -2
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/README.md +1 -1
- 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.2 → oe_python_template-0.6.4}/docs/partials/README_main.md +1 -1
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/docs/source/_static/openapi_v1.yaml +32 -16
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/docs/source/_static/openapi_v2.yaml +32 -16
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/docs/source/conf.py +1 -1
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/noxfile.py +1 -1
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/pyproject.toml +5 -5
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/sonar-project.properties +1 -1
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/src/oe_python_template/api.py +12 -9
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/template/docs/partials/README_main.md.jinja +1 -1
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/template/noxfile.py.jinja +1 -1
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/template/src/{{ project_name_snake_case }}/api.py.jinja +12 -10
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/template/tests/api_test.py.jinja +20 -14
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/tests/api_test.py +20 -14
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/uv.lock +1 -1
- oe_python_template-0.6.2/RELEASE_NOTES.md +0 -8
- oe_python_template-0.6.2/VERSION +0 -1
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/.act-env-public +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/.devcontainer/Dockerfile +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/.devcontainer/devcontainer.json +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/.devcontainer/onCreateCommand +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/.devcontainer/postAttachCommand +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/.devcontainer/postCreateCommand +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/.env.example +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/.github/copilot-instructions.md +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/.github/dependabot.yml +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/.github/prompts/.keep +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/.github/workflows/codeql.yml +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/.github/workflows/docker-image-build-publish.yml +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/.github/workflows/package-build-publish-release.yml +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/.github/workflows/test-and-report.yml +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/.gitignore +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/.pre-commit-config.yaml +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/.python-version +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/.readthedocs.yml +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/.secrets.baseline +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/.vscode/extensions.json +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/.vscode/settings.json +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/CODEOWNERS +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/CODE_STYLE.md +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/CONTRIBUTING.md +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/Dockerfile +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/LICENSE +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/SECURITY.md +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/SERVICE_CONNECTIONS.md +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/bin/git-cliff +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/codecov.yml +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/compose.yaml +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/copier.yml +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/docs/Makefile +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/docs/make.bat +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/docs/partials/README_footer.md +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/docs/partials/README_header.md +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/docs/source/_static/.keep +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/docs/source/_static/openapi_v1.json +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/docs/source/_static/openapi_v2.json +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/docs/source/api_v1.rst +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/docs/source/api_v2.rst +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/docs/source/code-style.rst +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/docs/source/contributing.rst +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/docs/source/index.rst +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/docs/source/latexmkrc +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/docs/source/main.rst +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/docs/source/reference.rst +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/docs/source/release-notes.rst +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/docs/source/security.rst +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/examples/__init__.py +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/examples/notebook.ipynb +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/examples/notebook.py +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/examples/script.py +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/examples/streamlit.py +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/git-cliff-2.7.0/CHANGELOG.md +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/git-cliff-2.7.0/LICENSE-APACHE +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/git-cliff-2.7.0/LICENSE-MIT +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/git-cliff-2.7.0/README.md +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/git-cliff-2.7.0/completions/_git-cliff +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/git-cliff-2.7.0/completions/_git-cliff.ps1 +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/git-cliff-2.7.0/completions/git-cliff.bash +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/git-cliff-2.7.0/completions/git-cliff.elv +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/git-cliff-2.7.0/completions/git-cliff.fish +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/git-cliff-2.7.0/git-cliff-completions +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/git-cliff-2.7.0/git-cliff-mangen +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/git-cliff-2.7.0/man/git-cliff.1 +0 -0
- {oe_python_template-0.6.2 → 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.2 → oe_python_template-0.6.4}/github-action-run +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/logo.png +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/n +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/renovate.json +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/reports/.keep +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/src/oe_python_template/__init__.py +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/src/oe_python_template/cli.py +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/src/oe_python_template/constants.py +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/src/oe_python_template/service.py +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/template/.act-env-public.jinja +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/template/.devcontainer/Dockerfile.jinja +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/template/.devcontainer/devcontainer.json.jinja +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/template/.devcontainer/onCreateCommand.jinja +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/template/.devcontainer/postAttachCommand.jinja +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/template/.devcontainer/postCreateCommand.jinja +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/template/.env.example.jinja +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/template/.github/copilot-instructions.md +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/template/.github/dependabot.yml +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/template/.github/workflows/codeql.yml +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/template/.github/workflows/docker-image-build-publish.yml.jinja +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/template/.github/workflows/package-build-publish-release.yml.jinja +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/template/.github/workflows/test-and-report.yml.jinja +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/template/.gitignore.jinja +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/template/.pre-commit-config.yaml.jinja +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/template/.python-version +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/template/.readthedocs.yml.jinja +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/template/.vscode/extensions.json +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/template/.vscode/settings.json.jinja +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/template/CHANGELOG.md +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/template/CODEOWNERS.jinja +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/template/CODE_STYLE.md.jinja +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/template/CONTRIBUTING.md.jinja +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/template/Dockerfile.jinja +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/template/LICENSE.jinja +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/template/README.md +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/template/SECURITY.md.jinja +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/template/SERVICE_CONNECTIONS.md.jinja +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/template/VERSION +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/template/codecov.yml.jinja +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/template/compose.yaml.jinja +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/template/docs/Makefile.jinja +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/template/docs/make.bat.jinja +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/template/docs/partials/README_footer.md.jinja +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/template/docs/partials/README_header.md.jinja +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/template/docs/source/_static/.keep +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/template/docs/source/api_v1.rst.jinja +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/template/docs/source/api_v2.rst.jinja +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/template/docs/source/code-style.rst.jinja +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/template/docs/source/conf.py.jinja +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/template/docs/source/contributing.rst.jinja +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/template/docs/source/index.rst.jinja +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/template/docs/source/main.rst.jinja +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/template/docs/source/reference.rst.jinja +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/template/docs/source/release-notes.rst.jinja +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/template/docs/source/security.rst.jinja +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/template/examples/__init__.py.jinja +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/template/examples/notebook.ipynb.jinja +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/template/examples/notebook.py.jinja +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/template/examples/script.py.jinja +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/template/examples/streamlit.py.jinja +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/template/github-action-run.jinja +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/template/logo.png +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/template/n.jinja +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/template/pyproject.toml.jinja +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/template/renovate.json +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/template/reports/.keep +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/template/sonar-project.properties.jinja +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/template/src/{{ project_name_snake_case }}/__init__.py.jinja +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/template/src/{{ project_name_snake_case }}/cli.py.jinja +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/template/src/{{ project_name_snake_case }}/constants.py.jinja +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/template/src/{{ project_name_snake_case }}/service.py.jinja +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/template/tests/__init__.py.jinja +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/template/tests/cli_test.py.jinja +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/template/tests/fixtures/.keep +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/template/{{_copier_conf.answers_file}}.jinja +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/tests/__init__.py +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/tests/cli_test.py +0 -0
- {oe_python_template-0.6.2 → oe_python_template-0.6.4}/tests/fixtures/.keep +0 -0
|
@@ -1,6 +1,17 @@
|
|
|
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
|
|
4
15
|
|
|
5
16
|
### 📚 Documentation
|
|
6
17
|
|
|
@@ -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,7 +130,7 @@ 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 . --trust
|
|
133
|
+
copier copy --trust gh:helmut-hoffer-von-ankershoffen/oe-python-template . --trust
|
|
134
134
|
```
|
|
135
135
|
|
|
136
136
|
**Step 4**: Perform initial commit and push
|
|
@@ -69,7 +69,7 @@ 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 . --trust
|
|
72
|
+
copier copy --trust gh:helmut-hoffer-von-ankershoffen/oe-python-template . --trust
|
|
73
73
|
```
|
|
74
74
|
|
|
75
75
|
**Step 4**: Perform initial commit and push
|
|
@@ -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,7 +27,7 @@ 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 . --trust
|
|
30
|
+
copier copy --trust gh:helmut-hoffer-von-ankershoffen/oe-python-template . --trust
|
|
31
31
|
```
|
|
32
32
|
|
|
33
33
|
**Step 4**: Perform initial commit and push
|
|
@@ -104,9 +104,12 @@ openapi: 3.1.0
|
|
|
104
104
|
paths:
|
|
105
105
|
/echo:
|
|
106
106
|
post:
|
|
107
|
-
description: "Echo back the provided text.\n\nArgs:\n request
|
|
108
|
-
|
|
109
|
-
\
|
|
107
|
+
description: "Echo back the provided text.\n\nArgs:\n request
|
|
108
|
+
(EchoRequest):\
|
|
109
|
+
\ The request containing the text to echo back.\n\nReturns:\n
|
|
110
|
+
EchoResponse:\
|
|
111
|
+
\ A response containing the echoed text.\n\nRaises:\n 422
|
|
112
|
+
Unprocessable\
|
|
110
113
|
\ Entity: If text is not provided or empty."
|
|
111
114
|
operationId: echo_echo_post
|
|
112
115
|
requestBody:
|
|
@@ -133,12 +136,18 @@ paths:
|
|
|
133
136
|
- Basics
|
|
134
137
|
/health:
|
|
135
138
|
get:
|
|
136
|
-
description: "Check the health of the service.\n\nThis endpoint returns
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
139
|
+
description: "Check the health of the service.\n\nThis endpoint returns
|
|
140
|
+
the\
|
|
141
|
+
\ health status of the service.\nThe health status can be either UP or
|
|
142
|
+
DOWN.\n\
|
|
143
|
+
If the service is healthy, the status will be UP.\nIf the service is
|
|
144
|
+
unhealthy,\
|
|
145
|
+
\ the status will be DOWN and a reason will be provided.\nThe response
|
|
146
|
+
will\
|
|
147
|
+
\ have a 200 OK status code if the service is healthy,\nand a 500
|
|
148
|
+
Internal\
|
|
149
|
+
\ Server Error status code if the service is unhealthy.\n\nReturns:\n
|
|
150
|
+
Health:\
|
|
142
151
|
\ The health status of the service."
|
|
143
152
|
operationId: health_health_get
|
|
144
153
|
responses:
|
|
@@ -153,12 +162,18 @@ paths:
|
|
|
153
162
|
- Observability
|
|
154
163
|
/healthz:
|
|
155
164
|
get:
|
|
156
|
-
description: "Check the health of the service.\n\nThis endpoint returns
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
165
|
+
description: "Check the health of the service.\n\nThis endpoint returns
|
|
166
|
+
the\
|
|
167
|
+
\ health status of the service.\nThe health status can be either UP or
|
|
168
|
+
DOWN.\n\
|
|
169
|
+
If the service is healthy, the status will be UP.\nIf the service is
|
|
170
|
+
unhealthy,\
|
|
171
|
+
\ the status will be DOWN and a reason will be provided.\nThe response
|
|
172
|
+
will\
|
|
173
|
+
\ have a 200 OK status code if the service is healthy,\nand a 500
|
|
174
|
+
Internal\
|
|
175
|
+
\ Server Error status code if the service is unhealthy.\n\nReturns:\n
|
|
176
|
+
Health:\
|
|
162
177
|
\ The health status of the service."
|
|
163
178
|
operationId: health_healthz_get
|
|
164
179
|
responses:
|
|
@@ -173,7 +188,8 @@ paths:
|
|
|
173
188
|
- Observability
|
|
174
189
|
/hello-world:
|
|
175
190
|
get:
|
|
176
|
-
description: "Return a hello world message.\n\nReturns:\n
|
|
191
|
+
description: "Return a hello world message.\n\nReturns:\n
|
|
192
|
+
HelloWorldResponse:\
|
|
177
193
|
\ A response containing the hello world message."
|
|
178
194
|
operationId: hello_world_hello_world_get
|
|
179
195
|
responses:
|
|
@@ -104,9 +104,12 @@ openapi: 3.1.0
|
|
|
104
104
|
paths:
|
|
105
105
|
/echo:
|
|
106
106
|
post:
|
|
107
|
-
description: "Echo back the provided utterance.\n\nArgs:\n request
|
|
108
|
-
|
|
109
|
-
\
|
|
107
|
+
description: "Echo back the provided utterance.\n\nArgs:\n request
|
|
108
|
+
(Utterance):\
|
|
109
|
+
\ The request containing the utterance to echo back.\n\nReturns:\n
|
|
110
|
+
EchoResponse:\
|
|
111
|
+
\ A response containing the echoed utterance.\n\nRaises:\n 422
|
|
112
|
+
Unprocessable\
|
|
110
113
|
\ Entity: If utterance is not provided or empty."
|
|
111
114
|
operationId: echo_v2_echo_post
|
|
112
115
|
requestBody:
|
|
@@ -133,12 +136,18 @@ paths:
|
|
|
133
136
|
- Basics
|
|
134
137
|
/health:
|
|
135
138
|
get:
|
|
136
|
-
description: "Check the health of the service.\n\nThis endpoint returns
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
139
|
+
description: "Check the health of the service.\n\nThis endpoint returns
|
|
140
|
+
the\
|
|
141
|
+
\ health status of the service.\nThe health status can be either UP or
|
|
142
|
+
DOWN.\n\
|
|
143
|
+
If the service is healthy, the status will be UP.\nIf the service is
|
|
144
|
+
unhealthy,\
|
|
145
|
+
\ the status will be DOWN and a reason will be provided.\nThe response
|
|
146
|
+
will\
|
|
147
|
+
\ have a 200 OK status code if the service is healthy,\nand a 500
|
|
148
|
+
Internal\
|
|
149
|
+
\ Server Error status code if the service is unhealthy.\n\nReturns:\n
|
|
150
|
+
Health:\
|
|
142
151
|
\ The health status of the service."
|
|
143
152
|
operationId: health_health_get
|
|
144
153
|
responses:
|
|
@@ -153,12 +162,18 @@ paths:
|
|
|
153
162
|
- Observability
|
|
154
163
|
/healthz:
|
|
155
164
|
get:
|
|
156
|
-
description: "Check the health of the service.\n\nThis endpoint returns
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
165
|
+
description: "Check the health of the service.\n\nThis endpoint returns
|
|
166
|
+
the\
|
|
167
|
+
\ health status of the service.\nThe health status can be either UP or
|
|
168
|
+
DOWN.\n\
|
|
169
|
+
If the service is healthy, the status will be UP.\nIf the service is
|
|
170
|
+
unhealthy,\
|
|
171
|
+
\ the status will be DOWN and a reason will be provided.\nThe response
|
|
172
|
+
will\
|
|
173
|
+
\ have a 200 OK status code if the service is healthy,\nand a 500
|
|
174
|
+
Internal\
|
|
175
|
+
\ Server Error status code if the service is unhealthy.\n\nReturns:\n
|
|
176
|
+
Health:\
|
|
162
177
|
\ The health status of the service."
|
|
163
178
|
operationId: health_healthz_get
|
|
164
179
|
responses:
|
|
@@ -173,7 +188,8 @@ paths:
|
|
|
173
188
|
- Observability
|
|
174
189
|
/hello-world:
|
|
175
190
|
get:
|
|
176
|
-
description: "Return a hello world message.\n\nReturns:\n
|
|
191
|
+
description: "Return a hello world message.\n\nReturns:\n
|
|
192
|
+
HelloWorldResponse:\
|
|
177
193
|
\ A response containing the hello world message."
|
|
178
194
|
operationId: hello_world_hello_world_get
|
|
179
195
|
responses:
|
|
@@ -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.2 → oe_python_template-0.6.4}/template/docs/partials/README_main.md.jinja
RENAMED
|
@@ -27,7 +27,7 @@ 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 . --trust
|
|
30
|
+
copier copy --trust gh:helmut-hoffer-von-ankershoffen/oe-python-template . --trust
|
|
31
31
|
```
|
|
32
32
|
|
|
33
33
|
**Step 4**: Perform initial commit and push
|
|
@@ -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.2](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/compare/v0.6.1..v0.6.2) - 2025-03-17
|
|
2
|
-
|
|
3
|
-
### 📚 Documentation
|
|
4
|
-
|
|
5
|
-
- *(README)* Add --trust, and simplify by removing manual setup step - ([c4f5ec5](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/commit/c4f5ec569007f852191029a16b9b6743ef0a5cee))
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
oe_python_template-0.6.2/VERSION
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
0.6.2
|
|
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
|