Skip to content

Commit 3e9b61b

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

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
@@ -228,7 +228,7 @@ def resolve_types(
228228
elif theme_names and not type_names:
229229
# Theme-only mode: all types in specified themes
230230
for key, model_class in all_models.items():
231-
if next(iter(tags_by_key(key.tags, "overture:theme")),None) in theme_names:
231+
if next(iter(tags_by_key(key.tags, "overture:theme")), None) in theme_names:
232232
filtered_models[key] = model_class
233233

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

246250
else:
@@ -789,9 +793,7 @@ def json_schema_command(
789793
help="Group types by tag prefix (e.g., 'overture:theme')",
790794
)
791795
def list_types(
792-
tags: tuple[str, ...],
793-
excluded_tags: tuple[str, ...],
794-
group_by: str | None
796+
tags: tuple[str, ...], excluded_tags: tuple[str, ...], group_by: str | None
795797
) -> None:
796798
r"""List all available types grouped by theme with descriptions.
797799
@@ -810,7 +812,9 @@ def list_types(
810812
if tags:
811813
filters.append(lambda key: all(tag in key.tags for tag in tags))
812814
if excluded_tags:
813-
filters.append(lambda key: not any(tag in key.tags for tag in excluded_tags))
815+
filters.append(
816+
lambda key: not any(tag in key.tags for tag in excluded_tags)
817+
)
814818

815819
if filters:
816820
models = {
@@ -822,15 +826,23 @@ def list_types(
822826
if group_by:
823827
grouped_models: dict[str, set[ModelKey]] = {}
824828

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

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

832842
for group, keys in sorted(grouped_models.items()):
833-
stdout.print(f"[green bold]{group_by}={group} ({len(keys)})[/green bold]")
843+
stdout.print(
844+
f"[green bold]{group_by}={group} ({len(keys)})[/green bold]"
845+
)
834846
for key in sorted(keys, key=lambda k: k.name):
835847
model = Text()
836848
model.append("→ ", style="bright_black")
@@ -850,7 +862,6 @@ def list_types(
850862
model.append_text(Text().append(" ".join(sorted(key.tags))))
851863
stdout.print(model)
852864

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

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)