Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
b157a98
move propagation constants to propagation module
emmettbutler Jul 9, 2026
eae2e0f
move constants referencing trace tags to _trace
emmettbutler Jul 9, 2026
e4c38aa
private all propagation constants
emmettbutler Jul 9, 2026
526be5b
fix pyx import
emmettbutler Jul 9, 2026
d090be9
fmt
emmettbutler Jul 9, 2026
71f21ef
fix local imports
emmettbutler Jul 10, 2026
e6e7726
relative import might be necessary
emmettbutler Jul 10, 2026
e3ca575
fix wrong import
emmettbutler Jul 10, 2026
efe7d1c
try importing from a known-working file
emmettbutler Jul 10, 2026
9837963
update import in ddup
emmettbutler Jul 10, 2026
a625ebc
missed local import
emmettbutler Jul 10, 2026
a3dfdfc
move MESSAGING_* to _trace, their only dependent
emmettbutler Jul 10, 2026
60c7308
move a bunch of constants from internal to either internal/utils, _tr…
emmettbutler Jul 10, 2026
3fb2ebd
move constants, many to new files belonging to smaller modules
emmettbutler Jul 10, 2026
14b702f
update imports of DEFAULT_SERVICE_NAME
emmettbutler Jul 10, 2026
cb7a846
update imports for constant moves
emmettbutler Jul 10, 2026
eb4f64b
update imports for constant moves
emmettbutler Jul 10, 2026
1d3fc19
update imports for constant moves
emmettbutler Jul 10, 2026
75892c5
fmt
emmettbutler Jul 10, 2026
b1d0eaf
fix imports
emmettbutler Jul 10, 2026
b1d7f04
kafka imports
emmettbutler Jul 10, 2026
96a9c17
more import updates
emmettbutler Jul 11, 2026
c423a5c
Merge branch 'main' into emmett.butler/move-internal-constants
emmettbutler Jul 11, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions ddtrace/_trace/constants.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
HIGHER_ORDER_TRACE_ID_BITS = "_dd.p.tid"
SAMPLING_DECISION_TRACE_TAG_KEY = "_dd.p.dm"
LAST_DD_PARENT_ID_KEY = "_dd.parent_id"
SAMPLING_DECISION_MAKER_INHERITED = "_dd.dm.inherited"
SAMPLING_DECISION_MAKER_SERVICE = "_dd.dm.service"
SAMPLING_DECISION_MAKER_RESOURCE = "_dd.dm.resource"
SPAN_LINK_KIND = "dd.kind"
SPAN_LINKS_KEY = "_dd.span_links"
PROCESS_TAGS = "_dd.tags.process"
PROPAGATED_HASH = "_dd.propagated_hash"
_SERVICE_SOURCE = "_dd.svc_src"
SPAN_EVENTS_HAS_EXCEPTION = "_dd.span_events.has_exception"

MESSAGING_BATCH_COUNT = "messaging.batch_count"
MESSAGING_DESTINATION_NAME = "messaging.destination.name"
MESSAGING_MESSAGE_ID = "messaging.message_id"
MESSAGING_OPERATION = "messaging.operation"
MESSAGING_SYSTEM = "messaging.system"
10 changes: 5 additions & 5 deletions ddtrace/_trace/context.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,12 @@
from ddtrace.constants import _SAMPLING_PRIORITY_KEY
from ddtrace.constants import _USER_ID_KEY
from ddtrace.internal.compat import NumericType
from ddtrace.internal.constants import MAX_UINT_64BITS as _MAX_UINT_64BITS
from ddtrace.internal.constants import W3C_TRACEPARENT_KEY
from ddtrace.internal.constants import W3C_TRACESTATE_KEY
from ddtrace.internal.logger import get_logger
from ddtrace.internal.threads import RLock
from ddtrace.internal.utils.constants import MAX_UINT_64BITS as _MAX_UINT_64BITS
from ddtrace.internal.utils.http import w3c_get_dd_list_member as _w3c_get_dd_list_member
from ddtrace.propagation._constants import _W3C_TRACEPARENT_KEY
from ddtrace.propagation._constants import _W3C_TRACESTATE_KEY


