Skip to content

refactor: configuration instance [recreated] #12991

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 5 commits into from
Apr 3, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
4 changes: 1 addition & 3 deletions ddtrace/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,7 @@
# configure ddtrace logger before other modules log
configure_ddtrace_logger() # noqa: E402

from .settings._config import Config as _Config

config = _Config()
from .settings._config import config


# Enable telemetry writer and excepthook as early as possible to ensure we capture any exceptions from initialization
Expand Down
10 changes: 5 additions & 5 deletions ddtrace/_monkey.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@

from wrapt.importer import when_imported

from ddtrace import config
from ddtrace.appsec import load_common_appsec_modules
from ddtrace.internal.telemetry.constants import TELEMETRY_NAMESPACE
from ddtrace.settings._config import config
from ddtrace.settings.asm import config as asm_config
from ddtrace.vendor.debtcollector import deprecate

Expand Down Expand Up @@ -88,10 +88,10 @@
"falcon": True,
"pyramid": True,
# Auto-enable logging if the environment variable DD_LOGS_INJECTION is true
"logbook": config._logs_injection, # type: ignore
"logging": config._logs_injection, # type: ignore
"loguru": config._logs_injection, # type: ignore
"structlog": config._logs_injection, # type: ignore
"logbook": config._logs_injection,
"logging": config._logs_injection,
"loguru": config._logs_injection,
"structlog": config._logs_injection,
"pynamodb": True,
"pyodbc": True,
"fastapi": True,
Expand Down
2 changes: 1 addition & 1 deletion ddtrace/_trace/processor/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
from typing import Optional
from typing import Union

from ddtrace import config
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 @@ -28,6 +27,7 @@
from ddtrace.internal.telemetry.constants import TELEMETRY_LOG_LEVEL
from ddtrace.internal.telemetry.constants import TELEMETRY_NAMESPACE
from ddtrace.internal.writer import TraceWriter
from ddtrace.settings._config import config


try:
Expand Down
4 changes: 2 additions & 2 deletions ddtrace/_trace/provider.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
from typing import Optional
from typing import Union

