oe-python-template-example 0.0.4__tar.gz → 0.0.8__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 (87) hide show
  1. {oe_python_template_example-0.0.4 → oe_python_template_example-0.0.8}/.act-env +1 -1
  2. {oe_python_template_example-0.0.4 → oe_python_template_example-0.0.8}/.copier-answers.yml +1 -1
  3. {oe_python_template_example-0.0.4 → oe_python_template_example-0.0.8}/.devcontainer/devcontainer.json +0 -1
  4. {oe_python_template_example-0.0.4 → oe_python_template_example-0.0.8}/.devcontainer/onCreateCommand +1 -1
  5. {oe_python_template_example-0.0.4 → oe_python_template_example-0.0.8}/.github/workflows/package-build-publish-release.yml +1 -1
  6. {oe_python_template_example-0.0.4 → oe_python_template_example-0.0.8}/.github/workflows/test-and-report.yml +5 -10
  7. {oe_python_template_example-0.0.4 → oe_python_template_example-0.0.8}/.gitignore +1 -0
  8. {oe_python_template_example-0.0.4 → oe_python_template_example-0.0.8}/.pre-commit-config.yaml +19 -4
  9. {oe_python_template_example-0.0.4 → oe_python_template_example-0.0.8}/.vscode/extensions.json +0 -1
  10. {oe_python_template_example-0.0.4 → oe_python_template_example-0.0.8}/.vscode/settings.json +3 -8
  11. oe_python_template_example-0.0.4/RELEASE_NOTES.md → oe_python_template_example-0.0.8/CHANGELOG.md +7 -0
  12. {oe_python_template_example-0.0.4 → oe_python_template_example-0.0.8}/CODEOWNERS +1 -1
  13. {oe_python_template_example-0.0.4 → oe_python_template_example-0.0.8}/CONTRIBUTING.md +14 -0
  14. {oe_python_template_example-0.0.4 → oe_python_template_example-0.0.8}/PKG-INFO +14 -8
  15. {oe_python_template_example-0.0.4 → oe_python_template_example-0.0.8}/README.md +8 -4
  16. oe_python_template_example-0.0.8/RELEASE_NOTES.md +1 -0
  17. {oe_python_template_example-0.0.4 → oe_python_template_example-0.0.8}/SERVICE_CONNECTIONS.md +11 -2
  18. oe_python_template_example-0.0.8/VERSION +1 -0
  19. {oe_python_template_example-0.0.4 → oe_python_template_example-0.0.8}/_readme_header.md +5 -1
  20. {oe_python_template_example-0.0.4 → oe_python_template_example-0.0.8}/_readme_main.md +3 -3
  21. oe_python_template_example-0.0.8/bump +7 -0
  22. {oe_python_template_example-0.0.4 → oe_python_template_example-0.0.8}/compose.yaml +1 -1
  23. oe_python_template_example-0.0.8/docs/source/_static/openapi.json +185 -0
  24. oe_python_template_example-0.0.8/docs/source/_static/openapi.yaml +131 -0
  25. oe_python_template_example-0.0.8/docs/source/api.rst +5 -0
  26. {oe_python_template_example-0.0.4 → oe_python_template_example-0.0.8}/docs/source/conf.py +3 -2
  27. {oe_python_template_example-0.0.4 → oe_python_template_example-0.0.8}/docs/source/index.rst +4 -3
  28. {oe_python_template_example-0.0.4 → oe_python_template_example-0.0.8}/noxfile.py +30 -14
  29. {oe_python_template_example-0.0.4 → oe_python_template_example-0.0.8}/pyproject.toml +65 -14
  30. {oe_python_template_example-0.0.4 → oe_python_template_example-0.0.8}/sonar-project.properties +2 -2
  31. oe_python_template_example-0.0.8/src/oe_python_template_example/api.py +87 -0
  32. {oe_python_template_example-0.0.4 → oe_python_template_example-0.0.8}/src/oe_python_template_example/cli.py +33 -0
  33. oe_python_template_example-0.0.8/tests/api_test.py +48 -0
  34. oe_python_template_example-0.0.8/tests/cli_test.py +75 -0
  35. {oe_python_template_example-0.0.4 → oe_python_template_example-0.0.8}/uv.lock +383 -45
  36. oe_python_template_example-0.0.4/CHANGELOG.md +0 -32
  37. oe_python_template_example-0.0.4/VERSION +0 -1
  38. oe_python_template_example-0.0.4/bump +0 -3
  39. oe_python_template_example-0.0.4/tests/cli_test.py +0 -39
  40. {oe_python_template_example-0.0.4 → oe_python_template_example-0.0.8}/.act-secret +0 -0
  41. {oe_python_template_example-0.0.4 → oe_python_template_example-0.0.8}/.devcontainer/Dockerfile +0 -0
  42. {oe_python_template_example-0.0.4 → oe_python_template_example-0.0.8}/.devcontainer/postAttachCommand +0 -0
  43. {oe_python_template_example-0.0.4 → oe_python_template_example-0.0.8}/.devcontainer/postCreateCommand +0 -0
  44. {oe_python_template_example-0.0.4 → oe_python_template_example-0.0.8}/.env.example +0 -0
  45. {oe_python_template_example-0.0.4 → oe_python_template_example-0.0.8}/.github/workflows/docker-image-build-publish.yml +0 -0
  46. {oe_python_template_example-0.0.4 → oe_python_template_example-0.0.8}/.python-version +0 -0
  47. {oe_python_template_example-0.0.4 → oe_python_template_example-0.0.8}/.readthedocs.yml +0 -0
  48. {oe_python_template_example-0.0.4 → oe_python_template_example-0.0.8}/.secrets.baseline +0 -0
  49. {oe_python_template_example-0.0.4 → oe_python_template_example-0.0.8}/Dockerfile +0 -0
  50. {oe_python_template_example-0.0.4 → oe_python_template_example-0.0.8}/LICENSE +0 -0
  51. {oe_python_template_example-0.0.4 → oe_python_template_example-0.0.8}/_readme_footer.md +0 -0
  52. {oe_python_template_example-0.0.4 → oe_python_template_example-0.0.8}/bin/git-cliff +0 -0
  53. {oe_python_template_example-0.0.4 → oe_python_template_example-0.0.8}/codecov.yml +0 -0
  54. {oe_python_template_example-0.0.4 → oe_python_template_example-0.0.8}/docs/Makefile +0 -0
  55. {oe_python_template_example-0.0.4 → oe_python_template_example-0.0.8}/docs/make.bat +0 -0
  56. {oe_python_template_example-0.0.4 → oe_python_template_example-0.0.8}/docs/source/_static/.keep +0 -0
  57. {oe_python_template_example-0.0.4 → oe_python_template_example-0.0.8}/docs/source/contributing.rst +0 -0
  58. {oe_python_template_example-0.0.4 → oe_python_template_example-0.0.8}/docs/source/latexmkrc +0 -0
  59. {oe_python_template_example-0.0.4 → oe_python_template_example-0.0.8}/docs/source/main.rst +0 -0
  60. {oe_python_template_example-0.0.4 → oe_python_template_example-0.0.8}/docs/source/reference.rst +0 -0
  61. {oe_python_template_example-0.0.4 → oe_python_template_example-0.0.8}/docs/source/release-notes.rst +0 -0
  62. {oe_python_template_example-0.0.4 → oe_python_template_example-0.0.8}/examples/__init__.py +0 -0
  63. {oe_python_template_example-0.0.4 → oe_python_template_example-0.0.8}/examples/notebook.ipynb +0 -0
  64. {oe_python_template_example-0.0.4 → oe_python_template_example-0.0.8}/examples/notebook.py +0 -0
  65. {oe_python_template_example-0.0.4 → oe_python_template_example-0.0.8}/examples/script.py +0 -0
  66. {oe_python_template_example-0.0.4 → oe_python_template_example-0.0.8}/examples/streamlit.py +0 -0
  67. {oe_python_template_example-0.0.4 → oe_python_template_example-0.0.8}/git-cliff-2.7.0/CHANGELOG.md +0 -0
  68. {oe_python_template_example-0.0.4 → oe_python_template_example-0.0.8}/git-cliff-2.7.0/LICENSE-APACHE +0 -0
  69. {oe_python_template_example-0.0.4 → oe_python_template_example-0.0.8}/git-cliff-2.7.0/LICENSE-MIT +0 -0
  70. {oe_python_template_example-0.0.4 → oe_python_template_example-0.0.8}/git-cliff-2.7.0/README.md +0 -0
  71. {oe_python_template_example-0.0.4 → oe_python_template_example-0.0.8}/git-cliff-2.7.0/completions/_git-cliff +0 -0
  72. {oe_python_template_example-0.0.4 → oe_python_template_example-0.0.8}/git-cliff-2.7.0/completions/_git-cliff.ps1 +0 -0
  73. {oe_python_template_example-0.0.4 → oe_python_template_example-0.0.8}/git-cliff-2.7.0/completions/git-cliff.bash +0 -0
  74. {oe_python_template_example-0.0.4 → oe_python_template_example-0.0.8}/git-cliff-2.7.0/completions/git-cliff.elv +0 -0
  75. {oe_python_template_example-0.0.4 → oe_python_template_example-0.0.8}/git-cliff-2.7.0/completions/git-cliff.fish +0 -0
  76. {oe_python_template_example-0.0.4 → oe_python_template_example-0.0.8}/git-cliff-2.7.0/git-cliff-completions +0 -0
  77. {oe_python_template_example-0.0.4 → oe_python_template_example-0.0.8}/git-cliff-2.7.0/git-cliff-mangen +0 -0
  78. {oe_python_template_example-0.0.4 → oe_python_template_example-0.0.8}/git-cliff-2.7.0/man/git-cliff.1 +0 -0
  79. {oe_python_template_example-0.0.4 → oe_python_template_example-0.0.8}/git-cliff-2.7.0-x86_64-unknown-linux-gnu.tar.gz +0 -0
  80. {oe_python_template_example-0.0.4 → oe_python_template_example-0.0.8}/github-action-run +0 -0
  81. {oe_python_template_example-0.0.4 → oe_python_template_example-0.0.8}/latexmkrc +0 -0
  82. {oe_python_template_example-0.0.4 → oe_python_template_example-0.0.8}/logo.png +0 -0
  83. {oe_python_template_example-0.0.4 → oe_python_template_example-0.0.8}/src/oe_python_template_example/__init__.py +0 -0
  84. {oe_python_template_example-0.0.4 → oe_python_template_example-0.0.8}/src/oe_python_template_example/constants.py +0 -0
  85. {oe_python_template_example-0.0.4 → oe_python_template_example-0.0.8}/src/oe_python_template_example/service.py +0 -0
  86. {oe_python_template_example-0.0.4 → oe_python_template_example-0.0.8}/tests/__init__.py +0 -0
  87. {oe_python_template_example-0.0.4 → oe_python_template_example-0.0.8}/tests/fixtures/.keep +0 -0