_ContextState = tuple[
Expand Down Expand Up @@ -141,7 +141,7 @@ def sampling_priority(self, value: Optional[NumericType]) -> None:

@property
def _traceparent(self) -> str:
tp = self._meta.get(W3C_TRACEPARENT_KEY)
tp = self._meta.get(_W3C_TRACEPARENT_KEY)
if self.span_id is None or self.trace_id is None:
# if we only have a traceparent then we'll forward it
# if we don't have a span id or trace id value we can't build a valid traceparent
Expand All @@ -165,7 +165,7 @@ def _tracestate(self) -> str:
dd_list_member = _w3c_get_dd_list_member(self)

# if there's a preexisting tracestate we need to update it to preserve other vendor data
ts = self._meta.get(W3C_TRACESTATE_KEY, "")
ts = self._meta.get(_W3C_TRACESTATE_KEY, "")
if ts and dd_list_member:
# cut out the original dd list member from tracestate so we can replace it with the new one we created
ts_w_out_dd = re.sub("dd=(.+?)(?:,|$)", "", ts)
Expand Down
12 changes: 6 additions & 6 deletions ddtrace/_trace/processor/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,10 @@
from threading import RLock
from typing import Optional

from ddtrace._trace.constants import HIGHER_ORDER_TRACE_ID_BITS
from ddtrace._trace.constants import LAST_DD_PARENT_ID_KEY
from ddtrace._trace.constants import PROCESS_TAGS
from ddtrace._trace.constants import SAMPLING_DECISION_TRACE_TAG_KEY
from ddtrace._trace.sampler import DatadogSampler
from ddtrace._trace.span import Span
from ddtrace._trace.span import _get_64_highest_order_bits_as_hex
Expand All @@ -14,12 +18,6 @@
from ddtrace.internal import process_tags
from ddtrace.internal import telemetry
from ddtrace.internal.constants import COMPONENT
from ddtrace.internal.constants import HIGHER_ORDER_TRACE_ID_BITS
from ddtrace.internal.constants import LAST_DD_PARENT_ID_KEY
from ddtrace.internal.constants import MAX_UINT_64BITS
from ddtrace.internal.constants import PROCESS_TAGS
from ddtrace.internal.constants import SAMPLING_DECISION_TRACE_TAG_KEY
from ddtrace.internal.constants import SamplingMechanism
from ddtrace.internal.logger import get_logger
from ddtrace.internal.rate_limiter import RateLimiter
from ddtrace.internal.sampling import SpanSamplingRule
Expand All @@ -28,6 +26,8 @@
from ddtrace.internal.settings._config import config
from ddtrace.internal.settings.asm import config as asm_config
from ddtrace.internal.telemetry.constants import TELEMETRY_NAMESPACE
from ddtrace.internal.utils.constants import MAX_UINT_64BITS
from ddtrace.internal.utils.constants import SamplingMechanism
from ddtrace.internal.writer import AgentlessTraceWriter
from ddtrace.internal.writer import AgentResponse
from ddtrace.internal.writer import LogWriter
Expand Down
4 changes: 2 additions & 2 deletions ddtrace/_trace/sampler.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,14 @@
from ddtrace.internal.settings._config import config

from ..constants import ENV_KEY
from ..internal.constants import MAX_UINT_64BITS
from ..internal.constants import SAMPLING_HASH_MODULO
from ..internal.constants import SAMPLING_KNUTH_FACTOR
from ..internal.constants import SamplingMechanism
from ..internal.logger import get_logger
from ..internal.rate_limiter import RateLimiter
from ..internal.sampling import _get_highest_precedence_rule_matching
from ..internal.sampling import _set_sampling_tags
from ..internal.utils.constants import MAX_UINT_64BITS
from ..internal.utils.constants import SamplingMechanism
from .sampling_rule import SamplingRule


Expand Down
2 changes: 1 addition & 1 deletion ddtrace/_trace/sampling_rule.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@
from typing import Optional

from ddtrace._trace.span import Span
from ddtrace.internal.constants import MAX_UINT_64BITS
from ddtrace.internal.constants import SAMPLING_HASH_MODULO
from ddtrace.internal.constants import SAMPLING_KNUTH_FACTOR
from ddtrace.internal.glob_matching import GlobMatcher
from ddtrace.internal.logger import get_logger
from ddtrace.internal.utils.cache import cachedmethod
from ddtrace.internal.utils.constants import MAX_UINT_64BITS


log = get_logger(__name__)
Expand Down
14 changes: 7 additions & 7 deletions ddtrace/_trace/span.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
from ddtrace._trace._limits import MAX_SPAN_META_VALUE_LEN
from ddtrace._trace._span_link import SpanLink
from ddtrace._trace._span_pointer import _SpanPointerDirection
from ddtrace._trace.constants import SAMPLING_DECISION_TRACE_TAG_KEY
from ddtrace._trace.context import Context
from ddtrace._trace.types import _AttributeValueType
from ddtrace.constants import _SAMPLING_AGENT_DECISION
Expand All @@ -33,16 +34,15 @@
from ddtrace.ext import net
from ddtrace.internal import core
from ddtrace.internal.compat import NumericType
from ddtrace.internal.constants import MAX_INT_64BITS as _MAX_INT_64BITS
from ddtrace.internal.constants import MAX_UINT_64BITS as _MAX_UINT_64BITS
from ddtrace.internal.constants import MIN_INT_64BITS as _MIN_INT_64BITS
from ddtrace.internal.constants import SAMPLING_DECISION_TRACE_TAG_KEY
from ddtrace.internal.constants import SPAN_API_DATADOG
from ddtrace.internal.constants import SamplingMechanism
from ddtrace.internal.logger import get_logger
from ddtrace.internal.native._native import SpanData
from ddtrace.internal.settings._config import config
from ddtrace.internal.utils.constants import MAX_INT_64BITS as _MAX_INT_64BITS
from ddtrace.internal.utils.constants import MAX_UINT_64BITS as _MAX_UINT_64BITS
from ddtrace.internal.utils.constants import MIN_INT_64BITS as _MIN_INT_64BITS
from ddtrace.internal.utils.constants import SamplingMechanism
from ddtrace.internal.utils.time import Time
from ddtrace.propagation._constants import _SPAN_API_DATADOG


log = get_logger(__name__)
Expand Down Expand Up @@ -85,7 +85,7 @@ def __init__(
start: Optional[int] = None,
context: Optional[Context] = None,
on_finish: Optional[list[Callable[["Span"], None]]] = None,
span_api: str = SPAN_API_DATADOG,
span_api: str = _SPAN_API_DATADOG,
links: Optional[list[SpanLink]] = None,
) -> None:
"""
Expand Down
24 changes: 12 additions & 12 deletions ddtrace/_trace/trace_handlers.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,12 @@
from ddtrace._trace._span_pointer import _SpanPointerDescription
from ddtrace._trace._span_pointer import _SpanPointerDirection
from ddtrace._trace._span_pointer import _SpanPointerDirectionName
from ddtrace._trace.constants import MESSAGING_BATCH_COUNT
from ddtrace._trace.constants import MESSAGING_DESTINATION_NAME
from ddtrace._trace.constants import MESSAGING_MESSAGE_ID
from ddtrace._trace.constants import MESSAGING_OPERATION
from ddtrace._trace.constants import MESSAGING_SYSTEM
from ddtrace._trace.constants import SPAN_LINK_KIND
from ddtrace._trace.span import Span
from ddtrace._trace.utils import extract_DD_context_from_messages
from ddtrace.constants import _HOSTNAME_KEY
Expand Down Expand Up @@ -67,21 +73,15 @@
from ddtrace.internal.compat import is_valid_ip
from ddtrace.internal.compat import maybe_stringify
from ddtrace.internal.constants import COMPONENT
from ddtrace.internal.constants import FLASK_ENDPOINT
from ddtrace.internal.constants import FLASK_RESOURCE_FULL
from ddtrace.internal.constants import FLASK_URL_RULE
from ddtrace.internal.constants import FLASK_VIEW_ARGS
from ddtrace.internal.constants import HTTP_REQUEST_UPGRADED
from ddtrace.internal.constants import MESSAGING_BATCH_COUNT
from ddtrace.internal.constants import MESSAGING_DESTINATION_NAME
from ddtrace.internal.constants import MESSAGING_MESSAGE_ID
from ddtrace.internal.constants import MESSAGING_OPERATION
from ddtrace.internal.constants import MESSAGING_SYSTEM
from ddtrace.internal.constants import SPAN_LINK_KIND
from ddtrace.internal.hostname import get_hostname
from ddtrace.internal.logger import get_logger
from ddtrace.internal.sampling import _inherit_sampling_tags
from ddtrace.internal.schema.span_attribute_schema import SpanDirection
from ddtrace.internal.utils.constants import FLASK_ENDPOINT
from ddtrace.internal.utils.constants import FLASK_RESOURCE_FULL
from ddtrace.internal.utils.constants import FLASK_URL_RULE
from ddtrace.internal.utils.constants import FLASK_VIEW_ARGS
from ddtrace.propagation._constants import _HTTP_REQUEST_UPGRADED
from ddtrace.propagation.http import HTTPPropagator
from ddtrace.propagation.http import _extract_header_value
from ddtrace.trace import tracer
Expand Down Expand Up @@ -1355,7 +1355,7 @@ def _on_asgi_request(ctx: core.ExecutionContext) -> None:
scope["datadog"]["request_spans"].append(span)

if scope["type"] == "websocket":
span._set_attribute(HTTP_REQUEST_UPGRADED, SpanTypes.WEBSOCKET)
span._set_attribute(_HTTP_REQUEST_UPGRADED, SpanTypes.WEBSOCKET)
_init_websocket_message_counters(scope)


Expand Down
26 changes: 13 additions & 13 deletions ddtrace/_trace/tracer.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@
from typing import Union
from typing import cast

from ddtrace._trace.constants import _SERVICE_SOURCE
from ddtrace._trace.constants import SAMPLING_DECISION_TRACE_TAG_KEY
from ddtrace._trace.context import Context
from ddtrace._trace.processor import SpanAggregator
from ddtrace._trace.processor import SpanProcessor
Expand All @@ -35,16 +37,6 @@
from ddtrace.internal import debug
from ddtrace.internal import forksafe
from ddtrace.internal import hostname
from ddtrace.internal.constants import _SERVICE_SOURCE
from ddtrace.internal.constants import LOG_ATTR_ENV
from ddtrace.internal.constants import LOG_ATTR_SERVICE
from ddtrace.internal.constants import LOG_ATTR_SPAN_ID
from ddtrace.internal.constants import LOG_ATTR_TRACE_ID
from ddtrace.internal.constants import LOG_ATTR_VALUE_EMPTY
from ddtrace.internal.constants import LOG_ATTR_VALUE_ZERO
from ddtrace.internal.constants import LOG_ATTR_VERSION
from ddtrace.internal.constants import SAMPLING_DECISION_TRACE_TAG_KEY
from ddtrace.internal.constants import SPAN_API_DATADOG
from ddtrace.internal.hostname import get_hostname
from ddtrace.internal.logger import get_logger
from ddtrace.internal.native import PyTracerMetadata
Expand All @@ -57,10 +49,18 @@
from ddtrace.internal.settings.asm import config as asm_config
from ddtrace.internal.settings.peer_service import _ps_config
from ddtrace.internal.utils import _get_metas_to_propagate
from ddtrace.internal.utils.constants import LOG_ATTR_ENV
from ddtrace.internal.utils.constants import LOG_ATTR_SERVICE
from ddtrace.internal.utils.constants import LOG_ATTR_SPAN_ID
from ddtrace.internal.utils.constants import LOG_ATTR_TRACE_ID
from ddtrace.internal.utils.constants import LOG_ATTR_VALUE_EMPTY
from ddtrace.internal.utils.constants import LOG_ATTR_VALUE_ZERO
from ddtrace.internal.utils.constants import LOG_ATTR_VERSION
from ddtrace.internal.utils.deprecations import DDTraceDeprecationWarning
from ddtrace.internal.utils.formats import format_trace_id
from ddtrace.internal.writer import AgentWriterInterface
from ddtrace.internal.writer import HTTPWriter
from ddtrace.propagation._constants import _SPAN_API_DATADOG
from ddtrace.vendor.debtcollector import deprecate
from ddtrace.version import __version__

Expand Down Expand Up @@ -442,7 +442,7 @@ def start_span(
resource: Optional[str] = None,
span_type: Optional[str] = None,
activate: bool = False,
span_api: str = SPAN_API_DATADOG,
span_api: str = _SPAN_API_DATADOG,
) -> Span:
"""Return a span that represents an operation called ``name``.

Expand Down Expand Up @@ -622,7 +622,7 @@ def _start_span_after_shutdown(
resource: Optional[str] = None,
span_type: Optional[str] = None,
activate: bool = False,
span_api: str = SPAN_API_DATADOG,
span_api: str = _SPAN_API_DATADOG,
) -> Span:
span = self._start_span(name, child_of, service, resource, span_type, activate, span_api)
log.warning(
Expand Down Expand Up @@ -666,7 +666,7 @@ def trace(
service: Optional[str] = None,
resource: Optional[str] = None,
span_type: Optional[str] = None,
span_api: str = SPAN_API_DATADOG,
span_api: str = _SPAN_API_DATADOG,
) -> Span:
"""Activate and return a new span that inherits from the current active span.

Expand Down
9 changes: 5 additions & 4 deletions ddtrace/appsec/_constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,8 @@
from typing import Iterator
from typing import Literal # noqa:F401

from ddtrace.internal.constants import HTTP_REQUEST_BLOCKED
from ddtrace.internal.constants import REQUEST_PATH_PARAMS
from ddtrace.internal.constants import RESPONSE_HEADERS
from ddtrace.internal.constants import STATUS_403_TYPE_AUTO
from ddtrace.internal.utils.constants import HTTP_REQUEST_BLOCKED
from ddtrace.internal.utils.constants import STATUS_403_TYPE_AUTO


TEXT_TYPES = (str, bytes, bytearray)
Expand Down Expand Up @@ -151,6 +149,9 @@ class APPSEC(metaclass=Constant_Class):
TELEMETRY_MANDATORY_VERBOSITY = 30
TELEMETRY_OFF_VERBOSITY = 40

RESPONSE_HEADERS = "http.response.headers"
REQUEST_PATH_PARAMS = "http.request.path_params"


class IAST(metaclass=Constant_Class):
"""Specific constants for IAST"""
Expand Down
2 changes: 1 addition & 1 deletion ddtrace/appsec/_contrib/fastapi/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,12 @@
from ddtrace.appsec._asm_request_context import _set_headers_and_response
from ddtrace.appsec._asm_request_context import get_blocked
from ddtrace.appsec._asm_request_context import iast_disabled_taint_sources
from ddtrace.appsec._constants import RESPONSE_HEADERS
from ddtrace.appsec._utils import Block_config
from ddtrace.contrib.internal.trace_utils_base import _get_request_header_user_agent
from ddtrace.contrib.internal.trace_utils_base import _set_url_tag
from ddtrace.ext import http
from ddtrace.internal import core
from ddtrace.internal.constants import RESPONSE_HEADERS
from ddtrace.internal.core import ExecutionContext
from ddtrace.internal.logger import get_logger
from ddtrace.internal.settings.asm import config as asm_config
Expand Down
4 changes: 2 additions & 2 deletions ddtrace/appsec/_contrib/flask/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,14 @@
from ddtrace.appsec._asm_request_context import is_blocked
from ddtrace.appsec._asm_request_context import set_block_request_callable
from ddtrace.appsec._asm_request_context import set_waf_address
from ddtrace.appsec._constants import REQUEST_PATH_PARAMS
from ddtrace.appsec._constants import RESPONSE_HEADERS
from ddtrace.appsec._utils import Block_config
from ddtrace.contrib import trace_utils
from ddtrace.contrib.internal.trace_utils_base import _get_request_header_user_agent
from ddtrace.contrib.internal.trace_utils_base import _set_url_tag
from ddtrace.ext import http
from ddtrace.internal import core
from ddtrace.internal.constants import REQUEST_PATH_PARAMS
from ddtrace.internal.constants import RESPONSE_HEADERS
from ddtrace.internal.core import ExecutionContext
from ddtrace.internal.logger import get_logger
from ddtrace.internal.settings.asm import config as asm_config
Expand Down
2 changes: 1 addition & 1 deletion ddtrace/appsec/_handlers.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,9 @@
from ddtrace.appsec._constants import SPAN_DATA_NAMES
from ddtrace.internal import core
from ddtrace.internal import telemetry
from ddtrace.internal.constants import FLASK_RESOURCE_FULL
from ddtrace.internal.logger import get_logger
from ddtrace.internal.settings.asm import config as asm_config
from ddtrace.internal.utils.constants import FLASK_RESOURCE_FULL


logger = get_logger(__name__)
Expand Down
8 changes: 4 additions & 4 deletions ddtrace/appsec/_trace_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,8 @@ def _maybe_hash(value: Optional[str], mode: str) -> Optional[str]:


def _asm_manual_keep(span: Span) -> None:
from ddtrace.internal.constants import SAMPLING_DECISION_TRACE_TAG_KEY
from ddtrace.internal.sampling import SamplingMechanism
from ddtrace._trace.constants import SAMPLING_DECISION_TRACE_TAG_KEY
from ddtrace.internal.utils.constants import SamplingMechanism

span._override_sampling_decision(USER_KEEP)
# set decision maker to ASM = -5
Expand All @@ -55,8 +55,8 @@ def _asm_manual_keep(span: Span) -> None:


def _aiguard_manual_keep(span: Span) -> None:
from ddtrace.internal.constants import SAMPLING_DECISION_TRACE_TAG_KEY
from ddtrace.internal.sampling import SamplingMechanism
from ddtrace._trace.constants import SAMPLING_DECISION_TRACE_TAG_KEY
from ddtrace.internal.utils.constants import SamplingMechanism

span._override_sampling_decision(USER_KEEP)
# set decision maker to AI_GUARD = -13
Expand Down
1 change: 1 addition & 0 deletions ddtrace/contrib/internal/_constants.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
USER_AGENT_HEADER = "user-agent"
4 changes: 2 additions & 2 deletions ddtrace/contrib/internal/aiokafka/patch.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
from wrapt import wrap_function_wrapper as _w

from ddtrace import config
from ddtrace._trace.constants import MESSAGING_DESTINATION_NAME
from ddtrace._trace.constants import MESSAGING_SYSTEM
from ddtrace.constants import SPAN_KIND
from ddtrace.contrib import trace_utils
from ddtrace.ext import SpanKind
Expand All @@ -18,8 +20,6 @@
from ddtrace.ext.kafka import TOPIC
from ddtrace.internal import core
from ddtrace.internal.constants import COMPONENT
from ddtrace.internal.constants import MESSAGING_DESTINATION_NAME
from ddtrace.internal.constants import MESSAGING_SYSTEM
from ddtrace.internal.logger import get_logger
from ddtrace.internal.schema import schematize_messaging_operation
from ddtrace.internal.schema import schematize_service_name
Expand Down
2 changes: 1 addition & 1 deletion ddtrace/contrib/internal/grpc/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@
from urllib import parse

from ddtrace import config
from ddtrace.contrib.internal._constants import USER_AGENT_HEADER
from ddtrace.contrib.internal.grpc import constants
from ddtrace.ext import net
from ddtrace.internal.constants import USER_AGENT_HEADER
from ddtrace.internal.opentelemetry.constants import OTLP_EXPORTER_HEADER_IDENTIFIER


Expand Down
Loading
Loading