Prelude
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.
Important
If you are on version of Python not supported by v2, we will continue to maintain the ddtrace v1 with bug fixes.
Note
Before upgrading to v2.0.0, we recommend users install ddtrace~=1.18.0
and enable deprecation warnings. All removals to the library interface and environment variables in v2 were deprecated in the 1.x release line.
Note
The changes to environment variables apply only to the configuration of the ddtrace library and not the Datadog Agent.
Upgrading summary
Functionality changes
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'
to enable B3 propagation has been removed. Please use DD_TRACE_PROPAGATION_STYLE='b3multi'
instead.
Removed deprecated environment variables
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 |
---|---|
DD_GEVENT_PATCH_ALL
| None |
DD_AWS_TAG_ALL_PARAMS
| None |
DD_REMOTECONFIG_POLL_SECONDS
| DD_REMOTE_CONFIG_POLL_INTERVAL_SECONDS
|
DD_CALL_BASIC_CONFIG
| None |
DD_TRACE_OBFUSCATION_QUERY_STRING_PATERN
| DD_TRACE_OBFUSCATION_QUERY_STRING_REGEXP
|
Removed deprecated library interfaces
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 |
---|---|
ddtrace.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
| |
ddtrace.contrib.fastapi.patch
| span_modifier
|
aggregate_resources
| |
ddtrace.contrib.starlette.patch
| span_modifier
|
aggregate_resources
| |
get_resource
| |
ddtrace.contrib.grpc.constants
| GRPC_PORT_KEY
|
ddtrace.ext.cassandra
| ROW_COUNT
|
ddtrace.ext.mongo
| ROWS
|
ddtrace.ext.sql
| ROWS
|
ddtrace.filters
| TraceCiVisibilityFilter
|
ddtrace.tracer
| DD_LOG_FORMAT
|
Upgrade Notes
-
DD_GEVENT_PATCH_ALL
is removed. There is no special configuration necessary to make ddtrace work with gevent if using ddtrace-run. -
DD_AWS_TAG_ALL_PARAMS
is removed. The boto/botocore/aiobotocore integrations no longer collect all API parameters by default. -
DD_REMOTECONFIG_POLL_SECONDS
is removed. Use the environment variableDD_REMOTE_CONFIG_POLL_INTERVAL_SECONDS
instead. -
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. -
ddtrace.contrib.starlette.get_resource
,ddtrace.contrib.starlette.span_modifier
, andddtrace.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. -
ddtrace.contrib.starlette.config['aggregate_resources']
andddtrace.contrib.fastapi.config['aggregate_resources']
are removed. The starlette and fastapi integrations no longer have the option toaggregate_resources
, as it now occurs by default. -
ddtrace.contrib.grpc.constants.GRPC_PORT_KEY
is removed. Useddtrace.ext.net.TARGET_PORT
instead. -
ddtrace.ext.cassandra.ROW_COUNT
is removed. Useddtrace.ext.db.ROWCOUNT
instead. -
ddtrace.ext.mongo.ROW_COUNT
is removed. Useddtrace.ext.db.ROWCOUNT
instead. -
ddtrace.ext.sql.ROW_COUNT
is removed. Useddtrace.ext.db.ROWCOUNT
instead. -
ddtrace.filters.TraceCiVisibilityFilter
is removed. -
ddtrace.tracer.DD_LOG_FORMAT
is removed. As an alternative, please follow the log injection formatting as provided in the log injection docs. -
DD_CALL_BASIC_CONFIG
is removed. There is no special configuration necessary to replaceDD_CALL_BASIC_CONFIG
. The ddtrace logger will log to stdout by default or additionally to a file specified byDD_TRACE_LOG_FILE
. -
DD_TRACE_OBFUSCATION_QUERY_STRING_PATTERN
is removed. UseDD_TRACE_OBFUSCATION_QUERY_STRING_REGEXP
instead.
New Features
- Adds support for Python 3.12.
- Vulnerability Management for Code-level (IAST): Weak randomness vulnerability detection.
Bug Fixes
- tracing: Encoding traces in the v05 format has a known issue for applications generating spans at a high frequency, causing approximately 1/10000000 spans to be misencoded. This change sets
DD_TRACE_API_VERSION
tov04
by default.
Known Issues
- aiohttp: Python 3.12 is not supported.
- aiohttp-jinja: Python 3.12 is not supported.
- aiobotocore: Python 3.12 is not supported.
- asm: IAST for Python 3.12 is not supported.
- flask-caching: Python 3.12 is not supported.
- openai/langchain: Python 3.12 is not supported.
- opentelemetry-api: Python 3.12 is not supported.
- opentracing: Python 3.12 is not supported.
- pyramid: Python 3.12 is not supported.
- pynamodb: Python 3.12 is not supported.
- redis/redis-py-cluster: Python 3.12 is not supported.