Skip to content

Commit 697e55c

Browse files
authored
fix: added LANGFUSE_BASE_URL check for additinoal attribute (#1826)
1 parent 316f54e commit 697e55c

2 files changed

Lines changed: 50 additions & 2 deletions

File tree

src/strands/telemetry/tracer.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,8 +117,9 @@ def is_langfuse(self) -> bool:
117117
Returns:
118118
True if Langfuse is the OTLP endpoint, False otherwise.
119119
"""
120-
return "langfuse" in os.getenv("OTEL_EXPORTER_OTLP_ENDPOINT", "") or "langfuse" in os.getenv(
121-
"OTEL_EXPORTER_OTLP_TRACES_ENDPOINT", ""
120+
return any(
121+
"langfuse" in os.getenv(var, "")
122+
for var in ("OTEL_EXPORTER_OTLP_ENDPOINT", "OTEL_EXPORTER_OTLP_TRACES_ENDPOINT", "LANGFUSE_BASE_URL")
122123
)
123124

124125
def _start_span(

tests/strands/telemetry/test_tracer.py

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1604,3 +1604,50 @@ def test_end_model_invoke_span_non_langfuse_no_extra_attributes(mock_span, monke
16041604
"gen_ai.client.inference.operation.details",
16051605
attributes={"gen_ai.output.messages": expected_output},
16061606
)
1607+
1608+
1609+
class TestIsLangfuse:
1610+
"""Tests for the is_langfuse property."""
1611+
1612+
def test_is_langfuse_with_otel_exporter_otlp_endpoint(self, monkeypatch):
1613+
"""Test is_langfuse returns True when OTEL_EXPORTER_OTLP_ENDPOINT contains langfuse."""
1614+
monkeypatch.setenv("OTEL_EXPORTER_OTLP_ENDPOINT", "https://us.cloud.langfuse.com")
1615+
tracer = Tracer()
1616+
assert tracer.is_langfuse is True
1617+
1618+
def test_is_langfuse_with_otel_exporter_otlp_traces_endpoint(self, monkeypatch):
1619+
"""Test is_langfuse returns True when OTEL_EXPORTER_OTLP_TRACES_ENDPOINT contains langfuse."""
1620+
monkeypatch.setenv(
1621+
"OTEL_EXPORTER_OTLP_TRACES_ENDPOINT", "https://us.cloud.langfuse.com/api/public/otel/v1/traces"
1622+
)
1623+
tracer = Tracer()
1624+
assert tracer.is_langfuse is True
1625+
1626+
def test_is_langfuse_with_langfuse_base_url(self, monkeypatch):
1627+
"""Test is_langfuse returns True when LANGFUSE_BASE_URL contains langfuse."""
1628+
monkeypatch.setenv("LANGFUSE_BASE_URL", "https://us.cloud.langfuse.com")
1629+
tracer = Tracer()
1630+
assert tracer.is_langfuse is True
1631+
1632+
def test_is_langfuse_false_when_no_langfuse_env_vars(self, monkeypatch):
1633+
"""Test is_langfuse returns False when no Langfuse-related env vars are set."""
1634+
monkeypatch.delenv("OTEL_EXPORTER_OTLP_ENDPOINT", raising=False)
1635+
monkeypatch.delenv("OTEL_EXPORTER_OTLP_TRACES_ENDPOINT", raising=False)
1636+
monkeypatch.delenv("LANGFUSE_BASE_URL", raising=False)
1637+
tracer = Tracer()
1638+
assert tracer.is_langfuse is False
1639+
1640+
def test_is_langfuse_false_with_non_langfuse_endpoint(self, monkeypatch):
1641+
"""Test is_langfuse returns False when endpoint is not Langfuse."""
1642+
monkeypatch.setenv("OTEL_EXPORTER_OTLP_ENDPOINT", "https://api.honeycomb.io")
1643+
monkeypatch.delenv("LANGFUSE_BASE_URL", raising=False)
1644+
tracer = Tracer()
1645+
assert tracer.is_langfuse is False
1646+
1647+
def test_is_langfuse_false_with_non_langfuse_base_url(self, monkeypatch):
1648+
"""Test is_langfuse returns False when LANGFUSE_BASE_URL doesn't contain langfuse."""
1649+
monkeypatch.setenv("LANGFUSE_BASE_URL", "https://some-other-service.com")
1650+
monkeypatch.delenv("OTEL_EXPORTER_OTLP_ENDPOINT", raising=False)
1651+
monkeypatch.delenv("OTEL_EXPORTER_OTLP_TRACES_ENDPOINT", raising=False)
1652+
tracer = Tracer()
1653+
assert tracer.is_langfuse is False

0 commit comments

Comments
 (0)