oe-python-template-example 0.2.13__tar.gz → 0.2.14__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: oe-python-template-example
3
- Version: 0.2.13
3
+ Version: 0.2.14
4
4
  Summary: 🧠 Example project scaffolded and kept up to date with OE Python Template (oe-python-template).
5
5
  Project-URL: Homepage, https://oe-python-template-example.readthedocs.io/en/latest/
6
6
  Project-URL: Documentation, https://oe-python-template-example.readthedocs.io/en/latest/
@@ -50,13 +50,13 @@ Classifier: Typing :: Typed
50
50
  Requires-Python: <4.0,>=3.11
51
51
  Requires-Dist: fastapi[all,standard]>=0.115.12
52
52
  Requires-Dist: pydantic-settings>=2.8.1
53
- Requires-Dist: pydantic>=2.10.6
53
+ Requires-Dist: pydantic>=2.11.1
54
54
  Requires-Dist: typer>=0.15.1
55
55
  Provides-Extra: examples
56
56
  Requires-Dist: jinja2>=3.1.6; extra == 'examples'
57
57
  Requires-Dist: jupyter>=1.1.1; extra == 'examples'
58
- Requires-Dist: marimo>=0.11.28; extra == 'examples'
59
- Requires-Dist: streamlit>=1.44.0; extra == 'examples'
58
+ Requires-Dist: marimo>=0.12.2; extra == 'examples'
59
+ Requires-Dist: streamlit>=1.44.1; extra == 'examples'
60
60
  Description-Content-Type: text/markdown
61
61
 
62
62
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "oe-python-template-example"
3
- version = "0.2.13"
3
+ version = "0.2.14"
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 = [
@@ -62,10 +62,13 @@ classifiers = [
62
62
  requires-python = ">=3.11, <4.0"
63
63
 
64
64
  dependencies = [
65
+ # From Template
65
66
  "fastapi[standard,all]>=0.115.12",
66
- "pydantic>=2.10.6",
67
+ "pydantic>=2.11.1",
67
68
  "pydantic-settings>=2.8.1",
68
69
  "typer>=0.15.1",
70
+ # Custom
71
+ # Nothing yet
69
72
  ]
70
73
 
71
74
  [project.scripts]
@@ -90,8 +93,8 @@ packages = ["src/oe_python_template_example"]
90
93
 
91
94
  [project.optional-dependencies]
92
95
  examples = [
93
- "streamlit>=1.44.0",
94
- "marimo>=0.11.28",
96
+ "streamlit>=1.44.1",
97
+ "marimo>=0.12.2",
95
98
  "jupyter>=1.1.1",
96
99
  "jinja2>=3.1.6",
97
100
  ]
@@ -114,11 +117,12 @@ dev = [
114
117
  "pyright>=1.1.398",
115
118
  "pytest>=8.3.5",
116
119
  "pytest-asyncio>=0.26.0",
117
- "pytest-cov>=6.0.0",
120
+ "pytest-cov>=6.1.0",
118
121
  "pytest-docker>=3.2.0",
119
122
  "pytest-env>=1.1.5",
120
123
  "pytest-regressions>=2.7.0",
121
124
  "pytest-subprocess>=1.5.3",
125
+ "pytest-timeout>=2.3.1",
122
126
  "pytest-xdist[psutil]>=3.6.1",
123
127
  "ruff>=0.11.2",
124
128
  "sphinx>=8.2.3",
@@ -132,7 +136,7 @@ dev = [
132
136
  "sphinxext.opengraph>=0.9.1",
133
137
  "swagger-plugin-for-sphinx>=5.1.0",
134
138
  "tomli>=2.1.0",
135
- "types-pyyaml>=6.0.12.20250326",
139
+ "types-pyyaml>=6.0.12.20250402",
136
140
  "watchdog>=6.0.0",
137
141
  ]
138
142
 
@@ -229,22 +233,26 @@ warn_required_dynamic_aliases = true
229
233
  warn_untyped_fields = true
230
234
 
231
235
  [tool.pytest.ini_options]
232
- addopts = "-v --cov=oe_python_template_example --cov-report=term-missing --cov-report=xml:reports/coverage.xml --cov-report=html:reports/coverage_html"
236
+ addopts = "-v --strict-markers --cov=oe_python_template_example --cov-report=term-missing --cov-report=xml:reports/coverage.xml --cov-report=html:reports/coverage_html"
233
237
  testpaths = ["tests"]
234
238
  python_files = ["*_test.py"]
235
239
  asyncio_mode = "auto"
236
240
  asyncio_default_fixture_loop_scope = "function"
237
241
  env = ["COVERAGE_FILE=.coverage", "COVERAGE_PROCESS_START=pyproject.toml"]
238
242
  markers = [
239
- "sequential: exclude from parallel test execution",
243
+ # From Template
240
244
  "no_extras: tests that do require no extras installed",
245
+ "scheduled: tests to run on a schedule",
246
+ "sequential: exclude from parallel test execution",
247
+ # Custom
248
+ # Nothing yet
241
249
  ]
242
250
 
243
251
  [tool.coverage.run]
244
252
  sigterm = true
245
253
  relative_files = true
246
254
  source = ["src"]
247
- omit = ["src/starbridge/instrumentation/*"]
255
+ omit = []
248
256
  branch = true
249
257
  parallel = true
250
258
  concurrency = ["thread", "multiprocessing"]
@@ -254,7 +262,7 @@ source = ["src/"]
254
262
 
255
263
 
256
264
  [tool.bumpversion]
257
- current_version = "0.2.13"
265
+ current_version = "0.2.14"
258
266
  parse = "(?P<major>\\d+)\\.(?P<minor>\\d+)\\.(?P<patch>\\d+)"
259
267
  serialize = ["{major}.{minor}.{patch}"]
260
268
  search = "{current_version}"
@@ -1,7 +1,9 @@
1
1
  """CLI (Command Line Interface) of OE Python Template Example."""
2
2
 
3
3
  import os
4
+ import sys
4
5
  from enum import StrEnum
6
+ from pathlib import Path
5
7
  from typing import Annotated
6
8
 
7
9
  import typer
@@ -12,7 +14,7 @@ from rich.console import Console
12
14
  from . import Service, Utterance, __version__
13
15
  from .api import api_v1, api_v2
14
16
 
15
- cli = typer.Typer(name="Command Line Interface of OE Python Template Example")
17
+ cli = typer.Typer(help="Command Line Interface of OE Python Template Example")
16
18
  _service = Service()
17
19
  _console = Console()
18
20
 
@@ -129,11 +131,13 @@ def openapi(
129
131
 
130
132
 
131
133
  def _apply_cli_settings(cli: typer.Typer, epilog: str) -> None:
132
- """Add epilog to all typers in the tree and configure default behavior."""
133
- cli.info.epilog = epilog
134
+ """Configure default behavior and add epilog to all typers in the tree."""
134
135
  cli.info.no_args_is_help = True
135
- for command in cli.registered_commands:
136
- command.epilog = cli.info.epilog
136
+
137
+ if not any(arg.endswith("typer") for arg in Path(sys.argv[0]).parts):
138
+ cli.info.epilog = epilog
139
+ for command in cli.registered_commands:
140
+ command.epilog = cli.info.epilog
137
141
 
138
142
 
139
143
  _apply_cli_settings(
@@ -49,8 +49,7 @@ class Service:
49
49
  match self._settings.language:
50
50
  case Language.GERMAN:
51
51
  return "Hallo, Welt!"
52
- case _:
53
- return "Hello, world!"
52
+ return "Hello, world!"
54
53
 
55
54
  @staticmethod
56
55
  def echo(utterance: Utterance) -> Echo: