oe-python-template 0.4.1__tar.gz → 0.4.3__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.4.1 → oe_python_template-0.4.3}/.copier-answers.yml +1 -1
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/CHANGELOG.md +15 -1
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/PKG-INFO +6 -8
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/README.md +5 -7
- oe_python_template-0.4.3/RELEASE_NOTES.md +8 -0
- oe_python_template-0.4.3/VERSION +1 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/_readme_main.md +5 -7
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/docs/source/conf.py +1 -1
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/pyproject.toml +2 -2
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/sonar-project.properties +1 -1
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/src/oe_python_template/api.py +11 -2
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/src/oe_python_template/cli.py +3 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/_readme_main.md.jinja +5 -7
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/noxfile.py.jinja +4 -4
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/src/{{ project_name_snake_case }}/api.py.jinja +5 -2
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/src/{{ project_name_snake_case }}/cli.py.jinja +3 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/uv.lock +1 -1
- oe_python_template-0.4.1/RELEASE_NOTES.md +0 -8
- oe_python_template-0.4.1/VERSION +0 -1
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/.act-env-public +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/.devcontainer/Dockerfile +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/.devcontainer/devcontainer.json +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/.devcontainer/onCreateCommand +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/.devcontainer/postAttachCommand +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/.devcontainer/postCreateCommand +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/.env.example +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/.github/workflows/docker-image-build-publish.yml +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/.github/workflows/package-build-publish-release.yml +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/.github/workflows/test-and-report.yml +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/.gitignore +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/.pre-commit-config.yaml +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/.python-version +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/.readthedocs.yml +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/.secrets.baseline +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/.vscode/extensions.json +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/.vscode/settings.json +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/CODEOWNERS +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/CONTRIBUTING.md +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/Dockerfile +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/LICENSE +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/SERVICE_CONNECTIONS.md +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/_readme_footer.md +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/_readme_header.md +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/bin/git-cliff +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/bump +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/codecov.yml +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/compose.yaml +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/copier.yml +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/docs/Makefile +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/docs/make.bat +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/docs/source/_static/.keep +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/docs/source/_static/openapi_v1.json +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/docs/source/_static/openapi_v1.yaml +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/docs/source/_static/openapi_v2.json +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/docs/source/_static/openapi_v2.yaml +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/docs/source/api_v1.rst +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/docs/source/api_v2.rst +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/docs/source/contributing.rst +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/docs/source/index.rst +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/docs/source/latexmkrc +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/docs/source/main.rst +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/docs/source/reference.rst +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/docs/source/release-notes.rst +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/examples/__init__.py +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/examples/jupyter.ipynb +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/examples/notebook.ipynb +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/examples/notebook.py +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/examples/script.py +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/examples/streamlit.py +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/git-cliff-2.7.0/CHANGELOG.md +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/git-cliff-2.7.0/LICENSE-APACHE +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/git-cliff-2.7.0/LICENSE-MIT +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/git-cliff-2.7.0/README.md +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/git-cliff-2.7.0/completions/_git-cliff +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/git-cliff-2.7.0/completions/_git-cliff.ps1 +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/git-cliff-2.7.0/completions/git-cliff.bash +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/git-cliff-2.7.0/completions/git-cliff.elv +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/git-cliff-2.7.0/completions/git-cliff.fish +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/git-cliff-2.7.0/git-cliff-completions +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/git-cliff-2.7.0/git-cliff-mangen +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/git-cliff-2.7.0/man/git-cliff.1 +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/git-cliff-2.7.0-x86_64-unknown-linux-gnu.tar.gz +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/github-action-run +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/latexmkrc +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/logo.png +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/noxfile.py +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/renovate.json +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/reports/mypy.xml +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/src/oe_python_template/__init__.py +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/src/oe_python_template/constants.py +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/src/oe_python_template/service.py +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/.act-env-public.jinja +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/.devcontainer/Dockerfile.jinja +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/.devcontainer/devcontainer.json.jinja +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/.devcontainer/onCreateCommand.jinja +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/.devcontainer/postAttachCommand.jinja +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/.devcontainer/postCreateCommand.jinja +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/.env.example.jinja +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/.github/workflows/docker-image-build-publish.yml.jinja +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/.github/workflows/package-build-publish-release.yml.jinja +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/.github/workflows/test-and-report.yml.jinja +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/.gitignore.jinja +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/.pre-commit-config.yaml.jinja +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/.python-version +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/.readthedocs.yml.jinja +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/.vscode/extensions.json +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/.vscode/settings.json.jinja +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/CHANGELOG.md +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/CODEOWNERS.jinja +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/CONTRIBUTING.md.jinja +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/Dockerfile.jinja +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/LICENSE.jinja +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/SERVICE_CONNECTIONS.md.jinja +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/VERSION +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/_readme_footer.md.jinja +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/_readme_header.md.jinja +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/bump.jinja +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/codecov.yml.jinja +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/compose.yaml.jinja +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/docs/Makefile.jinja +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/docs/make.bat.jinja +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/docs/source/_static/.keep +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/docs/source/api_v1.rst.jinja +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/docs/source/api_v2.rst.jinja +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/docs/source/conf.py.jinja +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/docs/source/contributing.rst.jinja +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/docs/source/index.rst.jinja +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/docs/source/latexmkrc.jinja +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/docs/source/main.rst.jinja +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/docs/source/reference.rst.jinja +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/docs/source/release-notes.rst.jinja +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/examples/__init__.py.jinja +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/examples/notebook.ipynb.jinja +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/examples/notebook.py.jinja +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/examples/script.py.jinja +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/examples/streamlit.py.jinja +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/github-action-run.jinja +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/latexmkrc.jinja +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/logo.png +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/pyproject.toml.jinja +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/sonar-project.properties.jinja +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/src/{{ project_name_snake_case }}/__init__.py.jinja +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/src/{{ project_name_snake_case }}/constants.py.jinja +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/src/{{ project_name_snake_case }}/service.py.jinja +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/tests/__init__.py.jinja +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/tests/api_test.py.jinja +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/tests/cli_test.py.jinja +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/tests/fixtures/.keep +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/{{_copier_conf.answers_file}}.jinja +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/tests/__init__.py +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/tests/api_test.py +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/tests/cli_test.py +0 -0
- {oe_python_template-0.4.1 → oe_python_template-0.4.3}/tests/fixtures/.keep +0 -0
|
@@ -1,6 +1,20 @@
|
|
|
1
1
|
[🧠 OE Python Template](https://oe-python-template.readthedocs.io/en/latest/)
|
|
2
2
|
|
|
3
|
-
## [0.4.
|
|
3
|
+
## [0.4.3](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/compare/v0.4.2..0.4.3) - 2025-03-13
|
|
4
|
+
|
|
5
|
+
### Enh
|
|
6
|
+
|
|
7
|
+
- *(versioned api)* Central docs entrypoint - ([24fda94](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/commit/24fda9401e864ef66109e701b7f549398282c98b))
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
## [0.4.2](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/compare/v0.4.1..v0.4.2) - 2025-03-13
|
|
11
|
+
|
|
12
|
+
### 🐛 Bug Fixes
|
|
13
|
+
|
|
14
|
+
- *(docs)* Hardcoded command - ([d98e6fd](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/commit/d98e6fde86fff01083b52e806295343fb5b5d828))
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
## [0.4.1](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/compare/v0.4.0..v0.4.1) - 2025-03-13
|
|
4
18
|
|
|
5
19
|
### 🐛 Bug Fixes
|
|
6
20
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: oe-python-template
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.3
|
|
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/
|
|
@@ -172,16 +172,14 @@ Executing the command line interface (CLI) in an isolated Python environment is
|
|
|
172
172
|
```shell
|
|
173
173
|
uvx oe-python-template hello-world # prints "Hello, world! [..]"
|
|
174
174
|
uvx oe-python-template serve # serves webservice API
|
|
175
|
+
uvx oe-python-template serve --port=4711 # serves webservice API on port 4711
|
|
175
176
|
```
|
|
176
177
|
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
```shell
|
|
178
|
+
Notes:
|
|
179
|
+
* The API is versioned, mounted at ```/api/v1``` resp. ```/api/v2```
|
|
180
|
+
* While serving the webservice API go to [http://127.0.0.1:8000/api/v1/hello-world](http://127.0.0.1:8000/api/v1/hello-world) to see the respons of the ```hello-world``` operation.
|
|
181
|
+
* Interactive documentation is provided at [http://127.0.0.1:8000/api/docs](http://127.0.0.1:8000/api/docs)
|
|
183
182
|
|
|
184
|
-
When running the webservice API, goto http://127.0.0.1:8000/api/v1/docs
|
|
185
183
|
|
|
186
184
|
The CLI provides extensive help:
|
|
187
185
|
|
|
@@ -111,16 +111,14 @@ Executing the command line interface (CLI) in an isolated Python environment is
|
|
|
111
111
|
```shell
|
|
112
112
|
uvx oe-python-template hello-world # prints "Hello, world! [..]"
|
|
113
113
|
uvx oe-python-template serve # serves webservice API
|
|
114
|
+
uvx oe-python-template serve --port=4711 # serves webservice API on port 4711
|
|
114
115
|
```
|
|
115
116
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
```shell
|
|
117
|
+
Notes:
|
|
118
|
+
* The API is versioned, mounted at ```/api/v1``` resp. ```/api/v2```
|
|
119
|
+
* While serving the webservice API go to [http://127.0.0.1:8000/api/v1/hello-world](http://127.0.0.1:8000/api/v1/hello-world) to see the respons of the ```hello-world``` operation.
|
|
120
|
+
* Interactive documentation is provided at [http://127.0.0.1:8000/api/docs](http://127.0.0.1:8000/api/docs)
|
|
122
121
|
|
|
123
|
-
When running the webservice API, goto http://127.0.0.1:8000/api/v1/docs
|
|
124
122
|
|
|
125
123
|
The CLI provides extensive help:
|
|
126
124
|
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
## [0.4.3](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/compare/v0.4.2..v0.4.3) - 2025-03-13
|
|
2
|
+
|
|
3
|
+
### Enh
|
|
4
|
+
|
|
5
|
+
- *(versioned api)* Central docs entrypoint - ([24fda94](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/commit/24fda9401e864ef66109e701b7f549398282c98b))
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0.4.3
|
|
@@ -76,16 +76,14 @@ Executing the command line interface (CLI) in an isolated Python environment is
|
|
|
76
76
|
```shell
|
|
77
77
|
uvx oe-python-template hello-world # prints "Hello, world! [..]"
|
|
78
78
|
uvx oe-python-template serve # serves webservice API
|
|
79
|
+
uvx oe-python-template serve --port=4711 # serves webservice API on port 4711
|
|
79
80
|
```
|
|
80
81
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
```shell
|
|
82
|
+
Notes:
|
|
83
|
+
* The API is versioned, mounted at ```/api/v1``` resp. ```/api/v2```
|
|
84
|
+
* While serving the webservice API go to [http://127.0.0.1:8000/api/v1/hello-world](http://127.0.0.1:8000/api/v1/hello-world) to see the respons of the ```hello-world``` operation.
|
|
85
|
+
* Interactive documentation is provided at [http://127.0.0.1:8000/api/docs](http://127.0.0.1:8000/api/docs)
|
|
87
86
|
|
|
88
|
-
When running the webservice API, goto http://127.0.0.1:8000/api/v1/docs
|
|
89
87
|
|
|
90
88
|
The CLI provides extensive help:
|
|
91
89
|
|
|
@@ -26,7 +26,7 @@ extensions = [
|
|
|
26
26
|
project = "oe-python-template"
|
|
27
27
|
author = "Helmut Hoffer von Ankershoffen"
|
|
28
28
|
copyright = f" (c) 2025-{datetime.now(UTC).year}, {author}" # noqa: A001
|
|
29
|
-
version = "0.4.
|
|
29
|
+
version = "0.4.3"
|
|
30
30
|
release = version
|
|
31
31
|
github_username = "helmut-hoffer-von-ankershoffen"
|
|
32
32
|
github_repository = "oe-python-template"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "oe-python-template"
|
|
3
|
-
version = "0.4.
|
|
3
|
+
version = "0.4.3"
|
|
4
4
|
description = "🧠 Copier template to scaffold Python projects compliant with best practices and modern tooling."
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
authors = [
|
|
@@ -245,7 +245,7 @@ source = ["src/"]
|
|
|
245
245
|
|
|
246
246
|
|
|
247
247
|
[tool.bumpversion]
|
|
248
|
-
current_version = "0.4.
|
|
248
|
+
current_version = "0.4.3"
|
|
249
249
|
parse = "(?P<major>\\d+)\\.(?P<minor>\\d+)\\.(?P<patch>\\d+)"
|
|
250
250
|
serialize = ["{major}.{minor}.{patch}"]
|
|
251
251
|
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.4.
|
|
3
|
+
sonar.projectVersion=0.4.3
|
|
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
|
|
@@ -8,6 +8,7 @@ This module provides a webservice API with several endpoints:
|
|
|
8
8
|
The endpoints use Pydantic models for request and response validation.
|
|
9
9
|
"""
|
|
10
10
|
|
|
11
|
+
import os
|
|
11
12
|
from collections.abc import Generator
|
|
12
13
|
from enum import StrEnum
|
|
13
14
|
from typing import Annotated
|
|
@@ -18,6 +19,8 @@ from pydantic import BaseModel, Field
|
|
|
18
19
|
from oe_python_template import Service
|
|
19
20
|
|
|
20
21
|
HELLO_WORLD_EXAMPLE = "Hello, world!"
|
|
22
|
+
UVICORN_HOST = os.environ.get("UVICORN_HOST", "127.0.0.1")
|
|
23
|
+
UVICORN_PORT = os.environ.get("UVICORN_PORT", "8000")
|
|
21
24
|
|
|
22
25
|
|
|
23
26
|
def get_service() -> Generator[Service, None, None]:
|
|
@@ -47,12 +50,18 @@ api = FastAPI(
|
|
|
47
50
|
{
|
|
48
51
|
"name": "v1",
|
|
49
52
|
"description": "API version 1, check link on the right",
|
|
50
|
-
"externalDocs": {
|
|
53
|
+
"externalDocs": {
|
|
54
|
+
"description": "sub-docs",
|
|
55
|
+
"url": f"http://{UVICORN_HOST}:{UVICORN_PORT}/api/v1/docs",
|
|
56
|
+
},
|
|
51
57
|
},
|
|
52
58
|
{
|
|
53
59
|
"name": "v2",
|
|
54
60
|
"description": "API version 2, check link on the right",
|
|
55
|
-
"externalDocs": {
|
|
61
|
+
"externalDocs": {
|
|
62
|
+
"description": "sub-docs",
|
|
63
|
+
"url": f"http://{UVICORN_HOST}:{UVICORN_PORT}/api/v2/docs",
|
|
64
|
+
},
|
|
56
65
|
},
|
|
57
66
|
],
|
|
58
67
|
)
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"""CLI (Command Line Interface) of OE Python Template."""
|
|
2
2
|
|
|
3
|
+
import os
|
|
3
4
|
from enum import StrEnum
|
|
4
5
|
from typing import Annotated
|
|
5
6
|
|
|
@@ -49,6 +50,8 @@ def serve(
|
|
|
49
50
|
) -> None:
|
|
50
51
|
"""Start the API server."""
|
|
51
52
|
console.print(f"Starting API server at http://{host}:{port}")
|
|
53
|
+
os.environ["UVICORN_HOST"] = host
|
|
54
|
+
os.environ["UVICORN_PORT"] = str(port)
|
|
52
55
|
uvicorn.run(
|
|
53
56
|
"oe_python_template.api:api",
|
|
54
57
|
host=host,
|
|
@@ -76,16 +76,14 @@ Executing the command line interface (CLI) in an isolated Python environment is
|
|
|
76
76
|
```shell
|
|
77
77
|
uvx {{ pypi_distribution_name}} hello-world # prints "Hello, world! [..]"
|
|
78
78
|
uvx {{ pypi_distribution_name}} serve # serves webservice API
|
|
79
|
+
uvx {{ pypi_distribution_name}} serve --port=4711 # serves webservice API on port 4711
|
|
79
80
|
```
|
|
80
81
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
```shell
|
|
82
|
+
Notes:
|
|
83
|
+
* The API is versioned, mounted at ```/api/v1``` resp. ```/api/v2```
|
|
84
|
+
* While serving the webservice API go to [http://127.0.0.1:8000/api/v1/hello-world](http://127.0.0.1:8000/api/v1/hello-world) to see the respons of the ```hello-world``` operation.
|
|
85
|
+
* Interactive documentation is provided at [http://127.0.0.1:8000/api/docs](http://127.0.0.1:8000/api/docs)
|
|
87
86
|
|
|
88
|
-
When running the webservice API, goto http://127.0.0.1:8000/api/v1/docs
|
|
89
87
|
|
|
90
88
|
The CLI provides extensive help:
|
|
91
89
|
|
|
@@ -64,16 +64,16 @@ def docs(session: nox.Session) -> None:
|
|
|
64
64
|
Path("README.md").write_text(readme_content, encoding="utf-8")
|
|
65
65
|
# Dump openapi schema to file
|
|
66
66
|
with Path("docs/source/_static/openapi_v1.yaml").open("w", encoding="utf-8") as f:
|
|
67
|
-
session.run("
|
|
67
|
+
session.run("{{ pypi_distribution_name }}", "openapi", "--api-version=v1", stdout=f, external=True)
|
|
68
68
|
with Path("docs/source/_static/openapi_v1.json").open("w", encoding="utf-8") as f:
|
|
69
69
|
session.run(
|
|
70
|
-
"
|
|
70
|
+
"{{ pypi_distribution_name }}", "openapi", "--api-version=v1", "--output-format=json", stdout=f, external=True
|
|
71
71
|
)
|
|
72
72
|
with Path("docs/source/_static/openapi_v2.yaml").open("w", encoding="utf-8") as f:
|
|
73
|
-
session.run("
|
|
73
|
+
session.run("{{ pypi_distribution_name }}", "openapi", "--api-version=v2", stdout=f, external=True)
|
|
74
74
|
with Path("docs/source/_static/openapi_v2.json").open("w", encoding="utf-8") as f:
|
|
75
75
|
session.run(
|
|
76
|
-
"
|
|
76
|
+
"{{ pypi_distribution_name }}", "openapi", "--api-version=v2", "--output-format=json", stdout=f, external=True
|
|
77
77
|
)
|
|
78
78
|
# Build docs
|
|
79
79
|
session.run("make", "-C", "docs", "clean", external=True)
|
|
@@ -8,6 +8,7 @@ This module provides a webservice API with several endpoints:
|
|
|
8
8
|
The endpoints use Pydantic models for request and response validation.
|
|
9
9
|
"""
|
|
10
10
|
|
|
11
|
+
import os
|
|
11
12
|
from collections.abc import Generator
|
|
12
13
|
from enum import StrEnum
|
|
13
14
|
from typing import Annotated
|
|
@@ -18,6 +19,8 @@ from pydantic import BaseModel, Field
|
|
|
18
19
|
from {{ project_name_snake_case }} import Service
|
|
19
20
|
|
|
20
21
|
HELLO_WORLD_EXAMPLE = "Hello, world!"
|
|
22
|
+
UVICORN_HOST = os.environ.get("UVICORN_HOST", "127.0.0.1")
|
|
23
|
+
UVICORN_PORT = os.environ.get("UVICORN_PORT", "8000")
|
|
21
24
|
|
|
22
25
|
|
|
23
26
|
def get_service() -> Generator[Service, None, None]:
|
|
@@ -49,7 +52,7 @@ api = FastAPI(
|
|
|
49
52
|
"description": "API version 1, check link on the right",
|
|
50
53
|
'externalDocs': {
|
|
51
54
|
'description': 'sub-docs',
|
|
52
|
-
|
|
55
|
+
"url": f"http://{UVICORN_HOST}:{UVICORN_PORT}/api/v1/docs",
|
|
53
56
|
}
|
|
54
57
|
},
|
|
55
58
|
{
|
|
@@ -57,7 +60,7 @@ api = FastAPI(
|
|
|
57
60
|
"description": "API version 2, check link on the right",
|
|
58
61
|
'externalDocs': {
|
|
59
62
|
'description': 'sub-docs',
|
|
60
|
-
|
|
63
|
+
"url": f"http://{UVICORN_HOST}:{UVICORN_PORT}/api/v2/docs",
|
|
61
64
|
}
|
|
62
65
|
},
|
|
63
66
|
]
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
from enum import StrEnum
|
|
4
4
|
from typing import Annotated
|
|
5
5
|
|
|
6
|
+
import os
|
|
6
7
|
import typer
|
|
7
8
|
import uvicorn
|
|
8
9
|
import yaml
|
|
@@ -49,6 +50,8 @@ def serve(
|
|
|
49
50
|
) -> None:
|
|
50
51
|
"""Start the API server."""
|
|
51
52
|
console.print(f"Starting API server at http://{host}:{port}")
|
|
53
|
+
os.environ["UVICORN_HOST"] = host
|
|
54
|
+
os.environ["UVICORN_PORT"] = str(port)
|
|
52
55
|
uvicorn.run(
|
|
53
56
|
"{{ project_name_snake_case }}.api:api",
|
|
54
57
|
host=host,
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
## [0.4.1](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/compare/v0.4.0..v0.4.1) - 2025-03-13
|
|
2
|
-
|
|
3
|
-
### 🐛 Bug Fixes
|
|
4
|
-
|
|
5
|
-
- *(tests)* Test_cli_serve - ([ac1a02c](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/commit/ac1a02c04f39c664d71ffa127af72635b5eadfa5))
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
oe_python_template-0.4.1/VERSION
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
0.4.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
|
{oe_python_template-0.4.1 → oe_python_template-0.4.3}/git-cliff-2.7.0/completions/_git-cliff
RENAMED
|
File without changes
|
{oe_python_template-0.4.1 → oe_python_template-0.4.3}/git-cliff-2.7.0/completions/_git-cliff.ps1
RENAMED
|
File without changes
|
{oe_python_template-0.4.1 → oe_python_template-0.4.3}/git-cliff-2.7.0/completions/git-cliff.bash
RENAMED
|
File without changes
|
{oe_python_template-0.4.1 → oe_python_template-0.4.3}/git-cliff-2.7.0/completions/git-cliff.elv
RENAMED
|
File without changes
|
{oe_python_template-0.4.1 → oe_python_template-0.4.3}/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.4.1 → oe_python_template-0.4.3}/template/.devcontainer/Dockerfile.jinja
RENAMED
|
File without changes
|
{oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/.devcontainer/devcontainer.json.jinja
RENAMED
|
File without changes
|
{oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/.devcontainer/onCreateCommand.jinja
RENAMED
|
File without changes
|
{oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/.devcontainer/postAttachCommand.jinja
RENAMED
|
File without changes
|
{oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/.devcontainer/postCreateCommand.jinja
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{oe_python_template-0.4.1 → oe_python_template-0.4.3}/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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/docs/source/contributing.rst.jinja
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/docs/source/reference.rst.jinja
RENAMED
|
File without changes
|
{oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/docs/source/release-notes.rst.jinja
RENAMED
|
File without changes
|
|
File without changes
|
{oe_python_template-0.4.1 → oe_python_template-0.4.3}/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
|
{oe_python_template-0.4.1 → oe_python_template-0.4.3}/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.4.1 → oe_python_template-0.4.3}/template/{{_copier_conf.answers_file}}.jinja
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|