Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions langfuse/_utils/environment.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@

def get_common_release_envs() -> Optional[str]:
for env in common_release_envs:
if env in os.environ:
return os.environ[env]
value = os.environ.get(env)
if value:
return value
return None
26 changes: 26 additions & 0 deletions tests/unit/test_environment.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import pytest

from langfuse._utils.environment import common_release_envs, get_common_release_envs


@pytest.mark.parametrize(
"values,expected",
[
({}, None),
({name: "" for name in common_release_envs}, None),
({"RENDER_GIT_COMMIT": "", "GITHUB_SHA": "github-sha"}, "github-sha"),
(
{"RENDER_GIT_COMMIT": "render-sha", "GITHUB_SHA": "github-sha"},
"render-sha",
),
({"RENDER_GIT_COMMIT": " ", "GITHUB_SHA": "github-sha"}, " "),
],
ids=["unset", "all-empty", "skip-empty", "precedence", "preserve-whitespace"],
)
def test_get_common_release_envs(monkeypatch, values, expected):
for name in common_release_envs:
monkeypatch.delenv(name, raising=False)
for name, value in values.items():
monkeypatch.setenv(name, value)

assert get_common_release_envs() == expected
15 changes: 15 additions & 0 deletions tests/unit/test_initialization.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@

from langfuse import Langfuse
from langfuse._client.resource_manager import LangfuseResourceManager
from langfuse._utils.environment import common_release_envs


class TestClientInitialization:
Expand Down Expand Up @@ -135,6 +136,20 @@ def test_zero_sample_rate_parameter_is_preserved(
assert client._resources is not None
assert client._resources.sample_rate == 0.0

def test_empty_ci_release_falls_back_to_next_variable(self, monkeypatch):
for name in [*common_release_envs, "LANGFUSE_RELEASE"]:
monkeypatch.delenv(name, raising=False)
monkeypatch.setenv("RENDER_GIT_COMMIT", "")
monkeypatch.setenv("GITHUB_SHA", "github-sha")

client = Langfuse(
public_key="test_pk_release",
secret_key="test_sk",
tracing_enabled=False,
)

assert client._release == "github-sha"

def test_base_url_env_var(self, cleanup_env_vars):
"""Test that LANGFUSE_BASE_URL environment variable is used correctly."""
os.environ["LANGFUSE_BASE_URL"] = "http://test-base-url.com"
Expand Down
Loading