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.
Files changed (153) hide show
  1. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/.copier-answers.yml +1 -1
  2. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/CHANGELOG.md +15 -1
  3. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/PKG-INFO +6 -8
  4. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/README.md +5 -7
  5. oe_python_template-0.4.3/RELEASE_NOTES.md +8 -0
  6. oe_python_template-0.4.3/VERSION +1 -0
  7. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/_readme_main.md +5 -7
  8. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/docs/source/conf.py +1 -1
  9. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/pyproject.toml +2 -2
  10. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/sonar-project.properties +1 -1
  11. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/src/oe_python_template/api.py +11 -2
  12. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/src/oe_python_template/cli.py +3 -0
  13. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/_readme_main.md.jinja +5 -7
  14. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/noxfile.py.jinja +4 -4
  15. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/src/{{ project_name_snake_case }}/api.py.jinja +5 -2
  16. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/src/{{ project_name_snake_case }}/cli.py.jinja +3 -0
  17. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/uv.lock +1 -1
  18. oe_python_template-0.4.1/RELEASE_NOTES.md +0 -8
  19. oe_python_template-0.4.1/VERSION +0 -1
  20. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/.act-env-public +0 -0
  21. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/.devcontainer/Dockerfile +0 -0
  22. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/.devcontainer/devcontainer.json +0 -0
  23. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/.devcontainer/onCreateCommand +0 -0
  24. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/.devcontainer/postAttachCommand +0 -0
  25. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/.devcontainer/postCreateCommand +0 -0
  26. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/.env.example +0 -0
  27. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/.github/workflows/docker-image-build-publish.yml +0 -0
  28. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/.github/workflows/package-build-publish-release.yml +0 -0
  29. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/.github/workflows/test-and-report.yml +0 -0
  30. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/.gitignore +0 -0
  31. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/.pre-commit-config.yaml +0 -0
  32. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/.python-version +0 -0
  33. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/.readthedocs.yml +0 -0
  34. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/.secrets.baseline +0 -0
  35. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/.vscode/extensions.json +0 -0
  36. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/.vscode/settings.json +0 -0
  37. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/CODEOWNERS +0 -0
  38. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/CONTRIBUTING.md +0 -0
  39. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/Dockerfile +0 -0
  40. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/LICENSE +0 -0
  41. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/SERVICE_CONNECTIONS.md +0 -0
  42. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/_readme_footer.md +0 -0
  43. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/_readme_header.md +0 -0
  44. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/bin/git-cliff +0 -0
  45. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/bump +0 -0
  46. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/codecov.yml +0 -0
  47. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/compose.yaml +0 -0
  48. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/copier.yml +0 -0
  49. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/docs/Makefile +0 -0
  50. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/docs/make.bat +0 -0
  51. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/docs/source/_static/.keep +0 -0
  52. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/docs/source/_static/openapi_v1.json +0 -0
  53. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/docs/source/_static/openapi_v1.yaml +0 -0
  54. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/docs/source/_static/openapi_v2.json +0 -0
  55. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/docs/source/_static/openapi_v2.yaml +0 -0
  56. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/docs/source/api_v1.rst +0 -0
  57. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/docs/source/api_v2.rst +0 -0
  58. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/docs/source/contributing.rst +0 -0
  59. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/docs/source/index.rst +0 -0
  60. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/docs/source/latexmkrc +0 -0
  61. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/docs/source/main.rst +0 -0
  62. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/docs/source/reference.rst +0 -0
  63. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/docs/source/release-notes.rst +0 -0
  64. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/examples/__init__.py +0 -0
  65. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/examples/jupyter.ipynb +0 -0
  66. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/examples/notebook.ipynb +0 -0
  67. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/examples/notebook.py +0 -0
  68. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/examples/script.py +0 -0
  69. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/examples/streamlit.py +0 -0
  70. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/git-cliff-2.7.0/CHANGELOG.md +0 -0
  71. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/git-cliff-2.7.0/LICENSE-APACHE +0 -0
  72. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/git-cliff-2.7.0/LICENSE-MIT +0 -0
  73. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/git-cliff-2.7.0/README.md +0 -0
  74. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/git-cliff-2.7.0/completions/_git-cliff +0 -0
  75. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/git-cliff-2.7.0/completions/_git-cliff.ps1 +0 -0
  76. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/git-cliff-2.7.0/completions/git-cliff.bash +0 -0
  77. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/git-cliff-2.7.0/completions/git-cliff.elv +0 -0
  78. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/git-cliff-2.7.0/completions/git-cliff.fish +0 -0
  79. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/git-cliff-2.7.0/git-cliff-completions +0 -0
  80. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/git-cliff-2.7.0/git-cliff-mangen +0 -0
  81. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/git-cliff-2.7.0/man/git-cliff.1 +0 -0
  82. {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
  83. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/github-action-run +0 -0
  84. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/latexmkrc +0 -0
  85. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/logo.png +0 -0
  86. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/noxfile.py +0 -0
  87. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/renovate.json +0 -0
  88. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/reports/mypy.xml +0 -0
  89. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/src/oe_python_template/__init__.py +0 -0
  90. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/src/oe_python_template/constants.py +0 -0
  91. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/src/oe_python_template/service.py +0 -0
  92. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/.act-env-public.jinja +0 -0
  93. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/.devcontainer/Dockerfile.jinja +0 -0
  94. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/.devcontainer/devcontainer.json.jinja +0 -0
  95. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/.devcontainer/onCreateCommand.jinja +0 -0
  96. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/.devcontainer/postAttachCommand.jinja +0 -0
  97. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/.devcontainer/postCreateCommand.jinja +0 -0
  98. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/.env.example.jinja +0 -0
  99. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/.github/workflows/docker-image-build-publish.yml.jinja +0 -0
  100. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/.github/workflows/package-build-publish-release.yml.jinja +0 -0
  101. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/.github/workflows/test-and-report.yml.jinja +0 -0
  102. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/.gitignore.jinja +0 -0
  103. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/.pre-commit-config.yaml.jinja +0 -0
  104. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/.python-version +0 -0
  105. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/.readthedocs.yml.jinja +0 -0
  106. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/.vscode/extensions.json +0 -0
  107. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/.vscode/settings.json.jinja +0 -0
  108. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/CHANGELOG.md +0 -0
  109. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/CODEOWNERS.jinja +0 -0
  110. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/CONTRIBUTING.md.jinja +0 -0
  111. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/Dockerfile.jinja +0 -0
  112. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/LICENSE.jinja +0 -0
  113. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/SERVICE_CONNECTIONS.md.jinja +0 -0
  114. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/VERSION +0 -0
  115. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/_readme_footer.md.jinja +0 -0
  116. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/_readme_header.md.jinja +0 -0
  117. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/bump.jinja +0 -0
  118. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/codecov.yml.jinja +0 -0
  119. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/compose.yaml.jinja +0 -0
  120. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/docs/Makefile.jinja +0 -0
  121. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/docs/make.bat.jinja +0 -0
  122. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/docs/source/_static/.keep +0 -0
  123. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/docs/source/api_v1.rst.jinja +0 -0
  124. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/docs/source/api_v2.rst.jinja +0 -0
  125. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/docs/source/conf.py.jinja +0 -0
  126. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/docs/source/contributing.rst.jinja +0 -0
  127. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/docs/source/index.rst.jinja +0 -0
  128. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/docs/source/latexmkrc.jinja +0 -0
  129. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/docs/source/main.rst.jinja +0 -0
  130. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/docs/source/reference.rst.jinja +0 -0
  131. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/docs/source/release-notes.rst.jinja +0 -0
  132. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/examples/__init__.py.jinja +0 -0
  133. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/examples/notebook.ipynb.jinja +0 -0
  134. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/examples/notebook.py.jinja +0 -0
  135. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/examples/script.py.jinja +0 -0
  136. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/examples/streamlit.py.jinja +0 -0
  137. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/github-action-run.jinja +0 -0
  138. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/latexmkrc.jinja +0 -0
  139. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/logo.png +0 -0
  140. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/pyproject.toml.jinja +0 -0
  141. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/sonar-project.properties.jinja +0 -0
  142. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/src/{{ project_name_snake_case }}/__init__.py.jinja +0 -0
  143. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/src/{{ project_name_snake_case }}/constants.py.jinja +0 -0
  144. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/src/{{ project_name_snake_case }}/service.py.jinja +0 -0
  145. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/tests/__init__.py.jinja +0 -0
  146. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/tests/api_test.py.jinja +0 -0
  147. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/tests/cli_test.py.jinja +0 -0
  148. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/tests/fixtures/.keep +0 -0
  149. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/template/{{_copier_conf.answers_file}}.jinja +0 -0
  150. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/tests/__init__.py +0 -0
  151. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/tests/api_test.py +0 -0
  152. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/tests/cli_test.py +0 -0
  153. {oe_python_template-0.4.1 → oe_python_template-0.4.3}/tests/fixtures/.keep +0 -0
@@ -1,4 +1,4 @@
1
- _commit: v0.4.0-1-gdfc1c47
1
+ _commit: v0.4.2-1-gc84332a
2
2
  _src_path: .
3
3
  author_email: helmuthva@gmail.com
4
4
  author_github_username: helmut-hoffer-von-ankershoffen
@@ -1,6 +1,20 @@
1
1
  [🧠 OE Python Template](https://oe-python-template.readthedocs.io/en/latest/)
2
2
 
3
- ## [0.4.1](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/compare/v0.4.0..0.4.1) - 2025-03-13
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.1
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
- When serving the 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 result.
178
-
179
- The API is versioned and provides interactive documentation at [http://127.0.0.1:8000/api/v1/docs](http://127.0.0.1:8000/api/v1/docs) resp. [http://127.0.0.1:8000/api/v2/docs](http://127.0.0.1:8000/api/v2/docs)
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
- When serving the 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 result.
117
-
118
- The API is versioned and provides interactive documentation at [http://127.0.0.1:8000/api/v1/docs](http://127.0.0.1:8000/api/v1/docs) resp. [http://127.0.0.1:8000/api/v2/docs](http://127.0.0.1:8000/api/v2/docs)
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
- When serving the 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 result.
82
-
83
- The API is versioned and provides interactive documentation at [http://127.0.0.1:8000/api/v1/docs](http://127.0.0.1:8000/api/v1/docs) resp. [http://127.0.0.1:8000/api/v2/docs](http://127.0.0.1:8000/api/v2/docs)
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.1"
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.1"
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.1"
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.1
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": {"description": "sub-docs", "url": "/api/v1/docs"},
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": {"description": "sub-docs", "url": "/api/v2/docs"},
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
- When serving the 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 result.
82
-
83
- The API is versioned and provides interactive documentation at [http://127.0.0.1:8000/api/v1/docs](http://127.0.0.1:8000/api/v1/docs) resp. [http://127.0.0.1:8000/api/v2/docs](http://127.0.0.1:8000/api/v2/docs)
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("oe-python-template", "openapi", "--api-version=v1", stdout=f, external=True)
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
- "oe-python-template", "openapi", "--api-version=v1", "--output-format=json", stdout=f, external=True
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("oe-python-template", "openapi", "--api-version=v2", stdout=f, external=True)
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
- "oe-python-template", "openapi", "--api-version=v2", "--output-format=json", stdout=f, external=True
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
- 'url': '/api/v1/docs'
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
- 'url': '/api/v2/docs'
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,
@@ -2075,7 +2075,7 @@ wheels = [
2075
2075
 
2076
2076
  [[package]]
2077
2077
  name = "oe-python-template"
2078
- version = "0.4.1"
2078
+ version = "0.4.3"
2079
2079
  source = { editable = "." }
2080
2080
  dependencies = [
2081
2081
  { name = "fastapi", extra = ["all", "standard"] },
@@ -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
-
@@ -1 +0,0 @@
1
- 0.4.1