oe-python-template-example 0.2.3__tar.gz → 0.2.5__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.2.3 → oe_python_template_example-0.2.5}/.copier-answers.yml +1 -1
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/.github/workflows/codeql.yml +1 -1
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/.github/workflows/docker-image-build-publish.yml +8 -8
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/.github/workflows/package-build-publish-release.yml +4 -4
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/.github/workflows/test-and-report.yml +8 -8
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/CONTRIBUTING.md +9 -9
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/PKG-INFO +1 -1
- oe_python_template_example-0.2.5/VERSION +1 -0
- oe_python_template_example-0.2.5/docs/source/_static/openapi_v1.yaml +204 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/docs/source/_static/openapi_v2.yaml +32 -16
- oe_python_template_example-0.2.5/docs/source/api_v1.rst +9 -0
- oe_python_template_example-0.2.5/docs/source/api_v2.rst +9 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/docs/source/conf.py +1 -1
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/examples/notebook.py +1 -1
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/noxfile.py +28 -2
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/pyproject.toml +2 -2
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/sonar-project.properties +1 -1
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/uv.lock +1 -1
- oe_python_template_example-0.2.3/VERSION +0 -1
- oe_python_template_example-0.2.3/docs/source/_static/openapi_v1.yaml +0 -14
- oe_python_template_example-0.2.3/docs/source/api_v1.rst +0 -15
- oe_python_template_example-0.2.3/docs/source/api_v2.rst +0 -15
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/.act-env-public +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/.devcontainer/Dockerfile +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/.devcontainer/devcontainer.json +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/.devcontainer/onCreateCommand +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/.devcontainer/postAttachCommand +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/.devcontainer/postCreateCommand +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/.env.example +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/.github/copilot-instructions.md +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/.github/dependabot.yml +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/.gitignore +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/.pre-commit-config.yaml +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/.python-version +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/.readthedocs.yml +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/.secrets.baseline +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/.vscode/extensions.json +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/.vscode/settings.json +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/CHANGELOG.md +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/CODEOWNERS +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/CODE_STYLE.md +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/Dockerfile +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/LICENSE +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/README.md +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/RELEASE_NOTES.md +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/SECURITY.md +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/SERVICE_CONNECTIONS.md +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/bin/git-cliff +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/codecov.yml +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/compose.yaml +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/docs/Makefile +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/docs/make.bat +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/docs/partials/README_footer.md +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/docs/partials/README_header.md +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/docs/partials/README_main.md +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/docs/source/_static/.keep +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/docs/source/_static/openapi.json +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/docs/source/_static/openapi.yaml +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/docs/source/_static/openapi_v1.json +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/docs/source/_static/openapi_v2.json +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/docs/source/code-style.rst +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/docs/source/contributing.rst +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/docs/source/index.rst +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/docs/source/main.rst +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/docs/source/reference.rst +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/docs/source/release-notes.rst +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/docs/source/security.rst +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/examples/__init__.py +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/examples/notebook.ipynb +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/examples/script.py +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/examples/streamlit.py +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/git-cliff-2.7.0/CHANGELOG.md +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/git-cliff-2.7.0/LICENSE-APACHE +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/git-cliff-2.7.0/LICENSE-MIT +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/git-cliff-2.7.0/README.md +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/git-cliff-2.7.0/completions/_git-cliff +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/git-cliff-2.7.0/completions/_git-cliff.ps1 +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/git-cliff-2.7.0/completions/git-cliff.bash +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/git-cliff-2.7.0/completions/git-cliff.elv +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/git-cliff-2.7.0/completions/git-cliff.fish +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/git-cliff-2.7.0/git-cliff-completions +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/git-cliff-2.7.0/git-cliff-mangen +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/git-cliff-2.7.0/man/git-cliff.1 +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/git-cliff-2.7.0-x86_64-unknown-linux-gnu.tar.gz +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/github-action-run +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/logo.png +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/n +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/renovate.json +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/reports/.keep +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/src/oe_python_template_example/__init__.py +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/src/oe_python_template_example/api.py +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/src/oe_python_template_example/cli.py +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/src/oe_python_template_example/constants.py +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/src/oe_python_template_example/service.py +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/tests/__init__.py +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/tests/api_test.py +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/tests/cli_test.py +0 -0
- {oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/tests/fixtures/.keep +0 -0
{oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/.github/workflows/codeql.yml
RENAMED
@@ -76,7 +76,7 @@ jobs:
|
|
76
76
|
# Prefix the list here with "+" to use these queries and those in the config file.
|
77
77
|
|
78
78
|
# For more details on CodeQL's query packs, refer to: https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
|
79
|
-
|
79
|
+
queries: security-extended,security-and-quality
|
80
80
|
|
81
81
|
# If the analyze step fails for one of the languages you are analyzing with
|
82
82
|
# "We were unable to automatically build your code", modify the matrix above
|
@@ -21,18 +21,18 @@ jobs:
|
|
21
21
|
id-token: write
|
22
22
|
steps:
|
23
23
|
- name: Checkout
|
24
|
-
uses: actions/checkout@v4
|
24
|
+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
25
25
|
|
26
26
|
- name: Set up QEMU
|
27
|
-
uses: docker/setup-qemu-action@v3
|
27
|
+
uses: docker/setup-qemu-action@29109295f81e9208d7d86ff1c6c12d2833863392 # v3.6.0
|
28
28
|
|
29
29
|
- name: Set up Docker Buildx
|
30
|
-
uses: docker/setup-buildx-action@v3
|
30
|
+
uses: docker/setup-buildx-action@b5ca514318bd6ebac0fb2aedd5d36ec1b5c232a2 # v3.10.0
|
31
31
|
|
32
32
|
|
33
33
|
|
34
34
|
- name: Log in to Docker Hub
|
35
|
-
uses: docker/login-action@v3
|
35
|
+
uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0
|
36
36
|
with:
|
37
37
|
|
38
38
|
username: ${{ secrets.DOCKER_USERNAME }}
|
@@ -41,7 +41,7 @@ jobs:
|
|
41
41
|
|
42
42
|
|
43
43
|
- name: Log in to GitHub container registry
|
44
|
-
uses: docker/login-action@v3
|
44
|
+
uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0
|
45
45
|
with:
|
46
46
|
registry: ghcr.io
|
47
47
|
|
@@ -51,7 +51,7 @@ jobs:
|
|
51
51
|
|
52
52
|
- name: Extract metadata (tags, labels) for Docker
|
53
53
|
id: meta
|
54
|
-
uses: docker/metadata-action@v5
|
54
|
+
uses: docker/metadata-action@902fa8ec7d6ecbf8d84d538b9b233a880e428804 # v5.7.0
|
55
55
|
with:
|
56
56
|
|
57
57
|
|
@@ -73,7 +73,7 @@ jobs:
|
|
73
73
|
|
74
74
|
- name: Build and push Docker image
|
75
75
|
id: push
|
76
|
-
uses: docker/build-push-action@v6
|
76
|
+
uses: docker/build-push-action@471d1dc4e07e5cdedd4c2171150001c434f0b7a4 # v6.15.0
|
77
77
|
with:
|
78
78
|
context: .
|
79
79
|
file: ./Dockerfile
|
@@ -86,7 +86,7 @@ jobs:
|
|
86
86
|
|
87
87
|
|
88
88
|
- name: Generate artifact attestation
|
89
|
-
uses: actions/attest-build-provenance@v2
|
89
|
+
uses: actions/attest-build-provenance@c074443f1aee8d4aeeae555aebba3282517141b2 # v2.2.3
|
90
90
|
with:
|
91
91
|
subject-name: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
|
92
92
|
subject-digest: ${{ steps.push.outputs.digest }}
|
@@ -15,12 +15,12 @@ jobs:
|
|
15
15
|
packages: read
|
16
16
|
steps:
|
17
17
|
- name: Checkout
|
18
|
-
uses: actions/checkout@v4
|
18
|
+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
19
19
|
with:
|
20
20
|
fetch-depth: 0
|
21
21
|
|
22
22
|
- name: Generate release notes
|
23
|
-
uses: orhun/git-cliff-action@v4
|
23
|
+
uses: orhun/git-cliff-action@4a4a951bc43fafe41cd2348d181853f52356bee7 # v4.4.2
|
24
24
|
id: git-cliff
|
25
25
|
with:
|
26
26
|
config: pyproject.toml
|
@@ -34,9 +34,9 @@ jobs:
|
|
34
34
|
|
35
35
|
|
36
36
|
- name: Install uv
|
37
|
-
uses: astral-sh/setup-uv@v5
|
37
|
+
uses: astral-sh/setup-uv@f94ec6bedd8674c4426838e6b50417d36b6ab231 # v5.3.1
|
38
38
|
with:
|
39
|
-
version: "0.
|
39
|
+
version: "0.6.3"
|
40
40
|
cache-dependency-glob: uv.lock
|
41
41
|
enable-cache: true
|
42
42
|
|
@@ -17,7 +17,7 @@ jobs:
|
|
17
17
|
id-token: write
|
18
18
|
steps:
|
19
19
|
- name: Checkout
|
20
|
-
uses: actions/checkout@v4
|
20
|
+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
21
21
|
with:
|
22
22
|
fetch-depth: 0
|
23
23
|
|
@@ -30,9 +30,9 @@ jobs:
|
|
30
30
|
sudo apt-get install -y curl jq xsltproc gnupg2 libcairo2
|
31
31
|
|
32
32
|
- name: Install uv (python package manager)
|
33
|
-
uses: astral-sh/setup-uv@v5
|
33
|
+
uses: astral-sh/setup-uv@f94ec6bedd8674c4426838e6b50417d36b6ab231 # v5.3.1
|
34
34
|
with:
|
35
|
-
version: "0.
|
35
|
+
version: "0.6.3"
|
36
36
|
enable-cache: true
|
37
37
|
cache-dependency-glob: uv.lock
|
38
38
|
|
@@ -58,7 +58,7 @@ jobs:
|
|
58
58
|
echo "Development build - Current version in pyproject.toml: $TOML_VERSION"
|
59
59
|
|
60
60
|
- name: Create .env file
|
61
|
-
uses: SpicyPizza/create-envfile@v2.0
|
61
|
+
uses: SpicyPizza/create-envfile@ace6d4f5d7802b600276c23ca417e669f1a06f6f # v2.0.3
|
62
62
|
with:
|
63
63
|
envkey_ENV_KEY: "ENV_VALUE"
|
64
64
|
fail_on_empty: true
|
@@ -80,7 +80,7 @@ jobs:
|
|
80
80
|
uv run nox
|
81
81
|
|
82
82
|
- name: Upload test results
|
83
|
-
uses: actions/upload-artifact@v4
|
83
|
+
uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1
|
84
84
|
if: ${{ always() && (env.GITHUB_WORKFLOW_RUNTIME != 'ACT') }}
|
85
85
|
with:
|
86
86
|
name: test-results
|
@@ -94,7 +94,7 @@ jobs:
|
|
94
94
|
retention-days: 30
|
95
95
|
|
96
96
|
- name: Upload coverage reports to Codecov
|
97
|
-
uses: codecov/codecov-action@v5
|
97
|
+
uses: codecov/codecov-action@0565863a31f2c772f9f0395002a31e3f06189574 # v5.4.0
|
98
98
|
if: ${{ !cancelled() && (env.GITHUB_WORKFLOW_RUNTIME != 'ACT') }}
|
99
99
|
with:
|
100
100
|
token: ${{ secrets.CODECOV_TOKEN }}
|
@@ -102,12 +102,12 @@ jobs:
|
|
102
102
|
|
103
103
|
- name: Upload test results to Codecov
|
104
104
|
if: ${{ !cancelled() && (env.GITHUB_WORKFLOW_RUNTIME != 'ACT') }}
|
105
|
-
uses: codecov/test-results-action@v1
|
105
|
+
uses: codecov/test-results-action@f2dba722c67b86c6caa034178c6e4d35335f6706 # v1.1.0
|
106
106
|
with:
|
107
107
|
token: ${{ secrets.CODECOV_TOKEN }}
|
108
108
|
- name: SonarQube Scan
|
109
109
|
if: ${{ !cancelled() && (env.GITHUB_WORKFLOW_RUNTIME != 'ACT') }}
|
110
|
-
uses: SonarSource/sonarqube-scan-action@v5
|
110
|
+
uses: SonarSource/sonarqube-scan-action@0303d6b62e310685c0e34d0b9cde218036885c4d # v5.0.0
|
111
111
|
env:
|
112
112
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
113
113
|
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
|
@@ -20,6 +20,7 @@ fi
|
|
20
20
|
which jq &> /dev/null || brew install jq
|
21
21
|
which xmllint &> /dev/null || brew install xmllint
|
22
22
|
which act &> /dev/null || brew install act
|
23
|
+
which pinact &> /dev/null || brew install pinact
|
23
24
|
uv run pre-commit install # install pre-commit hooks, see https://pre-commit.com/
|
24
25
|
```
|
25
26
|
|
@@ -88,9 +89,10 @@ uv run nox -s test # run tests
|
|
88
89
|
uv run nox -s lint # run formatting and linting
|
89
90
|
uv run nox -s audit # run security and license audit, inc. sbom generation
|
90
91
|
uv run nox -s docs # build documentation, output in docs/build/html
|
92
|
+
uv run nox -s docs_pdf # locally build pdf manual to docs/build/latex/oe-python-template-example.pdf
|
91
93
|
```
|
92
94
|
|
93
|
-
As a shortcut, you can run build steps using `./n
|
95
|
+
As a shortcut, you can run build steps using `./n`, e.g.
|
94
96
|
|
95
97
|
```shell
|
96
98
|
./n test
|
@@ -129,22 +131,20 @@ docker build -t oe-python-template-example .
|
|
129
131
|
docker run --env THE_VAR=THE_VALUE oe-python-template-example --help
|
130
132
|
```
|
131
133
|
|
132
|
-
###
|
133
|
-
|
134
|
-
Update from template
|
134
|
+
### Pinning github actions
|
135
135
|
|
136
136
|
```shell
|
137
|
-
|
137
|
+
pinact run # See https://dev.to/suzukishunsuke/pin-github-actions-to-a-full-length-commit-sha-for-security-2n7p
|
138
138
|
```
|
139
139
|
|
140
|
-
###
|
140
|
+
### Copier
|
141
|
+
|
142
|
+
Update from template
|
141
143
|
|
142
144
|
```shell
|
143
|
-
|
144
|
-
./n docs_pdf # build latex, then generate pdf from it. Output in docs/build/latex/oe-python-template-example.pdf
|
145
|
+
uv run nox -s update_from_template
|
145
146
|
```
|
146
147
|
|
147
|
-
|
148
148
|
## Pull Request Guidelines
|
149
149
|
|
150
150
|
- Before starting to write code read the [code style guide](CODE_STYLE.md) document for mandatory coding style
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: oe-python-template-example
|
3
|
-
Version: 0.2.
|
3
|
+
Version: 0.2.5
|
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/
|
@@ -0,0 +1 @@
|
|
1
|
+
0.2.5
|
@@ -0,0 +1,204 @@
|
|
1
|
+
components:
|
2
|
+
schemas:
|
3
|
+
EchoRequest:
|
4
|
+
description: Request model for echo endpoint.
|
5
|
+
properties:
|
6
|
+
text:
|
7
|
+
description: The text to echo back
|
8
|
+
examples:
|
9
|
+
- Hello, world!
|
10
|
+
minLength: 1
|
11
|
+
title: Text
|
12
|
+
type: string
|
13
|
+
required:
|
14
|
+
- text
|
15
|
+
title: EchoRequest
|
16
|
+
type: object
|
17
|
+
EchoResponse:
|
18
|
+
description: Response model for echo endpoint.
|
19
|
+
properties:
|
20
|
+
message:
|
21
|
+
description: The message content
|
22
|
+
examples:
|
23
|
+
- Hello, world!
|
24
|
+
minLength: 1
|
25
|
+
title: Message
|
26
|
+
type: string
|
27
|
+
required:
|
28
|
+
- message
|
29
|
+
title: EchoResponse
|
30
|
+
type: object
|
31
|
+
HTTPValidationError:
|
32
|
+
properties:
|
33
|
+
detail:
|
34
|
+
items:
|
35
|
+
$ref: '#/components/schemas/ValidationError'
|
36
|
+
title: Detail
|
37
|
+
type: array
|
38
|
+
title: HTTPValidationError
|
39
|
+
type: object
|
40
|
+
Health:
|
41
|
+
description: Health status model.
|
42
|
+
properties:
|
43
|
+
reason:
|
44
|
+
anyOf:
|
45
|
+
- type: string
|
46
|
+
- type: 'null'
|
47
|
+
title: Reason
|
48
|
+
status:
|
49
|
+
$ref: '#/components/schemas/_HealthStatus'
|
50
|
+
required:
|
51
|
+
- status
|
52
|
+
title: Health
|
53
|
+
type: object
|
54
|
+
HelloWorldResponse:
|
55
|
+
description: Response model for hello-world endpoint.
|
56
|
+
properties:
|
57
|
+
message:
|
58
|
+
description: The hello world message
|
59
|
+
examples:
|
60
|
+
- Hello, world!
|
61
|
+
title: Message
|
62
|
+
type: string
|
63
|
+
required:
|
64
|
+
- message
|
65
|
+
title: HelloWorldResponse
|
66
|
+
type: object
|
67
|
+
ValidationError:
|
68
|
+
properties:
|
69
|
+
loc:
|
70
|
+
items:
|
71
|
+
anyOf:
|
72
|
+
- type: string
|
73
|
+
- type: integer
|
74
|
+
title: Location
|
75
|
+
type: array
|
76
|
+
msg:
|
77
|
+
title: Message
|
78
|
+
type: string
|
79
|
+
type:
|
80
|
+
title: Error Type
|
81
|
+
type: string
|
82
|
+
required:
|
83
|
+
- loc
|
84
|
+
- msg
|
85
|
+
- type
|
86
|
+
title: ValidationError
|
87
|
+
type: object
|
88
|
+
_HealthStatus:
|
89
|
+
description: Health status enumeration.
|
90
|
+
enum:
|
91
|
+
- UP
|
92
|
+
- DOWN
|
93
|
+
title: _HealthStatus
|
94
|
+
type: string
|
95
|
+
info:
|
96
|
+
contact:
|
97
|
+
email: helmuthva@gmail.com
|
98
|
+
name: Helmut Hoffer von Ankershoffen
|
99
|
+
url: https://github.com/helmut-hoffer-von-ankershoffen
|
100
|
+
termsOfService: https://oe-python-template-example.readthedocs.io/en/latest/
|
101
|
+
title: OE Python Template Example
|
102
|
+
version: 1.0.0
|
103
|
+
openapi: 3.1.0
|
104
|
+
paths:
|
105
|
+
/echo:
|
106
|
+
post:
|
107
|
+
description: "Echo back the provided text.\n\nArgs:\n request
|
108
|
+
(EchoRequest):\
|
109
|
+
\ The request containing the text to echo back.\n\nReturns:\n
|
110
|
+
EchoResponse:\
|
111
|
+
\ A response containing the echoed text.\n\nRaises:\n 422
|
112
|
+
Unprocessable\
|
113
|
+
\ Entity: If text is not provided or empty."
|
114
|
+
operationId: echo_echo_post
|
115
|
+
requestBody:
|
116
|
+
content:
|
117
|
+
application/json:
|
118
|
+
schema:
|
119
|
+
$ref: '#/components/schemas/EchoRequest'
|
120
|
+
required: true
|
121
|
+
responses:
|
122
|
+
'200':
|
123
|
+
content:
|
124
|
+
application/json:
|
125
|
+
schema:
|
126
|
+
$ref: '#/components/schemas/EchoResponse'
|
127
|
+
description: Successful Response
|
128
|
+
'422':
|
129
|
+
content:
|
130
|
+
application/json:
|
131
|
+
schema:
|
132
|
+
$ref: '#/components/schemas/HTTPValidationError'
|
133
|
+
description: Validation Error
|
134
|
+
summary: Echo
|
135
|
+
tags:
|
136
|
+
- Basics
|
137
|
+
/health:
|
138
|
+
get:
|
139
|
+
description: "Check the health of the service.\n\nThis endpoint returns
|
140
|
+
the\
|
141
|
+
\ health status of the service.\nThe health status can be either UP or
|
142
|
+
DOWN.\n\
|
143
|
+
If the service is healthy, the status will be UP.\nIf the service is
|
144
|
+
unhealthy,\
|
145
|
+
\ the status will be DOWN and a reason will be provided.\nThe response
|
146
|
+
will\
|
147
|
+
\ have a 200 OK status code if the service is healthy,\nand a 500
|
148
|
+
Internal\
|
149
|
+
\ Server Error status code if the service is unhealthy.\n\nReturns:\n
|
150
|
+
Health:\
|
151
|
+
\ The health status of the service."
|
152
|
+
operationId: health_health_get
|
153
|
+
responses:
|
154
|
+
'200':
|
155
|
+
content:
|
156
|
+
application/json:
|
157
|
+
schema:
|
158
|
+
$ref: '#/components/schemas/Health'
|
159
|
+
description: Successful Response
|
160
|
+
summary: Health
|
161
|
+
tags:
|
162
|
+
- Observability
|
163
|
+
/healthz:
|
164
|
+
get:
|
165
|
+
description: "Check the health of the service.\n\nThis endpoint returns
|
166
|
+
the\
|
167
|
+
\ health status of the service.\nThe health status can be either UP or
|
168
|
+
DOWN.\n\
|
169
|
+
If the service is healthy, the status will be UP.\nIf the service is
|
170
|
+
unhealthy,\
|
171
|
+
\ the status will be DOWN and a reason will be provided.\nThe response
|
172
|
+
will\
|
173
|
+
\ have a 200 OK status code if the service is healthy,\nand a 500
|
174
|
+
Internal\
|
175
|
+
\ Server Error status code if the service is unhealthy.\n\nReturns:\n
|
176
|
+
Health:\
|
177
|
+
\ The health status of the service."
|
178
|
+
operationId: health_healthz_get
|
179
|
+
responses:
|
180
|
+
'200':
|
181
|
+
content:
|
182
|
+
application/json:
|
183
|
+
schema:
|
184
|
+
$ref: '#/components/schemas/Health'
|
185
|
+
description: Successful Response
|
186
|
+
summary: Health
|
187
|
+
tags:
|
188
|
+
- Observability
|
189
|
+
/hello-world:
|
190
|
+
get:
|
191
|
+
description: "Return a hello world message.\n\nReturns:\n
|
192
|
+
HelloWorldResponse:\
|
193
|
+
\ A response containing the hello world message."
|
194
|
+
operationId: hello_world_hello_world_get
|
195
|
+
responses:
|
196
|
+
'200':
|
197
|
+
content:
|
198
|
+
application/json:
|
199
|
+
schema:
|
200
|
+
$ref: '#/components/schemas/HelloWorldResponse'
|
201
|
+
description: Successful Response
|
202
|
+
summary: Hello World
|
203
|
+
tags:
|
204
|
+
- Basics
|
@@ -104,9 +104,12 @@ openapi: 3.1.0
|
|
104
104
|
paths:
|
105
105
|
/echo:
|
106
106
|
post:
|
107
|
-
description: "Echo back the provided utterance.\n\nArgs:\n request
|
108
|
-
|
109
|
-
\
|
107
|
+
description: "Echo back the provided utterance.\n\nArgs:\n request
|
108
|
+
(Utterance):\
|
109
|
+
\ The request containing the utterance to echo back.\n\nReturns:\n
|
110
|
+
EchoResponse:\
|
111
|
+
\ A response containing the echoed utterance.\n\nRaises:\n 422
|
112
|
+
Unprocessable\
|
110
113
|
\ Entity: If utterance is not provided or empty."
|
111
114
|
operationId: echo_v2_echo_post
|
112
115
|
requestBody:
|
@@ -133,12 +136,18 @@ paths:
|
|
133
136
|
- Basics
|
134
137
|
/health:
|
135
138
|
get:
|
136
|
-
description: "Check the health of the service.\n\nThis endpoint returns
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
139
|
+
description: "Check the health of the service.\n\nThis endpoint returns
|
140
|
+
the\
|
141
|
+
\ health status of the service.\nThe health status can be either UP or
|
142
|
+
DOWN.\n\
|
143
|
+
If the service is healthy, the status will be UP.\nIf the service is
|
144
|
+
unhealthy,\
|
145
|
+
\ the status will be DOWN and a reason will be provided.\nThe response
|
146
|
+
will\
|
147
|
+
\ have a 200 OK status code if the service is healthy,\nand a 500
|
148
|
+
Internal\
|
149
|
+
\ Server Error status code if the service is unhealthy.\n\nReturns:\n
|
150
|
+
Health:\
|
142
151
|
\ The health status of the service."
|
143
152
|
operationId: health_health_get
|
144
153
|
responses:
|
@@ -153,12 +162,18 @@ paths:
|
|
153
162
|
- Observability
|
154
163
|
/healthz:
|
155
164
|
get:
|
156
|
-
description: "Check the health of the service.\n\nThis endpoint returns
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
165
|
+
description: "Check the health of the service.\n\nThis endpoint returns
|
166
|
+
the\
|
167
|
+
\ health status of the service.\nThe health status can be either UP or
|
168
|
+
DOWN.\n\
|
169
|
+
If the service is healthy, the status will be UP.\nIf the service is
|
170
|
+
unhealthy,\
|
171
|
+
\ the status will be DOWN and a reason will be provided.\nThe response
|
172
|
+
will\
|
173
|
+
\ have a 200 OK status code if the service is healthy,\nand a 500
|
174
|
+
Internal\
|
175
|
+
\ Server Error status code if the service is unhealthy.\n\nReturns:\n
|
176
|
+
Health:\
|
162
177
|
\ The health status of the service."
|
163
178
|
operationId: health_healthz_get
|
164
179
|
responses:
|
@@ -173,7 +188,8 @@ paths:
|
|
173
188
|
- Observability
|
174
189
|
/hello-world:
|
175
190
|
get:
|
176
|
-
description: "Return a hello world message.\n\nReturns:\n
|
191
|
+
description: "Return a hello world message.\n\nReturns:\n
|
192
|
+
HelloWorldResponse:\
|
177
193
|
\ A response containing the hello world message."
|
178
194
|
operationId: hello_world_hello_world_get
|
179
195
|
responses:
|
@@ -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.2.
|
32
|
+
version = "0.2.5"
|
33
33
|
release = version
|
34
34
|
github_username = "helmut-hoffer-von-ankershoffen"
|
35
35
|
github_repository = "oe-python-template-example"
|
@@ -7,11 +7,13 @@ from pathlib import Path
|
|
7
7
|
|
8
8
|
import nox
|
9
9
|
import tomli
|
10
|
+
from nox.command import CommandFailed
|
10
11
|
|
11
12
|
nox.options.reuse_existing_virtualenvs = True
|
12
13
|
nox.options.default_venv_backend = "uv"
|
13
14
|
|
14
15
|
NOT_SKIP_WITH_ACT = "not skip_with_act"
|
16
|
+
LATEXMK_VERSION_MIN = 4.86
|
15
17
|
|
16
18
|
|
17
19
|
def _setup_venv(session: nox.Session, all_extras: bool = True) -> None:
|
@@ -84,9 +86,33 @@ def docs(session: nox.Session) -> None:
|
|
84
86
|
|
85
87
|
@nox.session(python=["3.13"], default=False)
|
86
88
|
def docs_pdf(session: nox.Session) -> None:
|
87
|
-
"""Setup dev environment post project creation."""
|
89
|
+
"""Setup dev environment post project creation.""" # noqa: DOC501
|
88
90
|
_setup_venv(session)
|
89
|
-
|
91
|
+
try:
|
92
|
+
out = session.run("latexmk", "--version", external=True, silent=True)
|
93
|
+
|
94
|
+
version_match = re.search(r"Version (\d+\.\d+\w*)", str(out))
|
95
|
+
if not version_match:
|
96
|
+
session.error("Could not determine latexmk version")
|
97
|
+
|
98
|
+
version_str = version_match.group(1)
|
99
|
+
|
100
|
+
# Parse version (handle cases like "4.86a")
|
101
|
+
match = re.match(r"(\d+\.\d+)", version_str)
|
102
|
+
if not match:
|
103
|
+
session.error(f"Could not parse version number from '{version_str}'")
|
104
|
+
base_version = match.group(1)
|
105
|
+
|
106
|
+
if float(base_version) < LATEXMK_VERSION_MIN:
|
107
|
+
message = f"latexmk version {version_str} is outdated. Please run 'brew upgrade mactex' to upgrade."
|
108
|
+
raise ValueError(message) # noqa: TRY301
|
109
|
+
session.log(f"latexmk version {version_str} is sufficient")
|
110
|
+
session.run("make", "-C", "docs", "latexpdf", external=True)
|
111
|
+
|
112
|
+
except CommandFailed as e:
|
113
|
+
session.error(f"latexmk is not installed or not in PATH: {e}. Please run 'brew install mactex' to install")
|
114
|
+
except (ValueError, AttributeError) as e:
|
115
|
+
session.error(f"Failed to parse latexmk version information: {e}")
|
90
116
|
|
91
117
|
|
92
118
|
@nox.session(python=["3.13"])
|
@@ -1,6 +1,6 @@
|
|
1
1
|
[project]
|
2
2
|
name = "oe-python-template-example"
|
3
|
-
version = "0.2.
|
3
|
+
version = "0.2.5"
|
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 = [
|
@@ -242,7 +242,7 @@ source = ["src/"]
|
|
242
242
|
|
243
243
|
|
244
244
|
[tool.bumpversion]
|
245
|
-
current_version = "0.2.
|
245
|
+
current_version = "0.2.5"
|
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.2.3 → oe_python_template_example-0.2.5}/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.2.
|
3
|
+
sonar.projectVersion=0.2.5
|
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
|
@@ -1 +0,0 @@
|
|
1
|
-
0.2.3
|
@@ -1,14 +0,0 @@
|
|
1
|
-
Traceback (most recent call last):
|
2
|
-
File "/Users/helmut/Code/oe-python-template-example/.nox/docs-3-13/bin/oe-python-template-example", line 4, in <module>
|
3
|
-
from oe_python_template_example.cli import cli
|
4
|
-
File "/Users/helmut/Code/oe-python-template-example/src/oe_python_template_example/cli.py", line 9, in <module>
|
5
|
-
import yaml
|
6
|
-
File "/Users/helmut/Code/oe-python-template-example/.nox/docs-3-13/lib/python3.13/site-packages/yaml/__init__.py", line 8, in <module>
|
7
|
-
from .loader import *
|
8
|
-
File "/Users/helmut/Code/oe-python-template-example/.nox/docs-3-13/lib/python3.13/site-packages/yaml/loader.py", line 8, in <module>
|
9
|
-
from .constructor import *
|
10
|
-
File "/Users/helmut/Code/oe-python-template-example/.nox/docs-3-13/lib/python3.13/site-packages/yaml/constructor.py", line 19, in <module>
|
11
|
-
class BaseConstructor:
|
12
|
-
...<149 lines>...
|
13
|
-
cls.yaml_multi_constructors[tag_prefix] = multi_constructor
|
14
|
-
KeyboardInterrupt
|
@@ -1,15 +0,0 @@
|
|
1
|
-
API V1
|
2
|
-
======
|
3
|
-
|
4
|
-
.. only:: html
|
5
|
-
|
6
|
-
.. swagger-plugin:: _static/openapi_v1.yaml
|
7
|
-
:full-page:
|
8
|
-
|
9
|
-
.. only:: singlehtml
|
10
|
-
|
11
|
-
Visit the `Interactive API Documentation <https://oe-python-template-example.readthedocs.io/en/latest/api_v1.html>`_
|
12
|
-
|
13
|
-
.. only:: latex
|
14
|
-
|
15
|
-
Visit the `Interactive API Documentation <https://oe-python-template-example.readthedocs.io/en/latest/api_v1.html>`_
|
@@ -1,15 +0,0 @@
|
|
1
|
-
API V2
|
2
|
-
======
|
3
|
-
|
4
|
-
.. only:: html
|
5
|
-
|
6
|
-
.. swagger-plugin:: _static/openapi_v2.yaml
|
7
|
-
:full-page:
|
8
|
-
|
9
|
-
.. only:: singlehtml
|
10
|
-
|
11
|
-
Visit the `Interactive API Documentation <https://oe-python-template-example.readthedocs.io/en/latest/api_v2.html>`_
|
12
|
-
|
13
|
-
.. only:: latex
|
14
|
-
|
15
|
-
Visit the `Interactive API Documentation <https://oe-python-template-example.readthedocs.io/en/latest/api_v2.html>`_
|
File without changes
|
{oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/.devcontainer/Dockerfile
RENAMED
File without changes
|
File without changes
|
{oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/.devcontainer/onCreateCommand
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/.github/dependabot.yml
RENAMED
File without changes
|
File without changes
|
{oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/.pre-commit-config.yaml
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/.vscode/extensions.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
|
{oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/SERVICE_CONNECTIONS.md
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/docs/partials/README_footer.md
RENAMED
File without changes
|
{oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/docs/partials/README_header.md
RENAMED
File without changes
|
{oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/docs/partials/README_main.md
RENAMED
File without changes
|
{oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/docs/source/_static/.keep
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/docs/source/code-style.rst
RENAMED
File without changes
|
{oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/docs/source/contributing.rst
RENAMED
File without changes
|
File without changes
|
File without changes
|
{oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/docs/source/reference.rst
RENAMED
File without changes
|
{oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/docs/source/release-notes.rst
RENAMED
File without changes
|
{oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/docs/source/security.rst
RENAMED
File without changes
|
File without changes
|
{oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/examples/notebook.ipynb
RENAMED
File without changes
|
File without changes
|
File without changes
|
{oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/git-cliff-2.7.0/CHANGELOG.md
RENAMED
File without changes
|
{oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/git-cliff-2.7.0/LICENSE-APACHE
RENAMED
File without changes
|
{oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/git-cliff-2.7.0/LICENSE-MIT
RENAMED
File without changes
|
{oe_python_template_example-0.2.3 → oe_python_template_example-0.2.5}/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
|
File without changes
|