Skip to content

Commit 164591c

Browse files
authored
fix: Update langfuse deserialization to not require span_handler key (#3378)
1 parent 4d529bd commit 164591c

2 files changed

Lines changed: 33 additions & 3 deletions

File tree

integrations/langfuse/src/haystack_integrations/components/connectors/langfuse/langfuse_connector.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,6 @@ def from_dict(cls, data: dict[str, Any]) -> "LangfuseConnector":
228228
"""
229229
init_params = data["init_parameters"]
230230
deserialize_secrets_inplace(init_params, keys=["secret_key", "public_key"])
231-
init_params["span_handler"] = (
232-
deserialize_class_instance(init_params["span_handler"]) if init_params["span_handler"] else None
233-
)
231+
if init_params.get("span_handler") is not None:
232+
init_params["span_handler"] = deserialize_class_instance(init_params["span_handler"])
234233
return default_from_dict(cls, data)

integrations/langfuse/tests/test_langfuse_connector.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,37 @@ def test_from_dict(self, monkeypatch):
147147
assert langfuse_connector.host is None
148148
assert langfuse_connector.langfuse_client_kwargs is None
149149

150+
def test_from_dict_without_span_handler(self, monkeypatch):
151+
monkeypatch.setenv("LANGFUSE_SECRET_KEY", "secret")
152+
monkeypatch.setenv("LANGFUSE_PUBLIC_KEY", "public")
153+
154+
# All keys that would point to None (span_handler, host, langfuse_client_kwargs) are intentionally absent
155+
data = {
156+
"type": "haystack_integrations.components.connectors.langfuse.langfuse_connector.LangfuseConnector",
157+
"init_parameters": {
158+
"name": "Chat example - OpenAI",
159+
"public": False,
160+
"secret_key": {
161+
"type": "env_var",
162+
"env_vars": ["LANGFUSE_SECRET_KEY"],
163+
"strict": True,
164+
},
165+
"public_key": {
166+
"type": "env_var",
167+
"env_vars": ["LANGFUSE_PUBLIC_KEY"],
168+
"strict": True,
169+
},
170+
},
171+
}
172+
langfuse_connector = LangfuseConnector.from_dict(data)
173+
assert langfuse_connector.name == "Chat example - OpenAI"
174+
assert langfuse_connector.public is False
175+
assert langfuse_connector.secret_key == Secret.from_env_var("LANGFUSE_SECRET_KEY")
176+
assert langfuse_connector.public_key == Secret.from_env_var("LANGFUSE_PUBLIC_KEY")
177+
assert langfuse_connector.span_handler is None
178+
assert langfuse_connector.host is None
179+
assert langfuse_connector.langfuse_client_kwargs is None
180+
150181
def test_from_dict_with_params(self, monkeypatch):
151182
monkeypatch.setenv("LANGFUSE_SECRET_KEY", "secret")
152183
monkeypatch.setenv("LANGFUSE_PUBLIC_KEY", "public")

0 commit comments

Comments
 (0)