from ddtrace import _hooks
from ddtrace._hooks import Hooks
from ddtrace._trace.context import Context
from ddtrace._trace.span import Span
from ddtrace.internal.logger import get_logger
Expand All @@ -30,7 +30,7 @@ class BaseContextProvider(metaclass=abc.ABCMeta):
"""

def __init__(self) -> None:
self._hooks = _hooks.Hooks()
self._hooks = Hooks()

@abc.abstractmethod
def _has_active_context(self) -> bool:
Expand Down
2 changes: 1 addition & 1 deletion ddtrace/_trace/sampler.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@
from typing import List
from typing import Optional

from ddtrace import config
from ddtrace._trace.span import Span
from ddtrace.constants import _SAMPLING_LIMIT_DECISION
from ddtrace.settings._config import config

from ..constants import ENV_KEY
from ..internal.constants import MAX_UINT_64BITS
Expand Down
2 changes: 1 addition & 1 deletion ddtrace/_trace/span.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
from typing import Union
from typing import cast

from ddtrace import config
from ddtrace._trace._limits import MAX_SPAN_META_VALUE_LEN
from ddtrace._trace._span_link import SpanLink
from ddtrace._trace._span_link import SpanLinkKind
Expand Down Expand Up @@ -54,6 +53,7 @@
from ddtrace.internal.logger import get_logger
from ddtrace.internal.sampling import SamplingMechanism
from ddtrace.internal.sampling import set_sampling_decision_maker
from ddtrace.settings._config import config


_NUMERIC_TAGS = (_ANALYTICS_SAMPLE_RATE_KEY,)
Expand Down
6 changes: 3 additions & 3 deletions ddtrace/_trace/tracer.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,7 @@
from typing import TypeVar
from typing import Union

from ddtrace import _hooks
from ddtrace import config
from ddtrace._hooks import Hooks
from ddtrace._trace.context import Context
from ddtrace._trace.processor import SpanAggregator
from ddtrace._trace.processor import SpanProcessor
Expand Down Expand Up @@ -65,6 +64,7 @@
from ddtrace.internal.writer import TraceWriter
from ddtrace.settings._agent import config as agent_config
from ddtrace.settings._config import Config
from ddtrace.settings._config import config
from ddtrace.settings.asm import config as asm_config
from ddtrace.settings.peer_service import _ps_config

Expand Down Expand Up @@ -274,7 +274,7 @@ def __init__(self) -> None:
self.data_streams_processor = DataStreamsProcessor(self._agent_url)
register_on_exit_signal(self._atexit)

self._hooks = _hooks.Hooks()
self._hooks = Hooks()
forksafe.register_before_fork(self._sample_before_fork)

# Non-global tracers require that we still register these hooks, until
Expand Down
2 changes: 1 addition & 1 deletion ddtrace/contrib/internal/subprocess/patch.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,13 @@
from typing import Union # noqa:F401
from typing import cast # noqa:F401

from ddtrace import config
from ddtrace.contrib import trace_utils
from ddtrace.contrib.internal.subprocess.constants import COMMANDS
from ddtrace.ext import SpanTypes
from ddtrace.internal import core
from ddtrace.internal.forksafe import RLock
from ddtrace.internal.logger import get_logger
from ddtrace.settings._config import config
from ddtrace.settings.asm import config as asm_config
from ddtrace.trace import Pin

Expand Down
2 changes: 1 addition & 1 deletion ddtrace/contrib/internal/trace_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@

import wrapt

from ddtrace import config
from ddtrace.ext import http
from ddtrace.ext import net
from ddtrace.ext import user
Expand All @@ -36,6 +35,7 @@
from ddtrace.internal.utils.http import strip_query_string
import ddtrace.internal.utils.wrappers
from ddtrace.propagation.http import HTTPPropagator
from ddtrace.settings._config import config
from ddtrace.settings.asm import config as asm_config
from ddtrace.trace import Pin

Expand Down
2 changes: 1 addition & 1 deletion ddtrace/internal/core/event_hub.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
from typing import Optional
from typing import Tuple

from ddtrace import config
from ddtrace.settings._config import config


_listeners: Dict[str, Dict[Any, Callable[..., Any]]] = {}
Expand Down
9 changes: 5 additions & 4 deletions ddtrace/internal/datastreams/processor.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,13 @@
from typing import Optional # noqa:F401
from typing import Union # noqa:F401

import ddtrace
from ddtrace import config
from ddtrace.internal import compat
from ddtrace.internal.atexit import register_on_exit_signal
from ddtrace.internal.constants import DEFAULT_SERVICE_NAME
from ddtrace.internal.native import DDSketch
from ddtrace.internal.utils.retry import fibonacci_backoff_with_jitter
from ddtrace.settings._config import config
from ddtrace.version import get_version

from .._encoding import packb
from ..agent import get_connection
Expand Down Expand Up @@ -131,9 +131,10 @@ def __init__(self, agent_url, interval=None, timeout=1.0, retry_attempts=3):
self._buckets = defaultdict(
lambda: Bucket(defaultdict(PathwayStats), defaultdict(int), defaultdict(int))
) # type: DefaultDict[int, Bucket]
self._version = get_version()
self._headers = {
"Datadog-Meta-Lang": "python",
"Datadog-Meta-Tracer-Version": ddtrace.__version__,
"Datadog-Meta-Tracer-Version": self._version,
"Content-Type": "application/msgpack",
"Content-Encoding": "gzip",
} # type: Dict[str, str]
Expand Down Expand Up @@ -297,7 +298,7 @@ def periodic(self):
return
raw_payload = {
"Service": self._service,
"TracerVersion": ddtrace.__version__,
"TracerVersion": self._version,
"Lang": "python",
"Stats": serialized_stats,
"Hostname": self._hostname,
Expand Down
6 changes: 3 additions & 3 deletions ddtrace/internal/processor/stats.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,13 @@
import os
import typing

import ddtrace
from ddtrace import config
from ddtrace._trace.processor import SpanProcessor
from ddtrace._trace.span import _is_top_level
from ddtrace.internal import compat
from ddtrace.internal.native import DDSketch
from ddtrace.internal.utils.retry import fibonacci_backoff_with_jitter
from ddtrace.settings._config import config
from ddtrace.version import get_version

from ...constants import _SPAN_MEASURED_KEY
from .._encoding import packb
Expand Down Expand Up @@ -103,7 +103,7 @@ def __init__(self, agent_url, interval=None, timeout=1.0, retry_attempts=3):
) # type: DefaultDict[int, DefaultDict[SpanAggrKey, SpanAggrStats]]
self._headers = {
"Datadog-Meta-Lang": "python",
"Datadog-Meta-Tracer-Version": ddtrace.__version__,
"Datadog-Meta-Tracer-Version": get_version(),
"Content-Type": "application/msgpack",
} # type: Dict[str, str]
self._hostname = ""
Expand Down
2 changes: 1 addition & 1 deletion ddtrace/internal/sampling.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@
except ImportError:
from typing_extensions import TypedDict

from ddtrace import config
from ddtrace._trace.sampling_rule import SamplingRule # noqa:F401
from ddtrace.constants import _SAMPLING_AGENT_DECISION
from ddtrace.constants import _SAMPLING_RULE_DECISION
Expand All @@ -29,6 +28,7 @@
from ddtrace.internal.constants import SamplingMechanism
from ddtrace.internal.glob_matching import GlobMatcher
from ddtrace.internal.logger import get_logger
from ddtrace.settings._config import config

from .rate_limiter import RateLimiter

Expand Down
2 changes: 1 addition & 1 deletion ddtrace/internal/schema/processor.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from ddtrace import config
from ddtrace._trace.processor import TraceProcessor
from ddtrace.constants import _BASE_SERVICE_KEY
from ddtrace.settings._config import config

from . import schematize_service_name

Expand Down
2 changes: 1 addition & 1 deletion ddtrace/propagation/http.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,13 @@
import urllib.parse

import ddtrace
from ddtrace import config
from ddtrace._trace._span_link import SpanLink
from ddtrace._trace.span import _get_64_highest_order_bits_as_hex
from ddtrace._trace.span import _get_64_lowest_order_bits_as_int
from ddtrace._trace.span import _MetaDictType
from ddtrace.appsec._constants import APPSEC
from ddtrace.internal.core import dispatch
from ddtrace.settings._config import config
from ddtrace.settings.asm import config as asm_config
from ddtrace.trace import Context
from ddtrace.trace import Span # noqa:F401
Expand Down
3 changes: 3 additions & 0 deletions ddtrace/settings/_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -877,3 +877,6 @@ def _convert_rc_trace_sampling_rules(

def _lower(self, value):
return value.lower()


config = Config()
6 changes: 2 additions & 4 deletions ddtrace/settings/asm.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
from typing import List
from typing import Optional

from ddtrace import config as tracer_config
from ddtrace.appsec._constants import API_SECURITY
from ddtrace.appsec._constants import APPSEC
from ddtrace.appsec._constants import DEFAULT
Expand All @@ -17,6 +16,7 @@
from ddtrace.constants import APPSEC_ENV
from ddtrace.internal import core
from ddtrace.internal.serverless import in_aws_lambda
from ddtrace.settings._config import config as tracer_config
from ddtrace.settings._core import DDConfig


Expand Down Expand Up @@ -64,9 +64,7 @@ class ASMConfig(DDConfig):
# prevent empty string
if _asm_static_rule_file == "":
_asm_static_rule_file = None
_iast_enabled = tracer_config._from_endpoint.get( # type: ignore
"iast_enabled", DDConfig.var(bool, IAST.ENV, default=False)
)
_iast_enabled = tracer_config._from_endpoint.get("iast_enabled", DDConfig.var(bool, IAST.ENV, default=False))
_iast_request_sampling = DDConfig.var(float, IAST.ENV_REQUEST_SAMPLING, default=30.0)
_iast_debug = DDConfig.var(bool, IAST.ENV_DEBUG, default=False, private=True)
_iast_propagation_debug = DDConfig.var(bool, IAST.ENV_PROPAGATION_DEBUG, default=False, private=True)
Expand Down
Loading