@@ -1,2 +1,2 @@
1
- GITLAB_WORKFLOW_RUNTIME=ACT
1
+ GITHUB_WORKFLOW_RUNTIME=ACT
2
2
  ACTIONS_RUNTIME_TOKEN=TOKEN
@@ -1,4 +1,4 @@
1
- _commit: v0.2.2
1
+ _commit: v0.3.6
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
@@ -21,7 +21,6 @@
21
21
  "charliermarsh.ruff",
22
22
  "codecov.codecov",
23
23
  "donjayamanne.python-environment-manager",
24
- "elagil.pre-commit-helper",
25
24
  "fill-labs.dependi",
26
25
  "github.vscode-github-actions",
27
26
  "github.copilot",
@@ -1,7 +1,7 @@
1
1
  #!/bin/sh
2
2
 
3
3
  echo "onCreateCommand: start"
4
- git config --global --add safe.directory /workspaces/
4
+ git config --global --add safe.directory /workspaces/oe-python-template-example
5
5
  rm -rf .nox
6
6
  rm -rf .venv
7
7
  uv sync --frozen
@@ -25,7 +25,7 @@ jobs:
25
25
  id: git-cliff
26
26
  with:
27
27
  config: pyproject.toml
28
- args: --verbose
28
+ args: --verbose --latest --strip header
29
29
  env:
30
30
  OUTPUT: RELEASE_NOTES.md
31
31
  GITHUB_REPO: ${{ github.repository }}
@@ -31,11 +31,6 @@ jobs:
31
31
  enable-cache: true
32
32
  cache-dependency-glob: uv.lock
33
33
 
34
- - uses: actions/setup-node@v4
35
- with:
36
- node-version: 18
37
- - run: npm install @modelcontextprotocol/inspector@0.3.0
38
-
39
34
  - name: Install Python, venv and dependencies
40
35
  run: |
41
36
  uv sync --all-extras --frozen --link-mode=copy
@@ -52,7 +47,7 @@ jobs:
52
47
  fi
53
48
 
54
49
  - name: Print development version info
55
- if: s${{ !startsWith(github.ref, 'refs/tags/v') }}
50
+ if: ${{ !startsWith(github.ref, 'refs/tags/v') }}
56
51
  run: |
57
52
  TOML_VERSION=$(uv run python -c "import tomli; print(tomli.load(open('pyproject.toml', 'rb'))['project']['version'])")
58
53
  echo "Development build - Current version in pyproject.toml: $TOML_VERSION"
@@ -81,7 +76,7 @@ jobs:
81
76
 
82
77
  - name: Upload test results
83
78
  uses: actions/upload-artifact@v4
84
- if: ${{ always() && (env.GITLAB_WORKFLOW_RUNTIME != 'ACT') }}
79
+ if: ${{ always() && (env.GITHUB_WORKFLOW_RUNTIME != 'ACT') }}
85
80
  with:
86
81
  name: test-results
87
82
  path: |
@@ -95,18 +90,18 @@ jobs:
95
90
 
96
91
  - name: Upload coverage reports to Codecov
97
92
  uses: codecov/codecov-action@v5
98
- if: ${{ !cancelled() && (env.GITLAB_WORKFLOW_RUNTIME != 'ACT') }}
93
+ if: ${{ !cancelled() && (env.GITHUB_WORKFLOW_RUNTIME != 'ACT') }}
99
94
  with:
100
95
  token: ${{ secrets.CODECOV_TOKEN }}
101
96
  slug: helmut-hoffer-von-ankershoffen/oe-python-template-example
102
97
 
103
98
  - name: Upload test results to Codecov
104
- if: ${{ !cancelled() && (env.GITLAB_WORKFLOW_RUNTIME != 'ACT') }}
99
+ if: ${{ !cancelled() && (env.GITHUB_WORKFLOW_RUNTIME != 'ACT') }}
105
100
  uses: codecov/test-results-action@v1
106
101
  with:
107
102
  token: ${{ secrets.CODECOV_TOKEN }}
108
103
  - name: SonarQube Scan
109
- if: ${{ !cancelled() && (env.GITLAB_WORKFLOW_RUNTIME != 'ACT') }}
104
+ if: ${{ !cancelled() && (env.GITHUB_WORKFLOW_RUNTIME != 'ACT') }}
110
105
  uses: SonarSource/sonarqube-scan-action@v4
111
106
  env:
112
107
  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -43,6 +43,7 @@ vulnerabilities.json
43
43
  licenses.json
44
44
  licenses-inverted.json
45
45
  sbom.json
46
+ mypi_junit.xml
46
47
 
47
48
  # IDE
48
49
  .idea/
@@ -6,6 +6,22 @@ default_install_hook_types:
6
6
  - post-rewrite
7
7
  fail_fast: true
8
8
  repos:
9
+ - repo: meta
10
+ hooks:
11
+ - id: check-useless-excludes
12
+ - repo: https://github.com/pre-commit/pygrep-hooks
13
+ rev: v1.10.0
14
+ hooks:
15
+ - id: python-check-blanket-noqa
16
+ - id: python-check-blanket-type-ignore
17
+ - id: python-check-mock-methods
18
+ - id: python-no-eval
19
+ - id: python-no-log-warn
20
+ - id: python-use-type-annotations
21
+ - id: rst-backticks
22
+ - id: rst-directive-colons
23
+ - id: rst-inline-touching-normal
24
+ - id: text-unicode-replacement-char
9
25
  - repo: https://github.com/pre-commit/pre-commit-hooks
10
26
  rev: v5.0.0
11
27
  hooks:
@@ -37,16 +53,15 @@ repos:
37
53
  - id: name-tests-test
38
54
  - id: requirements-txt-fixer
39
55
  - id: trailing-whitespace
56
+ exclude: "docs/source/_static"
40
57
  - repo: https://github.com/Yelp/detect-secrets
41
58
  rev: v1.5.0
42
59
  hooks:
43
- - id: detect-secrets
60
+ - id: detect-secrets
44
61
  args: ['--baseline', '.secrets.baseline']
45
62
  additional_dependencies: ["gibberish-detector"]
46
- exclude: package.lock.json
47
63
  - repo: https://github.com/astral-sh/uv-pre-commit
48
- # uv version.
49
- rev: 0.5.8
64
+ rev: 0.6.5
50
65
  hooks:
51
66
  - id: uv-lock
52
67
  - repo: local
@@ -3,7 +3,6 @@
3
3
  "charliermarsh.ruff",
4
4
  "codecov.codecov",
5
5
  "donjayamanne.python-environment-manager",
6
- "elagil.pre-commit-helper",
7
6
  "fill-labs.dependi",
8
7
  "github.vscode-github-actions",
9
8
  "github.copilot",
@@ -3,7 +3,6 @@
3
3
  "**/__pycache__ ": true
4
4
  },
5
5
  "editor.formatOnSave": true,
6
- "editor.defaultFormatter": "charliermarsh.ruff",
7
6
  "terminal.integrated.scrollback": 100000,
