oe-python-template-example 0.1.12__tar.gz → 0.1.14__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 (96) hide show
  1. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/.copier-answers.yml +1 -1
  2. oe_python_template_example-0.1.14/.coverage +0 -0
  3. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/.github/workflows/package-build-publish-release.yml +1 -1
  4. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/.gitignore +4 -10
  5. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/CHANGELOG.md +7 -0
  6. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/CONTRIBUTING.md +20 -8
  7. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/PKG-INFO +65 -86
  8. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/README.md +64 -85
  9. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/SECURITY.md +3 -3
  10. oe_python_template_example-0.1.14/VERSION +1 -0
  11. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/_readme_header.md +3 -2
  12. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/_readme_main.md +61 -83
  13. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/docs/source/conf.py +1 -1
  14. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/docs/source/index.rst +2 -1
  15. oe_python_template_example-0.1.14/docs/source/security.rst +1 -0
  16. oe_python_template_example-0.1.14/n +27 -0
  17. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/noxfile.py +75 -18
  18. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/pyproject.toml +5 -5
  19. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/sonar-project.properties +1 -1
  20. oe_python_template_example-0.1.14/tests/fixtures/.keep +0 -0
  21. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/uv.lock +1 -1
  22. oe_python_template_example-0.1.12/VERSION +0 -1
  23. oe_python_template_example-0.1.12/bump +0 -7
  24. oe_python_template_example-0.1.12/docs/source/latexmkrc +0 -11
  25. oe_python_template_example-0.1.12/latexmkrc +0 -11
  26. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/.act-env-public +0 -0
  27. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/.devcontainer/Dockerfile +0 -0
  28. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/.devcontainer/devcontainer.json +0 -0
  29. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/.devcontainer/onCreateCommand +0 -0
  30. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/.devcontainer/postAttachCommand +0 -0
  31. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/.devcontainer/postCreateCommand +0 -0
  32. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/.env.example +0 -0
  33. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/.github/dependabot.yml +0 -0
  34. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/.github/workflows/codeql.yml +0 -0
  35. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/.github/workflows/docker-image-build-publish.yml +0 -0
  36. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/.github/workflows/test-and-report.yml +0 -0
  37. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/.pre-commit-config.yaml +0 -0
  38. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/.python-version +0 -0
  39. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/.readthedocs.yml +0 -0
  40. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/.secrets.baseline +0 -0
  41. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/.vscode/extensions.json +0 -0
  42. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/.vscode/settings.json +0 -0
  43. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/CODEOWNERS +0 -0
  44. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/Dockerfile +0 -0
  45. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/LICENSE +0 -0
  46. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/RELEASE_NOTES.md +0 -0
  47. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/SERVICE_CONNECTIONS.md +0 -0
  48. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/_readme_footer.md +0 -0
  49. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/bin/git-cliff +0 -0
  50. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/codecov.yml +0 -0
  51. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/compose.yaml +0 -0
  52. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/docs/Makefile +0 -0
  53. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/docs/make.bat +0 -0
  54. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/docs/source/_static/.keep +0 -0
  55. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/docs/source/_static/openapi.json +0 -0
  56. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/docs/source/_static/openapi.yaml +0 -0
  57. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/docs/source/_static/openapi_v1.json +0 -0
  58. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/docs/source/_static/openapi_v1.yaml +0 -0
  59. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/docs/source/_static/openapi_v2.json +0 -0
  60. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/docs/source/_static/openapi_v2.yaml +0 -0
  61. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/docs/source/api_v1.rst +0 -0
  62. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/docs/source/api_v2.rst +0 -0
  63. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/docs/source/contributing.rst +0 -0
  64. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/docs/source/main.rst +0 -0
  65. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/docs/source/reference.rst +0 -0
  66. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/docs/source/release-notes.rst +0 -0
  67. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/examples/__init__.py +0 -0
  68. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/examples/notebook.ipynb +0 -0
  69. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/examples/notebook.py +0 -0
  70. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/examples/script.py +0 -0
  71. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/examples/streamlit.py +0 -0
  72. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/git-cliff-2.7.0/CHANGELOG.md +0 -0
  73. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/git-cliff-2.7.0/LICENSE-APACHE +0 -0
  74. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/git-cliff-2.7.0/LICENSE-MIT +0 -0
  75. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/git-cliff-2.7.0/README.md +0 -0
  76. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/git-cliff-2.7.0/completions/_git-cliff +0 -0
  77. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/git-cliff-2.7.0/completions/_git-cliff.ps1 +0 -0
  78. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/git-cliff-2.7.0/completions/git-cliff.bash +0 -0
  79. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/git-cliff-2.7.0/completions/git-cliff.elv +0 -0
  80. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/git-cliff-2.7.0/completions/git-cliff.fish +0 -0
  81. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/git-cliff-2.7.0/git-cliff-completions +0 -0
  82. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/git-cliff-2.7.0/git-cliff-mangen +0 -0
  83. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/git-cliff-2.7.0/man/git-cliff.1 +0 -0
  84. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/git-cliff-2.7.0-x86_64-unknown-linux-gnu.tar.gz +0 -0
  85. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/github-action-run +0 -0
  86. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/logo.png +0 -0
  87. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/renovate.json +0 -0
  88. {oe_python_template_example-0.1.12/tests/fixtures → oe_python_template_example-0.1.14/reports}/.keep +0 -0
  89. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/src/oe_python_template_example/__init__.py +0 -0
  90. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/src/oe_python_template_example/api.py +0 -0
  91. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/src/oe_python_template_example/cli.py +0 -0
  92. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/src/oe_python_template_example/constants.py +0 -0
  93. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/src/oe_python_template_example/service.py +0 -0
  94. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/tests/__init__.py +0 -0
  95. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/tests/api_test.py +0 -0
  96. {oe_python_template_example-0.1.12 → oe_python_template_example-0.1.14}/tests/cli_test.py +0 -0
