From d2cd4f226c413baa6d53f96cdc8620a978c993ac Mon Sep 17 00:00:00 2001 From: Seth Fitzsimmons Date: Sun, 22 Mar 2026 10:34:42 -0700 Subject: [PATCH] fix(cli): PLC0415 (import-outside-top-level) violations --- .../overture-schema-cli/src/overture/schema/cli/commands.py | 3 +-- .../src/overture/schema/cli/data_display.py | 3 +-- packages/overture-schema-cli/tests/test_cli_functions.py | 3 +-- packages/overture-schema-cli/tests/test_data_display.py | 3 +-- packages/overture-schema-cli/tests/test_resolve_types.py | 3 +-- packages/overture-schema-cli/tests/test_type_analysis.py | 3 +-- 6 files changed, 6 insertions(+), 12 deletions(-) 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 a75b16cd4..74c7cbae4 100644 --- a/packages/overture-schema-cli/src/overture/schema/cli/commands.py +++ b/packages/overture-schema-cli/src/overture/schema/cli/commands.py @@ -1,6 +1,7 @@ """Click-based CLI for overture-schema package.""" import builtins +import io import json import sys from collections import Counter, defaultdict @@ -322,8 +323,6 @@ def load_input(filename: Path) -> tuple[dict | list, str]: pass # Parse as single YAML/JSON document - import io - data = yaml.load(io.StringIO(content), Loader=CoreLoader) return data, "" diff --git a/packages/overture-schema-cli/src/overture/schema/cli/data_display.py b/packages/overture-schema-cli/src/overture/schema/cli/data_display.py index 5dc2f28a7..0b916fca2 100644 --- a/packages/overture-schema-cli/src/overture/schema/cli/data_display.py +++ b/packages/overture-schema-cli/src/overture/schema/cli/data_display.py @@ -2,6 +2,7 @@ from typing import Any +from rich import box from rich.panel import Panel from rich.table import Table @@ -670,8 +671,6 @@ def create_feature_display( table.add_row(field_name_styled, value_styled, "", "") # Wrap table in a Panel with rounded borders - from rich import box - # Add title: "Validation Failed" for single features, or item info for collections if item_index is not None: if item_type: diff --git a/packages/overture-schema-cli/tests/test_cli_functions.py b/packages/overture-schema-cli/tests/test_cli_functions.py index e3de0fdbd..4218541f5 100644 --- a/packages/overture-schema-cli/tests/test_cli_functions.py +++ b/packages/overture-schema-cli/tests/test_cli_functions.py @@ -1,5 +1,6 @@ """Tests for CLI helper functions (load_input, perform_validation).""" +import io import json from pathlib import Path @@ -175,8 +176,6 @@ def test_load_input_jsonl_from_stdin( JSONL format is commonly used for streaming GeoJSON features where each line is a complete JSON object/feature. """ - import io - feature1 = build_feature(id="test1") feature2 = build_feature(id="test2") jsonl_input = f"{json.dumps(feature1)}\n{json.dumps(feature2)}\n" diff --git a/packages/overture-schema-cli/tests/test_data_display.py b/packages/overture-schema-cli/tests/test_data_display.py index dd0bfd562..218872cbc 100644 --- a/packages/overture-schema-cli/tests/test_data_display.py +++ b/packages/overture-schema-cli/tests/test_data_display.py @@ -10,6 +10,7 @@ select_context_fields, ) from rich.console import Console +from rich.panel import Panel class TestExtractFeatureData: @@ -291,8 +292,6 @@ def test_creates_panel_with_table(self) -> None: result = create_feature_display(fields, errors) # Verify result is a Panel - from rich.panel import Panel - assert isinstance(result, Panel) def test_includes_error_annotation(self) -> None: diff --git a/packages/overture-schema-cli/tests/test_resolve_types.py b/packages/overture-schema-cli/tests/test_resolve_types.py index 2fa226802..94231a1fe 100644 --- a/packages/overture-schema-cli/tests/test_resolve_types.py +++ b/packages/overture-schema-cli/tests/test_resolve_types.py @@ -2,6 +2,7 @@ import pytest from overture.schema.cli.commands import resolve_types +from overture.schema.core.discovery import discover_models class TestResolveTypes: @@ -124,8 +125,6 @@ def test_resolve_types_returns_expected_themes( expected_themes: set[str], ) -> None: """Test that resolve_types returns models from expected themes.""" - from overture.schema.core.discovery import discover_models - models = discover_models(namespace=namespace) actual_themes = {key.theme for key in models.keys()} diff --git a/packages/overture-schema-cli/tests/test_type_analysis.py b/packages/overture-schema-cli/tests/test_type_analysis.py index 0a21e168a..d6e9d930b 100644 --- a/packages/overture-schema-cli/tests/test_type_analysis.py +++ b/packages/overture-schema-cli/tests/test_type_analysis.py @@ -10,7 +10,7 @@ get_or_create_structural_tuple, introspect_union, ) -from pydantic import BaseModel, Field +from pydantic import BaseModel, Discriminator, Field class TestStructuralTuples: @@ -277,7 +277,6 @@ class Place(BaseModel): def test_callable_discriminator_extracts_field_name(self) -> None: """Callable discriminators (Feature.field_discriminator) are supported.""" - from pydantic import Discriminator class ModelA(BaseModel): kind: Literal["a"]