oe-python-template 0.6.16__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.
Files changed (172) hide show
  1. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/.copier-answers.yml +1 -1
  2. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/CHANGELOG.md +24 -1
  3. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/CONTRIBUTING.md +2 -9
  4. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/PKG-INFO +1 -1
  5. oe_python_template-0.6.18/RELEASE_NOTES.md +14 -0
  6. oe_python_template-0.6.18/VERSION +1 -0
  7. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/docs/source/_static/openapi_v1.yaml +32 -16
  8. oe_python_template-0.6.18/docs/source/_static/openapi_v2.json +62 -0
  9. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/docs/source/_static/openapi_v2.yaml +32 -16
  10. oe_python_template-0.6.18/docs/source/api_v1.rst +9 -0
  11. oe_python_template-0.6.18/docs/source/api_v2.rst +9 -0
  12. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/docs/source/conf.py +1 -1
  13. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/noxfile.py +28 -2
  14. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/pyproject.toml +2 -2
  15. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/sonar-project.properties +1 -1
  16. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/template/CONTRIBUTING.md.jinja +2 -9
  17. oe_python_template-0.6.18/template/docs/source/api_v1.rst.jinja +9 -0
  18. oe_python_template-0.6.18/template/docs/source/api_v2.rst.jinja +9 -0
  19. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/template/noxfile.py.jinja +28 -2
  20. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/uv.lock +1 -1
  21. oe_python_template-0.6.16/RELEASE_NOTES.md +0 -8
  22. oe_python_template-0.6.16/VERSION +0 -1
  23. oe_python_template-0.6.16/docs/source/_static/openapi_v2.json +0 -262
  24. oe_python_template-0.6.16/docs/source/api_v1.rst +0 -15
  25. oe_python_template-0.6.16/docs/source/api_v2.rst +0 -15
  26. oe_python_template-0.6.16/template/docs/source/api_v1.rst.jinja +0 -15
  27. oe_python_template-0.6.16/template/docs/source/api_v2.rst.jinja +0 -15
  28. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/.act-env-public +0 -0
  29. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/.devcontainer/Dockerfile +0 -0
  30. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/.devcontainer/devcontainer.json +0 -0
  31. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/.devcontainer/onCreateCommand +0 -0
  32. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/.devcontainer/postAttachCommand +0 -0
  33. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/.devcontainer/postCreateCommand +0 -0
  34. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/.env.example +0 -0
  35. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/.github/copilot-instructions.md +0 -0
  36. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/.github/dependabot.yml +0 -0
  37. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/.github/prompts/.keep +0 -0
  38. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/.github/workflows/codeql.yml +0 -0
  39. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/.github/workflows/docker-image-build-publish.yml +0 -0
  40. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/.github/workflows/package-build-publish-release.yml +0 -0
  41. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/.github/workflows/test-and-report.yml +0 -0
  42. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/.gitignore +0 -0
  43. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/.pre-commit-config.yaml +0 -0
  44. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/.python-version +0 -0
  45. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/.readthedocs.yml +0 -0
  46. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/.secrets.baseline +0 -0
  47. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/.vscode/extensions.json +0 -0
  48. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/.vscode/settings.json +0 -0
  49. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/CODEOWNERS +0 -0
  50. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/CODE_STYLE.md +0 -0
  51. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/Dockerfile +0 -0
  52. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/LICENSE +0 -0
  53. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/README.md +0 -0
  54. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/SECURITY.md +0 -0
  55. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/SERVICE_CONNECTIONS.md +0 -0
  56. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/bin/git-cliff +0 -0
  57. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/codecov.yml +0 -0
  58. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/compose.yaml +0 -0
  59. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/copier.yml +0 -0
  60. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/docs/Makefile +0 -0
  61. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/docs/make.bat +0 -0
  62. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/docs/partials/README_footer.md +0 -0
  63. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/docs/partials/README_header.md +0 -0
  64. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/docs/partials/README_main.md +0 -0
  65. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/docs/source/_static/.keep +0 -0
  66. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/docs/source/_static/openapi_v1.json +0 -0
  67. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/docs/source/code-style.rst +0 -0
  68. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/docs/source/contributing.rst +0 -0
  69. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/docs/source/index.rst +0 -0
  70. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/docs/source/latexmkrc +0 -0
  71. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/docs/source/main.rst +0 -0
  72. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/docs/source/reference.rst +0 -0
  73. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/docs/source/release-notes.rst +0 -0
  74. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/docs/source/security.rst +0 -0
  75. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/examples/__init__.py +0 -0
  76. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/examples/notebook.ipynb +0 -0
  77. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/examples/notebook.py +0 -0
  78. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/examples/script.py +0 -0
  79. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/examples/streamlit.py +0 -0
  80. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/git-cliff-2.7.0/CHANGELOG.md +0 -0
  81. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/git-cliff-2.7.0/LICENSE-APACHE +0 -0
  82. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/git-cliff-2.7.0/LICENSE-MIT +0 -0
  83. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/git-cliff-2.7.0/README.md +0 -0
  84. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/git-cliff-2.7.0/completions/_git-cliff +0 -0
  85. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/git-cliff-2.7.0/completions/_git-cliff.ps1 +0 -0
  86. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/git-cliff-2.7.0/completions/git-cliff.bash +0 -0
  87. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/git-cliff-2.7.0/completions/git-cliff.elv +0 -0
  88. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/git-cliff-2.7.0/completions/git-cliff.fish +0 -0
  89. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/git-cliff-2.7.0/git-cliff-completions +0 -0
  90. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/git-cliff-2.7.0/git-cliff-mangen +0 -0
  91. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/git-cliff-2.7.0/man/git-cliff.1 +0 -0
  92. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/git-cliff-2.7.0-x86_64-unknown-linux-gnu.tar.gz +0 -0
  93. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/github-action-run +0 -0
  94. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/logo.png +0 -0
  95. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/n +0 -0
  96. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/renovate.json +0 -0
  97. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/reports/.keep +0 -0
  98. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/src/oe_python_template/__init__.py +0 -0
  99. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/src/oe_python_template/api.py +0 -0
  100. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/src/oe_python_template/cli.py +0 -0
  101. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/src/oe_python_template/constants.py +0 -0
  102. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/src/oe_python_template/service.py +0 -0
  103. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/template/.act-env-public.jinja +0 -0
  104. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/template/.devcontainer/Dockerfile.jinja +0 -0
  105. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/template/.devcontainer/devcontainer.json.jinja +0 -0
  106. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/template/.devcontainer/onCreateCommand.jinja +0 -0
  107. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/template/.devcontainer/postAttachCommand.jinja +0 -0
  108. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/template/.devcontainer/postCreateCommand.jinja +0 -0
  109. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/template/.env.example.jinja +0 -0
  110. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/template/.github/copilot-instructions.md +0 -0
  111. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/template/.github/dependabot.yml +0 -0
  112. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/template/.github/workflows/codeql.yml +0 -0
  113. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/template/.github/workflows/docker-image-build-publish.yml.jinja +0 -0
  114. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/template/.github/workflows/package-build-publish-release.yml.jinja +0 -0
  115. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/template/.github/workflows/test-and-report.yml.jinja +0 -0
  116. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/template/.gitignore.jinja +0 -0
  117. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/template/.pre-commit-config.yaml.jinja +0 -0
  118. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/template/.python-version +0 -0
  119. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/template/.readthedocs.yml.jinja +0 -0
  120. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/template/.vscode/extensions.json +0 -0
  121. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/template/.vscode/settings.json.jinja +0 -0
  122. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/template/CHANGELOG.md +0 -0
  123. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/template/CODEOWNERS.jinja +0 -0
  124. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/template/CODE_STYLE.md.jinja +0 -0
  125. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/template/Dockerfile.jinja +0 -0
  126. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/template/LICENSE.jinja +0 -0
  127. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/template/README.md +0 -0
  128. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/template/SECURITY.md.jinja +0 -0
  129. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/template/SERVICE_CONNECTIONS.md.jinja +0 -0
  130. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/template/VERSION +0 -0
  131. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/template/codecov.yml.jinja +0 -0
  132. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/template/compose.yaml.jinja +0 -0
  133. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/template/docs/Makefile.jinja +0 -0
  134. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/template/docs/make.bat.jinja +0 -0
  135. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/template/docs/partials/README_footer.md.jinja +0 -0
  136. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/template/docs/partials/README_header.md.jinja +0 -0
  137. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/template/docs/partials/README_main.md.jinja +0 -0
  138. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/template/docs/source/_static/.keep +0 -0
  139. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/template/docs/source/code-style.rst.jinja +0 -0
  140. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/template/docs/source/conf.py.jinja +0 -0
  141. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/template/docs/source/contributing.rst.jinja +0 -0
  142. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/template/docs/source/index.rst.jinja +0 -0
  143. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/template/docs/source/main.rst.jinja +0 -0
  144. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/template/docs/source/reference.rst.jinja +0 -0
  145. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/template/docs/source/release-notes.rst.jinja +0 -0
  146. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/template/docs/source/security.rst.jinja +0 -0
  147. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/template/examples/__init__.py.jinja +0 -0
  148. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/template/examples/notebook.ipynb.jinja +0 -0
  149. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/template/examples/notebook.py.jinja +0 -0
  150. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/template/examples/script.py.jinja +0 -0
  151. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/template/examples/streamlit.py.jinja +0 -0
  152. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/template/github-action-run.jinja +0 -0
  153. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/template/logo.png +0 -0
  154. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/template/n.jinja +0 -0
  155. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/template/pyproject.toml.jinja +0 -0
  156. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/template/renovate.json +0 -0
  157. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/template/reports/.keep +0 -0
  158. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/template/sonar-project.properties.jinja +0 -0
  159. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/template/src/{{ project_name_snake_case }}/__init__.py.jinja +0 -0
  160. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/template/src/{{ project_name_snake_case }}/api.py.jinja +0 -0
  161. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/template/src/{{ project_name_snake_case }}/cli.py.jinja +0 -0
  162. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/template/src/{{ project_name_snake_case }}/constants.py.jinja +0 -0
  163. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/template/src/{{ project_name_snake_case }}/service.py.jinja +0 -0
  164. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/template/tests/__init__.py.jinja +0 -0
  165. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/template/tests/api_test.py.jinja +0 -0
  166. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/template/tests/cli_test.py.jinja +0 -0
  167. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/template/tests/fixtures/.keep +0 -0
  168. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/template/{{_copier_conf.answers_file}}.jinja +0 -0
  169. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/tests/__init__.py +0 -0
  170. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/tests/api_test.py +0 -0
  171. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/tests/cli_test.py +0 -0
  172. {oe_python_template-0.6.16 → oe_python_template-0.6.18}/tests/fixtures/.keep +0 -0