@@ -1,4 +1,4 @@
1
- _commit: v0.5.7
1
+ _commit: v0.5.9
2
2
  _src_path: gh:helmut-hoffer-von-ankershoffen/oe-python-template
3
3
  author_email: helmuthva@gmail.com
4
4
  author_github_username: helmut-hoffer-von-ankershoffen
@@ -53,7 +53,7 @@ jobs:
53
53
  env:
54
54
  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
55
55
  run: |
56
- gh release create ${{ github.ref_name }} ./dist/* sbom.json licenses.json licenses-inverted.json vulnerabilities.json --notes-file ${{ steps.git-cliff.outputs.changelog }}
56
+ gh release create ${{ github.ref_name }} ./dist/* ./reports/* --notes-file ${{ steps.git-cliff.outputs.changelog }}
57
57
 
58
58
  - name: Allow other workflows to trigger on release
59
59
  env:
@@ -43,16 +43,10 @@ develop-eggs/
43
43
  .mypy_cache/
44
44
 
45
45
 
46
- # Build Artefacts
47
- junit.xml
48
- .coverage*
49
- coverage.xml
50
- coverage_html/
51
- vulnerabilities.json
52
- licenses.json
53
- licenses-inverted.json
54
- sbom.json
55
- mypi_junit.xml
46
+ # Build Report
47
+ reports/*
48
+ !reports/.keep
49
+ !reports/README.md
56
50
 
57
51
  # IDE
58
52
  .idea/
@@ -1,5 +1,12 @@
1
1
  [🧠 OE Python Template Example](https://oe-python-template-example.readthedocs.io/en/latest/)
2
2
 
3
+ ## [0.1.13](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/compare/v0.1.12..v0.1.13) - 2025-03-14
4
+
5
+ ### 📚 Documentation
6
+
7
+ - Adapt - ([6e99c1d](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/commit/6e99c1d604c8e9fe4094b6a21d95619181ea0d14))
8
+
9
+
3
10
  ## [0.1.7](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/compare/v0.1.6..v0.1.7) - 2025-03-14
4
11
 
5
12
  ### Deps
@@ -90,10 +90,28 @@ 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
91
  ```
92
92
 
93
+ As a shortcut, you can run build steps using `./n`:
94
+
95
+ ```shell
96
+ ./n test
97
+ ./n lint
98
+ # ...
99
+ ```
100
+
101
+ Generate a wheel using uv
102
+ ```shell
103
+ uv build
104
+ ```
105
+
106
+ Notes:
107
+ 1. Reports dumped into ```reports/```
108
+ 3. Documentation dumped into ```docs/build/html/```
109
+ 2. Distribution dumped into ```dist/```
110
+
93
111
  ### Running GitHub CI workflow locally
94
112
 
95
113
  ```shell
96
- ./github-action-run.sh
114
+ uv run nox -s act
97
115
  ```
98
116
 
99
117
  Notes:
@@ -116,13 +134,7 @@ docker run --env THE_VAR=THE_VALUE oe-python-template-example --help
116
134
  Update scaffold from template
117
135
 
118
136
  ```shell
119
- copier update --trust --skip-tasks --skip-answered
120
- ```
121
-
122
- ### Updating demo application contained within oe-python-template-example
123
-
124
- ```shell
125
- copier copy -r HEAD . . --force --trust
137
+ uv run nox -s update_from_template
126
138
  ```
127
139
 
128
140
  ## Pull Request Guidelines
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: oe-python-template-example
3
- Version: 0.1.12
3
+ Version: 0.1.14
4
4
  Summary: 🧠 Example project scaffolded and kept up to date with OE Python Template (oe-python-template).
5
5
  Project-URL: Homepage, https://oe-python-template-example.readthedocs.io/en/latest/
6
6
  Project-URL: Documentation, https://oe-python-template-example.readthedocs.io/en/latest/
@@ -66,13 +66,14 @@ Description-Content-Type: text/markdown
66
66
  [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/oe-python-template-example.svg?logo=python&color=204361&labelColor=1E2933)](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/blob/main/noxfile.py)
67
67
  [![CI](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/actions/workflows/test-and-report.yml/badge.svg)](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/actions/workflows/test-and-report.yml)
68
68
  [![Read the Docs](https://img.shields.io/readthedocs/oe-python-template-example)](https://oe-python-template-example.readthedocs.io/en/latest/)
69
- [![CodeQL](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/actions/workflows/codeql.yml/badge.svg)](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/security/code-scanning)
70
- [![Dependabot](https://img.shields.io/badge/dependabot-active-brightgreen?style=flat-square&logo=dependabot)](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/security/dependabot)
71
69
  [![Quality Gate](https://sonarcloud.io/api/project_badges/measure?project=helmut-hoffer-von-ankershoffen_oe-python-template-example&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=helmut-hoffer-von-ankershoffen_oe-python-template-example)
72
70
  [![Security](https://sonarcloud.io/api/project_badges/measure?project=helmut-hoffer-von-ankershoffen_oe-python-template-example&metric=security_rating)](https://sonarcloud.io/summary/new_code?id=helmut-hoffer-von-ankershoffen_oe-python-template-example)
73
71
  [![Maintainability](https://sonarcloud.io/api/project_badges/measure?project=helmut-hoffer-von-ankershoffen_oe-python-template-example&metric=sqale_rating)](https://sonarcloud.io/summary/new_code?id=helmut-hoffer-von-ankershoffen_oe-python-template-example)
74
72
  [![Technical Debt](https://sonarcloud.io/api/project_badges/measure?project=helmut-hoffer-von-ankershoffen_oe-python-template-example&metric=sqale_index)](https://sonarcloud.io/summary/new_code?id=helmut-hoffer-von-ankershoffen_oe-python-template-example)
75
73
  [![Code Smells](https://sonarcloud.io/api/project_badges/measure?project=helmut-hoffer-von-ankershoffen_oe-python-template-example&metric=code_smells)](https://sonarcloud.io/summary/new_code?id=helmut-hoffer-von-ankershoffen_oe-python-template-example)
74
+ [![CodeQL](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/actions/workflows/codeql.yml/badge.svg)](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/security/code-scanning)
75
+ [![Dependabot](https://img.shields.io/badge/dependabot-active-brightgreen?style=flat-square&logo=dependabot)](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/security/dependabot)
76
+ [![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovatebot.com/)
76
77
  [![Coverage](https://codecov.io/gh/helmut-hoffer-von-ankershoffen/oe-python-template-example/graph/badge.svg?token=SX34YRP30E)](https://codecov.io/gh/helmut-hoffer-von-ankershoffen/oe-python-template-example)
77
78
  [![Ruff](https://img.shields.io/badge/style-Ruff-blue?color=D6FF65)](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/blob/main/noxfile.py)
78
79
  [![MyPy](https://img.shields.io/badge/mypy-checked-blue)](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/blob/main/noxfile.py)
@@ -100,64 +101,13 @@ Description-Content-Type: text/markdown
100
101
  ---
101
102
 
102
103
 
103
- Example project scaffolded and kept up to date with OE Python Template (oe-python-template).
104
+ Example project scaffolded and kept up to date with OE Python Template
105
+ (oe-python-template).
104
106
 
105
107
  Use Cases:
106
- 1) Fast and easy to use project setup
107
- 2) Consistent update of already scaffolded projects to benefit from new and improved features.
108
- 3) Dummy CLI application and service demonstrating example usage of the generated directory structure and build pipeline
109
-
110
- ## Scaffolding
111
-
112
- **Step 1**: Install uv package manager and copier
113
- ```shell
114
- if [[ "$OSTYPE" == "darwin"* ]]; then # Install dependencies for macOS X
115
- if ! command -v brew &> /dev/null; then ## Install Homebrew if not present
116
- /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
117
- fi
118
- elif [[ "$OSTYPE" == "linux-gnu"* ]]; then # Install dependencies for Linux
119
- sudo apt-get update -y && sudo apt-get install curl -y # Install curl
120
- fi
121
- if ! command -v uvx &> /dev/null; then # Install uv package manager if not present
122
- curl -LsSf https://astral.sh/uv/install.sh | sh
123
- source $HOME/.local/bin/env
124
- fi
125
- uv tool install copier # Install copier as global tool
126
- ```
127
-
128
- **Step 2**: Now create an empty repository on GitHubm, clone to your local machine, and change into it's directory.
129
108
 
130
- **Step 3**: Scaffold the project
131
- ```shell
132
- copier copy gh:helmut-hoffer-von-ankershoffen/oe-python-template .
133
- ```
134
- **Step 4**: Setup the local environment
135
-
136
- ```shell
137
- uv run nox -s setup_dev
138
- ```
139
-
140
- **Step 5**: Perform initial commit and push
141
- ```shell
142
- git add .
143
- git commit -m "feat: Initial commit"
144
- git push
145
- ```
146
-
147
- Visit your GitHub repository and check the Actions tab. The CI workflow should fail at the SonarQube step,
148
- as this external service is not yet configured for our new repository.
149
-
150
- **Step 6**: Follow the [instructions](SERVICE_CONNECTIONS.md) to wire up
151
- external services such as Cloudcov, SonarQube Cloud, Read The Docs, Docker.io, GHCR.io and Streamlit Community Cloud.
152
-
153
- **Step 7**: Release the first versions
154
- ```shell
155
- ./bump
156
- ```
157
- Notes:
158
- * You can remove this section post having successfully scafolded your project.
159
- * The following sections refer to the dummy application and service provided by this template.
160
- Use them as inspiration and adapt them to your own project.
109
+ 1. Dummy CLI application and service demonstrating example usage of the
110
+ directory structure and build pipeline generated by oe-python-template
161
111
 
162
112
  ## Overview
163
113
 
@@ -167,13 +117,17 @@ Adding OE Python Template Example to your project as a dependency is easy.
167
117
  uv add oe-python-template-example # add dependency to your project
168
118
  ```
169
119
 
170
- If you don't have uv installed follow [these instructions](https://docs.astral.sh/uv/getting-started/installation/). If you still prefer pip over the modern and fast package manager [uv](https://github.com/astral-sh/uv), you can install the library like this:
120
+ If you don't have uv installed follow
121
+ [these instructions](https://docs.astral.sh/uv/getting-started/installation/).
122
+ If you still prefer pip over the modern and fast package manager
123
+ [uv](https://github.com/astral-sh/uv), you can install the library like this:
171
124
 
172
125
  ```shell
173
126
  pip install oe-python-template-example # add dependency to your project
174
127
  ```
175
128
 
176
- Executing the command line interface (CLI) in an isolated Python environment is just as easy:
129
+ Executing the command line interface (CLI) in an isolated Python environment is
130
+ just as easy:
177
131
 
178
132
  ```shell
179
133
  uvx oe-python-template-example hello-world # prints "Hello, world! [..]"
@@ -182,8 +136,8 @@ uvx oe-python-template-example serve --port=4711 # serves webservice API on port
182
136
  ```
183
137
 
184
138
  Notes:
185
- * The API is versioned, mounted at ```/api/v1``` resp. ```/api/v2```
186
- * 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.
139
+ * The API is versioned, mounted at `/api/v1` resp. `/api/v2`
140
+ * 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.
187
141
  * Interactive documentation is provided at [http://127.0.0.1:8000/api/docs](http://127.0.0.1:8000/api/docs)
188
142
 
189
143
 
@@ -197,27 +151,44 @@ uvx oe-python-template-example openapi --help
197
151
  uvx oe-python-template-example serve --help
198
152
  ```
199
153
 
200
-
201
154
  ## Operational Excellence
202
155
 
203
- This project is designed with operational excellence in mind, using modern Python tooling and practices. It includes:
156
+ This project is designed with operational excellence in mind, using modern
157
+ Python tooling and practices. It includes:
204
158
 
205
- * Various examples demonstrating usage:
159
+ - Various examples demonstrating usage:
206
160
  - [Simple Python script](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/blob/main/examples/script.py)
207
- - [Streamlit web application](https://oe-python-template-example.streamlit.app/) deployed on [Streamlit Community Cloud](https://streamlit.io/cloud)
208
- - [Jupyter](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/blob/main/examples/notebook.ipynb) and [Marimo](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/blob/main/examples/notebook.py) notebook
209
- * [Complete reference documentation](https://oe-python-template-example.readthedocs.io/en/latest/reference.html) on Read the Docs
210
- * [Transparent test coverage](https://app.codecov.io/gh/helmut-hoffer-von-ankershoffen/oe-python-template-example) including unit and E2E tests (reported on Codecov)
211
- * Matrix tested with [multiple python versions](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/blob/main/noxfile.py) to ensure compatibility (powered by [Nox](https://nox.thea.codes/en/stable/))
212
- * Compliant with modern linting and formatting standards (powered by [Ruff](https://github.com/astral-sh/ruff))
213
- * Up-to-date dependencies (monitored by [Renovate](https://github.com/renovatebot/renovate) and [GitHub Dependabot](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/security/dependabot))
214
- * [A-grade code quality](https://sonarcloud.io/summary/new_code?id=helmut-hoffer-von-ankershoffen_oe-python-template-example) in security, maintainability, and reliability with low technical debt and codesmell (verified by SonarQube)
215
- * Additional code security checks using [GitHub CodeQL](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/security/code-scanning)
216
- * [Security Policy](SECURITY.md)
217
- * [License](LICENSE) compliant with the Open Source Initiative (OSI)
218
- * 1-liner for installation and execution of command line interface (CLI) via [uv(x)](https://github.com/astral-sh/uv) or [Docker](https://hub.docker.com/r/helmuthva/oe-python-template-example/tags)
219
- * Setup for developing inside a [devcontainer](https://code.visualstudio.com/docs/devcontainers/containers) included (supports VSCode and GitHub Codespaces)
220
-
161
+ - [Streamlit web application](https://oe-python-template-example.streamlit.app/)
162
+ deployed on [Streamlit Community Cloud](https://streamlit.io/cloud)
163
+ - [Jupyter](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/blob/main/examples/notebook.ipynb)
164
+ and
165
+ [Marimo](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/blob/main/examples/notebook.py)
166
+ notebook
167
+ - [Complete reference documentation](https://oe-python-template-example.readthedocs.io/en/latest/reference.html)
168
+ on Read the Docs
169
+ - [Transparent test coverage](https://app.codecov.io/gh/helmut-hoffer-von-ankershoffen/oe-python-template-example)
170
+ including unit and E2E tests (reported on Codecov)
171
+ - Matrix tested with
172
+ [multiple python versions](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/blob/main/noxfile.py)
173
+ to ensure compatibility (powered by [Nox](https://nox.thea.codes/en/stable/))
174
+ - Compliant with modern linting and formatting standards (powered by
175
+ [Ruff](https://github.com/astral-sh/ruff))
176
+ - Up-to-date dependencies (monitored by
177
+ [Renovate](https://github.com/renovatebot/renovate) and
178
+ [GitHub Dependabot](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/security/dependabot))
179
+ - [A-grade code quality](https://sonarcloud.io/summary/new_code?id=helmut-hoffer-von-ankershoffen_oe-python-template-example)
180
+ in security, maintainability, and reliability with low technical debt and
181
+ codesmell (verified by SonarQube)
182
+ - Additional code security checks using
183
+ [GitHub CodeQL](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/security/code-scanning)
184
+ - [Security Policy](SECURITY.md)
185
+ - [License](LICENSE) compliant with the Open Source Initiative (OSI)
186
+ - 1-liner for installation and execution of command line interface (CLI) via
187
+ [uv(x)](https://github.com/astral-sh/uv) or
188
+ [Docker](https://hub.docker.com/r/helmuthva/oe-python-template-example/tags)
189
+ - Setup for developing inside a
190
+ [devcontainer](https://code.visualstudio.com/docs/devcontainers/containers)
191
+ included (supports VSCode and GitHub Codespaces)
221
192
 
222
193
  ## Usage Examples
223
194
 
@@ -242,15 +213,19 @@ message = Service.get_hello_world()
242
213
  console.print(f"[blue]{message}[/blue]")
243
214
  ```
244
215
 
245
- [Show script code](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/blob/main/examples/script.py) - [Read the reference documentation](https://oe-python-template-example.readthedocs.io/en/latest/reference.html)
216
+ [Show script code](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/blob/main/examples/script.py) -
217
+ [Read the reference documentation](https://oe-python-template-example.readthedocs.io/en/latest/reference.html)
246
218
 
247
219
  ### Streamlit App
248
220
 
249
- Serve the functionality provided by OE Python Template Example in the web by easily integrating the service into a Streamlit application.
221
+ Serve the functionality provided by OE Python Template Example in the web by
222
+ easily integrating the service into a Streamlit application.
250
223
 
251
- [Try it out!](https://oe-python-template-example.streamlit.app) - [Show the code](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/blob/main/examples/streamlit.py)
224
+ [Try it out!](https://oe-python-template-example.streamlit.app) -
225
+ [Show the code](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/blob/main/examples/streamlit.py)
252
226
 
253
227
  ... or serve the app locally
228
+
254
229
  ```shell
255
230
  uv sync --all-extras # Install streamlit dependency part of the examples extra, see pyproject.toml
256
231
  uv run streamlit run examples/streamlit.py # Serve on localhost:8501, opens browser
@@ -267,7 +242,9 @@ uv run streamlit run examples/streamlit.py # Serve on localhost:8501, o
267
242
  ```shell
268
243
  uv sync --all-extras # Install dependencies required for examples such as Juypyter kernel, see pyproject.toml
269
244
  ```
270
- Install the [Jupyter extension for VSCode](https://marketplace.visualstudio.com/items?itemName=ms-toolsai.jupyter)
245
+
246
+ Install the
247
+ [Jupyter extension for VSCode](https://marketplace.visualstudio.com/items?itemName=ms-toolsai.jupyter)
271
248
 
272
249
  Click on `examples/notebook.ipynb` in VSCode and run it.
273
250
 
@@ -291,9 +268,11 @@ uv run marimo edit examples/notebook.py --watch # Edit on localhost:2718, op
291
268
 
292
269
  ... or edit interactively within VSCode
293
270
 
294
- Install the [Marimo extension for VSCode](https://marketplace.visualstudio.com/items?itemName=marimo-team.vscode-marimo)
271
+ Install the
272
+ [Marimo extension for VSCode](https://marketplace.visualstudio.com/items?itemName=marimo-team.vscode-marimo)
295
273
 
296
- Click on `examples/notebook.py` in VSCode and click on the caret next to the Run icon above the code (looks like a pencil) > "Start in marimo editor" (edit).
274
+ Click on `examples/notebook.py` in VSCode and click on the caret next to the Run
275
+ icon above the code (looks like a pencil) > "Start in marimo editor" (edit).
297
276
 
298
277
  ## Command Line Interface (CLI)
299
278
 
@@ -370,7 +349,7 @@ curl http://127.0.0.1:8000/api/v2/docs
370
349
 
371
350
  ## Extra: Lorem Ipsum
372
351
 
373
- Dolor sit amet, consectetur adipiscing elit. Donec a diam lectus. Sed sit amet ipsum mauris. Maecenas congue ligula ac quam.
352
+ Nothing yet
374
353
 
375
354
 
376
355
  ## Further Reading
@@ -5,13 +5,14 @@
5
5
  [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/oe-python-template-example.svg?logo=python&color=204361&labelColor=1E2933)](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/blob/main/noxfile.py)
6
6
  [![CI](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/actions/workflows/test-and-report.yml/badge.svg)](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/actions/workflows/test-and-report.yml)
7
7
  [![Read the Docs](https://img.shields.io/readthedocs/oe-python-template-example)](https://oe-python-template-example.readthedocs.io/en/latest/)
8
- [![CodeQL](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/actions/workflows/codeql.yml/badge.svg)](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/security/code-scanning)
9
- [![Dependabot](https://img.shields.io/badge/dependabot-active-brightgreen?style=flat-square&logo=dependabot)](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/security/dependabot)
10
8
  [![Quality Gate](https://sonarcloud.io/api/project_badges/measure?project=helmut-hoffer-von-ankershoffen_oe-python-template-example&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=helmut-hoffer-von-ankershoffen_oe-python-template-example)
11
9
  [![Security](https://sonarcloud.io/api/project_badges/measure?project=helmut-hoffer-von-ankershoffen_oe-python-template-example&metric=security_rating)](https://sonarcloud.io/summary/new_code?id=helmut-hoffer-von-ankershoffen_oe-python-template-example)
12
10
  [![Maintainability](https://sonarcloud.io/api/project_badges/measure?project=helmut-hoffer-von-ankershoffen_oe-python-template-example&metric=sqale_rating)](https://sonarcloud.io/summary/new_code?id=helmut-hoffer-von-ankershoffen_oe-python-template-example)
13
11
  [![Technical Debt](https://sonarcloud.io/api/project_badges/measure?project=helmut-hoffer-von-ankershoffen_oe-python-template-example&metric=sqale_index)](https://sonarcloud.io/summary/new_code?id=helmut-hoffer-von-ankershoffen_oe-python-template-example)
14
12
  [![Code Smells](https://sonarcloud.io/api/project_badges/measure?project=helmut-hoffer-von-ankershoffen_oe-python-template-example&metric=code_smells)](https://sonarcloud.io/summary/new_code?id=helmut-hoffer-von-ankershoffen_oe-python-template-example)
13
+ [![CodeQL](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/actions/workflows/codeql.yml/badge.svg)](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/security/code-scanning)
14
+ [![Dependabot](https://img.shields.io/badge/dependabot-active-brightgreen?style=flat-square&logo=dependabot)](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/security/dependabot)
15
+ [![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovatebot.com/)
15
16
  [![Coverage](https://codecov.io/gh/helmut-hoffer-von-ankershoffen/oe-python-template-example/graph/badge.svg?token=SX34YRP30E)](https://codecov.io/gh/helmut-hoffer-von-ankershoffen/oe-python-template-example)
16
17
  [![Ruff](https://img.shields.io/badge/style-Ruff-blue?color=D6FF65)](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/blob/main/noxfile.py)
17
18
  [![MyPy](https://img.shields.io/badge/mypy-checked-blue)](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/blob/main/noxfile.py)
@@ -39,64 +40,13 @@
39
40
  ---
40
41
 
41
42
 
42
- Example project scaffolded and kept up to date with OE Python Template (oe-python-template).
43
+ Example project scaffolded and kept up to date with OE Python Template
44
+ (oe-python-template).
43
45
 
44
46
  Use Cases:
45
- 1) Fast and easy to use project setup
46
- 2) Consistent update of already scaffolded projects to benefit from new and improved features.
47
- 3) Dummy CLI application and service demonstrating example usage of the generated directory structure and build pipeline
48
-
49
- ## Scaffolding
50
-
51
- **Step 1**: Install uv package manager and copier
52
- ```shell
53
- if [[ "$OSTYPE" == "darwin"* ]]; then # Install dependencies for macOS X
54
- if ! command -v brew &> /dev/null; then ## Install Homebrew if not present
55
- /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
56
- fi
57
- elif [[ "$OSTYPE" == "linux-gnu"* ]]; then # Install dependencies for Linux
58
- sudo apt-get update -y && sudo apt-get install curl -y # Install curl
59
- fi
60
- if ! command -v uvx &> /dev/null; then # Install uv package manager if not present
61
- curl -LsSf https://astral.sh/uv/install.sh | sh
62
- source $HOME/.local/bin/env
63
- fi
64
- uv tool install copier # Install copier as global tool
65
- ```
66
-
67
- **Step 2**: Now create an empty repository on GitHubm, clone to your local machine, and change into it's directory.
68
47
 
69
- **Step 3**: Scaffold the project
70
- ```shell
71
- copier copy gh:helmut-hoffer-von-ankershoffen/oe-python-template .
72
- ```
73
- **Step 4**: Setup the local environment
74
-
75
- ```shell
76
- uv run nox -s setup_dev
77
- ```
78
-
79
- **Step 5**: Perform initial commit and push
80
- ```shell
81
- git add .
82
- git commit -m "feat: Initial commit"
83
- git push
84
- ```
85
-
86
- Visit your GitHub repository and check the Actions tab. The CI workflow should fail at the SonarQube step,
87
- as this external service is not yet configured for our new repository.
88
-
89
- **Step 6**: Follow the [instructions](SERVICE_CONNECTIONS.md) to wire up
90
- external services such as Cloudcov, SonarQube Cloud, Read The Docs, Docker.io, GHCR.io and Streamlit Community Cloud.
91
-
92
- **Step 7**: Release the first versions
93
- ```shell
94
- ./bump
95
- ```
96
- Notes:
97
- * You can remove this section post having successfully scafolded your project.
98
- * The following sections refer to the dummy application and service provided by this template.
99
- Use them as inspiration and adapt them to your own project.
48
+ 1. Dummy CLI application and service demonstrating example usage of the
49
+ directory structure and build pipeline generated by oe-python-template
100
50
 
101
51
  ## Overview
102
52
 
@@ -106,13 +56,17 @@ Adding OE Python Template Example to your project as a dependency is easy.
106
56
  uv add oe-python-template-example # add dependency to your project
107
57
  ```
108
58
 
109
- If you don't have uv installed follow [these instructions](https://docs.astral.sh/uv/getting-started/installation/). If you still prefer pip over the modern and fast package manager [uv](https://github.com/astral-sh/uv), you can install the library like this:
59
+ If you don't have uv installed follow
60
+ [these instructions](https://docs.astral.sh/uv/getting-started/installation/).
61
+ If you still prefer pip over the modern and fast package manager
62
+ [uv](https://github.com/astral-sh/uv), you can install the library like this:
110
63
 
111
64
  ```shell
112
65
  pip install oe-python-template-example # add dependency to your project
113
66
  ```
114
67
 
115
- Executing the command line interface (CLI) in an isolated Python environment is just as easy:
68
+ Executing the command line interface (CLI) in an isolated Python environment is
69
+ just as easy:
116
70
 
117
71
  ```shell
118
72
  uvx oe-python-template-example hello-world # prints "Hello, world! [..]"
@@ -121,8 +75,8 @@ uvx oe-python-template-example serve --port=4711 # serves webservice API on port
121
75
  ```
122
76
 
123
77
  Notes:
124
- * The API is versioned, mounted at ```/api/v1``` resp. ```/api/v2```
125
- * 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.
78
+ * The API is versioned, mounted at `/api/v1` resp. `/api/v2`
79
+ * 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.
126
80
  * Interactive documentation is provided at [http://127.0.0.1:8000/api/docs](http://127.0.0.1:8000/api/docs)
127
81
 
128
82
 
@@ -136,27 +90,44 @@ uvx oe-python-template-example openapi --help
136
90
  uvx oe-python-template-example serve --help
137
91
  ```
138
92
 
139
-
140
93
  ## Operational Excellence
141
94
 
142
- This project is designed with operational excellence in mind, using modern Python tooling and practices. It includes:
95
+ This project is designed with operational excellence in mind, using modern
96
+ Python tooling and practices. It includes:
143
97
 
144
- * Various examples demonstrating usage:
98
+ - Various examples demonstrating usage:
145
99
  - [Simple Python script](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/blob/main/examples/script.py)
146
- - [Streamlit web application](https://oe-python-template-example.streamlit.app/) deployed on [Streamlit Community Cloud](https://streamlit.io/cloud)
147
- - [Jupyter](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/blob/main/examples/notebook.ipynb) and [Marimo](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/blob/main/examples/notebook.py) notebook
148
- * [Complete reference documentation](https://oe-python-template-example.readthedocs.io/en/latest/reference.html) on Read the Docs
149
- * [Transparent test coverage](https://app.codecov.io/gh/helmut-hoffer-von-ankershoffen/oe-python-template-example) including unit and E2E tests (reported on Codecov)
150
- * Matrix tested with [multiple python versions](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/blob/main/noxfile.py) to ensure compatibility (powered by [Nox](https://nox.thea.codes/en/stable/))
151
- * Compliant with modern linting and formatting standards (powered by [Ruff](https://github.com/astral-sh/ruff))
152
- * Up-to-date dependencies (monitored by [Renovate](https://github.com/renovatebot/renovate) and [GitHub Dependabot](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/security/dependabot))
153
- * [A-grade code quality](https://sonarcloud.io/summary/new_code?id=helmut-hoffer-von-ankershoffen_oe-python-template-example) in security, maintainability, and reliability with low technical debt and codesmell (verified by SonarQube)
154
- * Additional code security checks using [GitHub CodeQL](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/security/code-scanning)
155
- * [Security Policy](SECURITY.md)
156
- * [License](LICENSE) compliant with the Open Source Initiative (OSI)
157
- * 1-liner for installation and execution of command line interface (CLI) via [uv(x)](https://github.com/astral-sh/uv) or [Docker](https://hub.docker.com/r/helmuthva/oe-python-template-example/tags)
158
- * Setup for developing inside a [devcontainer](https://code.visualstudio.com/docs/devcontainers/containers) included (supports VSCode and GitHub Codespaces)
159
-
100
+ - [Streamlit web application](https://oe-python-template-example.streamlit.app/)
101
+ deployed on [Streamlit Community Cloud](https://streamlit.io/cloud)
102
+ - [Jupyter](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/blob/main/examples/notebook.ipynb)
103
+ and
104
+ [Marimo](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/blob/main/examples/notebook.py)
105
+ notebook
106
+ - [Complete reference documentation](https://oe-python-template-example.readthedocs.io/en/latest/reference.html)
107
+ on Read the Docs
108
+ - [Transparent test coverage](https://app.codecov.io/gh/helmut-hoffer-von-ankershoffen/oe-python-template-example)
109
+ including unit and E2E tests (reported on Codecov)
110
+ - Matrix tested with
111
+ [multiple python versions](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/blob/main/noxfile.py)
112
+ to ensure compatibility (powered by [Nox](https://nox.thea.codes/en/stable/))
113
+ - Compliant with modern linting and formatting standards (powered by
114
+ [Ruff](https://github.com/astral-sh/ruff))
115
+ - Up-to-date dependencies (monitored by
116
+ [Renovate](https://github.com/renovatebot/renovate) and
117
+ [GitHub Dependabot](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/security/dependabot))
118
+ - [A-grade code quality](https://sonarcloud.io/summary/new_code?id=helmut-hoffer-von-ankershoffen_oe-python-template-example)
119
+ in security, maintainability, and reliability with low technical debt and
120
+ codesmell (verified by SonarQube)
121
+ - Additional code security checks using
122
+ [GitHub CodeQL](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/security/code-scanning)
123
+ - [Security Policy](SECURITY.md)
124
+ - [License](LICENSE) compliant with the Open Source Initiative (OSI)
125
+ - 1-liner for installation and execution of command line interface (CLI) via
126
+ [uv(x)](https://github.com/astral-sh/uv) or
127
+ [Docker](https://hub.docker.com/r/helmuthva/oe-python-template-example/tags)
128
+ - Setup for developing inside a
129
+ [devcontainer](https://code.visualstudio.com/docs/devcontainers/containers)
130
+ included (supports VSCode and GitHub Codespaces)
160
131
 
161
132
  ## Usage Examples
162
133
 
@@ -181,15 +152,19 @@ message = Service.get_hello_world()
181
152
  console.print(f"[blue]{message}[/blue]")
182
153
  ```
183
154
 
184
- [Show script code](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/blob/main/examples/script.py) - [Read the reference documentation](https://oe-python-template-example.readthedocs.io/en/latest/reference.html)
155
+ [Show script code](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/blob/main/examples/script.py) -
156
+ [Read the reference documentation](https://oe-python-template-example.readthedocs.io/en/latest/reference.html)
185
157
 
186
158
  ### Streamlit App
187
159
 
188
- Serve the functionality provided by OE Python Template Example in the web by easily integrating the service into a Streamlit application.
160
+ Serve the functionality provided by OE Python Template Example in the web by
161
+ easily integrating the service into a Streamlit application.
189
162
 
190
- [Try it out!](https://oe-python-template-example.streamlit.app) - [Show the code](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/blob/main/examples/streamlit.py)
163
+ [Try it out!](https://oe-python-template-example.streamlit.app) -
164
+ [Show the code](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/blob/main/examples/streamlit.py)
191
165
 
192
166
  ... or serve the app locally
167
+
193
168
  ```shell
194
169
  uv sync --all-extras # Install streamlit dependency part of the examples extra, see pyproject.toml
195
170
  uv run streamlit run examples/streamlit.py # Serve on localhost:8501, opens browser
@@ -206,7 +181,9 @@ uv run streamlit run examples/streamlit.py # Serve on localhost:8501, o
206
181
  ```shell
207
182
  uv sync --all-extras # Install dependencies required for examples such as Juypyter kernel, see pyproject.toml
208
183
  ```
209
- Install the [Jupyter extension for VSCode](https://marketplace.visualstudio.com/items?itemName=ms-toolsai.jupyter)
184
+
185
+ Install the
186
+ [Jupyter extension for VSCode](https://marketplace.visualstudio.com/items?itemName=ms-toolsai.jupyter)
210
187
 
211
188
  Click on `examples/notebook.ipynb` in VSCode and run it.
212
189
 
@@ -230,9 +207,11 @@ uv run marimo edit examples/notebook.py --watch # Edit on localhost:2718, op
230
207
 
231
208
  ... or edit interactively within VSCode
232
209
 
233
- Install the [Marimo extension for VSCode](https://marketplace.visualstudio.com/items?itemName=marimo-team.vscode-marimo)
210
+ Install the
211
+ [Marimo extension for VSCode](https://marketplace.visualstudio.com/items?itemName=marimo-team.vscode-marimo)
234
212
 
235
- Click on `examples/notebook.py` in VSCode and click on the caret next to the Run icon above the code (looks like a pencil) > "Start in marimo editor" (edit).
213
+ Click on `examples/notebook.py` in VSCode and click on the caret next to the Run
214
+ icon above the code (looks like a pencil) > "Start in marimo editor" (edit).
236
215
 
237
216
  ## Command Line Interface (CLI)
238
217
 
@@ -309,7 +288,7 @@ curl http://127.0.0.1:8000/api/v2/docs
309
288
 
310
289
  ## Extra: Lorem Ipsum
311
290
 
312
- Dolor sit amet, consectetur adipiscing elit. Donec a diam lectus. Sed sit amet ipsum mauris. Maecenas congue ligula ac quam.
291
+ Nothing yet
313
292
 
314
293
 
315
294
  ## Further Reading
@@ -22,12 +22,12 @@ OE Python Template Example employs several automated tools to continuously monit
22
22
 
23
23
  - **GitHub Dependabot**: Monitors dependencies for known vulnerabilities and automatically creates pull requests to update them when security issues are found. [Dependendabot alerts](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/security/dependabot) published.
24
24
  - **Renovate Bot**: Automatically creates pull requests to update dependencies when new versions are available, with a focus on security patches. [Dependency Dashboard](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/issues) published.
25
- - **pip-audit**: Regularly scans Python dependencies for known vulnerabilities using data from the Python Advisory Database. ```vulnerabilities.json``` published [per release](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/releases).
25
+ - **pip-audit**: Regularly scans Python dependencies for known vulnerabilities using data from the Python Advisory Database. `vulnerabilities.json` published [per release](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/releases).
26
26
 
27
27
  ### 2. Dependency Compliance
28
28
 
29
- - **cyclonedx-py**: Generates a Software Bill of Materials (SBOM) in SPDX format, listing all components and dependencies used in the project. ```sbom.json``` (SPDX format) published [per release](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/releases).
30
- - **pip-licenses**: Exports the licenses of all dependencies to ensure compliance with licensing requirements and avoid using components with problematic licenses. ```licenses.json``` and ```licenses-inverted.json``` published [per release](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/releases).
29
+ - **cyclonedx-py**: Generates a Software Bill of Materials (SBOM) in SPDX format, listing all components and dependencies used in the project. `sbom.json` (SPDX format) published [per release](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/releases).
30
+ - **pip-licenses**: Exports the licenses of all dependencies to ensure compliance with licensing requirements and avoid using components with problematic licenses. `licenses.csv`, `licenses.json` and `licenses_grouped.json` published [per release](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/releases).
31
31
 
32
32
  ### 3. Static Code Analysis
33
33
 
@@ -0,0 +1 @@
1
+ 0.1.14