Use SDK package public exports where available (#13402)

Co-authored-by: openhands <openhands@all-hands.dev>
This commit is contained in:
Engel Nyst
2026-04-15 22:05:08 +02:00
committed by GitHub
co-authored by openhands
parent 22b91976fd
commit eb940ea5e7
17 changed files with 29 additions and 37 deletions
+2 -2
View File
@@ -58,8 +58,8 @@ repos:
types-Markdown,
pydantic,
lxml,
"openhands-sdk==1.14",
"openhands-tools==1.14",
"openhands-sdk==1.16.1",
"openhands-tools==1.16.1",
]
# To see gaps add `--html-report mypy-report/`
entry: mypy --config-file dev_config/python/mypy.ini openhands/
@@ -33,8 +33,7 @@ from openhands.app_server.app_conversation.sql_app_conversation_info_service imp
)
from openhands.app_server.services.injector import InjectorState
from openhands.integrations.provider import ProviderType
from openhands.sdk.llm import MetricsSnapshot
from openhands.sdk.llm.utils.metrics import TokenUsage
from openhands.sdk.llm import MetricsSnapshot, TokenUsage
logger = logging.getLogger(__name__)
@@ -17,8 +17,7 @@ from server.sharing.shared_conversation_models import SharedConversation
from openhands.agent_server.models import EventPage, EventSortOrder
from openhands.app_server.event.event_service import EventService
from openhands.sdk.llm import MetricsSnapshot
from openhands.sdk.llm.utils.metrics import TokenUsage
from openhands.sdk.llm import MetricsSnapshot, TokenUsage
@pytest.fixture
@@ -26,8 +26,7 @@ from openhands.app_server.app_conversation.sql_app_conversation_info_service imp
from openhands.app_server.user.specifiy_user_context import SpecifyUserContext
from openhands.app_server.utils.sql_utils import Base
from openhands.integrations.provider import ProviderType
from openhands.sdk.llm import MetricsSnapshot
from openhands.sdk.llm.utils.metrics import TokenUsage
from openhands.sdk.llm import MetricsSnapshot, TokenUsage
from openhands.storage.data_models.conversation_metadata import ConversationTrigger
@@ -17,8 +17,7 @@ from server.sharing.shared_conversation_models import SharedConversation
from openhands.agent_server.models import EventPage, EventSortOrder
from openhands.app_server.event.event_service import EventService
from openhands.sdk.llm import MetricsSnapshot
from openhands.sdk.llm.utils.metrics import TokenUsage
from openhands.sdk.llm import MetricsSnapshot, TokenUsage
@pytest.fixture
@@ -12,7 +12,7 @@ from openhands.app_server.event_callback.event_callback_models import (
)
from openhands.app_server.sandbox.sandbox_models import SandboxStatus
from openhands.integrations.service_types import ProviderType, SuggestedTask
from openhands.sdk.conversation.state import ConversationExecutionStatus
from openhands.sdk.conversation import ConversationExecutionStatus
from openhands.sdk.llm import MetricsSnapshot
from openhands.sdk.plugin import PluginSource
from openhands.storage.data_models.conversation_metadata import ConversationTrigger
@@ -28,19 +28,18 @@ from openhands.app_server.app_conversation.skill_loader import (
)
from openhands.app_server.sandbox.sandbox_models import SandboxInfo
from openhands.app_server.user.user_context import UserContext
from openhands.sdk import Agent
from openhands.sdk.context.agent_context import AgentContext
from openhands.sdk.context.condenser import LLMSummarizingCondenser
from openhands.sdk import Agent, LLMSummarizingCondenser
from openhands.sdk.context import AgentContext
from openhands.sdk.context.skills import Skill
from openhands.sdk.llm import LLM
from openhands.sdk.security.analyzer import SecurityAnalyzerBase
from openhands.sdk.security.confirmation_policy import (
from openhands.sdk.security import (
AlwaysConfirm,
ConfirmationPolicyBase,
ConfirmRisky,
LLMSecurityAnalyzer,
NeverConfirm,
SecurityAnalyzerBase,
)
from openhands.sdk.security.llm_analyzer import LLMSecurityAnalyzer
from openhands.sdk.workspace.remote.async_remote_workspace import AsyncRemoteWorkspace
from openhands.utils.git import ensure_valid_git_branch_name
@@ -19,8 +19,7 @@ from openhands.app_server.sandbox.sandbox_models import SandboxInfo
from openhands.app_server.user.user_context import UserContext
from openhands.integrations.provider import ProviderType
from openhands.integrations.service_types import AuthenticationError
from openhands.sdk.context.skills import Skill
from openhands.sdk.context.skills.trigger import KeywordTrigger, TaskTrigger
from openhands.sdk.context.skills import KeywordTrigger, Skill, TaskTrigger
_logger = logging.getLogger(__name__)
@@ -55,10 +55,9 @@ from openhands.app_server.utils.sql_utils import (
create_json_type_decorator,
)
from openhands.integrations.provider import ProviderType
from openhands.sdk.conversation.conversation_stats import ConversationStats
from openhands.sdk import ConversationStats
from openhands.sdk.event import ConversationStateUpdateEvent
from openhands.sdk.llm import MetricsSnapshot
from openhands.sdk.llm.utils.metrics import TokenUsage
from openhands.sdk.llm import MetricsSnapshot, TokenUsage
from openhands.storage.data_models.conversation_metadata import ConversationTrigger
logger = logging.getLogger(__name__)
@@ -5,7 +5,7 @@ from uuid import uuid4
from pydantic import BaseModel, Field
from openhands.agent_server.utils import OpenHandsUUID, utc_now
from openhands.sdk.event.types import EventID
from openhands.sdk.event import EventID
class EventCallbackResultStatus(Enum):
@@ -72,7 +72,7 @@ from openhands.integrations.service_types import (
)
from openhands.runtime import get_runtime_cls
from openhands.runtime.runtime_status import RuntimeStatus
from openhands.sdk.conversation.state import ConversationExecutionStatus
from openhands.sdk.conversation import ConversationExecutionStatus
from openhands.server.data_models.agent_loop_info import AgentLoopInfo
from openhands.server.data_models.conversation_info import ConversationInfo
from openhands.server.data_models.conversation_info_result_set import (
@@ -471,7 +471,7 @@ def test_create_security_analyzer_returns_llm_analyzer():
result = service._create_security_analyzer_from_string(security_analyzer_str)
# Assert
from openhands.sdk.security.llm_analyzer import LLMSecurityAnalyzer
from openhands.sdk.security import LLMSecurityAnalyzer
assert isinstance(result, LLMSecurityAnalyzer)
@@ -508,7 +508,7 @@ def test_select_confirmation_policy_when_disabled_returns_never_confirm():
policy = service._select_confirmation_policy(confirmation_mode, security_analyzer)
# Assert
from openhands.sdk.security.confirmation_policy import NeverConfirm
from openhands.sdk.security import NeverConfirm
assert isinstance(policy, NeverConfirm)
@@ -526,7 +526,7 @@ def test_select_confirmation_policy_llm_returns_confirm_risky():
policy = service._select_confirmation_policy(confirmation_mode, security_analyzer)
# Assert
from openhands.sdk.security.confirmation_policy import ConfirmRisky
from openhands.sdk.security import ConfirmRisky
assert isinstance(policy, ConfirmRisky)
@@ -546,7 +546,7 @@ def test_select_confirmation_policy_non_llm_returns_always_confirm(
policy = service._select_confirmation_policy(confirmation_mode, security_analyzer)
# Assert
from openhands.sdk.security.confirmation_policy import AlwaysConfirm
from openhands.sdk.security import AlwaysConfirm
assert isinstance(policy, AlwaysConfirm)
@@ -23,8 +23,7 @@ from openhands.app_server.app_conversation.sql_app_conversation_info_service imp
from openhands.app_server.user.specifiy_user_context import SpecifyUserContext
from openhands.app_server.utils.sql_utils import Base
from openhands.integrations.service_types import ProviderType
from openhands.sdk.llm import MetricsSnapshot
from openhands.sdk.llm.utils.metrics import TokenUsage
from openhands.sdk.llm import MetricsSnapshot, TokenUsage
from openhands.storage.data_models.conversation_metadata import ConversationTrigger
# Note: org_id column exists but foreign key constraint is not enforced in tests
@@ -24,7 +24,7 @@ from openhands.app_server.sandbox.sandbox_models import SandboxInfo, SandboxStat
from openhands.app_server.user.specifiy_user_context import SpecifyUserContext
from openhands.app_server.utils.sql_utils import Base
from openhands.integrations.provider import ProviderType
from openhands.sdk.conversation.state import ConversationExecutionStatus
from openhands.sdk.conversation import ConversationExecutionStatus
from openhands.storage.data_models.conversation_metadata import ConversationTrigger
@@ -22,9 +22,9 @@ from openhands.app_server.app_conversation.sql_app_conversation_info_service imp
)
from openhands.app_server.user.specifiy_user_context import SpecifyUserContext
from openhands.app_server.utils.sql_utils import Base
from openhands.sdk.conversation.conversation_stats import ConversationStats
from openhands.sdk import ConversationStats
from openhands.sdk.event import ConversationStateUpdateEvent
from openhands.sdk.llm.utils.metrics import Metrics, TokenUsage
from openhands.sdk.llm import Metrics, TokenUsage
# ---------------------------------------------------------------------------
# Fixtures
@@ -492,7 +492,7 @@ class TestOnEventStatsProcessing:
# Set up process_stats_event to call update_conversation_statistics
async def process_stats_event_side_effect(event, conversation_id):
# Simulate what process_stats_event does - call update_conversation_statistics
from openhands.sdk.conversation.conversation_stats import ConversationStats
from openhands.sdk import ConversationStats
if isinstance(event.value, dict):
stats = ConversationStats.model_validate(event.value)
@@ -40,8 +40,8 @@ from openhands.integrations.service_types import (
TaskType,
)
from openhands.runtime.runtime_status import RuntimeStatus
from openhands.sdk.conversation.state import ConversationExecutionStatus
from openhands.sdk.workspace.models import FileOperationResult
from openhands.sdk.conversation import ConversationExecutionStatus
from openhands.sdk.workspace import FileOperationResult
from openhands.sdk.workspace.remote.async_remote_workspace import (
AsyncRemoteWorkspace,
)
@@ -28,7 +28,7 @@ from openhands.core.config.mcp_config import MCPConfig, MCPStdioServerConfig
from openhands.microagent.microagent import KnowledgeMicroagent, RepoMicroagent
from openhands.microagent.types import MicroagentMetadata, MicroagentType
from openhands.runtime.runtime_status import RuntimeStatus
from openhands.sdk.conversation.state import ConversationExecutionStatus
from openhands.sdk.conversation import ConversationExecutionStatus
from openhands.server.data_models.agent_loop_info import AgentLoopInfo
from openhands.server.data_models.conversation_info import ConversationStatus
from openhands.server.data_models.conversation_info_result_set import (