diff --git a/Makefile b/Makefile index edea9b34d..6162bd127 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -.PHONY: default uv-sync check test-all test test-only docformat doctest doctest-only mypy mypy-only lint-only update-baselines +.PHONY: default uv-sync check test-all test test-only docformat doctest doctest-only mypy mypy-only lint-only update-baselines reset-baseline-schemas default: test-all @@ -58,3 +58,6 @@ lint-only: update-baselines: @uv run pytest --update-baselines -m baseline -q packages/ + +reset-baseline-schemas: + @find . -name \*_baseline_schema.json -delete diff --git a/packages/overture-schema-addresses-theme/src/overture/schema/addresses/__about__.py b/packages/overture-schema-addresses-theme/src/overture/schema/addresses/__about__.py index 5e3bb11ca..832739958 100644 --- a/packages/overture-schema-addresses-theme/src/overture/schema/addresses/__about__.py +++ b/packages/overture-schema-addresses-theme/src/overture/schema/addresses/__about__.py @@ -1 +1 @@ -__version__ = "0.1.1.dev1" +__version__ = "0.1.1.dev4" diff --git a/packages/overture-schema-annex/src/overture/schema/__about__.py b/packages/overture-schema-annex/src/overture/schema/__about__.py index 5e3bb11ca..832739958 100644 --- a/packages/overture-schema-annex/src/overture/schema/__about__.py +++ b/packages/overture-schema-annex/src/overture/schema/__about__.py @@ -1 +1 @@ -__version__ = "0.1.1.dev1" +__version__ = "0.1.1.dev4" diff --git a/packages/overture-schema-base-theme/src/overture/schema/base/__about__.py b/packages/overture-schema-base-theme/src/overture/schema/base/__about__.py index 5e3bb11ca..832739958 100644 --- a/packages/overture-schema-base-theme/src/overture/schema/base/__about__.py +++ b/packages/overture-schema-base-theme/src/overture/schema/base/__about__.py @@ -1 +1 @@ -__version__ = "0.1.1.dev1" +__version__ = "0.1.1.dev4" diff --git a/packages/overture-schema-buildings-theme/src/overture/schema/buildings/__about__.py b/packages/overture-schema-buildings-theme/src/overture/schema/buildings/__about__.py index 5e3bb11ca..832739958 100644 --- a/packages/overture-schema-buildings-theme/src/overture/schema/buildings/__about__.py +++ b/packages/overture-schema-buildings-theme/src/overture/schema/buildings/__about__.py @@ -1 +1 @@ -__version__ = "0.1.1.dev1" +__version__ = "0.1.1.dev4" diff --git a/packages/overture-schema-cli/src/overture/schema/cli/__about__.py b/packages/overture-schema-cli/src/overture/schema/cli/__about__.py index 5e3bb11ca..832739958 100644 --- a/packages/overture-schema-cli/src/overture/schema/cli/__about__.py +++ b/packages/overture-schema-cli/src/overture/schema/cli/__about__.py @@ -1 +1 @@ -__version__ = "0.1.1.dev1" +__version__ = "0.1.1.dev4" diff --git a/packages/overture-schema-cli/src/overture/schema/cli/commands.py b/packages/overture-schema-cli/src/overture/schema/cli/commands.py index 24062452e..0ae25fd10 100644 --- a/packages/overture-schema-cli/src/overture/schema/cli/commands.py +++ b/packages/overture-schema-cli/src/overture/schema/cli/commands.py @@ -29,12 +29,14 @@ from overture.schema.system.feature import Feature from overture.schema.system.json_schema import json_schema +from .docstrings import get_model_docstring, get_theme_module_docstring from .error_formatting import ( format_validation_error, format_validation_errors_verbose, group_errors_by_discriminator, select_most_likely_errors, ) +from .output import rewrap from .tag_options import build_selector, tag_selection_options from .type_analysis import StructuralTuple, get_item_index, introspect_union from .types import ErrorLocation, UnionType @@ -708,6 +710,47 @@ def json_schema_command( raise click.UsageError(str(e)) from e +def dump_namespace( + theme_types: dict[str | None, list[tuple[ModelKey, type[BaseModel]]]], +) -> None: + """Print all themes and types for a namespace. + + Displays themes in alphabetical order with their types and docstrings. + Each type includes its model class name and description. + + Args + ---- + theme_types : dict[str | None, list[tuple[ModelKey, type[BaseModel]]]] + Dict mapping theme name to list of (ModelKey, model_class) tuples + """ + for theme in sorted(theme_types.keys(), key=lambda x: (x is None, x)): + if theme: + stdout.print( + f"[bold green underline]{theme.upper()}[/bold green underline]" + ) + + theme_docstring = get_theme_module_docstring(theme) + if theme_docstring: + stdout.print( + rewrap(theme_docstring, stdout, padding_right=4), style="dim" + ) + + stdout.print() + + # Add types to the tree + sorted_types = sorted(theme_types[theme], key=lambda x: x[0].type) + for key, model_class in sorted_types: + stdout.print( + f" [bright_black]→[/bright_black] [bold cyan]{key.type}[/bold cyan] [dim magenta]({key.entry_point})[/dim magenta]" + ) + docstring = get_model_docstring(model_class) + if docstring: + stdout.print( + rewrap(docstring, stdout, indent=4, padding_right=12), style="dim" + ) + stdout.print() + + @cli.command("list-types") @tag_selection_options @click.option( diff --git a/packages/overture-schema-common/src/overture/schema/common/__about__.py b/packages/overture-schema-common/src/overture/schema/common/__about__.py index 5e3bb11ca..832739958 100644 --- a/packages/overture-schema-common/src/overture/schema/common/__about__.py +++ b/packages/overture-schema-common/src/overture/schema/common/__about__.py @@ -1 +1 @@ -__version__ = "0.1.1.dev1" +__version__ = "0.1.1.dev4" diff --git a/packages/overture-schema-divisions-theme/src/overture/schema/divisions/__about__.py b/packages/overture-schema-divisions-theme/src/overture/schema/divisions/__about__.py index 5e3bb11ca..832739958 100644 --- a/packages/overture-schema-divisions-theme/src/overture/schema/divisions/__about__.py +++ b/packages/overture-schema-divisions-theme/src/overture/schema/divisions/__about__.py @@ -1 +1 @@ -__version__ = "0.1.1.dev1" +__version__ = "0.1.1.dev4" diff --git a/packages/overture-schema-places-theme/src/overture/schema/places/__about__.py b/packages/overture-schema-places-theme/src/overture/schema/places/__about__.py index 5e3bb11ca..832739958 100644 --- a/packages/overture-schema-places-theme/src/overture/schema/places/__about__.py +++ b/packages/overture-schema-places-theme/src/overture/schema/places/__about__.py @@ -1 +1 @@ -__version__ = "0.1.1.dev1" +__version__ = "0.1.1.dev4" diff --git a/packages/overture-schema-system/src/overture/schema/system/__about__.py b/packages/overture-schema-system/src/overture/schema/system/__about__.py index 5e3bb11ca..832739958 100644 --- a/packages/overture-schema-system/src/overture/schema/system/__about__.py +++ b/packages/overture-schema-system/src/overture/schema/system/__about__.py @@ -1 +1 @@ -__version__ = "0.1.1.dev1" +__version__ = "0.1.1.dev4" diff --git a/packages/overture-schema-transportation-theme/src/overture/schema/transportation/__about__.py b/packages/overture-schema-transportation-theme/src/overture/schema/transportation/__about__.py index 5e3bb11ca..832739958 100644 --- a/packages/overture-schema-transportation-theme/src/overture/schema/transportation/__about__.py +++ b/packages/overture-schema-transportation-theme/src/overture/schema/transportation/__about__.py @@ -1 +1 @@ -__version__ = "0.1.1.dev1" +__version__ = "0.1.1.dev4" diff --git a/packages/overture-schema/src/overture/schema/__about__.py b/packages/overture-schema/src/overture/schema/__about__.py index 5e3bb11ca..832739958 100644 --- a/packages/overture-schema/src/overture/schema/__about__.py +++ b/packages/overture-schema/src/overture/schema/__about__.py @@ -1 +1 @@ -__version__ = "0.1.1.dev1" +__version__ = "0.1.1.dev4"