fix(resource): move inline imports to top and remove redundant import
CI / benchmark-publish (pull_request) Has been skipped
CI / lint (pull_request) Successful in 58s
CI / helm (pull_request) Successful in 30s
CI / push-validation (pull_request) Successful in 28s
CI / build (pull_request) Successful in 43s
CI / quality (pull_request) Successful in 1m9s
CI / benchmark-regression (pull_request) Failing after 34s
CI / typecheck (pull_request) Successful in 1m31s
CI / security (pull_request) Successful in 1m32s
CI / e2e_tests (pull_request) Failing after 4m6s
CI / unit_tests (pull_request) Failing after 4m25s
CI / coverage (pull_request) Has been skipped
CI / docker (pull_request) Has been skipped
CI / integration_tests (pull_request) Failing after 4m26s
CI / status-check (pull_request) Failing after 3s

Addresses remaining CI review feedback from HAL9001 on PR #8304:

1. Moved all cleveragents imports from inside function bodies to module-level
   in features/steps/container_clone_into_steps.py (5 functions fixed)
2. Moved BUILTIN_TYPES import from inside step_look_up_in_builtin_types()
   to module level in features/steps/devcontainer_sandbox_strategy_steps.py
3. Removed redundant inline import of EMPTY_CONTENT_HASH and BaseResourceHandler
   inside diff() method of devcontainer.py (already available at module level)
4. Fixed stale docstring referencing old 'detected' terminology in
   robot/helper_devcontainer_lifecycle.py cmd_transition_valid()

All files pass ruff format and ruff check.
This commit is contained in:
2026-05-07 11:50:29 +00:00
parent 3ca64f7d1b
commit 4e288f1d87
4 changed files with 19 additions and 24 deletions
+15 -16
View File
@@ -10,14 +10,27 @@ from __future__ import annotations
from typing import Any from typing import Any
from unittest.mock import MagicMock, patch from unittest.mock import MagicMock, patch
from behave import given, then, when from behave import given, then, when # type: ignore[import-untyped]
from behave.runner import Context from behave.runner import Context # type: ignore[import-untyped]
from cleveragents.application.services._resource_registry_data import (
BUILTIN_TYPES,
)
from cleveragents.domain.models.core.container_lifecycle import (
ContainerLifecycleState,
ContainerLifecycleTracker,
)
from cleveragents.resource.handlers.clone_into import ( from cleveragents.resource.handlers.clone_into import (
CloneIntoError, CloneIntoError,
clone_repo_into_container, clone_repo_into_container,
validate_clone_into_url, validate_clone_into_url,
) )
from cleveragents.resource.handlers.devcontainer import (
DevcontainerHandler,
clear_lifecycle_registry,
set_lifecycle_tracker,
)
from cleveragents.domain.models.core.resource import Resource
# ── When steps ─────────────────────────────────────────────── # ── When steps ───────────────────────────────────────────────
@@ -99,8 +112,6 @@ def step_clone_into_container_at(
@when('I look up the "{type_name}" resource type spec') @when('I look up the "{type_name}" resource type spec')
def step_look_up_resource_type_spec(context: Context, type_name: str) -> None: def step_look_up_resource_type_spec(context: Context, type_name: str) -> None:
"""Look up a resource type spec from BUILTIN_TYPES.""" """Look up a resource type spec from BUILTIN_TYPES."""
from cleveragents.application.services._resource_registry_data import BUILTIN_TYPES
context.resource_type_spec = None context.resource_type_spec = None
for entry in BUILTIN_TYPES: for entry in BUILTIN_TYPES:
if entry.get("name") == type_name: if entry.get("name") == type_name:
@@ -290,16 +301,6 @@ def step_devcontainer_resource_with_clone_into(
context: Context, clone_url: str, container_id: str context: Context, clone_url: str, container_id: str
) -> None: ) -> None:
"""Set up a devcontainer-instance resource with clone_into property and tracker.""" """Set up a devcontainer-instance resource with clone_into property and tracker."""
from cleveragents.domain.models.core.container_lifecycle import (
ContainerLifecycleState,
ContainerLifecycleTracker,
)
from cleveragents.domain.models.core.resource import Resource
from cleveragents.resource.handlers.devcontainer import (
clear_lifecycle_registry,
set_lifecycle_tracker,
)
# Clear any existing lifecycle state # Clear any existing lifecycle state
clear_lifecycle_registry() clear_lifecycle_registry()
@@ -346,8 +347,6 @@ def step_mock_clone_repo_into_container(context: Context) -> None:
@when("DevcontainerHandler.resolve() is called for the resource") @when("DevcontainerHandler.resolve() is called for the resource")
def step_call_devcontainer_handler_resolve(context: Context) -> None: def step_call_devcontainer_handler_resolve(context: Context) -> None:
"""Call DevcontainerHandler.resolve() with the test resource.""" """Call DevcontainerHandler.resolve() with the test resource."""
from cleveragents.resource.handlers.devcontainer import DevcontainerHandler
handler = DevcontainerHandler() handler = DevcontainerHandler()
mock_sandbox_manager = MagicMock() mock_sandbox_manager = MagicMock()
mock_bound_resource = MagicMock() mock_bound_resource = MagicMock()
@@ -10,6 +10,9 @@ from __future__ import annotations
from behave import then, when from behave import then, when
from behave.runner import Context from behave.runner import Context
from cleveragents.application.services._resource_registry_data import (
BUILTIN_TYPES,
)
from cleveragents.domain.models.core.container_lifecycle import ( from cleveragents.domain.models.core.container_lifecycle import (
ContainerLifecycleTracker, ContainerLifecycleTracker,
) )
@@ -33,8 +36,6 @@ def step_create_tracker_for_sandbox(context: Context, resource_id: str) -> None:
@when('I look up "{type_name}" in BUILTIN_TYPES') @when('I look up "{type_name}" in BUILTIN_TYPES')
def step_look_up_in_builtin_types(context: Context, type_name: str) -> None: def step_look_up_in_builtin_types(context: Context, type_name: str) -> None:
"""Look up a resource type entry in BUILTIN_TYPES.""" """Look up a resource type entry in BUILTIN_TYPES."""
from cleveragents.application.services._resource_registry_data import BUILTIN_TYPES
context.builtin_type_entry = None context.builtin_type_entry = None
for entry in BUILTIN_TYPES: for entry in BUILTIN_TYPES:
if entry.get("name") == type_name: if entry.get("name") == type_name:
+1 -1
View File
@@ -111,7 +111,7 @@ def cmd_enum_values() -> None:
def cmd_transition_valid() -> None: def cmd_transition_valid() -> None:
"""Verify detected->building transition.""" """Verify discovered->building transition."""
clear_lifecycle_registry() clear_lifecycle_registry()
tracker = ContainerLifecycleTracker(resource_id="01ROBOTTEST0000000000001") tracker = ContainerLifecycleTracker(resource_id="01ROBOTTEST0000000000001")
tracker = transition_state(tracker, ContainerLifecycleState.BUILDING, reason="test") tracker = transition_state(tracker, ContainerLifecycleState.BUILDING, reason="test")
@@ -644,11 +644,6 @@ class DevcontainerHandler(BaseResourceHandler):
# We construct a temporary resource pointing at other_location and # We construct a temporary resource pointing at other_location and
# call the base-class content_hash directly (bypassing the # call the base-class content_hash directly (bypassing the
# devcontainer override which would try to exec into the container). # devcontainer override which would try to exec into the container).
from cleveragents.resource.handlers._base import (
EMPTY_CONTENT_HASH,
BaseResourceHandler,
)
other_resource = resource.__class__( other_resource = resource.__class__(
resource_id=resource.resource_id, resource_id=resource.resource_id,
name=resource.name, name=resource.name,