NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #494 most downloaded on PyPI
Datadog APM client library
Last release 3 days ago
01 Oct 2026
Ships on a steady schedule
a new release about every 2 weeks
Nearly every release is documented
notes for 60 of the last 60 stable releases
5 versions withdrawn
withdrawn after publishing
10 years old
853 releases · first in 2017
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
One column per quarter.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
tracing: Adds support for 128 bit trace ids for b3 and w3c distributing tracing headers.
DD_CIVISIBILITY_AGENTLESS_ENABLED environment variable to configure the CIVisibility service to use an agent-less test reporting CIVisibilityWriter. Note that the CIVisibility service will use regular agent reporting by default.DD_GIT_REPOSITORY_URL, DD_GIT_COMMIT_SHA, or from the python package specified in the DD_MAIN_PACKAGE. This feature can be disabled by setting DD_TRACE_GIT_METADATA_ENABLED=False.docs <ddtrace.opentelemetry> for more details.DD_TRACE_128_BIT_TRACEID_GENERATION_ENABLED=Falseddtrace.patch_all(), or ddtrace.patch(aws_lambda=True), is set on user handler.pip install. This solves issues like containers blocking network requests, installation overhead during application startup, permissions issues with the install.Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
ASM: Several deprecated ASM constants that were added to the public API will be removed. This should not affect existing code as they were meant for p…
DD_TRACE_128_BIT_TRACEID_GENERATION_ENABLED=True. Support for B3 and W3C distributed tracing headers will be added in a future change.celery.beat scheduling service to the celery integration.confluent-kafka>=1.7. See the confluent-kafka<https://ddtrace.readthedocs.io/en/stable/integrations.html#kafka> documentation for more information.env span tag had been set caused sample rate data from the Datadog Agent to be ignored.track_custom_event() also set appsec.events.<custom_event>.track which was missing.http.route was only set if use_handler_resource_format and use_legacy_resource_format were set to False.RecursionError which is raised when aws lambda signal handlers are wrapped infinitely. This caused lambdas to crash on startup.Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
dbapi: ddtrace.ext.mongo.ROWS is deprecated. Use ddtrace.ext.db.ROWCOUNT instead.
Application Security Management (ASM) has added Django support for blocking malicious users using one click within Datadog.
<div class="note">
<div class="title">
Note
</div>
One click blocking for ASM is currently in beta.
</div>
ddtrace.ext.mongo.ROWS is deprecated. Use ddtrace.ext.db.ROWCOUNT instead.starlette.request spans.fastapi.request spans.server.request.path_params. The request will be correctly blocked but the client application will be receiving and processing the suspicious request. Possible workaround: use server.request.uri.raw instead, if you want the request to be blocked before entering the flask application.dbapi: The dbapi integration no longer assumes that a cursor object will have a rowcount as not all database drivers implement rowcount.
dbm: Support sql queries with the type byte.
elasticsearch: Omit large elasticsearch.body tag values that are
greater than 25000 characters to prevent traces from being too large to send.
aws_lambda: This fix resolves an issue where existing signals were wrapped multiple times.
profiling: Handles a race condition on process shutdown that would cause an error about a module not being started to occasionally appear in the logs.
Fix for KeyError exceptions when when <span class="title-ref">ASM_FEATURES</span> (1-click activation) disabled all ASM products. This could cause 1-click activation to work incorrectly in some cases.
ASM: Solve some corner cases where a Flask blocking request would fail because headers would be already sent.
ASM: Solve the content-type not always being correct in blocking responses.
ASM: Ensure the blocking responses have the following tags: <span class="title-ref">http.url</span>, <span class="title-ref">http.query_string</span>, <span class="title-ref">http.useragent</span>, <span class="title-ref">http.method</span>, <span class="title-ref">http.response.headers.content-type</span> and <span class="title-ref">http.response.headers.content-length</span>.
ASM: fix memory leaks and memory corruption in the interface between ASM and the WAF library
psycopg2: Fixes a bug with DSN parsing integration.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
gevent: DD_GEVENT_PATCH_ALL is deprecated and will be removed in the next major version. Gevent compatibility is now automatic and does not require ex…
DD_GEVENT_PATCH_ALL is deprecated and will be removed in the next major version. Gevent compatibility is now automatic and does not require extra configuration when running with ddtrace-run. If not using ddtrace-run, please import ddtrace.auto before calling gevent.monkey.patch_all().grpc: Deprecates ddtrace.contrib.grpc.constants.GRPC_PORT_KEY. Use ddtrace.ext.net.TARGET_PORT instead.
Application Security Management (ASM) has added Django support for blocking malicious IPs using one click within Datadog.
<div class="note">
<div class="title">
Note
</div>
One click blocking for ASM is currently in beta.
</div>
Application Security Management (ASM) has added Flask support for blocking malicious IPs using one click within Datadog.
<div class="note">
<div class="title">
Note
</div>
One click blocking for ASM is currently in beta.
</div>
ddtrace.contrib.grpc.constants.GRPC_PORT_KEY. Use ddtrace.ext.net.TARGET_PORT instead.ddtrace.ext.sql.ROWS is deprecated. Use ddtrace.ext.db.ROWCOUNT instead.ddtrace.ext.cassandra.ROW_COUNT is deprecated. Use ddtrace.ext.db.ROWCOUNT instead.Enable traces to be sent before an impending timeout for datadog_lambda>=4.66.0. Use DD_APM_FLUSH_DEADLINE to override the default flush deadline. The default is the AWS Lambda function configured timeout limit.
debugger: Add dynamic log probes to that generate a log message and optionally capture local variables, return value and exceptions
tracing: Add support for enabling collecting of HTTP request client IP addresses as the http.client_ip span tag. You can set the DD_TRACE_CLIENT_IP_ENABLED environment variable to true to enable. This feature is disabled by default.
ASM: add support for one click blocking of IPs with the Django framework using Remote Configuration Management.
ASM: add support for one click blocking of IPs with the Flask framework using Remote Configuration Management.
ASM: also fetch loopback IPs if client IP fetching is enabled (either via ASM or DD_TRACE_CLIENT_IP_ENABLED).
ASM: Enable ability to remotely activate and configure ASM features. To enable, check the Python Security page in your account. Note that this is a beta feature.
profiling: Collects endpoint invocation counts.
dynamic instrumentation: Python 3.11 is now supported.
graphene: Adds support for Python 3.11.
graphql: Adds support for Python 3.11.
httpx: Add support for httpx<0.14.0,>=0.9.0.
tracer/span: Add Span.finish_with_ancestors method to enable the abrupt
finishing of a trace in cases where the trace or application must be immediately terminated.
DD_REMOTE_CONFIGURATION_ENABLED=false. Note, this will disable one click activation for ASM.fastapi: Previously, custom fastapi middlewares configured after application startup were not traced. This fix ensures that all fastapi middlewares are captured in the <span class="title-ref">fastapi.request</span> span.
tracing: Pads trace_id and span_ids in b3 headers to have a minimum length of 16.
Fix full stacktrace being sent to the log on remote config connection errors.
httpx: Only patch httpx.AsyncClient for httpx>=0.11.0.
tracing: This fix resolves an issue with the encoding of traces when using the v0.5 API version with the Python optimization option flag -O or the PYTHONOPTIMIZE environment variable.
pylons: This fix resolves an issue where str.decode could cause critical unicode decode errors when ASM is enabled. ASM is disabled by default.
gevent: This fix resolves incompatibility under 3.8>=Python<=3.10 between ddtrace-run and applications that depend on gevent, for example gunicorn servers. It accomplishes this by keeping copies that have not been monkey patched by gevent of most modules used by ddtrace. This "module cloning" logic can be controlled by the environment variable DD_UNLOAD_MODULES_FROM_SITECUSTOMIZE. Valid values for this variable are "1", "0", and "auto". "1" tells ddtrace to run its module cloning logic unconditionally, "0" tells it never to run that logic, and "auto" tells it to run module cloning logic only if gevent is accessible from the application's runtime. The default value is "0".
lib-injection: Use package versions published to PyPI to install the library. Formerly the published image was installing the package from source using the tagged commit SHA which resulted in slow and potentially failing installs.
profiler: Handles potential AttributeErrors which would arise while collecting frames during stack unwinding in Python 3.11.
remote config: ensure proper validation of responses from the agent.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
DD_REMOTECONFIG_POLL_SECONDS environment variable is deprecated and will be removed in v2.0. Please use DD_REMOTE_CONFIG_POLL_INTERVAL_SECONDS instead…
v2.4 backend API for profile uploads, using a new request format.DD_REMOTECONFIG_POLL_SECONDS environment variable is deprecated and will be removed in v2.0. Please use DD_REMOTE_CONFIG_POLL_INTERVAL_SECONDS instead.CI Visibility: Add support for CI provider buddy.works
The component tag has been added for all auto-instrumented spans. The value of the component tag is equal to the name of the integration that produced the span.
tracing: Adds support for IPv6 agent hostnames for <span class="title-ref">DD_AGENT_HOST</span>.
elasticsearch: Update elasticsearch integration to add support for opensearch-py. See the elasticsearch documentation for more information.
ASM: one click activation enabled by default using Remote Configuration Management (RCM). Set DD_REMOTE_CONFIGURATION_ENABLED=false to disable this feature.
ASM: New Application Security Events Tracking API, starting with the functions track_user_login_success_event and
track_user_login_failure_event for tracking user logins (it will also internally call set_user) and track_custom_event for any custom events. You can find these functions in the ddtrace.appsec.trace_utils module. Calling these functions will create new tags under the appsec.events namespace (appsec.events.user.login for logins) allowing you to track these events with Datadog. In the future this will be used to provide protection against account takeover attacks (ATO). Public documentation will be online soon.
celery: Enhances context tags containing dictionaries so that their contents are sent as individual tags (issue #4771).
tornado: Support custom error codes: https://ddtrace.readthedocs.io/en/stable/advanced_usage.html#custom-error-codes.
CI Visibility: Support reliably linking tests to the pipeline that executed them.
DD_PROFILING_ENABLE_CODE_PROVENANCE is set to true.pip install ddtrace runs under pip versions <18.http.url tag.platform.libc_ver() on an unsupported system.@ is not present in network location but other part of the url.Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
propagation: Configuration of propagation style with DD_TRACE_PROPAGATION_STYLE=b3 is deprecated and will be removed in version 2.0.0. Please use the…
Initial library support has been added for Python 3.11.
<div class="note">
<div class="title">
Note
</div>
Continuous Profiler and Dynamic Instrumentation are not yet compatible and must be disabled in order to use the library with Python 3.11. Support for them will be added in a future release. To track the status, see the Support Python 3.11 issue on GitHub.
</div>
DD_TRACE_PROPAGATION_STYLE=tracecontext,datadog. To only support Datadog propagation and retain the existing default behavior, set DD_TRACE_PROPAGATION_STYLE=datadog.DD_TRACE_PROPAGATION_STYLE_EXTRACT are now evaluated in order to specification. To keep the previous fixed evaluation order, set: DD_TRACE_PROPAGATION_STYLE_EXTRACT=datadog,b3,b3 single header.v0.5 for non-Windows systems. The v0.5 trace API version generates smaller payloads, thus increasing the throughput to the Datadog agent especially with larger traces.v0.5 trace API version on Windows machines will raise a RuntimeError due to known compatibility issues. Please see https://github.com/DataDog/dd-trace-py/issues/4829 for more details.DD_TRACE_PROPAGATION_STYLE=b3 is deprecated and will be removed in version 2.0.0. Please use the newly added DD_TRACE_PROPAGATION_STYLE=b3multi instead.DD_AWS_TAG_ALL_PARAMS=1. The deprecated behavior and environment variable will be removed in v2.0.0.DD_DJANGO_INCLUDE_USER_NAME option to toggle whether the integration sets the django.user.name tag.DD_TRACE_PROPAGATION_STYLE to configure both injection and extraction propagation styles. The configured styles can be overridden with environment variables DD_TRACE_PROPAGATION_STYLE_INJECT and DD_TRACE_PROPAGATION_STYLE_EXTRACT.none as a supported propagator for trace context extraction and injection. When none is the only propagator listed, the corresponding trace context operation is disabled. If there are other propagators in the inject or extract list, the none propagator has no effect. For example DD_TRACE_PROPAGATION_STYLE=nonetraceparent and tracestate HTTP headers are enabled by default for all incoming and outgoing HTTP request headers. The Datadog propagation style continue to be enabled by default.flask.application and flask.response will be generated.attrs and contextlib2 version constraints for Python 2.7.DD_AWS_TAG_NO_PARAMS=1. To retain the deprecated behavior and collect all API parameters, set the environment variable DD_AWS_TAG_ALL_PARAMS=1.ddtrace.context.Context serializable which fixes distributed tracing across processes.SynchronousOnlyOperation when failing to retrieve user information.forbiddenfruit as dependency and rollback wrapt changes where forbiddenfruit was called. IAST: Patch builtins only when IAST is enabled.httpx==0.23.1 when the URL.raw property is not available.forbiddenfruit package has conflicts with some libraries such as asynctest. This conflict raises AttributeError exception. See issue #4484.DD_SERVICE_MAPPING mapped service names were not used when updating span metadata with the DD_VERSION set version string.BaseException raised in a WSGI application caused spans to not be submitted.ddtrace would always be installed, regardless of the image version.flask._app_ctx_stack and flask._request_ctx_stack.DD_TRACE_PROPAGATION_STYLE_EXTRACT now respects the configured styles evaluation order. The evaluation order had previously been fixed and so the configured order was ignored.stderr instead of to a logger.ddtrace.constants.PID has been changed from system.pid to process_id. All spans will now use the metric tag of process_id instead.Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →