Skip to content

Commit 61bb58f

Browse files
chore(system, core): fixes linting/formatting issues
Signed-off-by: Roel <75250264+RoelBollens-TomTom@users.noreply.github.com>
1 parent b759db7 commit 61bb58f

8 files changed

Lines changed: 48 additions & 36 deletions

File tree

packages/overture-schema-cli/src/overture/schema/cli/commands.py

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,7 @@ def resolve_types(
227227
elif theme_names and not type_names:
228228
# Theme-only mode: all types in specified themes
229229
for key, model_class in all_models.items():
230-
if next(iter(tags_by_key(key.tags, "overture:theme")),None) in theme_names:
230+
if next(iter(tags_by_key(key.tags, "overture:theme")), None) in theme_names:
231231
filtered_models[key] = model_class
232232

233233
elif type_names and not theme_names:
@@ -239,7 +239,11 @@ def resolve_types(
239239
elif type_names and theme_names:
240240
# Both specified: find matching types within specified themes
241241
for key, model_class in all_models.items():
242-
if key.name in type_names and next(iter(tags_by_key(key.tags, "overture:theme")),None) in theme_names:
242+
if (
243+
key.name in type_names
244+
and next(iter(tags_by_key(key.tags, "overture:theme")), None)
245+
in theme_names
246+
):
243247
filtered_models[key] = model_class
244248

245249
else:
@@ -790,9 +794,7 @@ def json_schema_command(
790794
help="Group types by tag prefix (e.g., 'overture:theme')",
791795
)
792796
def list_types(
793-
tags: tuple[str, ...],
794-
excluded_tags: tuple[str, ...],
795-
group_by: str | None
797+
tags: tuple[str, ...], excluded_tags: tuple[str, ...], group_by: str | None
796798
) -> None:
797799
r"""List all available types grouped by theme with descriptions.
798800
@@ -811,7 +813,9 @@ def list_types(
811813
if tags:
812814
filters.append(lambda key: all(tag in key.tags for tag in tags))
813815
if excluded_tags:
814-
filters.append(lambda key: not any(tag in key.tags for tag in excluded_tags))
816+
filters.append(
817+
lambda key: not any(tag in key.tags for tag in excluded_tags)
818+
)
815819

816820
if filters:
817821
models = {
@@ -823,15 +827,23 @@ def list_types(
823827
if group_by:
824828
grouped_models: dict[str, set[ModelKey]] = {}
825829

826-
for key, model_class in models.items():
830+
for key in models.keys():
827831
if groups := tags_by_key(key.tags, group_by):
828832
for group in groups:
829833
grouped_models.setdefault(group, set()).add(key)
830834

831-
padding = max((len(key.name) for keys in grouped_models.values() for key in keys), default=0) + 2
835+
padding = (
836+
max(
837+
(len(key.name) for keys in grouped_models.values() for key in keys),
838+
default=0,
839+
)
840+
+ 2
841+
)
832842

833843
for group, keys in sorted(grouped_models.items()):
834-
stdout.print(f"[green bold]{group_by}={group} ({len(keys)})[/green bold]")
844+
stdout.print(
845+
f"[green bold]{group_by}={group} ({len(keys)})[/green bold]"
846+
)
835847
for key in sorted(keys, key=lambda k: k.name):
836848
model = Text()
837849
model.append("→ ", style="bright_black")
@@ -851,7 +863,6 @@ def list_types(
851863
model.append_text(Text().append(" ".join(sorted(key.tags))))
852864
stdout.print(model)
853865

854-
855866
except Exception as e:
856867
click.echo(f"Error listing types: {e}", err=True)
857868

packages/overture-schema-cli/tests/test_resolve_types.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,10 @@ def test_resolve_types_returns_expected_themes(
128128
from overture.schema.system.discovery import discover_models
129129

130130
models = discover_models()
131-
actual_themes = {next(iter(tags_by_key(key.tags, "overture:theme")),None) for key in models.keys()}
131+
actual_themes = {
132+
next(iter(tags_by_key(key.tags, "overture:theme")), None)
133+
for key in models.keys()
134+
}
132135

133136
# Check that we have at least the expected themes (may have more)
134137
assert expected_themes.issubset(actual_themes), (

packages/overture-schema-codegen/src/overture/schema/codegen/cli.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ def _write_output(
4949

5050
def _find_theme(tags: frozenset[str]) -> str | None:
5151
"""Find the theme tag in a set of tags, if any."""
52-
return next(iter(tags_by_key(tags, "overture:theme")),None)
52+
return next(iter(tags_by_key(tags, "overture:theme")), None)
5353

5454

5555
@click.group()

packages/overture-schema-codegen/tests/codegen_test_support.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -303,7 +303,7 @@ def find_member(spec: EnumSpec, name: str) -> EnumMemberSpec:
303303

304304
def find_theme(tags: frozenset[str]) -> str | None:
305305
"""Extract the theme from a set of tags, if present."""
306-
return next(iter(tags_by_key(tags, "overture:theme")),None)
306+
return next(iter(tags_by_key(tags, "overture:theme")), None)
307307

308308

309309
T = TypeVar("T")

packages/overture-schema-core/src/overture/schema/core/tag_providers.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
from typing import Any, get_origin, Annotated, get_args, Union, Literal
1+
from typing import Annotated, Any, Literal, Union, get_args, get_origin
22

3-
from overture.schema.core import OvertureFeature
43
from pydantic import BaseModel
54

5+
from overture.schema.core import OvertureFeature
66
from overture.schema.system.discovery import ModelKey
77

88
APPROVED = {
@@ -36,7 +36,7 @@ def authority_provider(
3636
def theme_provider(
3737
model_class: type[BaseModel], key: ModelKey, tags: set[str]
3838
) -> set[str]:
39-
for tp in _reduce_types(model_class):
39+
for tp in _extract_types(model_class):
4040
if issubclass(tp, OvertureFeature):
4141
tags.add(
4242
"overture:theme=" + get_args(tp.model_fields["theme"].annotation)[0]
@@ -48,10 +48,10 @@ def _matches_manifest(key: ModelKey) -> bool:
4848
return key.entry_point in APPROVED
4949

5050

51-
def _reduce_types(tp: Any) -> set[type]:
51+
def _extract_types(tp: Any) -> set[type]: # noqa: ANN401
5252
result: set[type] = set()
5353

54-
def visit(t: Any) -> None:
54+
def visit(t: Any) -> None: # noqa: ANN401
5555
origin = get_origin(t)
5656
if origin is Annotated:
5757
visit(get_args(t)[0])
Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
1-
import pytest
21
from overture.schema.system.discovery import discover_models
32

43

54
def test_overture_feature_models_are_official() -> None:
65
models = discover_models()
76
for key in models:
87
if "overture:feature" in key.tags:
9-
assert (
10-
"overture:official" in key.tags
11-
), f"Model {key.name} is missing 'overture:official' tag."
8+
assert "overture:official" in key.tags, (
9+
f"Model {key.name} is missing 'overture:official' tag."
10+
)

packages/overture-schema-system/src/overture/schema/system/discovery.py

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,9 @@
33
import importlib.metadata
44
import logging
55
import re
6+
from collections.abc import Callable
67
from dataclasses import dataclass, replace
7-
from typing import get_args, Literal, Union, get_origin, Annotated, Any, Callable
8+
from typing import Annotated, Any, Literal, Union, get_args, get_origin
89

910
from pydantic import BaseModel
1011

@@ -38,7 +39,7 @@ class ModelKey:
3839
"""
3940

4041
name: str # friendly name from entry point key
41-
entry_point : str # The entry point value in "module:Class" format
42+
entry_point: str # The entry point value in "module:Class" format
4243
tags: frozenset[str] # plain and structured tags
4344

4445

@@ -85,16 +86,10 @@ def generate_tags(
8586

8687
def _filter_tags(tags: set[str], provider: TagProviderKey) -> set[str]:
8788
reserved_tags = tuple(
88-
tag
89-
for tag, dist in RESERVED_TAGS.items()
90-
if provider.package_name not in dist
89+
tag for tag, dist in RESERVED_TAGS.items() if provider.package_name not in dist
9190
)
9291

93-
return {
94-
tag
95-
for tag in tags
96-
if TAG_RE.match(tag) and not tag in reserved_tags
97-
}
92+
return {tag for tag in tags if TAG_RE.match(tag) and tag not in reserved_tags}
9893

9994

10095
def discover_tag_providers(
@@ -104,7 +99,6 @@ def discover_tag_providers(
10499

105100
try:
106101
for tag_provider in importlib.metadata.entry_points(group=tag_providers_group):
107-
108102
try:
109103
tag_provider_class = tag_provider.load()
110104

@@ -148,7 +142,6 @@ def discover_models(
148142

149143
try:
150144
for model in importlib.metadata.entry_points(group=model_group):
151-
152145
try:
153146
model_class = model.load()
154147

@@ -233,10 +226,10 @@ def feature_provider(
233226
return tags
234227

235228

236-
def _extract_types(tp: Any) -> set[type]:
229+
def _extract_types(tp: Any) -> set[type]: # noqa: ANN401
237230
result: set[type] = set()
238231

239-
def visit(t: Any) -> None:
232+
def visit(t: Any) -> None: # noqa: ANN401
240233
origin = get_origin(t)
241234
if origin is Annotated:
242235
visit(get_args(t)[0])

packages/overture-schema-system/tests/test_tags.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,41 @@
11
from overture.schema.system.discovery import tags_by_key, tags_by_namespace
22

3+
34
def test_tags_by_key_returns_correct_values() -> None:
45
tags = frozenset({"overture:theme=buildings", "overture", "draft"})
56
key = "overture:theme"
67
result = tags_by_key(tags, key)
78
assert result == {"buildings"}
89

10+
911
def test_tags_by_key_returns_empty_set_for_nonexistent_key() -> None:
1012
tags = frozenset({"overture:theme=buildings", "overture", "draft"})
1113
key = "nonexistent:key"
1214
result = tags_by_key(tags, key)
1315
assert result == set()
1416

17+
1518
def test_tags_by_key_handles_empty_tags() -> None:
1619
tags: frozenset[str] = frozenset()
1720
key = "overture:theme"
1821
result = tags_by_key(tags, key)
1922
assert result == set()
2023

24+
2125
def test_tags_by_namespace_returns_correct_values() -> None:
2226
tags = frozenset({"system:extension", "overture"})
2327
namespace = "system"
2428
result = tags_by_namespace(tags, namespace)
2529
assert result == {"extension"}
2630

31+
2732
def test_tags_by_namespace_returns_empty_set_for_nonexistent_namespace() -> None:
2833
tags = frozenset({"system:extension", "overture"})
2934
namespace = "nonexistent"
3035
result = tags_by_namespace(tags, namespace)
3136
assert result == set()
3237

38+
3339
def test_tags_by_namespace_handles_empty_tags() -> None:
3440
tags: frozenset[str] = frozenset()
3541
namespace = "system"

0 commit comments

Comments
 (0)