Skip to content

Commit ddf975c

Browse files
committed
chore(pin): prevent overriding the global tracer
1 parent dc30784 commit ddf975c

File tree

105 files changed

+192
-180
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

105 files changed

+192
-180
lines changed

ddtrace/_trace/pin.py

Lines changed: 3 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
import wrapt
77

88
import ddtrace
9-
from ddtrace.vendor.debtcollector import deprecate
109

1110
from ..internal.logger import get_logger
1211

@@ -38,19 +37,11 @@ def __init__(
3837
self,
3938
service=None, # type: Optional[str]
4039
tags=None, # type: Optional[Dict[str, str]]
41-
tracer=None,
4240
_config=None, # type: Optional[Dict[str, Any]]
4341
):
4442
# type: (...) -> None
45-
if tracer is not None and tracer is not ddtrace.tracer:
46-
deprecate(
47-
"Initializing ddtrace.trace.Pin with `tracer` argument is deprecated",
48-
message="All Pin instances should use the global tracer instance",
49-
removal_version="3.0.0",
50-
)
51-
tracer = tracer or ddtrace.tracer
5243
self.tags = tags
53-
self.tracer = tracer
44+
self.tracer = ddtrace.tracer
5445
self._target = None # type: Optional[int]
5546
# keep the configuration attribute internal because the
5647
# public API to access it is not the Pin class
@@ -127,7 +118,6 @@ def override(
127118
obj, # type: Any
128119
service=None, # type: Optional[str]
129120
tags=None, # type: Optional[Dict[str, str]]
130-
tracer=None,
131121
):
132122
# type: (...) -> None
133123
"""Override an object with the given attributes.
@@ -139,20 +129,14 @@ def override(
139129
>>> # Override a pin for a specific connection
140130
>>> Pin.override(conn, service='user-db')
141131
"""
142-
if tracer is not None:
143-
deprecate(
144-
"Calling ddtrace.trace.Pin.override(...) with the `tracer` argument is deprecated",
145-
message="All Pin instances should use the global tracer instance",
146-
removal_version="3.0.0",
147-
)
148132
if not obj:
149133
return
150134

151135
pin = cls.get_from(obj)
152136
if pin is None:
153-
Pin(service=service, tags=tags, tracer=tracer).onto(obj)
137+
Pin(service=service, tags=tags).onto(obj)
154138
else:
155-
pin.clone(service=service, tags=tags, tracer=tracer).onto(obj)
139+
pin.clone(service=service, tags=tags).onto(obj)
156140

157141
def enabled(self):
158142
# type: () -> bool
@@ -198,21 +182,13 @@ def clone(
198182
self,
199183
service=None, # type: Optional[str]
200184
tags=None, # type: Optional[Dict[str, str]]
201-
tracer=None,
202185
):
203186
# type: (...) -> Pin
204187
"""Return a clone of the pin with the given attributes replaced."""
205188
# do a shallow copy of Pin dicts
206189
if not tags and self.tags:
207190
tags = self.tags.copy()
208191

209-
if tracer is not None:
210-
deprecate(
211-
"Initializing ddtrace.trace.Pin with `tracer` argument is deprecated",
212-
message="All Pin instances should use the global tracer instance",
213-
removal_version="3.0.0",
214-
)
215-
216192
# we use a copy instead of a deepcopy because we expect configurations
217193
# to have only a root level dictionary without nested objects. Using
218194
# deepcopy introduces a big overhead:
@@ -224,6 +200,5 @@ def clone(
224200
return Pin(
225201
service=service or self.service,
226202
tags=tags,
227-
tracer=tracer or self.tracer, # do not clone the Tracer
228203
_config=config,
229204
)

ddtrace/contrib/internal/asgi/middleware.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -152,10 +152,7 @@ async def __call__(self, scope, receive, send):
152152

153153
# Calling ddtrace.trace.Pin(...) with the `tracer` argument is deprecated
154154
# Remove this if statement when the `tracer` argument is removed
155-
if self.tracer is ddtrace.tracer:
156-
pin = ddtrace.trace.Pin(service="asgi")
157-
else:
158-
pin = ddtrace.trace.Pin(service="asgi", tracer=self.tracer)
155+
pin = ddtrace.trace.Pin(service="asgi")
159156

160157
with core.context_with_data(
161158
"asgi.__call__",

ddtrace/contrib/internal/django/patch.py

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
import wrapt
1818
from wrapt.importer import when_imported
1919

20-
import ddtrace
2120
from ddtrace import config
2221
from ddtrace.appsec._utils import _UserInfoRetriever
2322
from ddtrace.constants import SPAN_KIND
@@ -151,10 +150,7 @@ def cursor(django, pin, func, instance, args, kwargs):
151150

152151
# Calling ddtrace.pin.Pin(...) with the `tracer` argument generates a deprecation warning.
153152
# Remove this if statement when the `tracer` argument is removed
154-
if pin.tracer is ddtrace.tracer:
155-
pin = Pin(service, tags=tags)
156-
else:
157-
pin = Pin(service, tags=tags, tracer=pin.tracer)
153+
pin = Pin(service, tags=tags)
158154

159155
cursor = func(*args, **kwargs)
160156

ddtrace/contrib/internal/mongoengine/trace.py

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,5 @@ def __call__(self, *args, **kwargs):
2929
client = self.__wrapped__(*args, **kwargs)
3030
pin = ddtrace.trace.Pin.get_from(self)
3131
if pin:
32-
# Calling ddtrace.trace.Pin(...) with the `tracer` argument generates a deprecation warning.
33-
# Remove this if statement when the `tracer` argument is removed
34-
if pin.tracer is ddtrace.tracer:
35-
ddtrace.trace.Pin(service=pin.service).onto(client)
36-
else:
37-
ddtrace.trace.Pin(service=pin.service, tracer=pin.tracer).onto(client)
38-
32+
ddtrace.trace.Pin(service=pin.service).onto(client)
3933
return client

ddtrace/contrib/internal/pylibmc/client.py

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -51,12 +51,7 @@ def __init__(self, client=None, service=memcached.SERVICE, tracer=None, *args, *
5151
super(TracedClient, self).__init__(client)
5252

5353
schematized_service = schematize_service_name(service)
54-
# Calling ddtrace.trace.Pin(...) with the `tracer` argument generates a deprecation warning.
55-
# Remove this if statement when the `tracer` argument is removed
56-
if tracer is ddtrace.tracer:
57-
pin = ddtrace.trace.Pin(service=schematized_service)
58-
else:
59-
pin = ddtrace.trace.Pin(service=schematized_service, tracer=tracer)
54+
pin = ddtrace.trace.Pin(service=schematized_service)
6055
pin.onto(self)
6156

6257
# attempt to collect the pool of urls this client talks to

ddtrace/contrib/internal/sqlalchemy/engine.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -69,10 +69,7 @@ def __init__(self, tracer, service, engine):
6969
# attach the PIN
7070
# Calling ddtrace.trace.Pin(...) with the `tracer` argument generates a deprecation warning.
7171
# Remove this if statement when the `tracer` argument is removed
72-
if self.tracer is ddtrace.tracer:
73-
Pin(service=self.service).onto(engine)
74-
else:
75-
Pin(tracer=tracer, service=self.service).onto(engine)
72+
Pin(service=self.service).onto(engine)
7673

7774
listen(engine, "before_cursor_execute", self._before_cur_exec)
7875
listen(engine, "after_cursor_execute", self._after_cur_exec)

ddtrace/contrib/internal/tornado/application.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,4 @@ def tracer_config(__init__, app, args, kwargs):
5757
# configure the PIN object for template rendering
5858
# Required for backwards compatibility. Remove the else clause when
5959
# the `ddtrace.trace.Pin` object no longer accepts the Pin argument.
60-
if tracer is ddtrace.tracer:
61-
ddtrace.trace.Pin(service=service).onto(template)
62-
else:
63-
ddtrace.trace.Pin(service=service, tracer=tracer).onto(template)
60+
ddtrace.trace.Pin(service=service).onto(template)

tests/appsec/contrib_appsec/django_app/urls.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313

1414
import ddtrace.constants
1515
from ddtrace.trace import tracer
16+
from tests.utils import Pin
1617

1718

1819
# django.conf.urls.url was deprecated in django 3 and removed in django 4
@@ -196,7 +197,7 @@ def login_user(request):
196197
def new_service(request, service_name: str):
197198
import ddtrace
198199

199-
ddtrace.trace.Pin.override(django, service=service_name, tracer=ddtrace.tracer)
200+
Pin.override(django, service=service_name, tracer=ddtrace.tracer)
200201
return HttpResponse(service_name, status=200)
201202

202203

tests/appsec/contrib_appsec/fastapi_app/app.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313

1414
import ddtrace.constants
1515
from ddtrace.trace import tracer
16+
from tests.utils import Pin
1617

1718

1819
fake_secret_token = "DataDog"
@@ -104,7 +105,7 @@ async def multi_view_no_param(request: Request): # noqa: B008
104105
async def new_service(service_name: str, request: Request): # noqa: B008
105106
import ddtrace
106107

107-
ddtrace.trace.Pin.override(app, service=service_name, tracer=ddtrace.tracer)
108+
Pin.override(app, service=service_name, tracer=ddtrace.tracer)
108109
return HTMLResponse(service_name, 200)
109110

110111
async def slow_numbers(minimum, maximum):

tests/appsec/contrib_appsec/flask_app/app.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
# from ddtrace.appsec.iast import ddtrace_iast_flask_patch
1010
import ddtrace.constants
1111
from ddtrace.trace import tracer
12+
from tests.utils import Pin
1213
from tests.webclient import PingFilter
1314

1415

@@ -55,7 +56,7 @@ def multi_view(param_int=0, param_str=""):
5556
def new_service(service_name: str):
5657
import ddtrace
5758

58-
ddtrace.trace.Pin.override(Flask, service=service_name, tracer=ddtrace.tracer)
59+
Pin.override(Flask, service=service_name, tracer=ddtrace.tracer)
5960
return service_name
6061

6162

tests/appsec/contrib_appsec/test_flask.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
import pytest
33

44
from ddtrace.internal.packages import get_version_for_package
5-
from ddtrace.trace import Pin
65
from tests.appsec.contrib_appsec import utils
6+
from tests.utils import TestPin as Pin
77
from tests.utils import TracerTestCase
88

99

tests/appsec/contrib_appsec/utils.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
from ddtrace.settings.asm import config as asm_config
1818
import tests.appsec.rules as rules
1919
from tests.utils import DummyTracer
20+
from tests.utils import Pin
2021
from tests.utils import override_env
2122
from tests.utils import override_global_config
2223

@@ -1567,8 +1568,8 @@ def test_tracer():
15671568

15681569
@contextmanager
15691570
def post_tracer(interface):
1570-
original_tracer = getattr(ddtrace.trace.Pin.get_from(interface.framework), "tracer", None)
1571-
ddtrace.trace.Pin.override(interface.framework, tracer=interface.tracer)
1571+
original_tracer = getattr(Pin.get_from(interface.framework), "tracer", None)
1572+
Pin.override(interface.framework, tracer=interface.tracer)
15721573
yield
15731574
if original_tracer is not None:
1574-
ddtrace.trace.Pin.override(interface.framework, tracer=original_tracer)
1575+
Pin.override(interface.framework, tracer=original_tracer)

tests/appsec/integrations/django_tests/conftest.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@
66

77
from ddtrace.appsec._iast import enable_iast_propagation
88
from ddtrace.contrib.internal.django.patch import patch
9-
from ddtrace.trace import Pin
109
from tests.appsec.iast.conftest import _end_iast_context_and_oce
1110
from tests.appsec.iast.conftest import _start_iast_context_and_oce
1211
from tests.utils import DummyTracer
12+
from tests.utils import TestPin as Pin
1313
from tests.utils import TracerSpanContainer
1414
from tests.utils import override_global_config
1515

tests/commands/ddtrace_run_integration.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55

66
import redis
77

8-
from ddtrace.trace import Pin
98
from tests.contrib.config import REDIS_CONFIG
109
from tests.utils import DummyWriter
10+
from tests.utils import TestPin as Pin
1111

1212

1313
if __name__ == "__main__":

tests/contrib/aiobotocore/utils.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from async_generator import asynccontextmanager
44
from async_generator import yield_
55

6-
from ddtrace.trace import Pin
6+
from tests.utils import TestPin as Pin
77

88

99
LOCALSTACK_ENDPOINT_URL = {

tests/contrib/aiohttp/test_aiohttp_client.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from ddtrace.contrib.internal.aiohttp.patch import extract_netloc_and_query_info_from_url
77
from ddtrace.contrib.internal.aiohttp.patch import patch
88
from ddtrace.contrib.internal.aiohttp.patch import unpatch
9-
from ddtrace.trace import Pin
9+
from tests.utils import TestPin as Pin
1010
from tests.utils import override_config
1111
from tests.utils import override_http_config
1212

@@ -101,7 +101,7 @@ async def test_distributed_tracing_disabled(ddtrace_run_python_code_in_subproces
101101
import asyncio
102102
import sys
103103
import aiohttp
104-
from ddtrace.trace import Pin
104+
from tests.utils import TestPin as Pin
105105
from tests.contrib.aiohttp.test_aiohttp_client import URL
106106
107107
async def test():
@@ -184,7 +184,7 @@ def test_configure_service_name_pin(ddtrace_run_python_code_in_subprocess):
184184
import asyncio
185185
import sys
186186
import aiohttp
187-
from ddtrace.trace import Pin
187+
from tests.utils import TestPin as Pin
188188
from tests.contrib.aiohttp.test_aiohttp_client import URL_200
189189
190190
async def test():

tests/contrib/aiohttp_jinja2/conftest.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33

44
from ddtrace.contrib.internal.aiohttp_jinja2.patch import patch
55
from ddtrace.contrib.internal.aiohttp_jinja2.patch import unpatch
6-
from ddtrace.trace import Pin
76
from tests.contrib.aiohttp.conftest import app_tracer # noqa:F401
87
from tests.contrib.aiohttp.conftest import patched_app_tracer # noqa:F401
98
from tests.contrib.aiohttp.conftest import untraced_app_tracer # noqa:F401
9+
from tests.utils import TestPin as Pin
1010

1111

1212
@pytest.fixture

tests/contrib/aiohttp_jinja2/test_aiohttp_jinja2.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22
import pytest
33

44
from ddtrace.constants import ERROR_MSG
5-
from ddtrace.trace import Pin
65
from ddtrace.trace import tracer
76
from tests.contrib.aiohttp.app.web import set_filesystem_loader
87
from tests.contrib.aiohttp.app.web import set_package_loader
98
import tests.contrib.aiohttp.conftest # noqa:F401
9+
from tests.utils import TestPin as Pin
1010

1111

1212
VERSION = tuple(map(int, aiohttp_jinja2.__version__.split(".")))

tests/contrib/aiomysql/test_aiomysql.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@
88
from ddtrace.contrib.internal.aiomysql.patch import patch
99
from ddtrace.contrib.internal.aiomysql.patch import unpatch
1010
from ddtrace.internal.schema import DEFAULT_SPAN_SERVICE_NAME
11-
from ddtrace.trace import Pin
1211
from tests.contrib import shared_tests_async as shared_tests
1312
from tests.contrib.asyncio.utils import AsyncioTestCase
1413
from tests.contrib.asyncio.utils import mark_asyncio
1514
from tests.contrib.config import MYSQL_CONFIG
15+
from tests.utils import TestPin as Pin
1616

1717

1818
AIOMYSQL_CONFIG = dict(MYSQL_CONFIG)

tests/contrib/aiopg/test.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,13 @@
77
from ddtrace.contrib.internal.aiopg.patch import patch
88
from ddtrace.contrib.internal.aiopg.patch import unpatch
99
from ddtrace.internal.schema import DEFAULT_SPAN_SERVICE_NAME
10-
11-
# project
12-
from ddtrace.trace import Pin
1310
from tests.contrib.asyncio.utils import AsyncioTestCase
1411
from tests.contrib.config import POSTGRES_CONFIG
1512
from tests.opentracer.utils import init_tracer
1613
from tests.subprocesstest import run_in_subprocess
14+
15+
# project
16+
from tests.utils import TestPin as Pin
1717
from tests.utils import assert_is_measured
1818

1919

tests/contrib/algoliasearch/test.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
from ddtrace.contrib.internal.algoliasearch.patch import algoliasearch_version
44
from ddtrace.contrib.internal.algoliasearch.patch import patch
55
from ddtrace.contrib.internal.algoliasearch.patch import unpatch
6-
from ddtrace.trace import Pin
76
from ddtrace.vendor.packaging.version import parse as parse_version
7+
from tests.utils import TestPin as Pin
88
from tests.utils import TracerTestCase
99
from tests.utils import assert_is_measured
1010

tests/contrib/anthropic/conftest.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@
66
from ddtrace.contrib.internal.anthropic.patch import patch
77
from ddtrace.contrib.internal.anthropic.patch import unpatch
88
from ddtrace.llmobs import LLMObs
9-
from ddtrace.trace import Pin
109
from tests.contrib.anthropic.utils import get_request_vcr
1110
from tests.utils import DummyTracer
1211
from tests.utils import DummyWriter
12+
from tests.utils import TestPin as Pin
1313
from tests.utils import override_config
1414
from tests.utils import override_env
1515
from tests.utils import override_global_config

0 commit comments

Comments
 (0)