Skip to content

Commit 72ae95f

Browse files
fix(score): raise ValueError when create_score receives None name or value
1 parent 0ad4ec1 commit 72ae95f

2 files changed

Lines changed: 39 additions & 0 deletions

File tree

langfuse/_client/client.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
_agnosticcontextmanager,
4040
)
4141
from packaging.version import Version
42+
from pydantic import ValidationError
4243
from typing_extensions import deprecated
4344

4445
from langfuse._client.attributes import (
@@ -1987,6 +1988,8 @@ def create_score(
19871988
force_sample=force_sample,
19881989
)
19891990

1991+
except ValidationError as e:
1992+
raise ValueError(f"Invalid score parameters: {e}") from e
19901993
except Exception as e:
19911994
langfuse_logger.exception(
19921995
f"Error creating score: Failed to process score event for trace_id={trace_id}, name={name}. Error: {e}"
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
"""Unit tests for create_score input validation.
2+
3+
Ensures that programmer errors (None name or value) raise ValueError
4+
at the call site rather than being silently swallowed.
5+
"""
6+
7+
import pytest
8+
9+
from langfuse import Langfuse
10+
from langfuse._client.resource_manager import LangfuseResourceManager
11+
12+
13+
@pytest.fixture(autouse=True)
14+
def _clear_singleton():
15+
yield
16+
with LangfuseResourceManager._lock:
17+
LangfuseResourceManager._instances.clear()
18+
19+
20+
@pytest.fixture()
21+
def lf():
22+
return Langfuse(
23+
public_key="pk-lf-test",
24+
secret_key="sk-lf-test",
25+
host="http://localhost:19999",
26+
)
27+
28+
29+
def test_create_score_raises_on_none_value(lf):
30+
with pytest.raises(ValueError, match="Invalid score parameters"):
31+
lf.create_score(name="accuracy", value=None, trace_id="fake-trace-id")
32+
33+
34+
def test_create_score_raises_on_none_name(lf):
35+
with pytest.raises(ValueError, match="Invalid score parameters"):
36+
lf.create_score(name=None, value=0.9, trace_id="fake-trace-id")

0 commit comments

Comments
 (0)