fix(langfuse): gate the SDK version before importing the OTel module in prompt management

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
This commit is contained in:
yucheng 2026-09-18 00:25:04 +00:00
parent 58e97f55c0
commit 24927b9b84
2 changed files with 20 additions and 1 deletions

View file

@ -152,9 +152,11 @@ class LangfusePromptManagement(LangFuseLogger, PromptManagementBase, CustomLogge
flush_interval=1,
):
self.langfuse_sdk_version = installed_langfuse_version()
raise_if_unsupported_langfuse_version(self.langfuse_sdk_version)
from .langfuse_sdk import acquire_langfuse_tracing
self.langfuse_sdk_version = installed_langfuse_version()
self.Langfuse = langfuse_client_init(
langfuse_public_key=langfuse_public_key,
langfuse_secret=langfuse_secret,

View file

@ -1,3 +1,4 @@
import sys
from datetime import datetime, timezone
from typing import Final
from unittest.mock import MagicMock, patch
@ -243,3 +244,19 @@ async def test_async_log_failure_event_records_trace_id_for_alerting(monkeypatch
assert in_memory_trace_id_cache.get_cache(litellm_call_id=call_id, service_name="langfuse") == resolve_trace_id(
"alert-trace-1"
)
def test_old_sdk_fails_with_the_upgrade_message_before_the_otel_module_is_imported(monkeypatch):
"""On a v2 install `langfuse_sdk` itself fails to import, so the version gate must run first."""
import litellm.integrations.langfuse.langfuse_prompt_management as pm_module
monkeypatch.setattr(pm_module, "installed_langfuse_version", lambda: "2.59.7")
monkeypatch.setitem(sys.modules, "litellm.integrations.langfuse.langfuse_sdk", None)
with pytest.raises(ImportError) as raised:
LangfusePromptManagement(
langfuse_public_key="pk-old", langfuse_secret="sk-old", langfuse_host="http://127.0.0.1:1"
)
assert "2.59.7" in str(raised.value)
assert "langfuse_otel" in str(raised.value)