Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
59 commits
Select commit Hold shift + click to select a range
18a7f21
chore!: require Python 3.11 or newer
cursoragent Oct 6, 2026
ee38a2b
feat(openai)!: drop support for OpenAI SDK versions below 1.0
cursoragent Oct 6, 2026
95b341d
feat(otel)!: send x-langfuse-ingestion-version: 4 by default
cursoragent Oct 6, 2026
466808b
feat(client)!: remove blocked_instrumentation_scopes
cursoragent Oct 6, 2026
e9623ee
feat(tracing)!: JSON-serialize propagated metadata values
cursoragent Oct 6, 2026
66f9842
feat(client)!: remove get_dataset_run, get_dataset_runs and delete_da…
cursoragent Oct 6, 2026
6c5c488
feat(experiments)!: record experiment runs via OTEL only
cursoragent Oct 6, 2026
8a567e8
test(experiments): read experiment e2e results via v4 APIs
cursoragent Oct 6, 2026
a5c964e
test(experiments): pin the cross-SDK experiment id vectors
cursoragent Oct 6, 2026
dfb67a5
feat(batch-evaluation)!: evaluate observations via the v2 observation…
cursoragent Oct 6, 2026
638034e
test(batch-evaluation): rewrite e2e suite for v2 observations
cursoragent Oct 6, 2026
5fc6147
fix(tracing): serialize propagated metadata like JSON.stringify
cursoragent Oct 6, 2026
e1e3023
Merge branch 'lfe-16769-bug-get_dataset_run-get_dataset_runs-delete_d…
cursoragent Oct 6, 2026
cd04135
Merge branch 'lfe-17047-python-sdk-v5-update-the-experiment-runner' i…
cursoragent Oct 6, 2026
d32cdd9
Merge branch 'lfe-17061-python-sdk-v5-json-serialize-propagated-metad…
cursoragent Oct 6, 2026
4cffec5
fix(observe): keep detecting legacy-marked coroutine functions
cursoragent Oct 7, 2026
aa14c25
Merge branch 'lfe-17080-python-sdk-v5-drop-openai-sdk-10-support' int…
cursoragent Oct 7, 2026
a5fe6eb
Merge branch 'lfe-17078-python-sdk-v5-remove-blocked_instrumentation_…
cursoragent Oct 7, 2026
c3d0ad2
Merge branch 'lfe-16769-bug-get_dataset_run-get_dataset_runs-delete_d…
cursoragent Oct 7, 2026
168247c
Merge branch 'lfe-17047-python-sdk-v5-update-the-experiment-runner' i…
cursoragent Oct 7, 2026
90102f8
Merge branch 'lfe-17074-python-sdk-v5-send-x-langfuse-ingestion-versi…
cursoragent Oct 7, 2026
e7e3f7c
Merge branch 'lfe-17061-python-sdk-v5-json-serialize-propagated-metad…
cursoragent Oct 7, 2026
d1cb7a1
Merge branch 'lfe-16917-python-sdk-add-python-315-support-and-drop-31…
cursoragent Oct 7, 2026
846cc7f
test(otel): pin that a mixed-case ingestion-version override wins
cursoragent Oct 7, 2026
14da611
fix(tracing): keep the exact digits of large integer metadata values
cursoragent Oct 7, 2026
94cc64b
fix(experiments): skip orphaned run scores and offline project lookups
cursoragent Oct 7, 2026
41f6479
fix(batch-evaluation): one root per trace and safe resume
cursoragent Oct 7, 2026
ab0e49d
Merge branch 'lfe-17074-python-sdk-v5-send-x-langfuse-ingestion-versi…
cursoragent Oct 7, 2026
01a0596
Merge branch 'lfe-17078-python-sdk-v5-remove-blocked_instrumentation_…
cursoragent Oct 7, 2026
d2c4cff
Merge branch 'lfe-17061-python-sdk-v5-json-serialize-propagated-metad…
cursoragent Oct 7, 2026
717f743
Merge branch 'lfe-16769-bug-get_dataset_run-get_dataset_runs-delete_d…
cursoragent Oct 7, 2026
8a23f02
Merge branch 'lfe-17047-python-sdk-v5-update-the-experiment-runner' i…
cursoragent Oct 7, 2026
5c4bb1f
Merge branch 'prepare-v5-release' into lfe-17080-python-sdk-v5-drop-o…
cursoragent Oct 7, 2026
3eea389
Merge branch 'lfe-17080-python-sdk-v5-drop-openai-sdk-10-support' int…
cursoragent Oct 7, 2026
6c0165d
Merge branch 'lfe-17074-python-sdk-v5-send-x-langfuse-ingestion-versi…
cursoragent Oct 7, 2026
2d45312
Merge branch 'lfe-17078-python-sdk-v5-remove-blocked_instrumentation_…
cursoragent Oct 7, 2026
32d121f
Merge branch 'lfe-17061-python-sdk-v5-json-serialize-propagated-metad…
cursoragent Oct 7, 2026
72494c3
Merge branch 'lfe-16769-bug-get_dataset_run-get_dataset_runs-delete_d…
cursoragent Oct 7, 2026
c785d95
Merge branch 'lfe-17047-python-sdk-v5-update-the-experiment-runner' i…
cursoragent Oct 7, 2026
83acb2b
chore: re-run CI
cursoragent Oct 7, 2026
406bc4b
chore: re-run CI
cursoragent Oct 7, 2026
5f4b9a4
fix(tracing): match JS for nested big ints and non-finite metadata
cursoragent Oct 7, 2026
0405076
Merge branch 'lfe-17061-python-sdk-v5-json-serialize-propagated-metad…
cursoragent Oct 7, 2026
9238e07
Merge branch 'lfe-16769-bug-get_dataset_run-get_dataset_runs-delete_d…
cursoragent Oct 7, 2026
5ebde7b
Merge branch 'lfe-17047-python-sdk-v5-update-the-experiment-runner' i…
cursoragent Oct 7, 2026
ac1eeb0
Merge branch 'prepare-v5-release' into lfe-17078-python-sdk-v5-remove…
cursoragent Oct 7, 2026
c7c709a
feat(client): keep host and LANGFUSE_HOST working without a warning
cursoragent Oct 7, 2026
cfa2acc
Merge branch 'lfe-17078-python-sdk-v5-remove-blocked_instrumentation_…
cursoragent Oct 7, 2026
a82ddda
Merge branch 'lfe-17061-python-sdk-v5-json-serialize-propagated-metad…
cursoragent Oct 7, 2026
1c2a1ba
Merge branch 'lfe-16769-bug-get_dataset_run-get_dataset_runs-delete_d…
cursoragent Oct 7, 2026
b406eb2
Merge branch 'lfe-17047-python-sdk-v5-update-the-experiment-runner' i…
cursoragent Oct 7, 2026
93ab547
Merge branch 'prepare-v5-release' into lfe-17047-python-sdk-v5-update…
cursoragent Oct 7, 2026
8063f84
feat(tracing)!: remove trace-level input/output setters (#1935)
hassiebp Oct 7, 2026
4ea561d
test: run the e2e suites on Langfuse v4 events_only (#1937)
hassiebp Oct 7, 2026
8299f52
feat(batch-evaluation)!: evaluate observations only
cursoragent Oct 7, 2026
f4a8bda
Merge branch 'lfe-17047-python-sdk-v5-update-the-experiment-runner' i…
cursoragent Oct 7, 2026
96d5ebb
fix(batch-evaluation): evaluate duplicate observation rows once
cursoragent Oct 7, 2026
a0ca54c
Merge branch 'prepare-v5-release' into lfe-17058-python-sdk-v5-rework…
cursoragent Oct 7, 2026
37f53c8
Merge branch 'prepare-v5-release' into lfe-17058-python-sdk-v5-rework…
cursoragent Oct 7, 2026
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
7 changes: 0 additions & 7 deletions .github/langfuse-v4-dual-write.override.yml

This file was deleted.

2 changes: 0 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -159,8 +159,6 @@ jobs:
LANGFUSE_SERVER_SHA="$(git ls-remote https://github.com/langfuse/langfuse.git HEAD | cut -f1)"
curl -fsSL "https://raw.githubusercontent.com/langfuse/langfuse/${LANGFUSE_SERVER_SHA}/docker-compose.yml" \
-o ./langfuse-server/docker-compose.yml
cp ./.github/langfuse-v4-dual-write.override.yml \
./langfuse-server/docker-compose.override.yml
echo "${LANGFUSE_SERVER_SHA}"

- name: Run langfuse server
Expand Down
6 changes: 0 additions & 6 deletions langfuse/_client/attributes.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,6 @@ class LangfuseOtelSpanAttributes:
TRACE_TAGS = "langfuse.trace.tags"
TRACE_PUBLIC = "langfuse.trace.public"
TRACE_METADATA = "langfuse.trace.metadata"
TRACE_INPUT = "langfuse.trace.input"
TRACE_OUTPUT = "langfuse.trace.output"

# Langfuse-observation attributes
OBSERVATION_TYPE = "langfuse.observation.type"
Expand Down Expand Up @@ -76,13 +74,9 @@ class LangfuseOtelSpanAttributes:

def create_trace_attributes(
*,
input: Optional[Any] = None,
output: Optional[Any] = None,
public: Optional[bool] = None,
) -> dict:
attributes = {
LangfuseOtelSpanAttributes.TRACE_INPUT: _serialize(input),
LangfuseOtelSpanAttributes.TRACE_OUTPUT: _serialize(output),
LangfuseOtelSpanAttributes.TRACE_PUBLIC: public,
}

Expand Down
221 changes: 75 additions & 146 deletions langfuse/_client/client.py

Large diffs are not rendered by default.

48 changes: 0 additions & 48 deletions langfuse/_client/span.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@
if TYPE_CHECKING:
from langfuse._client.client import Langfuse

from typing_extensions import deprecated

from langfuse._client.attributes import (
LangfuseOtelSpanAttributes,
Expand Down Expand Up @@ -226,53 +225,6 @@ def end(self, *, end_time: Optional[int] = None) -> "LangfuseObservationWrapper"

return self

@deprecated(
"Trace-level input/output is deprecated. "
"For trace attributes (user_id, session_id, tags, etc.), use propagate_attributes() instead. "
"This method will be removed in a future major version."
)
def set_trace_io(
self,
*,
input: Optional[Any] = None,
output: Optional[Any] = None,
) -> "LangfuseObservationWrapper":
"""Set trace-level input and output for the trace this span belongs to.

.. deprecated::
This is a legacy method for backward compatibility with Langfuse platform
features that still rely on trace-level input/output (e.g., legacy LLM-as-a-judge
evaluators). It will be removed in a future major version.

For setting other trace attributes (user_id, session_id, metadata, tags, version),
use :func:`langfuse.propagate_attributes` (top-level import) instead.

Args:
input: Input data to associate with the trace.
output: Output data to associate with the trace.

Returns:
The span instance for method chaining.
"""
if not self._otel_span.is_recording():
return self

media_processed_input = self._process_media_and_apply_mask(
data=input, field="input", span=self._otel_span
)
media_processed_output = self._process_media_and_apply_mask(
data=output, field="output", span=self._otel_span
)

attributes = create_trace_attributes(
input=media_processed_input,
output=media_processed_output,
)

self._otel_span.set_attributes(attributes)

return self

def set_trace_as_public(self) -> "LangfuseObservationWrapper":
"""Make this trace publicly accessible via its URL.

Expand Down
2 changes: 0 additions & 2 deletions langfuse/_client/span_exporter.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@

_INPUT_MEDIA_ATTRIBUTE_KEYS = frozenset(
{
LangfuseOtelSpanAttributes.TRACE_INPUT,
LangfuseOtelSpanAttributes.OBSERVATION_INPUT,
"ai.prompt.messages",
"ai.prompt",
Expand All @@ -54,7 +53,6 @@

_OUTPUT_MEDIA_ATTRIBUTE_KEYS = frozenset(
{
LangfuseOtelSpanAttributes.TRACE_OUTPUT,
LangfuseOtelSpanAttributes.OBSERVATION_OUTPUT,
"ai.response.text",
"ai.result.text",
Expand Down
Loading
Loading