oe-python-template 0.0.1__tar.gz → 0.0.2__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 (139) hide show
  1. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/.copier-answers.yml +1 -1
  2. oe_python_template-0.0.2/CHANGELOG.md +34 -0
  3. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/PKG-INFO +57 -20
  4. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/README.md +56 -19
  5. oe_python_template-0.0.2/RELEASE_NOTES.md +34 -0
  6. oe_python_template-0.0.2/TEMPLATE.md +46 -0
  7. oe_python_template-0.0.2/VERSION +1 -0
  8. oe_python_template-0.0.2/bin/git-cliff +0 -0
  9. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/docs/source/conf.py +2 -2
  10. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/examples/jupyter.ipynb +6 -9
  11. oe_python_template-0.0.2/git-cliff-2.7.0/CHANGELOG.md +1513 -0
  12. oe_python_template-0.0.2/git-cliff-2.7.0/LICENSE-APACHE +176 -0
  13. oe_python_template-0.0.2/git-cliff-2.7.0/LICENSE-MIT +22 -0
  14. oe_python_template-0.0.2/git-cliff-2.7.0/README.md +95 -0
  15. oe_python_template-0.0.2/git-cliff-2.7.0/completions/_git-cliff +86 -0
  16. oe_python_template-0.0.2/git-cliff-2.7.0/completions/_git-cliff.ps1 +84 -0
  17. oe_python_template-0.0.2/git-cliff-2.7.0/completions/git-cliff.bash +190 -0
  18. oe_python_template-0.0.2/git-cliff-2.7.0/completions/git-cliff.elv +78 -0
  19. oe_python_template-0.0.2/git-cliff-2.7.0/completions/git-cliff.fish +39 -0
  20. oe_python_template-0.0.2/git-cliff-2.7.0/git-cliff-completions +0 -0
  21. oe_python_template-0.0.2/git-cliff-2.7.0/git-cliff-mangen +0 -0
  22. oe_python_template-0.0.2/git-cliff-2.7.0/man/git-cliff.1 +214 -0
  23. oe_python_template-0.0.2/git-cliff-2.7.0-x86_64-unknown-linux-gnu.tar.gz +0 -0
  24. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/noxfile.py +1 -1
  25. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/pyproject.toml +4 -4
  26. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/sonar-project.properties +2 -2
  27. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/src/oe_python_template/__init__.py +1 -2
  28. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/src/oe_python_template/cli.py +1 -1
  29. oe_python_template-0.0.1/.devcontainer/devcontainer.json → oe_python_template-0.0.2/template/.devcontainer/devcontainer.json.jinja +1 -0
  30. {oe_python_template-0.0.1 → oe_python_template-0.0.2/template}/.vscode/extensions.json +1 -0
  31. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/template/pyproject.toml.jinja +3 -3
  32. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/template/sonar-project.properties.jinja +1 -1
  33. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/template/tests/cli_test.py.jinja +1 -4
  34. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/tests/cli_test.py +6 -8
  35. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/uv.lock +9 -9
  36. oe_python_template-0.0.1/TEMPLATE.md +0 -14
  37. oe_python_template-0.0.1/template/CHANGELOG.md +0 -0
  38. oe_python_template-0.0.1/template/VERSION +0 -1
  39. oe_python_template-0.0.1/template/examples/streamlit.webm +0 -0
  40. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/.act-env +0 -0
  41. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/.act-secret +0 -0
  42. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/.devcontainer/Dockerfile +0 -0
  43. /oe_python_template-0.0.1/template/.devcontainer/devcontainer.json.jinja → /oe_python_template-0.0.2/.devcontainer/devcontainer.json +0 -0
  44. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/.devcontainer/onCreateCommand +0 -0
  45. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/.devcontainer/postAttachCommand +0 -0
  46. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/.devcontainer/postCreateCommand +0 -0
  47. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/.env.example +0 -0
  48. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/.github/workflows/docker-image-build-publish.yml +0 -0
  49. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/.github/workflows/package-build-publish-release.yml +0 -0
  50. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/.github/workflows/test-and-report.yml +0 -0
  51. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/.gitignore +0 -0
  52. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/.pre-commit-config.yaml +0 -0
  53. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/.python-version +0 -0
  54. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/.readthedocs.yml +0 -0
  55. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/.secrets.baseline +0 -0
  56. {oe_python_template-0.0.1/template → oe_python_template-0.0.2}/.vscode/extensions.json +0 -0
  57. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/.vscode/settings.json +0 -0
  58. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/CODEOWNERS +0 -0
  59. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/CONTRIBUTING.md +0 -0
  60. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/Dockerfile +0 -0
  61. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/LICENSE +0 -0
  62. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/_readme_footer.md +0 -0
  63. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/_readme_header.md +0 -0
  64. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/_readme_main.md +0 -0
  65. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/bump +0 -0
  66. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/codecov.yml +0 -0
  67. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/compose.yaml +0 -0
  68. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/copier.yml +0 -0
  69. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/docs/Makefile +0 -0
  70. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/docs/make.bat +0 -0
  71. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/docs/source/_static/.keep +0 -0
  72. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/docs/source/contributing.rst +0 -0
  73. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/docs/source/index.rst +0 -0
  74. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/docs/source/latexmkrc +0 -0
  75. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/docs/source/main.rst +0 -0
  76. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/docs/source/reference.rst +0 -0
  77. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/docs/source/release-notes.rst +0 -0
  78. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/examples/__init__.py +0 -0
  79. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/examples/script.py +0 -0
  80. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/examples/streamlit.py +0 -0
  81. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/github-action-run +0 -0
  82. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/latexmkrc +0 -0
  83. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/logo.png +0 -0
  84. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/src/oe_python_template/constants.py +0 -0
  85. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/src/oe_python_template/service.py +0 -0
  86. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/template/.act-env.jinja +0 -0
  87. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/template/.act-secret.jinja +0 -0
  88. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/template/.devcontainer/Dockerfile.jinja +0 -0
  89. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/template/.devcontainer/onCreateCommand.jinja +0 -0
  90. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/template/.devcontainer/postAttachCommand.jinja +0 -0
  91. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/template/.devcontainer/postCreateCommand.jinja +0 -0
  92. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/template/.env.example.jinja +0 -0
  93. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/template/.github/workflows/docker-image-build-publish.yml.jinja +0 -0
  94. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/template/.github/workflows/package-build-publish-release.yml.jinja +0 -0
  95. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/template/.github/workflows/test-and-report.yml.jinja +0 -0
  96. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/template/.gitignore.jinja +0 -0
  97. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/template/.pre-commit-config.yaml.jinja +0 -0
  98. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/template/.python-version +0 -0
  99. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/template/.readthedocs.yml.jinja +0 -0
  100. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/template/.vscode/settings.json +0 -0
  101. {oe_python_template-0.0.1 → oe_python_template-0.0.2/template}/CHANGELOG.md +0 -0
  102. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/template/CODEOWNERS.jinja +0 -0
  103. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/template/CONTRIBUTING.md.jinja +0 -0
  104. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/template/Dockerfile.jinja +0 -0
  105. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/template/LICENSE.jinja +0 -0
  106. {oe_python_template-0.0.1 → oe_python_template-0.0.2/template}/VERSION +0 -0
  107. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/template/_readme_footer.md.jinja +0 -0
  108. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/template/_readme_header.md.jinja +0 -0
  109. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/template/_readme_main.md.jinja +0 -0
  110. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/template/bump.jinja +0 -0
  111. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/template/codecov.yml.jinja +0 -0
  112. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/template/compose.yaml.jinja +0 -0
  113. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/template/docs/Makefile.jinja +0 -0
  114. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/template/docs/make.bat.jinja +0 -0
  115. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/template/docs/source/_static/.keep +0 -0
  116. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/template/docs/source/conf.py.jinja +0 -0
  117. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/template/docs/source/contributing.rst.jinja +0 -0
  118. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/template/docs/source/index.rst.jinja +0 -0
  119. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/template/docs/source/latexmkrc.jinja +0 -0
  120. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/template/docs/source/main.rst.jinja +0 -0
  121. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/template/docs/source/reference.rst.jinja +0 -0
  122. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/template/docs/source/release-notes.rst.jinja +0 -0
  123. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/template/examples/__init__.py.jinja +0 -0
  124. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/template/examples/jupyter.ipynb.jinja +0 -0
  125. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/template/examples/script.py.jinja +0 -0
  126. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/template/examples/streamlit.py.jinja +0 -0
  127. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/template/github-action-run.jinja +0 -0
  128. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/template/latexmkrc.jinja +0 -0
  129. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/template/logo.png +0 -0
  130. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/template/noxfile.py.jinja +0 -0
  131. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/template/src/{{ project_name_snake_case }}/__init__.py.jinja +0 -0
  132. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/template/src/{{ project_name_snake_case }}/cli.py.jinja +0 -0
  133. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/template/src/{{ project_name_snake_case }}/constants.py.jinja +0 -0
  134. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/template/src/{{ project_name_snake_case }}/service.py.jinja +0 -0
  135. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/template/tests/__init__.py.jinja +0 -0
  136. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/template/tests/fixtures/.keep +0 -0
  137. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/template/{{_copier_conf.answers_file}}.jinja +0 -0
  138. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/tests/__init__.py +0 -0
  139. {oe_python_template-0.0.1 → oe_python_template-0.0.2}/tests/fixtures/.keep +0 -0
