From 4d190037b8642527f2cd33118b083be7e92dae81 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Wed, 14 Oct 2026 13:17:42 +0000 Subject: [PATCH] test: expect flattened metadata keys for v5 Co-authored-by: hassieb.pakzad --- tests/e2e/test_core_sdk.py | 7 ------- tests/e2e/test_decorators.py | 6 +++--- tests/e2e/test_media.py | 12 ++++++------ tests/live_provider/test_openai.py | 10 +++------- 4 files changed, 12 insertions(+), 23 deletions(-) diff --git a/tests/e2e/test_core_sdk.py b/tests/e2e/test_core_sdk.py index 7105f80e7..6d80f821e 100644 --- a/tests/e2e/test_core_sdk.py +++ b/tests/e2e/test_core_sdk.py @@ -360,13 +360,6 @@ def test_create_text_score(): ) -@pytest.mark.xfail( - strict=False, - reason=( - "Needs the Langfuse platform release that adds timestamp to POST /scores " - "(langfuse prep-js-v6-py-v5-sdk-majors). Remove this marker once it ships." - ), -) def test_create_score_with_custom_timestamp(): langfuse = Langfuse() diff --git a/tests/e2e/test_decorators.py b/tests/e2e/test_decorators.py index a33a4f3d5..c11aabaa2 100644 --- a/tests/e2e/test_decorators.py +++ b/tests/e2e/test_decorators.py @@ -1114,7 +1114,7 @@ def main(): in (trace.output or {}).get("context", {}).get("nested", "") and any( "@@@langfuseMedia:type=application/pdf|id=" - in observation.metadata.get("context", {}).get("nested", "") + in observation.metadata.get("context.nested", "") for observation in trace.observations if observation.metadata ) @@ -1133,10 +1133,10 @@ def main(): observation = trace_data.observations[0] assert ( "@@@langfuseMedia:type=application/pdf|id=" - in observation.metadata["context"]["nested"] + in observation.metadata["context.nested"] ) parsed_reference_string = LangfuseMedia.parse_reference_string( - observation.metadata["context"]["nested"] + observation.metadata["context.nested"] ) assert parsed_reference_string["content_type"] == "application/pdf" assert parsed_reference_string["media_id"] is not None diff --git a/tests/e2e/test_media.py b/tests/e2e/test_media.py index ad8a8cb37..2507d322a 100644 --- a/tests/e2e/test_media.py +++ b/tests/e2e/test_media.py @@ -35,14 +35,14 @@ def test_replace_media_reference_string_in_object(): is_result_ready=lambda observations: ( re.match( r"^@@@langfuseMedia:type=audio/wav\|id=.+\|source=base64_data_uri@@@$", - observations[0].metadata.get("context", {}).get("nested", ""), + observations[0].metadata.get("context.nested", ""), ) is not None ), ) assert len(fetched_observations) == 1 fetched_observation = fetched_observations[0] - media_ref = fetched_observation.metadata["context"]["nested"] + media_ref = fetched_observation.metadata["context.nested"] assert re.match( r"^@@@langfuseMedia:type=audio/wav\|id=.+\|source=base64_data_uri@@@$", media_ref, @@ -53,11 +53,11 @@ def test_replace_media_reference_string_in_object(): ) expected_base64 = f"data:audio/wav;base64,{base64_audio}" - assert resolved_obs["metadata"]["context"]["nested"] == expected_base64 + assert resolved_obs["metadata"]["context.nested"] == expected_base64 span2 = langfuse.start_observation( name=f"2-{mock_trace_name}", - metadata={"context": {"nested": resolved_obs["metadata"]["context"]["nested"]}}, + metadata={"context": {"nested": resolved_obs["metadata"]["context.nested"]}}, ).end() langfuse.flush() @@ -65,8 +65,8 @@ def test_replace_media_reference_string_in_object(): fetched_observations2 = wait_for_observations( span2.trace_id, is_result_ready=lambda observations: ( - observations[0].metadata.get("context", {}).get("nested") == media_ref + observations[0].metadata.get("context.nested") == media_ref ), ) assert len(fetched_observations2) == 1 - assert fetched_observations2[0].metadata["context"]["nested"] == media_ref + assert fetched_observations2[0].metadata["context.nested"] == media_ref diff --git a/tests/live_provider/test_openai.py b/tests/live_provider/test_openai.py index 18dc61b81..ab3e2e12e 100644 --- a/tests/live_provider/test_openai.py +++ b/tests/live_provider/test_openai.py @@ -999,17 +999,13 @@ def test_structured_output_response_format_kwarg(openai): langfuse.flush() - generation = wait_for_observations( - name=generation_name, type="GENERATION", expand_metadata="response_format" - ) + generation = wait_for_observations(name=generation_name, type="GENERATION") assert len(generation) != 0 assert generation[0].name == generation_name assert generation[0].metadata["someKey"] == "someResponse" - assert generation[0].metadata["response_format"] == { - "type": "json_schema", - "json_schema": json_schema, - } + assert generation[0].metadata["response_format.type"] == "json_schema" + assert generation[0].metadata["response_format.json_schema.name"] == "math_response" assert generation[0].input == [ {"role": "system", "content": "You are a helpful math tutor."},