Skip to content

Releases: DataDog/dd-trace-py

3.4.1

09 Apr 18:02
2312141

Choose a tag to compare

Bug Fixes

  • Code Security
    • Fixes an issue with PosixPath handling in path operations that could cause errors during taint tracking. This fix improves stability and slightly reduces import times.

3.3.3

09 Apr 20:59
a6b200a

Choose a tag to compare

Bug Fixes

  • Code Security
    • Fixes an issue with PosixPath handling in path operations that could cause errors during taint tracking. This fix improves stability and slightly reduces import times.

3.2.3

09 Apr 20:57
03f0a52

Choose a tag to compare

Bug Fixes

  • Code Security

    • Fixes an issue with PosixPath handling in path operations that could cause errors during taint tracking. This fix improves stability and slightly reduces import times.
  • Lib-injection

    • Avoids zombie process from telemetry sender on startup.
  • LLM Observability

    • Fixes an issue where LLMObs could not be enabled in a forked process when setting agentless_enabled=True or DD_LLMOBS_AGENTLESS_ENABLED=true.
  • Tracing

    • internal: Fixes an issue where trimming a traceback to attach it to the span could result in the loss of the most recent frames.

3.4.0

08 Apr 20:16
4c615f2

Choose a tag to compare

Upgrade Notes

  • Profiling
    • Upgrades echion which includes performance improvements.

Deprecation Notes

  • Tracing
    • patch_all is deprecated. As an alternative to patch_all, you can use import ddtrace.auto along with DD_PATCH_MODULES if specific module patching is necessary.

New Features

  • Dynamic Instrumentation

    • Adds support for the Decimal type from the Python standard library.
  • LLM Observability

    • Introduces a integration tag to LLM Observability spans that are generated by an integration.
    • agentless_enabled and DD_LLMOBS_AGENTLESS_ENABLED now defaults to None, and will be determined automatically based on the presence of a compatible Datadog agent. agentless_enabled and DD_LLMOBS_AGENTLESS_ENABLED can still be set explicitly to True or False</span>, but is now optional for agentless users.
  • Profiling

    • Stack v2 supports CPython 3.13.
    • Adds support for native exporter on Windows.
    • Enables profiling native modules for macOS x86_64.
  • Tracing

    • Adds configuration for encoding span events as a top-level field in v0.4 payloads and introduces environment variable DD_TRACE_NATIVE_SPAN_EVENTS (disabled by default). This requires agent version 7.63.0 or later.
    • Extracts the referrer hostname from HTTP requests and stored it as http.referrer_hostname tag.

Bug Fixes

  • Fixes an issue with gevent support and the typing module on CPython >= 3.12.

  • ASM

    • Fixes a NotImplementedError that occurred when trying to deepcopy wrapped builtin functions (like open) while ASM or IAST were enabled. The error was caused by the wrapper not implementing the __deepcopy__ method.
    • SCA: Resolves an issue where some dependencies where reported with an inaccurate name.
  • CI Visibility

    • Resolves an issue where JUnit XML output would not count tests retried by Early Flake Detection, Auto Test Retries, and Attempt-to-Fix.
  • Lib-Injection

    • Avoids zombie process from telemetry sender on startup.
  • LLM Observability

    • Resolves an issue where large spans traced within a short time interval were dropped despite being under the 1 MB limit.
    • Resolves an issue with anthropic LLM spans where multiple system prompts caused missing input messages.
    • Resolves an issue where traces containing intermixed APM and LLM Observability spans caused incorrect parent IDs for LLM Observability spans.
    • Fixes an issue where LLMObs could not be enabled in a forked process when setting agentless_enabled=True or DD_LLMOBS_AGENTLESS_ENABLED=true.
    • openai: Avoids creating spans for streamed Open AI chat and completion requests that use with_raw_response since the stream cannot be traced in these cases, leading to unfinished spans.
  • Profiling

    • Resolves an issue where the Lock profiler would throw an AttributeError: '_ProfiledThreadingLock' object has no attribute '_self_acquired_at'.
  • Single-Step Instrumentation

    • Resolves an issue where using Poetry to run an application under a version of Python different from the version used to install Poetry caused automatic library injection to fail.
  • Tracing

    • graphql: Fixes an issue in GraphQL patching that threw an error when locations (an Optional field) is None. This checks for locations before setting attributes.

Other Changes

  • Single-Step Instrumentation
    • Ensures that the SSI is not used for uWSGI applications. For enablement instructions, refer to the following our advanced_usage docs.

3.4.0rc2

07 Apr 16:44
af255f0

Choose a tag to compare

3.4.0rc2 Pre-release
Pre-release

No changelogs since 3.4.0rc1

3.3.2

07 Apr 19:02
2acc8b9

Choose a tag to compare

Bug Fixes

  • Lib-Injection

    • Avoids zombie process from telemetry sender on startup.
  • LLM Observability

    • Resolves an issue where large spans traced within a short time interval were dropped despite being under the 1 MB limit.
    • Resolves an issue with anthropic LLM spans where multiple system prompts caused missing input messages.
    • Fixes an issue where LLMObs could not be enabled in a forked process when setting agentless_enabled=True or DD_LLMOBS_AGENTLESS_ENABLED=true.

Other Changes

  • library: Ensures that the SSI is not used for uWSGI applications. For enablement instructions, refer to the following our advanced_usage docs .

2.21.5

07 Apr 19:46
502a758

Choose a tag to compare