8
7
  "[python]": {
9
8
  "editor.codeActionsOnSave": {
@@ -40,7 +39,7 @@
40
39
  "python.testing.pytestEnabled": true,
41
40
  "python.testing.pytestArgs": [
42
41
  "-v",
43
- "--cov={{ project_name_snake_case }}"
42
+ "--cov=oe_python_template_example"
44
43
  ],
45
44
  "github.copilot.selectedCompletionModel": "gpt-4o-copilot",
46
45
  "github.copilot.nextEditSuggestions.enabled": true,
@@ -67,9 +66,5 @@
67
66
  "sonarlint.connectedMode.project": {
68
67
  "connectionId": "helmut-hoffer-von-ankershoffen",
69
68
  "projectKey": "helmut-hoffer-von-ankershoffen_oe-python-template-example"
70
- },
71
- "pre-commit-helper.runOnSave": "fixes",
72
- "pre-commit-helper.excludedHookIds": [
73
- "nox"
74
- ],
75
- }
69
+ }
70
+ }
@@ -1,5 +1,12 @@
1
1
  [🧠 OE Python Template Example](https://oe-python-template-example.readthedocs.io/en/latest/)
2
2
 
3
+ ## [0.0.7](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/compare/v0.0.4..v0.0.7) - 2025-03-08
4
+
5
+ ### ⚙️ Miscellaneous Tasks
6
+
7
+ - *(template)* Bump - ([355683b](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/commit/355683b69c3ef67461b9d7a562c71fcd5e048ad9))
8
+
9
+
3
10
  ## [0.0.4](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/compare/v0.0.3..v0.0.4) - 2025-03-02
4
11
 
5
12
  ### 📚 Documentation
@@ -1,3 +1,3 @@
1
- # oe_python_template_example code owners
1
+ # oe-python-template-example code owners
2
2
 
3
3
  [*] @helmut-hoffer-von-ankershoffen # noqa
@@ -111,6 +111,20 @@ docker build -t oe-python-template-example .
111
111
  docker run --env THE_VAR=THE_VALUE oe-python-template-example --help
112
112
  ```
113
113
 
114
+ ### Copier
115
+
116
+ Update scaffold from template
117
+
118
+ ```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
126
+ ```
127
+
114
128
  ## Pull Request Guidelines
115
129
 
116
130
  - **Pre-Commit Hooks:** We use pre-commit hooks to ensure code quality. Please install the pre-commit hooks by running `uv run pre-commit install`. This ensure all tests, linting etc. pass locally before you can commit.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: oe-python-template-example
3
- Version: 0.0.4
3
+ Version: 0.0.8
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/
@@ -30,7 +30,7 @@ License: MIT License
30
30
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
31
31
  SOFTWARE.
32
32
  License-File: LICENSE
33
- Keywords: codecov,docker,oe-python-template-example,pydantic,python,ruff,typer,uv
33
+ Keywords: act,codecov,copier,cyclonedx,detect-secrets,devcontainer,docker,git-cliff,jupyter,marimo,mypy,nox,oe-python-template,oe-python-template-example,pip-audit,pip-licenses,pre-commit,pydantic,pypi,pytest,python,readthedocs,ruff,sonarcloud,sonarqube,sphinx,streamlit,typer,uv
34
34
  Classifier: Development Status :: 2 - Pre-Alpha
35
35
  Classifier: Framework :: Pydantic
36
36
  Classifier: Framework :: Pytest
@@ -48,13 +48,15 @@ Classifier: Programming Language :: Python :: 3.12
48
48
  Classifier: Programming Language :: Python :: 3.13
49
49
  Classifier: Typing :: Typed
50
50
  Requires-Python: <4.0,>=3.11
51
+ Requires-Dist: fastapi[all,standard]>=0.115.11
51
52
  Requires-Dist: pydantic>=2.10.6
52
53
  Requires-Dist: python-dotenv>=1.0.1
53
54
  Requires-Dist: typer>=0.15.1
54
55
  Provides-Extra: examples
56
+ Requires-Dist: jinja2>=3.1.6; extra == 'examples'
55
57
  Requires-Dist: jupyter>=1.1.1; extra == 'examples'
56
- Requires-Dist: marimo>=0.11.13; extra == 'examples'
57
- Requires-Dist: streamlit>=1.42.2; extra == 'examples'
58
+ Requires-Dist: marimo>=0.11.17; extra == 'examples'
59
+ Requires-Dist: streamlit>=1.43.1; extra == 'examples'
58
60
  Description-Content-Type: text/markdown
59
61
 
60
62
  # 🧠 OE Python Template Example
@@ -71,13 +73,17 @@ Description-Content-Type: text/markdown
71
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)
72
74
  [![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)
73
75
  [![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)
76
+ [![MyPy](https://img.shields.io/badge/mypy-checked-blue)](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/blob/main/noxfile.py)
74
77
  [![GitHub - Version](https://img.shields.io/github/v/release/helmut-hoffer-von-ankershoffen/oe-python-template-example?label=GitHub&style=flat&labelColor=1C2C2E&color=blue&logo=GitHub&logoColor=white)](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/releases)
75
78
  [![GitHub - Commits](https://img.shields.io/github/commit-activity/m/helmut-hoffer-von-ankershoffen/oe-python-template-example/main?label=commits&style=flat&labelColor=1C2C2E&color=blue&logo=GitHub&logoColor=white)](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/commits/main/)
76
79
  [![PyPI - Version](https://img.shields.io/pypi/v/oe-python-template-example.svg?label=PyPI&logo=pypi&logoColor=%23FFD243&labelColor=%230073B7&color=FDFDFD)](https://pypi.python.org/pypi/oe-python-template-example)
77
80
  [![PyPI - Status](https://img.shields.io/pypi/status/oe-python-template-example?logo=pypi&logoColor=%23FFD243&labelColor=%230073B7&color=FDFDFD)](https://pypi.python.org/pypi/oe-python-template-example)
78
81
  [![Docker - Version](https://img.shields.io/docker/v/helmuthva/oe-python-template-example?sort=semver&label=Docker&logo=docker&logoColor=white&labelColor=1354D4&color=10151B)](https://hub.docker.com/r/helmuthva/oe-python-template-example/tags)
79
- [![Docker - Size](https://img.shields.io/docker/image-size/helmuthva/oe-python-template-examplesort=semver&arch=arm64&label=image&logo=docker&logoColor=white&labelColor=1354D4&color=10151B)](https://hub.docker.com/r/helmuthva/oe-python-template-example/)
82
+ [![Docker - Size](https://img.shields.io/docker/image-size/helmuthva/oe-python-template-example?sort=semver&arch=arm64&label=image&logo=docker&logoColor=white&labelColor=1354D4&color=10151B)](https://hub.docker.com/r/helmuthva/oe-python-template-example/)
80
83
  [![Copier](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/copier-org/copier/master/img/badge/badge-grayscale-inverted-border-orange.json)](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template)
84
+ [![Open in Dev Containers](https://img.shields.io/static/v1?label=Dev%20Containers&message=Open&color=blue&logo=data:image/svg%2bxml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTE3IDE2VjdsLTYgNU0yIDlWOGwxLTFoMWw0IDMgOC04aDFsNCAyIDEgMXYxNGwtMSAxLTQgMmgtMWwtOC04LTQgM0gzbC0xLTF2LTFsMy0zIi8+PC9zdmc+)](https://vscode.dev/redirect?url=vscode://ms-vscode-remote.remote-containers/cloneInVolume?url=https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example)
85
+ [![Open in GitHub Codespaces](https://img.shields.io/static/v1?label=GitHub%20Codespaces&message=Open&color=blue&logo=github)](https://github.com/codespaces/new/helmut-hoffer-von-ankershoffen/oe-python-template-example)
86
+
81
87
  <!---
82
88
  [![ghcr.io - Version](https://ghcr-badge.egpl.dev/helmut-hoffer-von-ankershoffen/oe-python-template-example/tags?color=%2344cc11&ignore=0.0%2C0%2Clatest&n=3&label=ghcr.io&trim=)](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/pkgs/container/oe-python-template-example)
83
89
  [![ghcr.io - Sze](https://ghcr-badge.egpl.dev/helmut-hoffer-von-ankershoffen/oe-python-template-example/size?color=%2344cc11&tag=latest&label=size&trim=)](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/pkgs/container/oe-python-template-example)
@@ -122,7 +128,7 @@ copier copy gh:helmut-hoffer-von-ankershoffen/oe-python-template .
122
128
  Step 4: Setup the local environment
123
129
 
124
130
  ```shell
125
- uv run nox -s setup_eev
131
+ uv run nox -s setup_dev
126
132
  ```
127
133
 
128
134
  Step 5: Perform inital commit and push
@@ -169,8 +175,8 @@ uvx oe-python-template-example
169
175
  The CLI provides extensive help:
170
176
 
171
177
  ```shell
172
- uvx oe-python-template-example --help # all CLI commands
173
- uvx oe-python-template-example command --help # all options for command
178
+ uvx oe-python-template-example --help # all CLI commands
179
+ uvx oe-python-template-example hello-world --help # help for specific command
174
180
  ```
175
181
 
176
182
 
@@ -12,13 +12,17 @@
12
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
13
  [![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)
14
14
  [![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)
15
+ [![MyPy](https://img.shields.io/badge/mypy-checked-blue)](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/blob/main/noxfile.py)
15
16
  [![GitHub - Version](https://img.shields.io/github/v/release/helmut-hoffer-von-ankershoffen/oe-python-template-example?label=GitHub&style=flat&labelColor=1C2C2E&color=blue&logo=GitHub&logoColor=white)](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/releases)
16
17
  [![GitHub - Commits](https://img.shields.io/github/commit-activity/m/helmut-hoffer-von-ankershoffen/oe-python-template-example/main?label=commits&style=flat&labelColor=1C2C2E&color=blue&logo=GitHub&logoColor=white)](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/commits/main/)
17
18
  [![PyPI - Version](https://img.shields.io/pypi/v/oe-python-template-example.svg?label=PyPI&logo=pypi&logoColor=%23FFD243&labelColor=%230073B7&color=FDFDFD)](https://pypi.python.org/pypi/oe-python-template-example)
18
19
  [![PyPI - Status](https://img.shields.io/pypi/status/oe-python-template-example?logo=pypi&logoColor=%23FFD243&labelColor=%230073B7&color=FDFDFD)](https://pypi.python.org/pypi/oe-python-template-example)
19
20
  [![Docker - Version](https://img.shields.io/docker/v/helmuthva/oe-python-template-example?sort=semver&label=Docker&logo=docker&logoColor=white&labelColor=1354D4&color=10151B)](https://hub.docker.com/r/helmuthva/oe-python-template-example/tags)
20
- [![Docker - Size](https://img.shields.io/docker/image-size/helmuthva/oe-python-template-examplesort=semver&arch=arm64&label=image&logo=docker&logoColor=white&labelColor=1354D4&color=10151B)](https://hub.docker.com/r/helmuthva/oe-python-template-example/)
21
+ [![Docker - Size](https://img.shields.io/docker/image-size/helmuthva/oe-python-template-example?sort=semver&arch=arm64&label=image&logo=docker&logoColor=white&labelColor=1354D4&color=10151B)](https://hub.docker.com/r/helmuthva/oe-python-template-example/)
21
22
  [![Copier](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/copier-org/copier/master/img/badge/badge-grayscale-inverted-border-orange.json)](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template)
23
+ [![Open in Dev Containers](https://img.shields.io/static/v1?label=Dev%20Containers&message=Open&color=blue&logo=data:image/svg%2bxml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTE3IDE2VjdsLTYgNU0yIDlWOGwxLTFoMWw0IDMgOC04aDFsNCAyIDEgMXYxNGwtMSAxLTQgMmgtMWwtOC04LTQgM0gzbC0xLTF2LTFsMy0zIi8+PC9zdmc+)](https://vscode.dev/redirect?url=vscode://ms-vscode-remote.remote-containers/cloneInVolume?url=https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example)
24
+ [![Open in GitHub Codespaces](https://img.shields.io/static/v1?label=GitHub%20Codespaces&message=Open&color=blue&logo=github)](https://github.com/codespaces/new/helmut-hoffer-von-ankershoffen/oe-python-template-example)
25
+
22
26
  <!---
23
27
  [![ghcr.io - Version](https://ghcr-badge.egpl.dev/helmut-hoffer-von-ankershoffen/oe-python-template-example/tags?color=%2344cc11&ignore=0.0%2C0%2Clatest&n=3&label=ghcr.io&trim=)](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/pkgs/container/oe-python-template-example)
24
28
  [![ghcr.io - Sze](https://ghcr-badge.egpl.dev/helmut-hoffer-von-ankershoffen/oe-python-template-example/size?color=%2344cc11&tag=latest&label=size&trim=)](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/pkgs/container/oe-python-template-example)
@@ -63,7 +67,7 @@ copier copy gh:helmut-hoffer-von-ankershoffen/oe-python-template .
63
67
  Step 4: Setup the local environment
64
68
 
65
69
  ```shell
66
- uv run nox -s setup_eev
70
+ uv run nox -s setup_dev
67
71
  ```
68
72
 
69
73
  Step 5: Perform inital commit and push
@@ -110,8 +114,8 @@ uvx oe-python-template-example
110
114
  The CLI provides extensive help:
111
115
 
112
116
  ```shell
113
- uvx oe-python-template-example --help # all CLI commands
114
- uvx oe-python-template-example command --help # all options for command
117
+ uvx oe-python-template-example --help # all CLI commands
118
+ uvx oe-python-template-example hello-world --help # help for specific command
115
119
  ```
116
120
 
117
121
 
@@ -29,10 +29,10 @@
29
29
 
30
30
  ## Publishing package to Python Package Index (pypi.org)
31
31
 
32
- 1. Execute `uv run build`. This will generate the build files (wheel and tar.gz) in the `dist` folder
32
+ 1. Execute `uv build`. This will generate the build files (wheel and tar.gz) in the `dist` folder
33
33
  2. Sign-Up at https://pypi.org/
34
34
  3. Goto https://pypi.org/manage/account/ and create an API token of scope "Entire account", calling it oe-python-template-example. Copy the value of the token into your clipboard.
35
- 4. Execute `uv run publish`, entering __token__ as username and paste the token from your clipboard as password. This will register your package on PyPI and upload the build files
35
+ 4. Execute `uv publish`, entering __token__ as username and paste the token from your clipboard as password. This will register your package on PyPI and upload the build files
36
36
  5. Goto https://pypi.org/manage/account/ again and delete the previously created token oe-python-template-example of scope "Entire account".
37
37
  6. Now create an new API token, again called oe-python-template-example, but this time of scope "Project: oe-python-template-example". Copy the token into your clipboard.
38
38
  7. Goto https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/settings/secrets/actions/new and delete the previously created token.
@@ -60,3 +60,12 @@
60
60
  3. Goto https://share.streamlit.io/new and click "Deploy a public app from GitHub"
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
+
64
+ ## Polishing GitHub repository
65
+
66
+ 1. Goto https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example
67
+ 2. Click on the cogs icon in the top right corner next to about
68
+ 4. Copy oe-python-template-example.readthedocs.io into the website field
69
+ 3. Copy the description from the pyproject.toml file into the description field
70
+ 5. Copy up to 20 tags from the pyproject.toml file into the topics field
71
+ 6. Goto https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/settings and upload a soclial media image (e.g. logo.png) into the "Social preview" field
@@ -0,0 +1 @@
1
+ 0.0.8
@@ -12,13 +12,17 @@
12
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
13
  [![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)
14
14
  [![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)
15
+ [![MyPy](https://img.shields.io/badge/mypy-checked-blue)](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/blob/main/noxfile.py)
15
16
  [![GitHub - Version](https://img.shields.io/github/v/release/helmut-hoffer-von-ankershoffen/oe-python-template-example?label=GitHub&style=flat&labelColor=1C2C2E&color=blue&logo=GitHub&logoColor=white)](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/releases)
16
17
  [![GitHub - Commits](https://img.shields.io/github/commit-activity/m/helmut-hoffer-von-ankershoffen/oe-python-template-example/main?label=commits&style=flat&labelColor=1C2C2E&color=blue&logo=GitHub&logoColor=white)](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/commits/main/)
17
18
  [![PyPI - Version](https://img.shields.io/pypi/v/oe-python-template-example.svg?label=PyPI&logo=pypi&logoColor=%23FFD243&labelColor=%230073B7&color=FDFDFD)](https://pypi.python.org/pypi/oe-python-template-example)
18
19
  [![PyPI - Status](https://img.shields.io/pypi/status/oe-python-template-example?logo=pypi&logoColor=%23FFD243&labelColor=%230073B7&color=FDFDFD)](https://pypi.python.org/pypi/oe-python-template-example)
19
20
  [![Docker - Version](https://img.shields.io/docker/v/helmuthva/oe-python-template-example?sort=semver&label=Docker&logo=docker&logoColor=white&labelColor=1354D4&color=10151B)](https://hub.docker.com/r/helmuthva/oe-python-template-example/tags)
20
- [![Docker - Size](https://img.shields.io/docker/image-size/helmuthva/oe-python-template-examplesort=semver&arch=arm64&label=image&logo=docker&logoColor=white&labelColor=1354D4&color=10151B)](https://hub.docker.com/r/helmuthva/oe-python-template-example/)
21
+ [![Docker - Size](https://img.shields.io/docker/image-size/helmuthva/oe-python-template-example?sort=semver&arch=arm64&label=image&logo=docker&logoColor=white&labelColor=1354D4&color=10151B)](https://hub.docker.com/r/helmuthva/oe-python-template-example/)
21
22
  [![Copier](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/copier-org/copier/master/img/badge/badge-grayscale-inverted-border-orange.json)](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template)
23
+ [![Open in Dev Containers](https://img.shields.io/static/v1?label=Dev%20Containers&message=Open&color=blue&logo=data:image/svg%2bxml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTE3IDE2VjdsLTYgNU0yIDlWOGwxLTFoMWw0IDMgOC04aDFsNCAyIDEgMXYxNGwtMSAxLTQgMmgtMWwtOC04LTQgM0gzbC0xLTF2LTFsMy0zIi8+PC9zdmc+)](https://vscode.dev/redirect?url=vscode://ms-vscode-remote.remote-containers/cloneInVolume?url=https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example)
24
+ [![Open in GitHub Codespaces](https://img.shields.io/static/v1?label=GitHub%20Codespaces&message=Open&color=blue&logo=github)](https://github.com/codespaces/new/helmut-hoffer-von-ankershoffen/oe-python-template-example)
25
+
22
26
  <!---
23
27
  [![ghcr.io - Version](https://ghcr-badge.egpl.dev/helmut-hoffer-von-ankershoffen/oe-python-template-example/tags?color=%2344cc11&ignore=0.0%2C0%2Clatest&n=3&label=ghcr.io&trim=)](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/pkgs/container/oe-python-template-example)
24
28
  [![ghcr.io - Sze](https://ghcr-badge.egpl.dev/helmut-hoffer-von-ankershoffen/oe-python-template-example/size?color=%2344cc11&tag=latest&label=size&trim=)](https://github.com/helmut-hoffer-von-ankershoffen/oe-python-template-example/pkgs/container/oe-python-template-example)
@@ -32,7 +32,7 @@ copier copy gh:helmut-hoffer-von-ankershoffen/oe-python-template .
32
32
  Step 4: Setup the local environment
33
33
 
34
34
  ```shell
35
- uv run nox -s setup_eev
35
+ uv run nox -s setup_dev
36
36
  ```
37
37
 
38
38
  Step 5: Perform inital commit and push
@@ -79,8 +79,8 @@ uvx oe-python-template-example
79
79
  The CLI provides extensive help:
80
80
 
81
81
  ```shell
82
- uvx oe-python-template-example --help # all CLI commands
83
- uvx oe-python-template-example command --help # all options for command
82
+ uvx oe-python-template-example --help # all CLI commands
83
+ uvx oe-python-template-example hello-world --help # help for specific command
84
84
  ```
85
85
 
86
86
 
@@ -0,0 +1,7 @@
1
+ #!/bin/sh
2
+ VERSION_PART=${1:-patch}
3
+ if echo "$VERSION_PART" | grep -qE '^[0-9]+\.[0-9]+\.[0-9]+$'; then
4
+ uv run bump-my-version bump --new-version "$VERSION_PART" && git push
5
+ else
6
+ uv run bump-my-version bump "$VERSION_PART" && git push
7
+ fi
@@ -1,5 +1,5 @@
1
1
  services:
2
- oe_python_template_example:
2
+ oe-python-template-example:
3
3
  build: .
4
4
  env_file:
5
5
  - path: .env
@@ -0,0 +1,185 @@
1
+ {
2
+ "openapi": "3.1.0",
3
+ "info": {
4
+ "title": "OE Python Template Example",
5
+ "termsOfService": "https://oe-python-template-example.readthedocs.io/en/latest/",
6
+ "contact": {
7
+ "name": "Helmut Hoffer von Ankershoffen",
8
+ "url": "https://github.com/helmut-hoffer-von-ankershoffen",
9
+ "email": "helmuthva@gmail.com"
10
+ },
11
+ "version": "1.0.0"
12
+ },
13
+ "paths": {
14
+ "/hello-world": {
15
+ "get": {
16
+ "tags": [
17
+ "Basics"
18
+ ],
19
+ "summary": "Hello World",
20
+ "description": "Return a hello world message.\n\nReturns:\n HelloWorldResponse: A response containing the hello world message.",
21
+ "operationId": "hello_world_hello_world_get",
22
+ "responses": {
23
+ "200": {
24
+ "description": "Successful Response",
25
+ "content": {
26
+ "application/json": {
27
+ "schema": {
28
+ "$ref": "#/components/schemas/HelloWorldResponse"
29
+ }
30
+ }
31
+ }
32
+ }
33
+ }
34
+ }
35
+ },
36
+ "/echo": {
37
+ "post": {
38
+ "tags": [
39
+ "Basics"
40
+ ],
41
+ "summary": "Echo",
42
+ "description": "Echo back the provided text.\n\nArgs:\n request (EchoRequest): The request containing the text to echo back.\n\nReturns:\n EchoResponse: A response containing the echoed text.\n\nRaises:\n 422 Unprocessable Entity: If text is not provided or empty.",
43
+ "operationId": "echo_echo_post",
44
+ "requestBody": {
45
+ "content": {
46
+ "application/json": {
47
+ "schema": {
48
+ "$ref": "#/components/schemas/EchoRequest"
49
+ }
50
+ }
51
+ },
52
+ "required": true
53
+ },
54
+ "responses": {
55
+ "200": {
56
+ "description": "Successful Response",
57
+ "content": {
58
+ "application/json": {
59
+ "schema": {
60
+ "$ref": "#/components/schemas/EchoResponse"
61
+ }
62
+ }
63
+ }
64
+ },
65
+ "422": {
66
+ "description": "Validation Error",
67
+ "content": {
68
+ "application/json": {
69
+ "schema": {
70
+ "$ref": "#/components/schemas/HTTPValidationError"
71
+ }
72
+ }
73
+ }
74
+ }
75
+ }
76
+ }
77
+ }
78
+ },
79
+ "components": {
80
+ "schemas": {
81
+ "EchoRequest": {
82
+ "properties": {
83
+ "text": {
84
+ "type": "string",
85
+ "minLength": 1,
86
+ "title": "Text",
87
+ "description": "The text to echo back",
88
+ "examples": [
89
+ "Hello, world!"
90
+ ]
91
+ }
92
+ },
93
+ "type": "object",
94
+ "required": [
95
+ "text"
96
+ ],
97
+ "title": "EchoRequest",
98
+ "description": "Request model for echo endpoint."
99
+ },
100
+ "EchoResponse": {
101
+ "properties": {
102
+ "message": {
103
+ "type": "string",
104
+ "minLength": 1,
105
+ "title": "Message",
106
+ "description": "The message content",
107
+ "examples": [
108
+ "Hello, world!"
109
+ ]
110
+ }
111
+ },
112
+ "type": "object",
113
+ "required": [
114
+ "message"
115
+ ],
116
+ "title": "EchoResponse",
117
+ "description": "Response model for echo endpoint."
118
+ },
119
+ "HTTPValidationError": {
120
+ "properties": {
121
+ "detail": {
122
+ "items": {
123
+ "$ref": "#/components/schemas/ValidationError"
124
+ },
125
+ "type": "array",
126
+ "title": "Detail"
127
+ }
128
+ },
129
+ "type": "object",
130
+ "title": "HTTPValidationError"
131
+ },
132
+ "HelloWorldResponse": {
133
+ "properties": {
134
+ "message": {
135
+ "type": "string",
136
+ "title": "Message",
137
+ "description": "The hello world message",
138
+ "examples": [
139
+ "Hello, world!"
140
+ ]
141
+ }
142
+ },
143
+ "type": "object",
144
+ "required": [
145
+ "message"
146
+ ],
147
+ "title": "HelloWorldResponse",
148
+ "description": "Response model for hello-world endpoint."
149
+ },
150
+ "ValidationError": {
151
+ "properties": {
152
+ "loc": {
153
+ "items": {
154
+ "anyOf": [
155
+ {
156
+ "type": "string"
157
+ },
158
+ {
159
+ "type": "integer"
160
+ }
161
+ ]
162
+ },
163
+ "type": "array",
164
+ "title": "Location"
165
+ },
166
+ "msg": {
167
+ "type": "string",
168
+ "title": "Message"
169
+ },
170
+ "type": {
171
+ "type": "string",
172
+ "title": "Error Type"
173
+ }
174
+ },
175
+ "type": "object",
176
+ "required": [
177
+ "loc",
178
+ "msg",
179
+ "type"
180
+ ],
181
+ "title": "ValidationError"
182
+ }
183
+ }
184
+ }
185
+ }