oe-python-template-example 0.1.10__tar.gz → 0.1.12__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/.copier-answers.yml +1 -1
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/.github/workflows/package-build-publish-release.yml +4 -1
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/PKG-INFO +10 -5
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/README.md +9 -4
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/SECURITY.md +9 -9
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/SERVICE_CONNECTIONS.md +8 -0
- oe_python_template_example-0.1.12/VERSION +1 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/_readme_header.md +2 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/_readme_main.md +7 -4
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/docs/source/conf.py +1 -1
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/pyproject.toml +3 -3
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/sonar-project.properties +1 -1
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/uv.lock +23 -23
- oe_python_template_example-0.1.10/VERSION +0 -1
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/.act-env-public +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/.devcontainer/Dockerfile +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/.devcontainer/devcontainer.json +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/.devcontainer/onCreateCommand +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/.devcontainer/postAttachCommand +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/.devcontainer/postCreateCommand +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/.env.example +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/.github/dependabot.yml +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/.github/workflows/codeql.yml +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/.github/workflows/docker-image-build-publish.yml +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/.github/workflows/test-and-report.yml +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/.gitignore +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/.pre-commit-config.yaml +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/.python-version +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/.readthedocs.yml +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/.secrets.baseline +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/.vscode/extensions.json +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/.vscode/settings.json +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/CHANGELOG.md +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/CODEOWNERS +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/CONTRIBUTING.md +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/Dockerfile +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/LICENSE +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/RELEASE_NOTES.md +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/_readme_footer.md +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/bin/git-cliff +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/bump +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/codecov.yml +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/compose.yaml +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/docs/Makefile +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/docs/make.bat +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/docs/source/_static/.keep +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/docs/source/_static/openapi.json +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/docs/source/_static/openapi.yaml +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/docs/source/_static/openapi_v1.json +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/docs/source/_static/openapi_v1.yaml +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/docs/source/_static/openapi_v2.json +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/docs/source/_static/openapi_v2.yaml +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/docs/source/api_v1.rst +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/docs/source/api_v2.rst +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/docs/source/contributing.rst +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/docs/source/index.rst +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/docs/source/latexmkrc +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/docs/source/main.rst +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/docs/source/reference.rst +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/docs/source/release-notes.rst +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/examples/__init__.py +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/examples/notebook.ipynb +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/examples/notebook.py +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/examples/script.py +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/examples/streamlit.py +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/git-cliff-2.7.0/CHANGELOG.md +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/git-cliff-2.7.0/LICENSE-APACHE +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/git-cliff-2.7.0/LICENSE-MIT +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/git-cliff-2.7.0/README.md +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/git-cliff-2.7.0/completions/_git-cliff +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/git-cliff-2.7.0/completions/_git-cliff.ps1 +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/git-cliff-2.7.0/completions/git-cliff.bash +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/git-cliff-2.7.0/completions/git-cliff.elv +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/git-cliff-2.7.0/completions/git-cliff.fish +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/git-cliff-2.7.0/git-cliff-completions +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/git-cliff-2.7.0/git-cliff-mangen +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/git-cliff-2.7.0/man/git-cliff.1 +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/git-cliff-2.7.0-x86_64-unknown-linux-gnu.tar.gz +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/github-action-run +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/latexmkrc +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/logo.png +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/noxfile.py +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/renovate.json +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/src/oe_python_template_example/__init__.py +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/src/oe_python_template_example/api.py +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/src/oe_python_template_example/cli.py +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/src/oe_python_template_example/constants.py +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/src/oe_python_template_example/service.py +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/tests/__init__.py +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/tests/api_test.py +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/tests/cli_test.py +0 -0
- {oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/tests/fixtures/.keep +0 -0
@@ -46,11 +46,14 @@ jobs:
|
|
46
46
|
- name: Publish package to PyPI
|
47
47
|
run: uv publish -t ${{ secrets.UV_PUBLISH_TOKEN }}
|
48
48
|
|
49
|
+
- name: Build package into dist/
|
50
|
+
run: uv run nox -s audit
|
51
|
+
|
49
52
|
- name: Create GitHub release
|
50
53
|
env:
|
51
54
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
52
55
|
run: |
|
53
|
-
gh release create ${{ github.ref_name }} ./dist/* --notes-file ${{ steps.git-cliff.outputs.changelog }}
|
56
|
+
gh release create ${{ github.ref_name }} ./dist/* sbom.json licenses.json licenses-inverted.json vulnerabilities.json --notes-file ${{ steps.git-cliff.outputs.changelog }}
|
54
57
|
|
55
58
|
- name: Allow other workflows to trigger on release
|
56
59
|
env:
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: oe-python-template-example
|
3
|
-
Version: 0.1.
|
3
|
+
Version: 0.1.12
|
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,6 +66,8 @@ Description-Content-Type: text/markdown
|
|
66
66
|
[](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/blob/main/noxfile.py)
|
67
67
|
[](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/actions/workflows/test-and-report.yml)
|
68
68
|
[](https://oe-python-template-example.readthedocs.io/en/latest/)
|
69
|
+
[](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/security/code-scanning)
|
70
|
+
[](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/security/dependabot)
|
69
71
|
[](https://sonarcloud.io/summary/new_code?id=helmut-hoffer-von-ankershoffen_oe-python-template-example)
|
70
72
|
[](https://sonarcloud.io/summary/new_code?id=helmut-hoffer-von-ankershoffen_oe-python-template-example)
|
71
73
|
[](https://sonarcloud.io/summary/new_code?id=helmut-hoffer-von-ankershoffen_oe-python-template-example)
|
@@ -145,7 +147,7 @@ git push
|
|
145
147
|
Visit your GitHub repository and check the Actions tab. The CI workflow should fail at the SonarQube step,
|
146
148
|
as this external service is not yet configured for our new repository.
|
147
149
|
|
148
|
-
**Step 6**: Follow the [
|
150
|
+
**Step 6**: Follow the [instructions](SERVICE_CONNECTIONS.md) to wire up
|
149
151
|
external services such as Cloudcov, SonarQube Cloud, Read The Docs, Docker.io, GHCR.io and Streamlit Community Cloud.
|
150
152
|
|
151
153
|
**Step 7**: Release the first versions
|
@@ -204,12 +206,15 @@ This project is designed with operational excellence in mind, using modern Pytho
|
|
204
206
|
- [Simple Python script](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/blob/main/examples/script.py)
|
205
207
|
- [Streamlit web application](https://oe-python-template-example.streamlit.app/) deployed on [Streamlit Community Cloud](https://streamlit.io/cloud)
|
206
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
|
207
|
-
* [Complete reference
|
209
|
+
* [Complete reference documentation](https://oe-python-template-example.readthedocs.io/en/latest/reference.html) on Read the Docs
|
208
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)
|
209
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/))
|
210
212
|
* Compliant with modern linting and formatting standards (powered by [Ruff](https://github.com/astral-sh/ruff))
|
211
|
-
* Up-to-date dependencies (monitored by [Renovate](https://github.com/renovatebot/renovate))
|
212
|
-
* [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
|
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)
|
213
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)
|
214
219
|
* Setup for developing inside a [devcontainer](https://code.visualstudio.com/docs/devcontainers/containers) included (supports VSCode and GitHub Codespaces)
|
215
220
|
|
@@ -5,6 +5,8 @@
|
|
5
5
|
[](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/blob/main/noxfile.py)
|
6
6
|
[](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/actions/workflows/test-and-report.yml)
|
7
7
|
[](https://oe-python-template-example.readthedocs.io/en/latest/)
|
8
|
+
[](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/security/code-scanning)
|
9
|
+
[](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/security/dependabot)
|
8
10
|
[](https://sonarcloud.io/summary/new_code?id=helmut-hoffer-von-ankershoffen_oe-python-template-example)
|
9
11
|
[](https://sonarcloud.io/summary/new_code?id=helmut-hoffer-von-ankershoffen_oe-python-template-example)
|
10
12
|
[](https://sonarcloud.io/summary/new_code?id=helmut-hoffer-von-ankershoffen_oe-python-template-example)
|
@@ -84,7 +86,7 @@ git push
|
|
84
86
|
Visit your GitHub repository and check the Actions tab. The CI workflow should fail at the SonarQube step,
|
85
87
|
as this external service is not yet configured for our new repository.
|
86
88
|
|
87
|
-
**Step 6**: Follow the [
|
89
|
+
**Step 6**: Follow the [instructions](SERVICE_CONNECTIONS.md) to wire up
|
88
90
|
external services such as Cloudcov, SonarQube Cloud, Read The Docs, Docker.io, GHCR.io and Streamlit Community Cloud.
|
89
91
|
|
90
92
|
**Step 7**: Release the first versions
|
@@ -143,12 +145,15 @@ This project is designed with operational excellence in mind, using modern Pytho
|
|
143
145
|
- [Simple Python script](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/blob/main/examples/script.py)
|
144
146
|
- [Streamlit web application](https://oe-python-template-example.streamlit.app/) deployed on [Streamlit Community Cloud](https://streamlit.io/cloud)
|
145
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
|
146
|
-
* [Complete reference
|
148
|
+
* [Complete reference documentation](https://oe-python-template-example.readthedocs.io/en/latest/reference.html) on Read the Docs
|
147
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)
|
148
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/))
|
149
151
|
* Compliant with modern linting and formatting standards (powered by [Ruff](https://github.com/astral-sh/ruff))
|
150
|
-
* Up-to-date dependencies (monitored by [Renovate](https://github.com/renovatebot/renovate))
|
151
|
-
* [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
|
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)
|
152
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)
|
153
158
|
* Setup for developing inside a [devcontainer](https://code.visualstudio.com/docs/devcontainers/containers) included (supports VSCode and GitHub Codespaces)
|
154
159
|
|
@@ -20,23 +20,23 @@ OE Python Template Example employs several automated tools to continuously monit
|
|
20
20
|
|
21
21
|
### 1. Dependency Vulnerability Scanning
|
22
22
|
|
23
|
-
- **
|
24
|
-
- **
|
25
|
-
- **pip-audit**: Regularly scans Python dependencies for known vulnerabilities using data from the Python Advisory Database.
|
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
|
+
- **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).
|
26
26
|
|
27
27
|
### 2. Dependency Compliance
|
28
28
|
|
29
|
-
- **
|
30
|
-
- **
|
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).
|
31
31
|
|
32
32
|
### 3. Static Code Analysis
|
33
33
|
|
34
|
-
- **
|
35
|
-
- **
|
34
|
+
- **GitHub CodeQL**: Analyzes code for common vulnerabilities and coding errors using GitHub's semantic code analysis engine. [Code scanning results](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/security/code-scanning) published.
|
35
|
+
- **SonarQube**: Performs comprehensive static code analysis to detect code quality issues, security vulnerabilities, and bugs. [Security hotspots](https://sonarcloud.io/project/security_hotspots?id=helmut-hoffer-von-ankershoffen_oe-python-template-example) published.
|
36
36
|
|
37
37
|
### 4. Secret Detection
|
38
|
-
|
39
|
-
- **Yelp/detect-secrets**: Pre-commit hook and automated scanning to prevent accidental inclusion of secrets or sensitive information in
|
38
|
+
- **GitHub Secret scanning**: Automatically scans for secrets in the codebase and alerts if any are found. [Secret scanning alerts](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/security/secret-scanning) published.
|
39
|
+
- **Yelp/detect-secrets**: Pre-commit hook and automated scanning to prevent accidental inclusion of secrets or sensitive information in commits. [Pre-Commit hook](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/blob/main/.pre-commit-config.yaml) published.
|
40
40
|
|
41
41
|
## Security Best Practices
|
42
42
|
|
{oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/SERVICE_CONNECTIONS.md
RENAMED
@@ -61,6 +61,14 @@
|
|
61
61
|
4. Select the oe-python-template-example repo, for "Main file path" select `examples/streamlit.py`, for App URL enter `oe-python-template-example`.streamlit.app. Click "Deploy"
|
62
62
|
5. Goto https://oe-python-template-example.streamlit.app
|
63
63
|
|
64
|
+
## GitHub repository settings
|
65
|
+
|
66
|
+
1. Goto https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/settings/security_analysis
|
67
|
+
2. Enable Private vulnerability reporting
|
68
|
+
3. Enable Dependabot alerts
|
69
|
+
4. Enable Dependabot security updates
|
70
|
+
5. CodeQL analyis will be automatically set up via a GitHub action
|
71
|
+
|
64
72
|
## Polishing GitHub repository
|
65
73
|
|
66
74
|
1. Goto https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example
|
@@ -0,0 +1 @@
|
|
1
|
+
0.1.12
|
@@ -5,6 +5,8 @@
|
|
5
5
|
[](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/blob/main/noxfile.py)
|
6
6
|
[](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/actions/workflows/test-and-report.yml)
|
7
7
|
[](https://oe-python-template-example.readthedocs.io/en/latest/)
|
8
|
+
[](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/security/code-scanning)
|
9
|
+
[](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/security/dependabot)
|
8
10
|
[](https://sonarcloud.io/summary/new_code?id=helmut-hoffer-von-ankershoffen_oe-python-template-example)
|
9
11
|
[](https://sonarcloud.io/summary/new_code?id=helmut-hoffer-von-ankershoffen_oe-python-template-example)
|
10
12
|
[](https://sonarcloud.io/summary/new_code?id=helmut-hoffer-von-ankershoffen_oe-python-template-example)
|
@@ -45,7 +45,7 @@ git push
|
|
45
45
|
Visit your GitHub repository and check the Actions tab. The CI workflow should fail at the SonarQube step,
|
46
46
|
as this external service is not yet configured for our new repository.
|
47
47
|
|
48
|
-
**Step 6**: Follow the [
|
48
|
+
**Step 6**: Follow the [instructions](SERVICE_CONNECTIONS.md) to wire up
|
49
49
|
external services such as Cloudcov, SonarQube Cloud, Read The Docs, Docker.io, GHCR.io and Streamlit Community Cloud.
|
50
50
|
|
51
51
|
**Step 7**: Release the first versions
|
@@ -104,12 +104,15 @@ This project is designed with operational excellence in mind, using modern Pytho
|
|
104
104
|
- [Simple Python script](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/blob/main/examples/script.py)
|
105
105
|
- [Streamlit web application](https://oe-python-template-example.streamlit.app/) deployed on [Streamlit Community Cloud](https://streamlit.io/cloud)
|
106
106
|
- [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
|
107
|
-
* [Complete reference
|
107
|
+
* [Complete reference documentation](https://oe-python-template-example.readthedocs.io/en/latest/reference.html) on Read the Docs
|
108
108
|
* [Transparent test coverage](https://app.codecov.io/gh/helmut-hoffer-von-ankershoffen/oe-python-template-example) including unit and E2E tests (reported on Codecov)
|
109
109
|
* 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/))
|
110
110
|
* Compliant with modern linting and formatting standards (powered by [Ruff](https://github.com/astral-sh/ruff))
|
111
|
-
* Up-to-date dependencies (monitored by [Renovate](https://github.com/renovatebot/renovate))
|
112
|
-
* [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
|
111
|
+
* 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))
|
112
|
+
* [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)
|
113
|
+
* Additional code security checks using [GitHub CodeQL](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/security/code-scanning)
|
114
|
+
* [Security Policy](SECURITY.md)
|
115
|
+
* [License](LICENSE) compliant with the Open Source Initiative (OSI)
|
113
116
|
* 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)
|
114
117
|
* Setup for developing inside a [devcontainer](https://code.visualstudio.com/docs/devcontainers/containers) included (supports VSCode and GitHub Codespaces)
|
115
118
|
|
@@ -29,7 +29,7 @@ extensions = [
|
|
29
29
|
project = "oe-python-template-example"
|
30
30
|
author = "Helmut Hoffer von Ankershoffen"
|
31
31
|
copyright = f" (c) 2025-{datetime.now(UTC).year}, {author}" # noqa: A001
|
32
|
-
version = "0.1.
|
32
|
+
version = "0.1.12"
|
33
33
|
release = version
|
34
34
|
github_username = "helmut-hoffer-von-ankershoffen"
|
35
35
|
github_repository = "oe-python-template-example"
|
@@ -1,6 +1,6 @@
|
|
1
1
|
[project]
|
2
2
|
name = "oe-python-template-example"
|
3
|
-
version = "0.1.
|
3
|
+
version = "0.1.12"
|
4
4
|
description = "🧠 Example project scaffolded and kept up to date with OE Python Template (oe-python-template)."
|
5
5
|
readme = "README.md"
|
6
6
|
authors = [
|
@@ -113,7 +113,7 @@ dev = [
|
|
113
113
|
"pytest-env>=1.1.5",
|
114
114
|
"pytest-regressions>=2.7.0",
|
115
115
|
"pytest-xdist[psutil]>=3.6.1",
|
116
|
-
"ruff>=0.
|
116
|
+
"ruff>=0.10.0",
|
117
117
|
"sphinx>=8.2.3",
|
118
118
|
"sphinx-autobuild>=2024.10.3",
|
119
119
|
"sphinx-copybutton>=0.5.2",
|
@@ -242,7 +242,7 @@ source = ["src/"]
|
|
242
242
|
|
243
243
|
|
244
244
|
[tool.bumpversion]
|
245
|
-
current_version = "0.1.
|
245
|
+
current_version = "0.1.12"
|
246
246
|
parse = "(?P<major>\\d+)\\.(?P<minor>\\d+)\\.(?P<patch>\\d+)"
|
247
247
|
serialize = ["{major}.{minor}.{patch}"]
|
248
248
|
search = "{current_version}"
|
{oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/sonar-project.properties
RENAMED
@@ -1,6 +1,6 @@
|
|
1
1
|
sonar.projectKey=helmut-hoffer-von-ankershoffen_oe-python-template-example
|
2
2
|
sonar.organization=helmut-hoffer-von-ankershoffen
|
3
|
-
sonar.projectVersion=0.1.
|
3
|
+
sonar.projectVersion=0.1.12
|
4
4
|
sonar.projectDescription=🧠 Example project scaffolded and kept up to date with OE Python Template (oe-python-template).
|
5
5
|
sonar.links.homepage=https://oe-python-template-example.readthedocs.io/en/latest/
|
6
6
|
sonar.links.scm=https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example
|
@@ -2075,7 +2075,7 @@ wheels = [
|
|
2075
2075
|
|
2076
2076
|
[[package]]
|
2077
2077
|
name = "oe-python-template-example"
|
2078
|
-
version = "0.1.
|
2078
|
+
version = "0.1.12"
|
2079
2079
|
source = { editable = "." }
|
2080
2080
|
dependencies = [
|
2081
2081
|
{ name = "fastapi", extra = ["all", "standard"] },
|
@@ -2168,7 +2168,7 @@ dev = [
|
|
2168
2168
|
{ name = "pytest-env", specifier = ">=1.1.5" },
|
2169
2169
|
{ name = "pytest-regressions", specifier = ">=2.7.0" },
|
2170
2170
|
{ name = "pytest-xdist", extras = ["psutil"], specifier = ">=3.6.1" },
|
2171
|
-
{ name = "ruff", specifier = ">=0.
|
2171
|
+
{ name = "ruff", specifier = ">=0.10.0" },
|
2172
2172
|
{ name = "sphinx", specifier = ">=8.2.3" },
|
2173
2173
|
{ name = "sphinx-autobuild", specifier = ">=2024.10.3" },
|
2174
2174
|
{ name = "sphinx-copybutton", specifier = ">=0.5.2" },
|
@@ -3310,27 +3310,27 @@ wheels = [
|
|
3310
3310
|
|
3311
3311
|
[[package]]
|
3312
3312
|
name = "ruff"
|
3313
|
-
version = "0.
|
3314
|
-
source = { registry = "https://pypi.org/simple" }
|
3315
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
3316
|
-
wheels = [
|
3317
|
-
{ url = "https://files.pythonhosted.org/packages/
|
3318
|
-
{ url = "https://files.pythonhosted.org/packages/
|
3319
|
-
{ url = "https://files.pythonhosted.org/packages/
|
3320
|
-
{ url = "https://files.pythonhosted.org/packages/
|
3321
|
-
{ url = "https://files.pythonhosted.org/packages/
|
3322
|
-
{ url = "https://files.pythonhosted.org/packages/
|
3323
|
-
{ url = "https://files.pythonhosted.org/packages/
|
3324
|
-
{ url = "https://files.pythonhosted.org/packages/
|
3325
|
-
{ url = "https://files.pythonhosted.org/packages/
|
3326
|
-
{ url = "https://files.pythonhosted.org/packages/
|
3327
|
-
{ url = "https://files.pythonhosted.org/packages/
|
3328
|
-
{ url = "https://files.pythonhosted.org/packages/
|
3329
|
-
{ url = "https://files.pythonhosted.org/packages/
|
3330
|
-
{ url = "https://files.pythonhosted.org/packages/
|
3331
|
-
{ url = "https://files.pythonhosted.org/packages/
|
3332
|
-
{ url = "https://files.pythonhosted.org/packages/
|
3333
|
-
{ url = "https://files.pythonhosted.org/packages/
|
3313
|
+
version = "0.10.0"
|
3314
|
+
source = { registry = "https://pypi.org/simple" }
|
3315
|
+
sdist = { url = "https://files.pythonhosted.org/packages/4c/ec/9c59d2956566517c98ac8267554f4eaceafb2a19710a429368518b7fab43/ruff-0.10.0.tar.gz", hash = "sha256:fa1554e18deaf8aa097dbcfeafaf38b17a2a1e98fdc18f50e62e8a836abee392", size = 3789921 }
|
3316
|
+
wheels = [
|
3317
|
+
{ url = "https://files.pythonhosted.org/packages/bf/3f/742afe91b43def2a75990b293c676355576c0ff9cdbcf4249f78fa592544/ruff-0.10.0-py3-none-linux_armv6l.whl", hash = "sha256:46a2aa0eaae5048e5f804f0be9489d8a661633e23277b7293089e70d5c1a35c4", size = 10078369 },
|
3318
|
+
{ url = "https://files.pythonhosted.org/packages/8d/a0/8696fb4862e82f7b40bbbc2917137594b22826cc62d77278a91391507514/ruff-0.10.0-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:775a6bc61af9dd0a2e1763406522a137e62aabb743d8b43ed95f019cdd1526c7", size = 10876912 },
|
3319
|
+
{ url = "https://files.pythonhosted.org/packages/40/aa/0d48b7b7d7a1f168bb8fd893ed559d633c7d68c4a8ef9b996f0c2bd07aca/ruff-0.10.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:8b03e6fcd39d20f0004f9956f0ed5eadc404d3a299f9d9286323884e3b663730", size = 10229962 },
|
3320
|
+
{ url = "https://files.pythonhosted.org/packages/21/de/861ced2f75b045d8cfc038d68961d8ac117344df1f43a11abdd05bf7991b/ruff-0.10.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:621101d1af80248827f2409a78c8177c8319986a57b4663613b9c72f8617bfcd", size = 10404627 },
|
3321
|
+
{ url = "https://files.pythonhosted.org/packages/21/69/666e0b840191c3ce433962c0d05fc0f6800afe259ea5d230cc731655d8e2/ruff-0.10.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e2dfe85cb6bfbd4259801e7d4982f2a72bdbd5749dc73a09d68a6dbf77f2209a", size = 9939383 },
|
3322
|
+
{ url = "https://files.pythonhosted.org/packages/76/bf/34a2adc58092c99cdfa9f1303acd82d840d56412022e477e2ab20c261d2d/ruff-0.10.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43ac3879a20c22fdc57e559f0bb27f0c71828656841d0b42d3505b1e5b3a83c8", size = 11492269 },
|
3323
|
+
{ url = "https://files.pythonhosted.org/packages/31/3d/f7ccfcf69f15948623b190feea9d411d5029ae39725fcc078f8d43bd07a6/ruff-0.10.0-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:ef5e3aac421bbc62f8a7aab21edd49a359ed42205f7a5091a74386bca1efa293", size = 12186939 },
|
3324
|
+
{ url = "https://files.pythonhosted.org/packages/6e/3e/c557c0abfdea85c7d238a3cb238c73e7b6d17c30a584234c4fd8fe2cafb6/ruff-0.10.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9f4f62d7fac8b748fce67ad308116b4d4cc1a9f964b4804fc5408fbd06e13ba9", size = 11655896 },
|
3325
|
+
{ url = "https://files.pythonhosted.org/packages/3b/8e/3bfa110f37e5192eb3943f14943d05fbb9a76fea380aa87655e6f6276a54/ruff-0.10.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:02f9f6205c5b0d626f98da01a0e75b724a64c21c554bba24b12522c9e9ba6a04", size = 13885502 },
|
3326
|
+
{ url = "https://files.pythonhosted.org/packages/51/4a/22cdab59b5563dd7f4c504d0f1e6bb25fc800a5a057395bc24f8ff3a85b2/ruff-0.10.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:46a97f3d55f68464c48d1e929a8582c7e5bb80ac73336bbc7b0da894d8e6cd9e", size = 11344767 },
|
3327
|
+
{ url = "https://files.pythonhosted.org/packages/3d/0f/8f85de2ac565f82f47c6d8fb7ae04383e6300560f2d1b91c1268ff91e507/ruff-0.10.0-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:a0b811197d0dc96c13d610f8cfdc56030b405bcff5c2f10eab187b329da0ca4a", size = 10300331 },
|
3328
|
+
{ url = "https://files.pythonhosted.org/packages/90/4a/b337df327832cb30bd8607e8d1fdf1b6b5ca228307d5008dd49028fb66ae/ruff-0.10.0-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:a13a3fda0870c1c964b47ff5d73805ae80d2a9de93ee2d185d453b8fddf85a84", size = 9926551 },
|
3329
|
+
{ url = "https://files.pythonhosted.org/packages/d7/e9/141233730b85675ac806c4b62f70516bd9c0aae8a55823f3a6589ed411be/ruff-0.10.0-py3-none-musllinux_1_2_i686.whl", hash = "sha256:6ceb8d9f062e90ddcbad929f6136edf764bbf6411420a07e8357602ea28cd99f", size = 10925061 },
|
3330
|
+
{ url = "https://files.pythonhosted.org/packages/24/09/02987935b55c2d353a226ac1b4f9718830e2e195834929f46c07eeede746/ruff-0.10.0-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:c41d07d573617ed2f287ea892af2446fd8a8d877481e8e1ba6928e020665d240", size = 11394949 },
|
3331
|
+
{ url = "https://files.pythonhosted.org/packages/d6/ec/054f9879fb6f4122d43ffe5c9f88c8c323a9cd14220d5c813aea5805e02c/ruff-0.10.0-py3-none-win32.whl", hash = "sha256:76e2de0cbdd587e373cd3b4050d2c45babdd7014c1888a6f121c29525c748a15", size = 10272077 },
|
3332
|
+
{ url = "https://files.pythonhosted.org/packages/6e/49/915d8682f24645b904fe6a1aac36101464fc814923fdf293c1388dc5533c/ruff-0.10.0-py3-none-win_amd64.whl", hash = "sha256:f943acdecdcc6786a8d1dad455dd9f94e6d57ccc115be4993f9b52ef8316027a", size = 11393300 },
|
3333
|
+
{ url = "https://files.pythonhosted.org/packages/82/ed/5c59941634c9026ceeccc7c119f23f4356f09aafd28c15c1bc734ac66b01/ruff-0.10.0-py3-none-win_arm64.whl", hash = "sha256:935a943bdbd9ff0685acd80d484ea91088e27617537b5f7ef8907187d19d28d0", size = 10510133 },
|
3334
3334
|
]
|
3335
3335
|
|
3336
3336
|
[[package]]
|
@@ -1 +0,0 @@
|
|
1
|
-
0.1.10
|
File without changes
|
{oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/.devcontainer/Dockerfile
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/.github/dependabot.yml
RENAMED
File without changes
|
{oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/.github/workflows/codeql.yml
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/.pre-commit-config.yaml
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/.vscode/extensions.json
RENAMED
File without changes
|
{oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/.vscode/settings.json
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/docs/source/_static/.keep
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/docs/source/api_v1.rst
RENAMED
File without changes
|
{oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/docs/source/api_v2.rst
RENAMED
File without changes
|
{oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/docs/source/contributing.rst
RENAMED
File without changes
|
{oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/docs/source/index.rst
RENAMED
File without changes
|
{oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/docs/source/latexmkrc
RENAMED
File without changes
|
{oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/docs/source/main.rst
RENAMED
File without changes
|
{oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/docs/source/reference.rst
RENAMED
File without changes
|
File without changes
|
{oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/examples/__init__.py
RENAMED
File without changes
|
{oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/examples/notebook.ipynb
RENAMED
File without changes
|
{oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/examples/notebook.py
RENAMED
File without changes
|
File without changes
|
{oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/examples/streamlit.py
RENAMED
File without changes
|
{oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/git-cliff-2.7.0/CHANGELOG.md
RENAMED
File without changes
|
File without changes
|
{oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/git-cliff-2.7.0/LICENSE-MIT
RENAMED
File without changes
|
{oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/git-cliff-2.7.0/README.md
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{oe_python_template_example-0.1.10 → oe_python_template_example-0.1.12}/tests/fixtures/.keep
RENAMED
File without changes
|