NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #610 most downloaded on PyPI
Datadog APM client library
Last release today
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
Vulnerability Management for Code-level (IAST): Ensure that Cookies vulnerabilities report only the cookie name.
pytest and unittest.aiohttp.request spans.bottle.request spans.falcon.request spans.molten.request spans.DD_KAFKA_DISTRIBUTED_TRACING_ENABLED=True for both the consumer and producer service.pytest plugin), enabled by setting the DD_CIVISIBILITY_LOG_LEVEL environment variable (with the same level names as Python logging levels).get_openai_token_cost_for_model import error in langhcain version 0.0.351 or later.ddtrace.context.Context are picklable.job.status span tag.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
Vulnerability Management for Code-level (IAST): Adds Python 3.12 compatibility
<div id="remove-unsupported-pylons">
This removes the pylons integration, which does not support Python 3.
</div>
ASM: dependency telemetry metrics now will only report dependencies actually in use (imported) and will also report new imported modules periodically.
ASM: This introduces Threat Monitoring and Blocking on FastAPI.
- Custom Blocking This does not contain user blocking specific features yet.
tracing: Introduces support for OpenTracing Baggage Items with HTTP Propagation. Enable this support by DD_TRACE_PROPAGATION_HTTP_BAGGAGE_ENABLED=true. The Context._set_baggage_item and Context._get_baggage_item internal methods are provided for manual modifications to the Baggage Items. These API changes are subject to change.
dynamic instrumentation: Add support for more built-in container types, such as defaultdict, frozenset, OrderedDict and Counter.
Vulnerability Management for Code-level (IAST): Adds Python 3.12 compatibility
Optionally lazy loads and disables Instrumentation Telemetry. Users must explicitly set "DD_INSTRUMENTATION_TELEMETRY_ENABLED=false".
tracer: Add support for remotely setting the trace sample rate from the Datadog UI. This functionality is enabled by default when using ddtrace-run and library injection. To enable it when using the library manually, use ddtrace.config.enable_remote_config().
multiprocessing.queue in Lambda, because it is not supported in LambdaTypeError raised by serializing producers and deserializing consumers when the message.key tag is set on spans.ddtrace-run or ddtrace.patch_all() with DD_TRACE_ENABLED=False would break with get, gets, and get_multi operations on pylibmc Clients.context._meta dict caused <span class="title-ref">RuntimeError: dictionary changed size during iteration</span>.AttributeError raised by traced StreamingHttpResponse..format string method.requests.requests spans to include the method and path of the request.Context generated from extracted headers could lack a span_id or trace_id, leading SpanLink encoding errors.DD_TRACE_API_VERSION is set to v0.5 and a BufferFull Exception is raised by the TraceWriter. This fix ensures span fields are not overwritten and reduces the frequency of 4XX errors in the trace 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
Vulnerability Management for Code-level (IAST): Generates cookies vulnerabilities report if IAST is enabled. Before this fix, Cookies vulnerabilities…
pathway.hash tag to spans when DSM is enabled. This allows traces from the instrumented service to show up in the DSM traces tab.tracecontext, the tracer will propagate the tracestate values from other vendors so long as the traceparent trace-id matches the first found trace context, regardless of propagator configuration order. To disable this behavior DD_TRACE_PROPAGATION_EXTRACT_FIRST=true can be set.trace_ids do not match the valid context's, then add a span link to the root span to represent the broken propagation.sys.exit(0) as successful non-error spans.DD_TRACE_SPAN_TRACEBACK_MAX_SIZE environment variable, allowing the maximum size of tracebacks included on spans to be configured.ValueError was raised when using different path drives on Windowssetuptools>=69 due to a change in the license field.TypeError raised when ddtrace log processor is configured with a tupledecode in file.read(n).decode()), resulting in unexpected multiple calls to the expression (file.read(n) in the example).get_info_frame.confluent_kafka's produce method with key=None would cause an exception to be raised.DD_TRACE_LOG_STREAM_HANDLER which defaults to true.Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Vulnerability Management for Code-level (IAST): This fix addresses AST patching issues where custom functions or methods could be replaced by aspects…
wrapt and psutil packages are vendored to help users avoid building these packages if wheels were not available for a given platform. This reverses a change released in v2.0.0.unittestpytest test spansunittest test spanslogbook-docs <ddtrace.contrib.logbook> for more details.loguru-docs <ddtrace.contrib.loguru> for more details.structlog-docs <ddtrace.contrib.structlog> for more details.Transfer-Encoding: chunked header is sent--ddtrace-include-class-name as an optional flag (defaulting to false) to prepend the class name to the test name.ERROR status in the UI if the module was not yet imported.DD_TRACE_API is set to v0.5unittest data not being initialized properlyDD_TRACE_DEBUG was set.confluent_kafka's SerializingProducer and DeserializingConsumer classes were incorrectly patched, causing crashes when these classes are in use with Datadog patching.DD_REDIS_RESOURCE_ONLY_COMMAND=false.DD_TRACE_X_DATADOG_TAGS_MAX_LENGTH had a max limit setting of 512 characters. This change removes that limit but keeps the default at 512.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
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
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
Before upgrading to v2.0.0, we recommend users install ddtrace~=1.20.0 and enable deprecation warnings. All removals to the library interface and envi…
The Datadog APM Python team is happy to announce the release of v2.0.0 of ddtrace. This release drops support for Python 2.7, 3.5, and 3.6. This release adds support for Python 3.12.
<div class="important">
<div class="title">
Important
</div>
If you are on version of Python not supported by v2, we will continue to maintain the ddtrace v1 with bug fixes.
</div>
<div class="note">
<div class="title">
Note
</div>
Before upgrading to v2.0.0, we recommend users install ddtrace~=1.20.0 and enable deprecation warnings. All removals to the library interface and environment variables in v2 were deprecated in the 1.x release line.
</div>
<div class="note">
<div class="title">
Note
</div>
The changes to environment variables apply only to the configuration of the ddtrace library and not the Datadog Agent.
</div>
The default logging configuration functionality of ddtrace has been changed to avoid conflicting with application logging configurations. DD_CALL_BASIC_CONFIG has been removed and the ddtrace logger will log to stdout by default, or a log file as specified using DD_TRACE_LOG_FILE.
Setting the environment variable DD_TRACE_PROPAGATION_STYLE='b3', which previously enabled b3multi now enables b3 single header. b3 single header still works but is deprecated for b3. Simplified: b3 used to enable b3multi, but now enables b3 single header to better align with Opentelemetry's terms.
These environment variables have been removed. In all cases the same functionality is provided by other environment variables and replacements are provided as recommended actions for upgrading.
| Variable | Replacement | Note |
|---|---|---|
DD_GEVENT_PATCH_ALL |
None | 📝<remove-dd-gevent-patch-all> |
DD_AWS_TAG_ALL_PARAMS |
None | 📝<remove-aws-tag-all-params> |
DD_REMOTECONFIG_POLL_SECONDS |
DD_REMOTE_CONFIG_POLL_INTERVAL_SECONDS |
📝<rename-remote-config-poll-seconds> |
DD_CALL_BASIC_CONFIG |
None | 📝<remove-basic-config> |
DD_TRACE_OBFUSCATION_QUERY_STRING_PATERN |
DD_TRACE_OBFUSCATION_QUERY_STRING_REGEXP |
📝<remove-trace-obfuscation-query-string-pattern> |
These methods and module attributes have been removed. Where the same functionality is provided by a different public method or module attribute, a recommended action is provided for upgrading. In a few limited cases, because the interface was no longer used or had been moved to the internal interface, it was removed and so no action is provided for upgrading.
| Module | Method/Attribute | Note |
|---|---|---|
ddtrace.constants |
APPSEC_ENABLED |
📝<remove-appsec-private-constants> |
APPSEC_JSON |
📝<remove-appsec-private-constants> |
|
APPSEC_EVENT_RULE_VERSION |
📝<remove-appsec-private-constants> |
|
APPSEC_EVENT_RULE_ERRORS |
📝<remove-appsec-private-constants> |
|
APPSEC_EVENT_RULE_LOADED |
📝<remove-appsec-private-constants> |
|
APPSEC_EVENT_RULE_ERROR_COUNT |
📝<remove-appsec-private-constants> |
|
APPSEC_WAF_DURATION |
📝<remove-appsec-private-constants> |
|
APPSEC_WAF_DURATION_EXT |
📝<remove-appsec-private-constants> |
|
APPSEC_WAF_TIMEOUTS |
📝<remove-appsec-private-constants> |
|
APPSEC_WAF_VERSION |
📝<remove-appsec-private-constants> |
|
APPSEC_ORIGIN_VALUE |
📝<remove-appsec-private-constants> |
|
APPSEC_BLOCKED |
📝<remove-appsec-private-constants> |
|
IAST_JSON |
📝<remove-appsec-private-constants> |
|
IAST_ENABLED |
📝<remove-appsec-private-constants> |
|
IAST_CONTEXT_KEY |
📝<remove-appsec-private-constants> |
|
ddtrace.contrib.fastapi.patch |
span_modifier |
📝<remove-fastapi-starlette-span-modifier> |
aggregate_resources |
📝<remove-fastapi-starlette-aggregate-resources> |
|
ddtrace.contrib.starlette.patch |
span_modifier |
📝<remove-fastapi-starlette-span-modifier> |
aggregate_resources |
📝<remove-fastapi-starlette-aggregate-resources> |
|
get_resource |
📝<remove-fastapi-starlette-span-modifier> |
|
ddtrace.contrib.grpc.constants |
GRPC_PORT_KEY |
📝<remove-grpc-port-key> |
ddtrace.ext.cassandra |
ROW_COUNT |
📝<remove-cassandra-row-count> |
ddtrace.ext.mongo |
ROWS |
📝<remove-mongo-row-count> |
ddtrace.ext.sql |
ROWS |
📝<remove-sql-row-count> |
ddtrace.filters |
TraceCiVisibilityFilter |
📝<remove-trace-ci-visibility-filter> |
ddtrace.tracer |
DD_LOG_FORMAT |
📝<remove-dd-log-format> |
<div id="remove-dd-gevent-patch-all">
DD_GEVENT_PATCH_ALL is removed. There is no special configuration necessary to make ddtrace work with gevent if using ddtrace-run.
</div>
<div id="remove-aws-tag-all-params">
DD_AWS_TAG_ALL_PARAMS is removed. The boto/botocore/aiobotocore integrations no longer collect all API parameters by default.
</div>
<div id="rename-remote-config-poll-seconds">
DD_REMOTECONFIG_POLL_SECONDS is removed. Use the environment variable DD_REMOTE_CONFIG_POLL_INTERVAL_SECONDS instead.
</div>
<div id="remove-appsec-private-constants">
APPSEC_ENABLED, APPSEC_JSON, APPSEC_EVENT_RULE_VERSION, APPSEC_EVENT_RULE_ERRORS, APPSEC_EVENT_RULE_LOADED, APPSEC_EVENT_RULE_ERROR_COUNT, APPSEC_WAF_DURATION, APPSEC_WAF_DURATION_EXT, APPSEC_WAF_TIMEOUTS, APPSEC_WAF_VERSION, APPSEC_ORIGIN_VALUE, APPSEC_BLOCKED, IAST_JSON, IAST_ENABLED, IAST_CONTEXT_KEY are removed. This should not affect existing code as these deprecated ASM constants were meant for private use only.
</div>
<div id="remove-fastapi-starlette-span-modifier">
ddtrace.contrib.starlette.get_resource, ddtrace.contrib.starlette.span_modifier, and ddtrace.contrib.fastapi.span_modifier are removed. The starlette and fastapi integrations now provide the full route and not just the mounted route for sub-applications.
</div>
<div id="remove-fastapi-starlette-aggregate-resources">
ddtrace.contrib.starlette.config['aggregate_resources'] and ddtrace.contrib.fastapi.config['aggregate_resources'] are removed. The starlette and fastapi integrations no longer have the option to aggregate_resources, as it now occurs by default.
</div>
<div id="remove-grpc-port-key">
ddtrace.contrib.grpc.constants.GRPC_PORT_KEY is removed. Use ddtrace.ext.net.TARGET_PORT instead.
</div>
<div id="remove-cassandra-row-count">
ddtrace.ext.cassandra.ROW_COUNT is removed. Use ddtrace.ext.db.ROWCOUNT instead.
</div>
<div id="remove-mongo-row-count">
ddtrace.ext.mongo.ROW_COUNT is removed. Use ddtrace.ext.db.ROWCOUNT instead.
</div>
<div id="remove-sql-row-count">
ddtrace.ext.sql.ROW_COUNT is removed. Use ddtrace.ext.db.ROWCOUNT instead.
</div>
<div id="remove-trace-ci-visibility-filter">
ddtrace.filters.TraceCiVisibilityFilter is removed.
</div>
<div id="remove-dd-log-format">
ddtrace.tracer.DD_LOG_FORMAT is removed. As an alternative, please follow the log injection formatting as provided in the log injection docs.
</div>
<div id="remove-basic-config">
DD_CALL_BASIC_CONFIG is removed. There is no special configuration necessary to replace DD_CALL_BASIC_CONFIG. The ddtrace logger will log to stdout by default or additionally to a file specified by DD_TRACE_LOG_FILE.
</div>
<div id="remove-trace-obfuscation-query-string-pattern">
DD_TRACE_OBFUSCATION_QUERY_STRING_PATTERN is removed. Use DD_TRACE_OBFUSCATION_QUERY_STRING_REGEXP instead.
</div>
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
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 →