@@ -1,4 +1,4 @@
1
- _commit: v0.6.15-1-gd72f7bd
1
+ _commit: v0.6.17-7-g3aa4b83
2
2
  _src_path: .
3
3
  author_email: helmuthva@gmail.com
4
4
  author_github_username: helmut-hoffer-von-ankershoffen
@@ -1,6 +1,29 @@
1
1
  [🧠 OE Python Template](https://oe-python-template.readthedocs.io/en/latest/)
2
2
 
3
- ## [0.6.16](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/compare/v0.6.15..0.6.16) - 2025-03-18
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
20
+
21
+ ### ⛰️ Features
22
+
23
+ - *(docs_pdf)* Check for latex tooling - ([3c35f28](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/commit/3c35f280652557650e4aa40c8b459ed42c536a65))
24
+
25
+
26
+ ## [0.6.16](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/compare/v0.6.15..v0.6.16) - 2025-03-18
4
27
 
5
28
  ### ⛰️ Features
6
29
 
@@ -88,9 +88,10 @@ uv run nox -s test # run tests
88
88
  uv run nox -s lint # run formatting and linting
89
89
  uv run nox -s audit # run security and license audit, inc. sbom generation
90
90
  uv run nox -s docs # build documentation, output in docs/build/html
91
+ uv run nox -s docs_pdf # locally build pdf manual to docs/build/latex/oe-python-template.pdf
91
92
  ```
92
93
 
93
- As a shortcut, you can run build steps using `./n`:
94
+ As a shortcut, you can run build steps using `./n`, e.g.
94
95
 
95
96
  ```shell
96
97
  ./n test
@@ -137,14 +138,6 @@ Update from template
137
138
  uv run nox -s update_from_template
138
139
  ```
139
140
 
140
- ### Generate PDF manual
141
-
142
- ```shell
143
- brew install mactex # install MacTeX, will take a while and requires sudo
144
- ./n docs_pdf # build latex, then generate pdf from it. Output in docs/build/latex/oe-python-template.pdf
145
- ```
146
-
147
-
148
141
  ## Pull Request Guidelines
149
142
 
150
143
  - Before starting to write code read the [code style guide](CODE_STYLE.md) document for mandatory coding style
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: oe-python-template
3
- Version: 0.6.16
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
@@ -104,9 +104,12 @@ openapi: 3.1.0
104
104
  paths:
105
105
  /echo:
106
106
  post:
107
- description: "Echo back the provided text.\n\nArgs:\n request (EchoRequest):\
108
- \ The request containing the text to echo back.\n\nReturns:\n EchoResponse:\
109
- \ A response containing the echoed text.\n\nRaises:\n 422 Unprocessable\
107
+ description: "Echo back the provided text.\n\nArgs:\n request
108
+ (EchoRequest):\
109
+ \ The request containing the text to echo back.\n\nReturns:\n
110
+ EchoResponse:\
111
+ \ A response containing the echoed text.\n\nRaises:\n 422
112
+ Unprocessable\
110
113
  \ Entity: If text is not provided or empty."
111
114
  operationId: echo_echo_post
112
115
  requestBody:
@@ -133,12 +136,18 @@ paths:
133
136
  - Basics
134
137
  /health:
135
138
  get:
136
- description: "Check the health of the service.\n\nThis endpoint returns the\
137
- \ health status of the service.\nThe health status can be either UP or DOWN.\n\
138
- If the service is healthy, the status will be UP.\nIf the service is unhealthy,\
139
- \ the status will be DOWN and a reason will be provided.\nThe response will\
140
- \ have a 200 OK status code if the service is healthy,\nand a 500 Internal\
141
- \ Server Error status code if the service is unhealthy.\n\nReturns:\n Health:\
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 the\
157
- \ health status of the service.\nThe health status can be either UP or DOWN.\n\
158
- If the service is healthy, the status will be UP.\nIf the service is unhealthy,\
159
- \ the status will be DOWN and a reason will be provided.\nThe response will\
160
- \ have a 200 OK status code if the service is healthy,\nand a 500 Internal\
161
- \ Server Error status code if the service is unhealthy.\n\nReturns:\n Health:\
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 HelloWorldResponse:\
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:
@@ -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 (Utterance):\
108
- \ The request containing the utterance to echo back.\n\nReturns:\n EchoResponse:\
109
- \ A response containing the echoed utterance.\n\nRaises:\n 422 Unprocessable\
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 the\
137
- \ health status of the service.\nThe health status can be either UP or DOWN.\n\
138
- If the service is healthy, the status will be UP.\nIf the service is unhealthy,\
139
- \ the status will be DOWN and a reason will be provided.\nThe response will\
140
- \ have a 200 OK status code if the service is healthy,\nand a 500 Internal\
141
- \ Server Error status code if the service is unhealthy.\n\nReturns:\n Health:\
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 the\
157
- \ health status of the service.\nThe health status can be either UP or DOWN.\n\
158
- If the service is healthy, the status will be UP.\nIf the service is unhealthy,\
159
- \ the status will be DOWN and a reason will be provided.\nThe response will\
160
- \ have a 200 OK status code if the service is healthy,\nand a 500 Internal\
161
- \ Server Error status code if the service is unhealthy.\n\nReturns:\n Health:\
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 HelloWorldResponse:\
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:
@@ -0,0 +1,9 @@
1
+ API V1
2
+ ======
3
+
4
+ .. only:: html
5
+
6
+ .. swagger-plugin:: _static/openapi_v1.yaml
7
+ :full-page:
8
+
9
+ Visit the `Interactive API Documentation <https: //oe-python-template.readthedocs.io/en/latest/api_v1.html>`_
@@ -0,0 +1,9 @@
1
+ API V2
2
+ ======
3
+
4
+ .. only:: html
5
+
6
+ .. swagger-plugin:: _static/openapi_v2.yaml
7
+ :full-page:
8
+
9
+ Visit the `Interactive API Documentation <https://oe-python-template.readthedocs.io/en/latest/api_v2.html>`_
@@ -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.16"
32
+ version = "0.6.18"
33
33
  release = version
34
34
  github_username = "helmut-hoffer-von-ankershoffen"
35
35
  github_repository = "oe-python-template"
@@ -7,11 +7,13 @@ from pathlib import Path
7
7
 
8
8
  import nox
9
9
  import tomli
10
+ from nox.command import CommandFailed
10
11
 
11
12
  nox.options.reuse_existing_virtualenvs = True
12
13
  nox.options.default_venv_backend = "uv"
13
14
 
14
15
  NOT_SKIP_WITH_ACT = "not skip_with_act"
16
+ LATEXMK_VERSION_MIN = 4.86
15
17
 
16
18
 
17
19
  def _setup_venv(session: nox.Session, all_extras: bool = True) -> None:
@@ -84,9 +86,33 @@ def docs(session: nox.Session) -> None:
84
86
 
85
87
  @nox.session(python=["3.13"], default=False)
86
88
  def docs_pdf(session: nox.Session) -> None:
87
- """Setup dev environment post project creation."""
89
+ """Setup dev environment post project creation.""" # noqa: DOC501
88
90
  _setup_venv(session)
89
- session.run("make", "-C", "docs", "latexpdf", external=True)
91
+ try:
92
+ out = session.run("latexmk", "--version", external=True, silent=True)
93
+
94
+ version_match = re.search(r"Version (\d+\.\d+\w*)", str(out))
95
+ if not version_match:
96
+ session.error("Could not determine latexmk version")
97
+
98
+ version_str = version_match.group(1)
99
+
100
+ # Parse version (handle cases like "4.86a")
101
+ match = re.match(r"(\d+\.\d+)", version_str)
102
+ if not match:
103
+ session.error(f"Could not parse version number from '{version_str}'")
104
+ base_version = match.group(1)
105
+
106
+ if float(base_version) < LATEXMK_VERSION_MIN:
107
+ message = f"latexmk version {version_str} is outdated. Please run 'brew upgrade mactex' to upgrade."
108
+ raise ValueError(message) # noqa: TRY301
109
+ session.log(f"latexmk version {version_str} is sufficient")
110
+ session.run("make", "-C", "docs", "latexpdf", external=True)
111
+
112
+ except CommandFailed as e:
113
+ session.error(f"latexmk is not installed or not in PATH: {e}. Please run 'brew install mactex' to install")
114
+ except (ValueError, AttributeError) as e:
115
+ session.error(f"Failed to parse latexmk version information: {e}")
90
116
 
91
117
 
92
118
  @nox.session(python=["3.13"])
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "oe-python-template"
3
- version = "0.6.16"
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.16"
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.16
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
@@ -88,9 +88,10 @@ uv run nox -s test # run tests
88
88
  uv run nox -s lint # run formatting and linting
89
89
  uv run nox -s audit # run security and license audit, inc. sbom generation
90
90
  uv run nox -s docs # build documentation, output in docs/build/html
91
+ uv run nox -s docs_pdf # locally build pdf manual to docs/build/latex/{{ pypi_distribution_name }}.pdf
91
92
  ```
92
93
 
93
- As a shortcut, you can run build steps using `./n`:
94
+ As a shortcut, you can run build steps using `./n`, e.g.
94
95
 
95
96
  ```shell
96
97
  ./n test
@@ -137,14 +138,6 @@ Update from template
137
138
  uv run nox -s update_from_template
138
139
  ```
139
140
 
140
- ### Generate PDF manual
141
-
142
- ```shell
143
- brew install mactex # install MacTeX, will take a while and requires sudo
144
- ./n docs_pdf # build latex, then generate pdf from it. Output in docs/build/latex/{{ pypi_distribution_name }}.pdf
145
- ```
146
-
147
-
148
141
  ## Pull Request Guidelines
149
142
 
150
143
  - Before starting to write code read the [code style guide](CODE_STYLE.md) document for mandatory coding style
@@ -0,0 +1,9 @@
1
+ API V1
2
+ ======
3
+
4
+ .. only:: html
5
+
6
+ .. swagger-plugin:: _static/openapi_v1.yaml
7
+ :full-page:
8
+
9
+ Visit the `Interactive API Documentation <https: //{{ readthedocs_project_key }}.readthedocs.io/en/latest/api_v1.html>`_
@@ -0,0 +1,9 @@
1
+ API V2
2
+ ======
3
+
4
+ .. only:: html
5
+
6
+ .. swagger-plugin:: _static/openapi_v2.yaml
7
+ :full-page:
8
+
9
+ Visit the `Interactive API Documentation <https://{{ readthedocs_project_key }}.readthedocs.io/en/latest/api_v2.html>`_
@@ -7,11 +7,13 @@ from pathlib import Path
7
7
 
8
8
  import nox
9
9
  import tomli
10
+ from nox.command import CommandFailed
10
11
 
11
12
  nox.options.reuse_existing_virtualenvs = True
12
13
  nox.options.default_venv_backend = "uv"
13
14
 
14
15
  NOT_SKIP_WITH_ACT = "not skip_with_act"
16
+ LATEXMK_VERSION_MIN = 4.86
15
17
 
16
18
 
17
19
  def _setup_venv(session: nox.Session, all_extras: bool = True) -> None:
@@ -84,9 +86,33 @@ def docs(session: nox.Session) -> None:
84
86
 
85
87
  @nox.session(python=["3.13"], default=False)
86
88
  def docs_pdf(session: nox.Session) -> None:
87
- """Setup dev environment post project creation."""
89
+ """Setup dev environment post project creation.""" # noqa: DOC501
88
90
  _setup_venv(session)
89
- session.run("make", "-C", "docs", "latexpdf", external=True)
91
+ try:
92
+ out = session.run("latexmk", "--version", external=True, silent=True)
93
+
94
+ version_match = re.search(r"Version (\d+\.\d+\w*)", str(out))
95
+ if not version_match:
96
+ session.error("Could not determine latexmk version")
97
+
98
+ version_str = version_match.group(1)
99
+
100
+ # Parse version (handle cases like "4.86a")
101
+ match = re.match(r"(\d+\.\d+)", version_str)
102
+ if not match:
103
+ session.error(f"Could not parse version number from '{version_str}'")
104
+ base_version = match.group(1)
105
+
106
+ if float(base_version) < LATEXMK_VERSION_MIN:
107
+ message = f"latexmk version {version_str} is outdated. Please run 'brew upgrade mactex' to upgrade."
108
+ raise ValueError(message) # noqa: TRY301
109
+ session.log(f"latexmk version {version_str} is sufficient")
110
+ session.run("make", "-C", "docs", "latexpdf", external=True)
111
+
112
+ except CommandFailed as e:
113
+ session.error(f"latexmk is not installed or not in PATH: {e}. Please run 'brew install mactex' to install")
114
+ except (ValueError, AttributeError) as e:
115
+ session.error(f"Failed to parse latexmk version information: {e}")
90
116
 
91
117
 
92
118
  @nox.session(python=["3.13"])
@@ -2075,7 +2075,7 @@ wheels = [
2075
2075
 
2076
2076
  [[package]]
2077
2077
  name = "oe-python-template"
2078
- version = "0.6.16"
2078
+ version = "0.6.18"
2079
2079
  source = { editable = "." }
2080
2080
  dependencies = [
2081
2081
  { name = "fastapi", extra = ["all", "standard"] },
@@ -1,8 +0,0 @@
1
- ## [0.6.16](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/compare/v0.6.15..v0.6.16) - 2025-03-18
2
-
3
- ### ⛰️ Features
4
-
5
- - *(codeql)* Enable security-extended and security-and-quality - ([0dead53](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/commit/0dead53a748967132eb80f570b44d038a88788e5))
6
-
7
-
8
-
@@ -1 +0,0 @@
1
- 0.6.16