Repository navigation
Conversation
Python 3.10 reaches end of life in October 2026. Raise requires-python to >=3.11, target py311 in ruff, drop 3.10 from the CI unit matrix, and remove the pre-3.11 fallbacks for asyncio.create_task(context=...) and typing.NotRequired. Co-authored-by: Hassieb Pakzad <hassiebp@users.noreply.github.com>
The OpenAI integration now always uses the v1 client shapes. Remove the pre-1.0 method definitions and every _is_openai_v1() branch, and raise the dev dependency floor to openai>=1.0.0. Co-authored-by: Hassieb Pakzad <hassiebp@users.noreply.github.com>
The default OTLP exporter now sends x-langfuse-ingestion-version: 4 so servers in dual-write or preview mode process exported spans directly. It is a no-op on events_only deployments, and additional_headers can still override it. Co-authored-by: Hassieb Pakzad <hassiebp@users.noreply.github.com>
blocked_instrumentation_scopes was deprecated in favor of should_export_span. Remove it from Langfuse, the resource manager and the span processor, and drop the leftover is_active entry from the create_prompt docstring. LANGFUSE_HOST and host keep working, but now log a deprecation warning when they decide the base URL. Co-authored-by: Hassieb Pakzad <hassiebp@users.noreply.github.com>
propagate_attributes(metadata=...) coerced non-string values with str(), so a boolean became "True" and a list became its Python repr. Serialize them as JSON instead, like observation metadata, and drop None values instead of sending "None". Co-authored-by: Hassieb Pakzad <hassiebp@users.noreply.github.com>
7 of 11 tasks
|
@claude review |
There was a problem hiding this comment.
Claude Code Review
No review was started: this request came from a bot account. Manual reviews can only be requested by someone with write access to this repository. Ask a maintainer to comment @claude review, or have your automation post the comment from a user account with write access.
Tip: disable this comment in your organization's Code Review settings.
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
Use compact separators, keep non-ASCII characters, and send None as "null", so the Python and JS SDKs emit byte-identical propagated metadata values. Co-authored-by: Hassieb Pakzad <hassiebp@users.noreply.github.com>
inspect.iscoroutinefunction ignores asyncio's _is_coroutine marker, which asgiref's markcoroutinefunction sets on Python < 3.12. Accept both so such functions keep the async wrapper and their observation ends after the coroutine runs. Co-authored-by: Hassieb Pakzad <hassiebp@users.noreply.github.com>
…o lfe-17074-python-sdk-v5-send-x-langfuse-ingestion-version-4-by-default Co-authored-by: Hassieb Pakzad <hassiebp@users.noreply.github.com>
…scopes-and' into lfe-17061-python-sdk-v5-json-serialize-propagated-metadata-align-with Co-authored-by: Hassieb Pakzad <hassiebp@users.noreply.github.com>
…on-4-by-default' into lfe-17078-python-sdk-v5-remove-blocked_instrumentation_scopes-and Co-authored-by: Hassieb Pakzad <hassiebp@users.noreply.github.com>
…0' into lfe-17080-python-sdk-v5-drop-openai-sdk-10-support Co-authored-by: Hassieb Pakzad <hassiebp@users.noreply.github.com>
Co-authored-by: Hassieb Pakzad <hassiebp@users.noreply.github.com>
Co-authored-by: Hassieb Pakzad <hassiebp@users.noreply.github.com>
…on-4-by-default' into lfe-17078-python-sdk-v5-remove-blocked_instrumentation_scopes-and Co-authored-by: Hassieb Pakzad <hassiebp@users.noreply.github.com>
…scopes-and' into lfe-17061-python-sdk-v5-json-serialize-propagated-metadata-align-with Co-authored-by: Hassieb Pakzad <hassiebp@users.noreply.github.com>
…penai-sdk-10-support Co-authored-by: Hassieb Pakzad <hassiebp@users.noreply.github.com>
…o lfe-17074-python-sdk-v5-send-x-langfuse-ingestion-version-4-by-default Co-authored-by: Hassieb Pakzad <hassiebp@users.noreply.github.com>
…on-4-by-default' into lfe-17078-python-sdk-v5-remove-blocked_instrumentation_scopes-and Co-authored-by: Hassieb Pakzad <hassiebp@users.noreply.github.com>
…scopes-and' into lfe-17061-python-sdk-v5-json-serialize-propagated-metadata-align-with Co-authored-by: Hassieb Pakzad <hassiebp@users.noreply.github.com>
Integers keep their exact digits as JSON numbers at any depth, and propagated metadata values containing NaN or Infinity are dropped with a warning instead of being stored, matching the JS SDK. Co-authored-by: Hassieb Pakzad <hassiebp@users.noreply.github.com>
…-blocked_instrumentation_scopes-and Co-authored-by: Hassieb Pakzad <hassiebp@users.noreply.github.com>
Co-authored-by: Hassieb Pakzad <hassiebp@users.noreply.github.com>
…scopes-and' into lfe-17061-python-sdk-v5-json-serialize-propagated-metadata-align-with Co-authored-by: Hassieb Pakzad <hassiebp@users.noreply.github.com>
Base automatically changed from
lfe-17078-python-sdk-v5-remove-blocked_instrumentation_scopes-and
to
prepare-v5-release
October 7, 2026 14:33
…erialize-propagated-metadata-align-with Co-authored-by: Hassieb Pakzad <hassiebp@users.noreply.github.com>
hassiebp
deleted the
lfe-17061-python-sdk-v5-json-serialize-propagated-metadata-align-with
branch
October 7, 2026 15:38
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What does this PR do?
propagate_attributes(metadata=...)coerced non-string values withstr(), soTruebecame"True",["a"]became"['a']", and dicts became their Python repr. Propagated metadata values are now serialized exactly likeJSON.stringifyin the JS SDK (langfuse-js#980), so both SDKs emit byte-identical values: compact separators, non-ASCII kept as is, insertion key order, andNone→"null".True"True""true"["branch:agent"]"['branch:agent']"'["branch:agent"]'{"model": "gpt-4o", "n": {"a": "ü"}}"{'model': 'gpt-4o', 'n': {'a': 'ü'}}"'{"model":"gpt-4o","n":{"a":"ü"}}'None"None""null"Strings are kept as is, and ints serialize the same as before. The 200-character limit applies to the serialized value. Non-JSON Python types (datetimes, pydantic models, and so on) go through
EventSerializer, as elsewhere in the SDK.Stack: 5 of 10. Base: #1931. Merge after #1931.
Type of change
Verification
Byte-equality with Node's
JSON.stringifywas checked for ints, floats, bools,null, lists, nested dicts, non-ASCII/emoji, escaped quotes and tabs, and large safe ints: all identical.Notes for the reviewer
These Python-only cases can't match JS exactly, by design:
1.0serializes as"1.0"here, but"1"in JS."\"NaN\""here, but"null"in JS.EventSerializer's ISO format (no forced milliseconds), so they aren't identical to JSDate.toJSON.Checklist
code_review.md..env.templateif needed.The PR should not merge until propagated large integer metadata retains its intended representation.
Summary
The PR JSON-serializes non-string propagated metadata, drops
Nonevalues, and updates unit tests.Reviews (1) · Last reviewed commit: "feat(tracing)!: JSON-serialize propagate..."