@@ -1,4 +1,4 @@
1
- _commit: 4004dcc
1
+ _commit: 50d93f9
2
2
  _src_path: .
3
3
  author_email: helmuthva@gmail.com
4
4
  author_github_username: helmut-hoffer-von-ankershoffen
@@ -0,0 +1,34 @@
1
+ [🧠 OE Python Template](https://oe-python-template.readthedocs.io/)
2
+
3
+ ## [0.0.2] - 2025-03-02
4
+
5
+ ### ⛰️ Features
6
+
7
+ - Various - ([5b74351](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/commit/5b74351e71e2ca6cb7305bcabdbe802df55c4bae))
8
+ - Spike - ([21607c9](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/commit/21607c955cd789dbee6171d287e21f45f039c392))
9
+
10
+ ### 🐛 Bug Fixes
11
+
12
+ - *(Docker)* Runnability - ([164ab1f](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/commit/164ab1fd7ec517d52587cf7f27f0051bdb6ce319))
13
+ - Initial semver - ([9f6fc12](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/commit/9f6fc125c0e24cc0e31580de94db8beb926c8e36))
14
+ - Test - ([52faa74](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/commit/52faa74b2d448b13dc12a4d8f706b34334643d00))
15
+ - Various - ([f99445f](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/commit/f99445f85b346e0eb69a13c98c2ed311fd4cfafe))
16
+ - Chugging along - ([d59fa54](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/commit/d59fa548abc38e88a4605f9588d57bbf9d70d1dc))
17
+
18
+ ### 🚜 Refactor
19
+
20
+ - *(gitignore)* Section header - ([4ec3972](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/commit/4ec39725978a1e2a3a6138136313365a7f7ee792))
21
+ - .gitignore - ([ed7d503](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/commit/ed7d503f3c8b6ff0be55b149e1a02729b4097629))
22
+
23
+ ### ⚙️ Miscellaneous Tasks
24
+
25
+ - *(SonarQube)* Wire - ([be10859](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/commit/be108592780cc12c3e6784737a70921c8b65c966))
26
+ - Deps - ([99fba1c](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/commit/99fba1cba195dbbf5bb14c617c1a3bd4124771c5))
27
+ - Clean post self-updating - ([4a8615a](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/commit/4a8615a9a33d61a7b71d7a8ceff2695de6bf94bd))
28
+ - Act - ([650a1ba](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/commit/650a1bac5a76ebafded4fda7f98e6e81cc7a8426))
29
+
30
+ ## New Contributors ❤️
31
+
32
+ * @helmut-hoffer-von-ankershoffen made their first contribution
33
+
34
+
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: oe-python-template
3
- Version: 0.0.1
3
+ Version: 0.0.2
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/
6
6
  Project-URL: Documentation, https://oe-python-template.readthedocs.io/
@@ -126,9 +126,9 @@ uvx oe-python-template command --help # all options for command
126
126
 
127
127
  * Copier template to scaffold Python projects compliant with best practices and modern tooling.
128
128
  * Various Examples:
129
+ - [Simple Python script]https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/blob/main/examples/script.py)
129
130
  - [Streamlit web application](https://oe-python-template.streamlit.app/) deployed on [Streamlit Community Cloud](https://streamlit.io/cloud)
130
131
  - [Jupyter notebook](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/blob/main/examples/jupyter.ipynb)
131
- - [Simple Python script]https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/blob/main/examples/script.py)
132
132
  * [Complete reference documenation](https://oe-python-template.readthedocs.io/en/latest/reference.html) on Read the Docs
133
133
  * [Transparent test coverage](https://app.codecov.io/gh/helmut-hoffer-von-ankershoffen/oe-python-template) including unit and E2E tests (reported on Codecov)
134
134
  * Matrix tested with [multiple python versions](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/blob/main/noxfile.py) to ensure compatibility (powered by [Nox](https://nox.thea.codes/en/stable/))
@@ -140,28 +140,51 @@ uvx oe-python-template command --help # all options for command
140
140
 
141
141
  ## Usage Examples
142
142
 
143
- ### Streamlit App
143
+ ### Minimal Python Script:
144
144
 
145
- [Try it out!](https://oe-python-template.streamlit.app) - [Show the code](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/blob/main/examples/streamlit.py)
145
+ ```python
146
+ """Example script demonstrating the usage of the service provided by OE Python Template."""
146
147
 
148
+ from dotenv import load_dotenv
149
+ from rich.console import Console
147
150
 
148
- ### Minimal Python Script:
151
+ from oe_python_template import Service
149
152
 
150
- ```python
151
- """
152
- Example script demonstrating the usage of OE Python Template.
153
+ console = Console()
153
154
 
154
- """
155
+ load_dotenv()
155
156
 
156
- print("Hello World")
157
+ message = Service.get_hello_world()
158
+ console.print(f"[blue]{message}[/blue]")
157
159
  ```
158
160
 
159
161
  [Show script code](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/blob/main/examples/script.py) - [Read the reference documentation](https://oe-python-template.readthedocs.io/en/latest/reference.html)
160
162
 
163
+ ### Streamlit App
164
+
165
+ Serve the functionality provided by OE Python Template in the web by easily integrating the service into a Streamlit application.
166
+
167
+ [Try it out!](https://oe-python-template.streamlit.app) - [Show the code](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/blob/main/examples/streamlit.py)
168
+
169
+ ... or serve the app locally
170
+ ```shell
171
+ uv sync --all-extras # Install streamlit dependency part of the examples extra, see pyproject.toml
172
+ uv run streamlit run examples/streamlit.py # Serve on localhost:8501, opens browser
173
+ ```
174
+
161
175
  ## Jupyter Notebook
162
176
 
163
177
  [Show notebook code](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/blob/main/examples/jupyter.ipynb)
164
178
 
179
+ ... or run within VSCode
180
+
181
+ ```shell
182
+ uv sync --all-extras # Install ipykernel dependency part of the examples extra, see pyproject.toml
183
+ ```
184
+ Install the [Jupyter extension for VSCode](https://marketplace.visualstudio.com/items?itemName=ms-toolsai.jupyter)
185
+
186
+ Click on `examples/jupyter.ipynb` in VSCode and run it.
187
+
165
188
  ## Command Line Interface (CLI)
166
189
 
167
190
  ### Run with [uvx](https://docs.astral.sh/uv/guides/tools/)
@@ -172,33 +195,47 @@ Show available commands:
172
195
  uvx oe-python-template --help
173
196
  ```
174
197
 
175
- Execute command:
198
+ Execute commands:
176
199
 
177
200
  ```shell
178
- uvx oe-python-template command "Lorem Ipsum"
201
+ uvx oe-python-template hello-world
202
+ uvx oe-python-template hello-world --json
203
+ uvx oe-python-template echo "Lorem Ipsum"
179
204
  ```
180
205
 
181
- ### Run with Docker
206
+ ### Environment
182
207
 
183
- Note: Replace ENV_KEY_TEST with Lorem Ipsum.
208
+ The service loads environment variables including support for .env files.
184
209
 
185
- Show available commands:
210
+ ```shell
211
+ cp .env.example .env # copy example file
212
+ echo "THE_VAR=MY_VALUE" > .env # overwrite with your values
213
+ ```
214
+
215
+ Now run the usage examples again.
216
+
217
+ ### Run with Docker
186
218
 
187
- ```bash
219
+ You can as well run the CLI within Docker.
220
+
221
+ ```shell
188
222
  docker run helmuthva/oe-python-template --help
223
+ docker run helmuthva/oe-python-template hello-world
224
+ docker run helmuthva/oe-python-template hello-world --json
225
+ docker run helmuthva/oe-python-template echo "Lorem"
189
226
  ```
190
227
 
191
228
  Execute command:
192
229
 
193
- ```bash
194
- docker run --env ENV_KEY_TEST=ENV_VALUE_TEST helmuthva/oe-python-template command "Lorem Ipsum"
230
+ ```shell
231
+ docker run --env THE_VAR=MY_VALUE helmuthva/oe-python-template echo "Lorem Ipsum"
195
232
  ```
196
233
 
197
234
  Or use docker compose
198
235
 
199
- File .env is passed through
236
+ The .env is passed through from the host to the Docker container.
200
237
 
201
- ```bash
238
+ ```shell
202
239
  docker compose up
203
240
  docker compose run oe-python-template --help
204
241
  ```
@@ -67,9 +67,9 @@ uvx oe-python-template command --help # all options for command
67
67
 
68
68
  * Copier template to scaffold Python projects compliant with best practices and modern tooling.
69
69
  * Various Examples:
70
+ - [Simple Python script]https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/blob/main/examples/script.py)
70
71
  - [Streamlit web application](https://oe-python-template.streamlit.app/) deployed on [Streamlit Community Cloud](https://streamlit.io/cloud)
71
72
  - [Jupyter notebook](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/blob/main/examples/jupyter.ipynb)
72
- - [Simple Python script]https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/blob/main/examples/script.py)
73
73
  * [Complete reference documenation](https://oe-python-template.readthedocs.io/en/latest/reference.html) on Read the Docs
74
74
  * [Transparent test coverage](https://app.codecov.io/gh/helmut-hoffer-von-ankershoffen/oe-python-template) including unit and E2E tests (reported on Codecov)
75
75
  * Matrix tested with [multiple python versions](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/blob/main/noxfile.py) to ensure compatibility (powered by [Nox](https://nox.thea.codes/en/stable/))
@@ -81,28 +81,51 @@ uvx oe-python-template command --help # all options for command
81
81
 
82
82
  ## Usage Examples
83
83
 
84
- ### Streamlit App
84
+ ### Minimal Python Script:
85
85
 
86
- [Try it out!](https://oe-python-template.streamlit.app) - [Show the code](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/blob/main/examples/streamlit.py)
86
+ ```python
87
+ """Example script demonstrating the usage of the service provided by OE Python Template."""
87
88
 
89
+ from dotenv import load_dotenv
90
+ from rich.console import Console
88
91
 
89
- ### Minimal Python Script:
92
+ from oe_python_template import Service
90
93
 
91
- ```python
92
- """
93
- Example script demonstrating the usage of OE Python Template.
94
+ console = Console()
94
95
 
95
- """
96
+ load_dotenv()
96
97
 
97
- print("Hello World")
98
+ message = Service.get_hello_world()
99
+ console.print(f"[blue]{message}[/blue]")
98
100
  ```
99
101
 
100
102
  [Show script code](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/blob/main/examples/script.py) - [Read the reference documentation](https://oe-python-template.readthedocs.io/en/latest/reference.html)
101
103
 
104
+ ### Streamlit App
105
+
106
+ Serve the functionality provided by OE Python Template in the web by easily integrating the service into a Streamlit application.
107
+
108
+ [Try it out!](https://oe-python-template.streamlit.app) - [Show the code](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/blob/main/examples/streamlit.py)
109
+
110
+ ... or serve the app locally
111
+ ```shell
112
+ uv sync --all-extras # Install streamlit dependency part of the examples extra, see pyproject.toml
113
+ uv run streamlit run examples/streamlit.py # Serve on localhost:8501, opens browser
114
+ ```
115
+
102
116
  ## Jupyter Notebook
103
117
 
104
118
  [Show notebook code](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/blob/main/examples/jupyter.ipynb)
105
119
 
120
+ ... or run within VSCode
121
+
122
+ ```shell
123
+ uv sync --all-extras # Install ipykernel dependency part of the examples extra, see pyproject.toml
124
+ ```
125
+ Install the [Jupyter extension for VSCode](https://marketplace.visualstudio.com/items?itemName=ms-toolsai.jupyter)
126
+
127
+ Click on `examples/jupyter.ipynb` in VSCode and run it.
128
+
106
129
  ## Command Line Interface (CLI)
107
130
 
108
131
  ### Run with [uvx](https://docs.astral.sh/uv/guides/tools/)
@@ -113,33 +136,47 @@ Show available commands:
113
136
  uvx oe-python-template --help
114
137
  ```
115
138
 
116
- Execute command:
139
+ Execute commands:
117
140
 
118
141
  ```shell
119
- uvx oe-python-template command "Lorem Ipsum"
142
+ uvx oe-python-template hello-world
143
+ uvx oe-python-template hello-world --json
144
+ uvx oe-python-template echo "Lorem Ipsum"
120
145
  ```
121
146
 
122
- ### Run with Docker
147
+ ### Environment
123
148
 
124
- Note: Replace ENV_KEY_TEST with Lorem Ipsum.
149
+ The service loads environment variables including support for .env files.
125
150
 
126
- Show available commands:
151
+ ```shell
152
+ cp .env.example .env # copy example file
153
+ echo "THE_VAR=MY_VALUE" > .env # overwrite with your values
154
+ ```
155
+
156
+ Now run the usage examples again.
157
+
158
+ ### Run with Docker
127
159
 
128
- ```bash
160
+ You can as well run the CLI within Docker.
161
+
162
+ ```shell
129
163
  docker run helmuthva/oe-python-template --help
164
+ docker run helmuthva/oe-python-template hello-world
165
+ docker run helmuthva/oe-python-template hello-world --json
166
+ docker run helmuthva/oe-python-template echo "Lorem"
130
167
  ```
131
168
 
132
169
  Execute command:
133
170
 
134
- ```bash
135
- docker run --env ENV_KEY_TEST=ENV_VALUE_TEST helmuthva/oe-python-template command "Lorem Ipsum"
171
+ ```shell
172
+ docker run --env THE_VAR=MY_VALUE helmuthva/oe-python-template echo "Lorem Ipsum"
136
173
  ```
137
174
 
138
175
  Or use docker compose
139
176
 
140
- File .env is passed through
177
+ The .env is passed through from the host to the Docker container.
141
178
 
142
- ```bash
179
+ ```shell
143
180
  docker compose up
144
181
  docker compose run oe-python-template --help
145
182
  ```
@@ -0,0 +1,34 @@
1
+ [🧠 OE Python Template](https://oe-python-template.readthedocs.io/)
2
+
3
+ ## [0.0.2] - 2025-03-02
4
+
5
+ ### ⛰️ Features
6
+
7
+ - Various - ([5b74351](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/commit/5b74351e71e2ca6cb7305bcabdbe802df55c4bae))
8
+ - Spike - ([21607c9](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/commit/21607c955cd789dbee6171d287e21f45f039c392))
9
+
10
+ ### 🐛 Bug Fixes
11
+
12
+ - *(Docker)* Runnability - ([164ab1f](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/commit/164ab1fd7ec517d52587cf7f27f0051bdb6ce319))
13
+ - Initial semver - ([9f6fc12](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/commit/9f6fc125c0e24cc0e31580de94db8beb926c8e36))
14
+ - Test - ([52faa74](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/commit/52faa74b2d448b13dc12a4d8f706b34334643d00))
15
+ - Various - ([f99445f](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/commit/f99445f85b346e0eb69a13c98c2ed311fd4cfafe))
16
+ - Chugging along - ([d59fa54](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/commit/d59fa548abc38e88a4605f9588d57bbf9d70d1dc))
17
+
18
+ ### 🚜 Refactor
19
+
20
+ - *(gitignore)* Section header - ([4ec3972](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/commit/4ec39725978a1e2a3a6138136313365a7f7ee792))
21
+ - .gitignore - ([ed7d503](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/commit/ed7d503f3c8b6ff0be55b149e1a02729b4097629))
22
+
23
+ ### ⚙️ Miscellaneous Tasks
24
+
25
+ - *(SonarQube)* Wire - ([be10859](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/commit/be108592780cc12c3e6784737a70921c8b65c966))
26
+ - Deps - ([99fba1c](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/commit/99fba1cba195dbbf5bb14c617c1a3bd4124771c5))
27
+ - Clean post self-updating - ([4a8615a](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/commit/4a8615a9a33d61a7b71d7a8ceff2695de6bf94bd))
28
+ - Act - ([650a1ba](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template/commit/650a1bac5a76ebafded4fda7f98e6e81cc7a8426))
29
+
30
+ ## New Contributors ❤️
31
+
32
+ * @helmut-hoffer-von-ankershoffen made their first contribution
33
+
34
+
@@ -0,0 +1,46 @@
1
+ # Readme of the template
2
+
3
+ ## Setup service connections
4
+
5
+ ### Reporting code coverage via CodeCov
6
+
7
+ 1. Sign-Up at https://app.codecov.io/
8
+ 2. Configure via https://app.codecov.io/gh/{{ github_repository_owner }}
9
+ 3. Copy value of `CODECOV_TOKEN` into your clipboard
10
+ 4. Goto {{ github_repository_url_https }}/settings/secrets/actions/new and create a new repository secret called `CODECOV_TOKEN`, pasting the token from your clipboard as value
11
+ 5. Re-run the `CI / test` GitHub job in case you tried before and it failed as Codecov was not yet wired up
12
+
13
+ ### Analyzing code quality and security analysis via SonarQube cloud
14
+
15
+ 1. Sign-Up at https://sonarcloud.io
16
+ 2. Grant access to your new repo via https://github.com/settings/installations -> Configure
17
+ 3. Goto https://sonarcloud.io/projects/create and select the repo
18
+ 4. Select Previous Code when prompted
19
+ 5. Configure by going to https://sonarcloud.io/project/configuration?id={{ sonarqube_key }} and clicking on "With GitHub Actions". Copy the value of `SONAR_TOKEN` into your clipboard.
20
+ 6. Goto {{ github_repository_url_https }}/settings/secrets/actions/new and create a new repository secret called `SONAR_TOKEN`, pasting the token from your clipboard as the value
21
+ 7. Goto https://sonarcloud.io/project/settings?id={{ sonarqube_key }} and select "Quality Gate" in the left menu. Select "Sonar way" as default quality gate.
22
+ 8. Re-run the `CI / test` GitHub job in case you tried before and it failed as SonarQube was not yet wired up
23
+
24
+ ### Publishing package to Python Package Index (PyPI)
25
+
26
+ 1. Execute `uv run build`. This will generate the build files (wheel and tar.gz) in the `dist` folder
27
+ 2. Sign-Up at https://pypi.org/
28
+ 3. Goto https://pypi.org/manage/account/ and create an API token of scope "Entire account", calling it {{ github_repository_name }}. Copy the value of the token into your clipboard.
29
+ 4. Execute `uv run publish`, entering __token__ as username and paste the token from your clipboard as password. This will register your package on PyPI and upload the build files
30
+ 5. Goto https://pypi.org/manage/account/ again and delete the previously created token {{ github_repository_name }} of scope "Entire account".
31
+ 6. Now create an new API token, again called {{ github_repository_name }}, but this time of scope "Project: {{ github_repository_name }}". Copy the token into your clipboard.
32
+ 7. Goto {{ github_repository_url_https }}/settings/secrets/actions/new and delete the previously created token.
33
+ 8. Then create a new repository secret called `UV_PUBLISH_TOKEN`, pasting the token from your clipboard as value
34
+ 9. Re-run the `CI / publish` GitHub job in case you tried before and it failed as PyPI was not yet wired up
35
+
36
+ ### Publishing Docker images to Docker Hub (docker.io)
37
+
38
+ 1. Sign-Up at https://hub.docker.com/
39
+ 2. Click on your avatar or profile pic and copy the username belwo that into your clipboard.
40
+ 3. Goto {{ github_repository_url_https }}/settings/secrets/actions/new and create a new repository secret called `DOCKER_LOGIN`, setting your username at Docker Hub as the value
41
+ 4. Goto https://app.docker.com/settings/personal-access-tokens/create and create a new access token setting the description to {{ github_repository_name }}, permissions Read & Write & Delete. Copy the value of the token into your clipboard.
42
+ 5. Goto {{ github_repository_url_https }}/settings/secrets/actions/new and create a new repository secret called `DOCKER_PASSWORD`, pasting the token from your clipboard as the value
43
+
44
+ ### Publishing Docker images to GitHub Container Registry (ghcr.io)
45
+
46
+ 1. This just works, no further setup required.
@@ -0,0 +1 @@
1
+ 0.0.2
Binary file
@@ -25,7 +25,7 @@ extensions = [
25
25
  project = "oe-python-template"
26
26
  author = "Helmut Hoffer von Ankershoffen"
27
27
  copyright = f" (c) 2025-{datetime.now(UTC).year}, {author}" # noqa: A001
28
- version = "0.0.1"
28
+ version = "0.0.2"
29
29
  release = version
30
30
  github_username = "helmut-hoffer-von-ankershoffen"
31
31
  github_repository = "oe-python-template"
@@ -74,7 +74,7 @@ html_static_path = ["_static"]
74
74
  html_logo = "../../logo.png"
75
75
  html_theme_options = {
76
76
  "announcement": (
77
- '<a target="_blank" href="https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template">GitHub</a> - ' # noqa: E501
77
+ '<a target="_blank" href="https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template">GitHub</a> - '
78
78
  '<a target="_blank" href="https://pypi.org/project/oe-python-template">PyPI</a> - '
79
79
  '<a target="_blank" href="https://hub.docker.com/r/helmuthva/oe-python-template/tags">Docker</a> - '
80
80
  '<a target="_blank" href="https://sonarcloud.io/summary/new_code?id=helmut-hoffer-von-ankershoffen_oe-python-template">SonarQube</a> - ' # noqa: E501
@@ -2,18 +2,15 @@
2
2
  "cells": [
3
3
  {
4
4
  "cell_type": "code",
5
- "execution_count": 13,
5
+ "execution_count": 1,
6
6
  "metadata": {},
7
7
  "outputs": [
8
8
  {
9
- "data": {
10
- "text/plain": [
11
- "'Hello, world!'"
12
- ]
13
- },
14
- "execution_count": 13,
15
- "metadata": {},
16
- "output_type": "execute_result"
9
+ "name": "stdout",
10
+ "output_type": "stream",
11
+ "text": [
12
+ "Hello, world! The value of THE_VAR is not defined\n"
13
+ ]
17
14
  }
18
15
  ],
19
16
  "source": [