oe-python-template 0.6.17__tar.gz → 0.6.18__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.17 → oe_python_template-0.6.18}/.copier-answers.yml +1 -1
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/CHANGELOG.md +17 -1
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/PKG-INFO +1 -1
- oe_python_template-0.6.18/RELEASE_NOTES.md +14 -0
- oe_python_template-0.6.18/VERSION +1 -0
- oe_python_template-0.6.18/docs/source/_static/openapi_v1.yaml +204 -0
- oe_python_template-0.6.18/docs/source/_static/openapi_v2.json +62 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/docs/source/_static/openapi_v2.yaml +32 -16
- oe_python_template-0.6.18/docs/source/api_v1.rst +9 -0
- oe_python_template-0.6.18/docs/source/api_v2.rst +9 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/docs/source/conf.py +1 -1
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/pyproject.toml +2 -2
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/sonar-project.properties +1 -1
- oe_python_template-0.6.18/template/docs/source/api_v1.rst.jinja +9 -0
- oe_python_template-0.6.18/template/docs/source/api_v2.rst.jinja +9 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/uv.lock +1 -1
- oe_python_template-0.6.17/RELEASE_NOTES.md +0 -8
- oe_python_template-0.6.17/VERSION +0 -1
- oe_python_template-0.6.17/docs/source/_static/openapi_v1.yaml +0 -36
- oe_python_template-0.6.17/docs/source/_static/openapi_v2.json +0 -262
- oe_python_template-0.6.17/docs/source/api_v1.rst +0 -15
- oe_python_template-0.6.17/docs/source/api_v2.rst +0 -15
- oe_python_template-0.6.17/template/docs/source/api_v1.rst.jinja +0 -15
- oe_python_template-0.6.17/template/docs/source/api_v2.rst.jinja +0 -15
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/.act-env-public +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/.devcontainer/Dockerfile +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/.devcontainer/devcontainer.json +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/.devcontainer/onCreateCommand +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/.devcontainer/postAttachCommand +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/.devcontainer/postCreateCommand +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/.env.example +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/.github/copilot-instructions.md +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/.github/dependabot.yml +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/.github/prompts/.keep +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/.github/workflows/codeql.yml +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/.github/workflows/docker-image-build-publish.yml +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/.github/workflows/package-build-publish-release.yml +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/.github/workflows/test-and-report.yml +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/.gitignore +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/.pre-commit-config.yaml +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/.python-version +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/.readthedocs.yml +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/.secrets.baseline +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/.vscode/extensions.json +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/.vscode/settings.json +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/CODEOWNERS +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/CODE_STYLE.md +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/CONTRIBUTING.md +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/Dockerfile +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/LICENSE +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/README.md +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/SECURITY.md +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/SERVICE_CONNECTIONS.md +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/bin/git-cliff +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/codecov.yml +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/compose.yaml +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/copier.yml +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/docs/Makefile +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/docs/make.bat +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/docs/partials/README_footer.md +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/docs/partials/README_header.md +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/docs/partials/README_main.md +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/docs/source/_static/.keep +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/docs/source/_static/openapi_v1.json +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/docs/source/code-style.rst +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/docs/source/contributing.rst +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/docs/source/index.rst +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/docs/source/latexmkrc +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/docs/source/main.rst +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/docs/source/reference.rst +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/docs/source/release-notes.rst +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/docs/source/security.rst +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/examples/__init__.py +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/examples/notebook.ipynb +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/examples/notebook.py +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/examples/script.py +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/examples/streamlit.py +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/git-cliff-2.7.0/CHANGELOG.md +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/git-cliff-2.7.0/LICENSE-APACHE +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/git-cliff-2.7.0/LICENSE-MIT +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/git-cliff-2.7.0/README.md +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/git-cliff-2.7.0/completions/_git-cliff +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/git-cliff-2.7.0/completions/_git-cliff.ps1 +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/git-cliff-2.7.0/completions/git-cliff.bash +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/git-cliff-2.7.0/completions/git-cliff.elv +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/git-cliff-2.7.0/completions/git-cliff.fish +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/git-cliff-2.7.0/git-cliff-completions +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/git-cliff-2.7.0/git-cliff-mangen +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/git-cliff-2.7.0/man/git-cliff.1 +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/git-cliff-2.7.0-x86_64-unknown-linux-gnu.tar.gz +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/github-action-run +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/logo.png +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/n +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/noxfile.py +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/renovate.json +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/reports/.keep +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/src/oe_python_template/__init__.py +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/src/oe_python_template/api.py +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/src/oe_python_template/cli.py +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/src/oe_python_template/constants.py +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/src/oe_python_template/service.py +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/template/.act-env-public.jinja +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/template/.devcontainer/Dockerfile.jinja +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/template/.devcontainer/devcontainer.json.jinja +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/template/.devcontainer/onCreateCommand.jinja +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/template/.devcontainer/postAttachCommand.jinja +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/template/.devcontainer/postCreateCommand.jinja +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/template/.env.example.jinja +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/template/.github/copilot-instructions.md +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/template/.github/dependabot.yml +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/template/.github/workflows/codeql.yml +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/template/.github/workflows/docker-image-build-publish.yml.jinja +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/template/.github/workflows/package-build-publish-release.yml.jinja +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/template/.github/workflows/test-and-report.yml.jinja +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/template/.gitignore.jinja +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/template/.pre-commit-config.yaml.jinja +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/template/.python-version +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/template/.readthedocs.yml.jinja +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/template/.vscode/extensions.json +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/template/.vscode/settings.json.jinja +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/template/CHANGELOG.md +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/template/CODEOWNERS.jinja +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/template/CODE_STYLE.md.jinja +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/template/CONTRIBUTING.md.jinja +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/template/Dockerfile.jinja +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/template/LICENSE.jinja +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/template/README.md +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/template/SECURITY.md.jinja +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/template/SERVICE_CONNECTIONS.md.jinja +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/template/VERSION +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/template/codecov.yml.jinja +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/template/compose.yaml.jinja +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/template/docs/Makefile.jinja +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/template/docs/make.bat.jinja +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/template/docs/partials/README_footer.md.jinja +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/template/docs/partials/README_header.md.jinja +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/template/docs/partials/README_main.md.jinja +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/template/docs/source/_static/.keep +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/template/docs/source/code-style.rst.jinja +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/template/docs/source/conf.py.jinja +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/template/docs/source/contributing.rst.jinja +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/template/docs/source/index.rst.jinja +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/template/docs/source/main.rst.jinja +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/template/docs/source/reference.rst.jinja +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/template/docs/source/release-notes.rst.jinja +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/template/docs/source/security.rst.jinja +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/template/examples/__init__.py.jinja +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/template/examples/notebook.ipynb.jinja +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/template/examples/notebook.py.jinja +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/template/examples/script.py.jinja +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/template/examples/streamlit.py.jinja +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/template/github-action-run.jinja +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/template/logo.png +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/template/n.jinja +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/template/noxfile.py.jinja +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/template/pyproject.toml.jinja +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/template/renovate.json +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/template/reports/.keep +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/template/sonar-project.properties.jinja +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/template/src/{{ project_name_snake_case }}/__init__.py.jinja +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/template/src/{{ project_name_snake_case }}/api.py.jinja +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/template/src/{{ project_name_snake_case }}/cli.py.jinja +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/template/src/{{ project_name_snake_case }}/constants.py.jinja +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/template/src/{{ project_name_snake_case }}/service.py.jinja +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/template/tests/__init__.py.jinja +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/template/tests/api_test.py.jinja +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/template/tests/cli_test.py.jinja +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/template/tests/fixtures/.keep +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/template/{{_copier_conf.answers_file}}.jinja +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/tests/__init__.py +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/tests/api_test.py +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/tests/cli_test.py +0 -0
- {oe_python_template-0.6.17 → oe_python_template-0.6.18}/tests/fixtures/.keep +0 -0
|
@@ -1,6 +1,22 @@
|
|
|
1
1
|
[🧠 OE Python Template](https://oe-python-template.readthedocs.io/en/latest/)
|
|
2
2
|
|
|
3
|
-
## [0.6.
|
|
3
|
+
## [0.6.18](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/compare/v0.6.17..0.6.18) - 2025-03-18
|
|
4
|
+
|
|
5
|
+
### 📚 Documentation
|
|
6
|
+
|
|
7
|
+
- *(api)* Pdf - ([ecd7dda](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/commit/ecd7dda9fedc464976b5b2f8afa56cf0a35c645f))
|
|
8
|
+
|
|
9
|
+
### ⚙️ Miscellaneous Tasks
|
|
10
|
+
|
|
11
|
+
- *(rtd)* Debug - ([80703d7](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/commit/80703d734a8cd77e35aad6aec14bdefb9d61ed51))
|
|
12
|
+
- Debug rtd - ([bc760ac](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/commit/bc760aca603950b8dd1cf5c77241b2f8ccc091d2))
|
|
13
|
+
- Debug rtd pdf link - ([192df7f](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/commit/192df7f2552180eb721fd21b32f9e074c0f35073))
|
|
14
|
+
|
|
15
|
+
## New Contributors ❤️
|
|
16
|
+
|
|
17
|
+
* @helmut-hoffer-von-ankershoffen made their first contribution
|
|
18
|
+
|
|
19
|
+
## [0.6.17](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/compare/v0.6.16..v0.6.17) - 2025-03-18
|
|
4
20
|
|
|
5
21
|
### ⛰️ Features
|
|
6
22
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: oe-python-template
|
|
3
|
-
Version: 0.6.
|
|
3
|
+
Version: 0.6.18
|
|
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/
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
## [0.6.18](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/compare/v0.6.17..v0.6.18) - 2025-03-18
|
|
2
|
+
|
|
3
|
+
### 📚 Documentation
|
|
4
|
+
|
|
5
|
+
- *(api)* Pdf - ([ecd7dda](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/commit/ecd7dda9fedc464976b5b2f8afa56cf0a35c645f))
|
|
6
|
+
|
|
7
|
+
### ⚙️ Miscellaneous Tasks
|
|
8
|
+
|
|
9
|
+
- *(rtd)* Debug - ([80703d7](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/commit/80703d734a8cd77e35aad6aec14bdefb9d61ed51))
|
|
10
|
+
- Debug rtd - ([bc760ac](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/commit/bc760aca603950b8dd1cf5c77241b2f8ccc091d2))
|
|
11
|
+
- Debug rtd pdf link - ([192df7f](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/commit/192df7f2552180eb721fd21b32f9e074c0f35073))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0.6.18
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
components:
|
|
2
|
+
schemas:
|
|
3
|
+
EchoRequest:
|
|
4
|
+
description: Request model for echo endpoint.
|
|
5
|
+
properties:
|
|
6
|
+
text:
|
|
7
|
+
description: The text to echo back
|
|
8
|
+
examples:
|
|
9
|
+
- Hello, world!
|
|
10
|
+
minLength: 1
|
|
11
|
+
title: Text
|
|
12
|
+
type: string
|
|
13
|
+
required:
|
|
14
|
+
- text
|
|
15
|
+
title: EchoRequest
|
|
16
|
+
type: object
|
|
17
|
+
EchoResponse:
|
|
18
|
+
description: Response model for echo endpoint.
|
|
19
|
+
properties:
|
|
20
|
+
message:
|
|
21
|
+
description: The message content
|
|
22
|
+
examples:
|
|
23
|
+
- Hello, world!
|
|
24
|
+
minLength: 1
|
|
25
|
+
title: Message
|
|
26
|
+
type: string
|
|
27
|
+
required:
|
|
28
|
+
- message
|
|
29
|
+
title: EchoResponse
|
|
30
|
+
type: object
|
|
31
|
+
HTTPValidationError:
|
|
32
|
+
properties:
|
|
33
|
+
detail:
|
|
34
|
+
items:
|
|
35
|
+
$ref: '#/components/schemas/ValidationError'
|
|
36
|
+
title: Detail
|
|
37
|
+
type: array
|
|
38
|
+
title: HTTPValidationError
|
|
39
|
+
type: object
|
|
40
|
+
Health:
|
|
41
|
+
description: Health status model.
|
|
42
|
+
properties:
|
|
43
|
+
reason:
|
|
44
|
+
anyOf:
|
|
45
|
+
- type: string
|
|
46
|
+
- type: 'null'
|
|
47
|
+
title: Reason
|
|
48
|
+
status:
|
|
49
|
+
$ref: '#/components/schemas/_HealthStatus'
|
|
50
|
+
required:
|
|
51
|
+
- status
|
|
52
|
+
title: Health
|
|
53
|
+
type: object
|
|
54
|
+
HelloWorldResponse:
|
|
55
|
+
description: Response model for hello-world endpoint.
|
|
56
|
+
properties:
|
|
57
|
+
message:
|
|
58
|
+
description: The hello world message
|
|
59
|
+
examples:
|
|
60
|
+
- Hello, world!
|
|
61
|
+
title: Message
|
|
62
|
+
type: string
|
|
63
|
+
required:
|
|
64
|
+
- message
|
|
65
|
+
title: HelloWorldResponse
|
|
66
|
+
type: object
|
|
67
|
+
ValidationError:
|
|
68
|
+
properties:
|
|
69
|
+
loc:
|
|
70
|
+
items:
|
|
71
|
+
anyOf:
|
|
72
|
+
- type: string
|
|
73
|
+
- type: integer
|
|
74
|
+
title: Location
|
|
75
|
+
type: array
|
|
76
|
+
msg:
|
|
77
|
+
title: Message
|
|
78
|
+
type: string
|
|
79
|
+
type:
|
|
80
|
+
title: Error Type
|
|
81
|
+
type: string
|
|
82
|
+
required:
|
|
83
|
+
- loc
|
|
84
|
+
- msg
|
|
85
|
+
- type
|
|
86
|
+
title: ValidationError
|
|
87
|
+
type: object
|
|
88
|
+
_HealthStatus:
|
|
89
|
+
description: Health status enumeration.
|
|
90
|
+
enum:
|
|
91
|
+
- UP
|
|
92
|
+
- DOWN
|
|
93
|
+
title: _HealthStatus
|
|
94
|
+
type: string
|
|
95
|
+
info:
|
|
96
|
+
contact:
|
|
97
|
+
email: helmuthva@gmail.com
|
|
98
|
+
name: Helmut Hoffer von Ankershoffen
|
|
99
|
+
url: https://github.com/helmut-hoffer-von-ankershoffen
|
|
100
|
+
termsOfService: https://oe-python-template.readthedocs.io/en/latest/
|
|
101
|
+
title: OE Python Template
|
|
102
|
+
version: 1.0.0
|
|
103
|
+
openapi: 3.1.0
|
|
104
|
+
paths:
|
|
105
|
+
/echo:
|
|
106
|
+
post:
|
|
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\
|
|
113
|
+
\ Entity: If text is not provided or empty."
|
|
114
|
+
operationId: echo_echo_post
|
|
115
|
+
requestBody:
|
|
116
|
+
content:
|
|
117
|
+
application/json:
|
|
118
|
+
schema:
|
|
119
|
+
$ref: '#/components/schemas/EchoRequest'
|
|
120
|
+
required: true
|
|
121
|
+
responses:
|
|
122
|
+
'200':
|
|
123
|
+
content:
|
|
124
|
+
application/json:
|
|
125
|
+
schema:
|
|
126
|
+
$ref: '#/components/schemas/EchoResponse'
|
|
127
|
+
description: Successful Response
|
|
128
|
+
'422':
|
|
129
|
+
content:
|
|
130
|
+
application/json:
|
|
131
|
+
schema:
|
|
132
|
+
$ref: '#/components/schemas/HTTPValidationError'
|
|
133
|
+
description: Validation Error
|
|
134
|
+
summary: Echo
|
|
135
|
+
tags:
|
|
136
|
+
- Basics
|
|
137
|
+
/health:
|
|
138
|
+
get:
|
|
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:\
|
|
151
|
+
\ The health status of the service."
|
|
152
|
+
operationId: health_health_get
|
|
153
|
+
responses:
|
|
154
|
+
'200':
|
|
155
|
+
content:
|
|
156
|
+
application/json:
|
|
157
|
+
schema:
|
|
158
|
+
$ref: '#/components/schemas/Health'
|
|
159
|
+
description: Successful Response
|
|
160
|
+
summary: Health
|
|
161
|
+
tags:
|
|
162
|
+
- Observability
|
|
163
|
+
/healthz:
|
|
164
|
+
get:
|
|
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:\
|
|
177
|
+
\ The health status of the service."
|
|
178
|
+
operationId: health_healthz_get
|
|
179
|
+
responses:
|
|
180
|
+
'200':
|
|
181
|
+
content:
|
|
182
|
+
application/json:
|
|
183
|
+
schema:
|
|
184
|
+
$ref: '#/components/schemas/Health'
|
|
185
|
+
description: Successful Response
|
|
186
|
+
summary: Health
|
|
187
|
+
tags:
|
|
188
|
+
- Observability
|
|
189
|
+
/hello-world:
|
|
190
|
+
get:
|
|
191
|
+
description: "Return a hello world message.\n\nReturns:\n
|
|
192
|
+
HelloWorldResponse:\
|
|
193
|
+
\ A response containing the hello world message."
|
|
194
|
+
operationId: hello_world_hello_world_get
|
|
195
|
+
responses:
|
|
196
|
+
'200':
|
|
197
|
+
content:
|
|
198
|
+
application/json:
|
|
199
|
+
schema:
|
|
200
|
+
$ref: '#/components/schemas/HelloWorldResponse'
|
|
201
|
+
description: Successful Response
|
|
202
|
+
summary: Hello World
|
|
203
|
+
tags:
|
|
204
|
+
- Basics
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
Traceback (most recent call last):
|
|
2
|
+
File "/Users/helmut/Code/oe-python-template/.nox/docs-3-13/bin/oe-python-template", line 4, in <module>
|
|
3
|
+
from oe_python_template.cli import cli
|
|
4
|
+
File "/Users/helmut/Code/oe-python-template/src/oe_python_template/cli.py", line 13, in <module>
|
|
5
|
+
from oe_python_template.api import api_v1, api_v2
|
|
6
|
+
File "/Users/helmut/Code/oe-python-template/src/oe_python_template/api.py", line 16, in <module>
|
|
7
|
+
from fastapi import Depends, FastAPI, Response, status
|
|
8
|
+
File "/Users/helmut/Code/oe-python-template/.nox/docs-3-13/lib/python3.13/site-packages/fastapi/__init__.py", line 7, in <module>
|
|
9
|
+
from .applications import FastAPI as FastAPI
|
|
10
|
+
File "/Users/helmut/Code/oe-python-template/.nox/docs-3-13/lib/python3.13/site-packages/fastapi/applications.py", line 16, in <module>
|
|
11
|
+
from fastapi import routing
|
|
12
|
+
File "/Users/helmut/Code/oe-python-template/.nox/docs-3-13/lib/python3.13/site-packages/fastapi/routing.py", line 24, in <module>
|
|
13
|
+
from fastapi import params
|
|
14
|
+
File "/Users/helmut/Code/oe-python-template/.nox/docs-3-13/lib/python3.13/site-packages/fastapi/params.py", line 5, in <module>
|
|
15
|
+
from fastapi.openapi.models import Example
|
|
16
|
+
File "/Users/helmut/Code/oe-python-template/.nox/docs-3-13/lib/python3.13/site-packages/fastapi/openapi/models.py", line 4, in <module>
|
|
17
|
+
from fastapi._compat import (
|
|
18
|
+
...<6 lines>...
|
|
19
|
+
)
|
|
20
|
+
File "/Users/helmut/Code/oe-python-template/.nox/docs-3-13/lib/python3.13/site-packages/fastapi/_compat.py", line 21, in <module>
|
|
21
|
+
from fastapi.exceptions import RequestErrorModel
|
|
22
|
+
File "/Users/helmut/Code/oe-python-template/.nox/docs-3-13/lib/python3.13/site-packages/fastapi/exceptions.py", line 139, in <module>
|
|
23
|
+
RequestErrorModel: Type[BaseModel] = create_model("Request")
|
|
24
|
+
~~~~~~~~~~~~^^^^^^^^^^^
|
|
25
|
+
File "/Users/helmut/Code/oe-python-template/.nox/docs-3-13/lib/python3.13/site-packages/pydantic/main.py", line 1678, in create_model
|
|
26
|
+
return meta(
|
|
27
|
+
model_name,
|
|
28
|
+
...<4 lines>...
|
|
29
|
+
**kwds,
|
|
30
|
+
)
|
|
31
|
+
File "/Users/helmut/Code/oe-python-template/.nox/docs-3-13/lib/python3.13/site-packages/pydantic/_internal/_model_construction.py", line 224, in __new__
|
|
32
|
+
complete_model_class(
|
|
33
|
+
~~~~~~~~~~~~~~~~~~~~^
|
|
34
|
+
cls,
|
|
35
|
+
^^^^
|
|
36
|
+
...<4 lines>...
|
|
37
|
+
create_model_module=_create_model_module,
|
|
38
|
+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
39
|
+
)
|
|
40
|
+
^
|
|
41
|
+
File "/Users/helmut/Code/oe-python-template/.nox/docs-3-13/lib/python3.13/site-packages/pydantic/_internal/_model_construction.py", line 620, in complete_model_class
|
|
42
|
+
cls.__pydantic_validator__ = create_schema_validator(
|
|
43
|
+
~~~~~~~~~~~~~~~~~~~~~~~^
|
|
44
|
+
schema,
|
|
45
|
+
^^^^^^^
|
|
46
|
+
...<5 lines>...
|
|
47
|
+
config_wrapper.plugin_settings,
|
|
48
|
+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
49
|
+
)
|
|
50
|
+
^
|
|
51
|
+
File "/Users/helmut/Code/oe-python-template/.nox/docs-3-13/lib/python3.13/site-packages/pydantic/plugin/_schema_validator.py", line 38, in create_schema_validator
|
|
52
|
+
plugins = get_plugins()
|
|
53
|
+
File "/Users/helmut/Code/oe-python-template/.nox/docs-3-13/lib/python3.13/site-packages/pydantic/plugin/_loader.py", line 39, in get_plugins
|
|
54
|
+
for entry_point in dist.entry_points:
|
|
55
|
+
^^^^^^^^^^^^^^^^^
|
|
56
|
+
File "/opt/homebrew/Cellar/python@3.13/3.13.2/Frameworks/Python.framework/Versions/3.13/lib/python3.13/importlib/metadata/__init__.py", line 496, in entry_points
|
|
57
|
+
return EntryPoints._from_text_for(self.read_text('entry_points.txt'), self)
|
|
58
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
59
|
+
File "/opt/homebrew/Cellar/python@3.13/3.13.2/Frameworks/Python.framework/Versions/3.13/lib/python3.13/importlib/metadata/__init__.py", line 294, in _from_text_for
|
|
60
|
+
@classmethod
|
|
61
|
+
|
|
62
|
+
KeyboardInterrupt
|
|
@@ -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.18"
|
|
33
33
|
release = version
|
|
34
34
|
github_username = "helmut-hoffer-von-ankershoffen"
|
|
35
35
|
github_repository = "oe-python-template"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "oe-python-template"
|
|
3
|
-
version = "0.6.
|
|
3
|
+
version = "0.6.18"
|
|
4
4
|
description = "🧠 Copier template to scaffold Python projects compliant with best practices and modern tooling."
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
authors = [
|
|
@@ -242,7 +242,7 @@ source = ["src/"]
|
|
|
242
242
|
|
|
243
243
|
|
|
244
244
|
[tool.bumpversion]
|
|
245
|
-
current_version = "0.6.
|
|
245
|
+
current_version = "0.6.18"
|
|
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.18
|
|
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
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
## [0.6.17](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/compare/v0.6.16..v0.6.17) - 2025-03-18
|
|
2
|
-
|
|
3
|
-
### ⛰️ Features
|
|
4
|
-
|
|
5
|
-
- *(docs_pdf)* Check for latex tooling - ([3c35f28](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/commit/3c35f280652557650e4aa40c8b459ed42c536a65))
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
0.6.17
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
Traceback (most recent call last):
|
|
2
|
-
File "/Users/helmut/Code/oe-python-template/.nox/docs-3-13/bin/oe-python-template", line 4, in <module>
|
|
3
|
-
from oe_python_template.cli import cli
|
|
4
|
-
File "/Users/helmut/Code/oe-python-template/src/oe_python_template/cli.py", line 7, in <module>
|
|
5
|
-
import typer
|
|
6
|
-
File "/Users/helmut/Code/oe-python-template/.nox/docs-3-13/lib/python3.13/site-packages/typer/__init__.py", line 29, in <module>
|
|
7
|
-
from .main import Typer as Typer
|
|
8
|
-
File "/Users/helmut/Code/oe-python-template/.nox/docs-3-13/lib/python3.13/site-packages/typer/main.py", line 21, in <module>
|
|
9
|
-
from .core import (
|
|
10
|
-
...<6 lines>...
|
|
11
|
-
)
|
|
12
|
-
File "/Users/helmut/Code/oe-python-template/.nox/docs-3-13/lib/python3.13/site-packages/typer/core.py", line 36, in <module>
|
|
13
|
-
from . import rich_utils
|
|
14
|
-
File "/Users/helmut/Code/oe-python-template/.nox/docs-3-13/lib/python3.13/site-packages/typer/rich_utils.py", line 14, in <module>
|
|
15
|
-
from rich.columns import Columns
|
|
16
|
-
File "/Users/helmut/Code/oe-python-template/.nox/docs-3-13/lib/python3.13/site-packages/rich/columns.py", line 7, in <module>
|
|
17
|
-
from .console import Console, ConsoleOptions, RenderableType, RenderResult
|
|
18
|
-
File "/Users/helmut/Code/oe-python-template/.nox/docs-3-13/lib/python3.13/site-packages/rich/console.py", line 59, in <module>
|
|
19
|
-
from .pretty import Pretty, is_expandable
|
|
20
|
-
File "/Users/helmut/Code/oe-python-template/.nox/docs-3-13/lib/python3.13/site-packages/rich/pretty.py", line 33, in <module>
|
|
21
|
-
import attr as _attr_module
|
|
22
|
-
File "/Users/helmut/Code/oe-python-template/.nox/docs-3-13/lib/python3.13/site-packages/attr/__init__.py", line 10, in <module>
|
|
23
|
-
from . import converters, exceptions, filters, setters, validators
|
|
24
|
-
File "/Users/helmut/Code/oe-python-template/.nox/docs-3-13/lib/python3.13/site-packages/attr/converters.py", line 10, in <module>
|
|
25
|
-
from ._make import NOTHING, Converter, Factory, pipe
|
|
26
|
-
File "/Users/helmut/Code/oe-python-template/.nox/docs-3-13/lib/python3.13/site-packages/attr/_make.py", line 21, in <module>
|
|
27
|
-
from . import _compat, _config, setters
|
|
28
|
-
File "/Users/helmut/Code/oe-python-template/.nox/docs-3-13/lib/python3.13/site-packages/attr/setters.py", line 8, in <module>
|
|
29
|
-
from .exceptions import FrozenAttributeError
|
|
30
|
-
File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
|
|
31
|
-
File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
|
|
32
|
-
File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
|
|
33
|
-
File "<frozen importlib._bootstrap_external>", line 1022, in exec_module
|
|
34
|
-
File "<frozen importlib._bootstrap_external>", line 1118, in get_code
|
|
35
|
-
File "<frozen importlib._bootstrap_external>", line 1218, in get_data
|
|
36
|
-
KeyboardInterrupt
|