Bug Fixes

  • ASM

    • Fixes a NotImplementedError that occurred when trying to deepcopy wrapped builtin functions (likeopen) while ASM or IAST were enabled. The error was caused by the wrapper not implementing the __deepcopy__ method.
  • LLM Observability

    • Fixes an issue where LLMObs could not be enabled in a forked process when setting agentless_enabled=True or DD_LLMOBS_AGENTLESS_ENABLED=true.
  • Profiling

    • Resolves an issue where the Lock profiler would throw an AttributeError: '_ProfiledThreadingLock' object has no attribute '_self_acquired_at'.
  • Tracing

    • pylibmc: Fixes an issue where using Client(server=[url]) would throw the error __init__() got multiple values for argument 'servers'

Other Changes

  • library: Ensures that the SSI is not used for uWSGI applications. For enablement instructions, refer to the following our advanced_usage docs .

3.4.0rc1

02 Apr 19:22
306489d

Choose a tag to compare

3.4.0rc1 Pre-release
Pre-release

Upgrade Notes

  • Profiling
    • Upgrades echion which includes performance improvements.

Deprecation Notes

  • Tracing
    • patch_all is deprecated. As an alternative to patch_all, you can use import ddtrace.auto along with DD_PATCH_MODULES if specific module patching is necessary.

New Features

  • Dynamic Instrumentation

    • Adds support for the Decimal type from the Python standard library.
  • LLM Observability

    • Introduces a integration tag to LLM Observability spans that are generated by an integration.
    • agentless_enabled and DD_LLMOBS_AGENTLESS_ENABLED now defaults to None, and will be determined automatically based on the presence of a compatible Datadog agent. agentless_enabled and DD_LLMOBS_AGENTLESS_ENABLED can still be set explicitly to True or False</span>, but is now optional for agentless users.
  • Profiling

    • Stack v2 supports CPython 3.13.
    • Adds support for native exporter on Windows.
    • Enables profiling native modules for macOS x86_64.
  • Tracing

    • Adds configuration for encoding span events as a top-level field in v0.4 payloads and introduces environment variable DD_TRACE_NATIVE_SPAN_EVENTS (disabled by default). This requires agent version 7.63.0 or later.
    • Extracts the referrer hostname from HTTP requests and stored it as http.referrer_hostname tag.

Bug Fixes

  • Fixes an issue with gevent support and the typing module on CPython >= 3.12.

  • ASM

    • Fixes a NotImplementedError that occurred when trying to deepcopy wrapped builtin functions (like open) while ASM or IAST were enabled. The error was caused by the wrapper not implementing the __deepcopy__ method.
    • SCA: Resolves an issue where some dependencies where reported with an inaccurate name.
  • CI Visibility

    • Resolves an issue where JUnit XML output would not count tests retried by Early Flake Detection, Auto Test Retries, and Attempt-to-Fix.
  • Lib-Injection

    • Avoids zombie process from telemetry sender on startup.
  • LLM Observability

    • Resolves an issue where large spans traced within a short time interval were dropped despite being under the 1 MB limit.
    • Resolves an issue with anthropic LLM spans where multiple system prompts caused missing input messages.
    • Resolves an issue where traces containing intermixed APM and LLM Observability spans caused incorrect parent IDs for LLM Observability spans.
    • Fixes an issue where LLMObs could not be enabled in a forked process when setting agentless_enabled=True or DD_LLMOBS_AGENTLESS_ENABLED=true.
    • openai: Avoids creating spans for streamed Open AI chat and completion requests that use with_raw_response since the stream cannot be traced in these cases, leading to unfinished spans.
  • Profiling

    • Resolves an issue where the Lock profiler would throw an AttributeError: '_ProfiledThreadingLock' object has no attribute '_self_acquired_at'.
  • Single-Step Instrumentation

    • Resolves an issue where using Poetry to run an application under a version of Python different from the version used to install Poetry caused automatic library injection to fail.
  • Tracing

    • graphql: Fixes an issue in GraphQL patching that threw an error when locations (an Optional field) is None. This checks for locations before setting attributes.

Other Changes

  • Single-Step Instrumentation
    • Ensures that the SSI is not used for uWSGI applications. For enablement instructions, refer to the following our advanced_usage docs.

3.3.1

03 Apr 18:50
f213b0f

Choose a tag to compare

Bug Fixes

  • ASM

    • Fixes a NotImplementedError that occurred when trying to deepcopy wrapped builtin functions (like open) while ASM or IAST were enabled. The error was caused by the wrapper not implementing the __deepcopy__ method.
  • CI Visibility

    • Resolves an issue where JUnit XML output would not count tests retried by Early Flake Detection, Auto Test Retries, and Attempt-to-Fix.
  • Lib-Injection

    • Avoids zombie process from telemetry sender on startup.
  • LLM Observability

    • Resolves an issue where large spans traced within a short time interval were dropped despite being under the 1 MB limit.

3.2.2

01 Apr 20:58
24e2f60

Choose a tag to compare

Bug Fixes

  • ASM

    • Fixes a NotImplementedError that occurred when trying to deepcopy wrapped builtin functions (like open) while ASM or IAST were enabled. The error was caused by the wrapper not implementing the __deepcopy__ method.
    • SCA: Resolves an issue where some dependencies where reported with an inaccurate name.
  • CI Visibility

    • Resolves an issue where JUnit XML output would not count tests retried by Early Flake Detection, Auto Test Retries, and Attempt-to-Fix.
  • LLM Observability

    • Resolves issue where Pydantic model objects were encoded as unhelpful default placeholder text.
    • Improves encoding of non-JSON serializable I/O objects by attempting to convert to string before resorting to default placeholder text.
  • Profiling

    • Resolves an issue where the Lock profiler would throw an AttributeError: '_ProfiledThreadingLock' object has no attribute '_self_acquired_at'.
  • Tracing

    • pylibmc: Fixes an issue where using Client(server=[url]) would throw the error __init__() got multiple values for argument 'servers'