Fix for circular import on ConversationValidator (#7583)

This commit is contained in:
tofarr
2025-03-31 11:09:10 -06:00
committed by GitHub
parent f12bf985ce
commit 6ae2984580
3 changed files with 13 additions and 7 deletions

View File

@@ -23,7 +23,7 @@ from openhands.server.shared import (
sio,
)
from openhands.storage.conversation.conversation_validator import (
ConversationValidatorImpl,
create_conversation_validator,
)
@@ -38,7 +38,7 @@ async def connect(connection_id: str, environ):
raise ConnectionRefusedError('No conversation_id in query params')
cookies_str = environ.get('HTTP_COOKIE', '')
conversation_validator = ConversationValidatorImpl()
conversation_validator = create_conversation_validator()
user_id, github_user_id = await conversation_validator.validate(
conversation_id, cookies_str
)

View File

@@ -10,8 +10,12 @@ class ConversationValidator:
return None, None
conversation_validator_cls = os.environ.get(
'OPENHANDS_CONVERSATION_VALIDATOR_CLS',
'openhands.storage.conversation.conversation_validator.ConversationValidator',
)
ConversationValidatorImpl = get_impl(ConversationValidator, conversation_validator_cls)
def create_conversation_validator():
conversation_validator_cls = os.environ.get(
'OPENHANDS_CONVERSATION_VALIDATOR_CLS',
'openhands.storage.conversation.conversation_validator.ConversationValidator',
)
ConversationValidatorImpl = get_impl(
ConversationValidator, conversation_validator_cls
)
return ConversationValidatorImpl()

View File

@@ -1,4 +1,5 @@
import importlib
from functools import lru_cache
from typing import Type, TypeVar
T = TypeVar('T')
@@ -13,6 +14,7 @@ def import_from(qual_name: str):
return result
@lru_cache()
def get_impl(cls: Type[T], impl_name: str | None) -> Type[T]:
"""Import a named implementation of the specified class"""
if impl_name is None: