Skip to content

Commit cece303

Browse files
committed
Revert "Merge branch '2.x-staging' into conti/support-aws-api-gateway"
This reverts commit fe7e93f, reversing changes made to 4ae108b.
1 parent b8e2095 commit cece303

File tree

97 files changed

+635
-888
lines changed

Some content is hidden

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

97 files changed

+635
-888
lines changed

ddtrace/_trace/pin.py

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

88
import ddtrace
9+
from ddtrace.vendor.debtcollector import deprecate
910

1011
from ..internal.logger import get_logger
1112

@@ -31,17 +32,25 @@ class Pin(object):
3132
>>> conn = sqlite.connect('/tmp/image.db')
3233
"""
3334

34-
__slots__ = ["tags", "_tracer", "_target", "_config", "_initialized"]
35+
__slots__ = ["tags", "tracer", "_target", "_config", "_initialized"]
3536

3637
def __init__(
3738
self,
3839
service=None, # type: Optional[str]
3940
tags=None, # type: Optional[Dict[str, str]]
41+
tracer=None,
4042
_config=None, # type: Optional[Dict[str, Any]]
4143
):
4244
# 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
4352
self.tags = tags
44-
self._tracer = ddtrace.tracer
53+
self.tracer = tracer
4554
self._target = None # type: Optional[int]
4655
# keep the configuration attribute internal because the
4756
# public API to access it is not the Pin class
@@ -59,14 +68,10 @@ def service(self):
5968
return self._config["service_name"]
6069

6170
def __setattr__(self, name, value):
62-
if getattr(self, "_initialized", False) and name not in ("_target", "_tracer"):
71+
if getattr(self, "_initialized", False) and name != "_target":
6372
raise AttributeError("can't mutate a pin, use override() or clone() instead")
6473
super(Pin, self).__setattr__(name, value)
6574

66-
@property
67-
def tracer(self):
68-
return self._tracer
69-
7075
def __repr__(self):
7176
return "Pin(service=%s, tags=%s, tracer=%s)" % (self.service, self.tags, self.tracer)
7277

@@ -122,6 +127,7 @@ def override(
122127
obj, # type: Any
123128
service=None, # type: Optional[str]
124129
tags=None, # type: Optional[Dict[str, str]]
130+
tracer=None,
125131
):
126132
# type: (...) -> None
127133
"""Override an object with the given attributes.
@@ -133,32 +139,20 @@ def override(
133139
>>> # Override a pin for a specific connection
134140
>>> Pin.override(conn, service='user-db')
135141
"""
136-
Pin._override(obj, service=service, tags=tags)
137-
138-
@classmethod
139-
def _override(
140-
cls,
141-
obj, # type: Any
142-
service=None, # type: Optional[str]
143-
tags=None, # type: Optional[Dict[str, str]]
144-
tracer=None,
145-
):
146-
# type: (...) -> None
147-
"""
148-
Internal method that allows overriding the global tracer in tests
149-
"""
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+
)
150148
if not obj:
151149
return
152150

153151
pin = cls.get_from(obj)
154152
if pin is None:
155-
pin = Pin(service=service, tags=tags)
153+
Pin(service=service, tags=tags, tracer=tracer).onto(obj)
156154
else:
157-
pin = pin.clone(service=service, tags=tags)
158-
159-
if tracer:
160-
pin._tracer = tracer
161-
pin.onto(obj)
155+
pin.clone(service=service, tags=tags, tracer=tracer).onto(obj)
162156

163157
def enabled(self):
164158
# type: () -> bool
@@ -204,22 +198,21 @@ def clone(
204198
self,
205199
service=None, # type: Optional[str]
206200
tags=None, # type: Optional[Dict[str, str]]
201+
tracer=None,
207202
):
208203
# type: (...) -> Pin
209204
"""Return a clone of the pin with the given attributes replaced."""
210-
return self._clone(service=service, tags=tags)
211-
212-
def _clone(
213-
self,
214-
service=None, # type: Optional[str]
215-
tags=None, # type: Optional[Dict[str, str]]
216-
tracer=None,
217-
):
218-
"""Internal method that can clone the tracer from an existing Pin. This is used in tests"""
219205
# do a shallow copy of Pin dicts
220206
if not tags and self.tags:
221207
tags = self.tags.copy()
222208

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+
223216
# we use a copy instead of a deepcopy because we expect configurations
224217
# to have only a root level dictionary without nested objects. Using
225218
# deepcopy introduces a big overhead:
@@ -228,10 +221,9 @@ def _clone(
228221
# deepcopy: 0.2787208557128906
229222
config = self._config.copy()
230223

231-
pin = Pin(
224+
return Pin(
232225
service=service or self.service,
233226
tags=tags,
227+
tracer=tracer or self.tracer, # do not clone the Tracer
234228
_config=config,
235229
)
236-
pin._tracer = tracer or self.tracer
237-
return pin

ddtrace/contrib/internal/asgi/middleware.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -150,8 +150,12 @@ async def __call__(self, scope, receive, send):
150150
if scope["type"] == "http":
151151
operation_name = schematize_url_operation(operation_name, direction=SpanDirection.INBOUND, protocol="http")
152152

153-
pin = ddtrace.trace.Pin(service="asgi")
154-
pin._tracer = self.tracer
153+
# Calling ddtrace.trace.Pin(...) with the `tracer` argument is deprecated
154+
# 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)
155159

156160
with core.context_with_data(
157161
"asgi.__call__",

ddtrace/contrib/internal/django/patch.py

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

20+
import ddtrace
2021
from ddtrace import config
2122
from ddtrace.appsec._utils import _UserInfoRetriever
2223
from ddtrace.constants import SPAN_KIND
@@ -148,9 +149,12 @@ def cursor(django, pin, func, instance, args, kwargs):
148149
tags = {"django.db.vendor": vendor, "django.db.alias": alias}
149150
tags.update(getattr(conn, "_datadog_tags", {}))
150151

151-
tracer = pin.tracer
152-
pin = Pin(service, tags=tags)
153-
pin._tracer = tracer
152+
# Calling ddtrace.pin.Pin(...) with the `tracer` argument generates a deprecation warning.
153+
# 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)
154158

155159
cursor = func(*args, **kwargs)
156160

ddtrace/contrib/internal/mongoengine/trace.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,11 @@ def __call__(self, *args, **kwargs):
2929
client = self.__wrapped__(*args, **kwargs)
3030
pin = ddtrace.trace.Pin.get_from(self)
3131
if pin:
32-
tracer = pin.tracer
33-
pp = ddtrace.trace.Pin(service=pin.service)
34-
if tracer is not None:
35-
pp._tracer = tracer
36-
pp.onto(client)
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)
3738

3839
return client

ddtrace/contrib/internal/pylibmc/client.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,12 @@ 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-
pin = ddtrace.trace.Pin(service=schematized_service)
55-
pin._tracer = tracer
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)
5660
pin.onto(self)
5761

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

ddtrace/contrib/internal/sqlalchemy/engine.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -67,9 +67,12 @@ def __init__(self, tracer, service, engine):
6767
self.name = schematize_database_operation("%s.query" % self.vendor, database_provider=self.vendor)
6868

6969
# attach the PIN
70-
pin = Pin(service=self.service)
71-
pin._tracer = self.tracer
72-
pin.onto(engine)
70+
# Calling ddtrace.trace.Pin(...) with the `tracer` argument generates a deprecation warning.
71+
# 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)
7376

7477
listen(engine, "before_cursor_execute", self._before_cur_exec)
7578
listen(engine, "after_cursor_execute", self._after_cur_exec)

ddtrace/contrib/internal/tornado/application.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,10 @@ def tracer_config(__init__, app, args, kwargs):
5454
if tags:
5555
tracer.set_tags(tags)
5656

57-
pin = ddtrace.trace.Pin(service=service)
58-
pin._tracer = tracer
59-
pin.onto(template)
57+
# configure the PIN object for template rendering
58+
# Required for backwards compatibility. Remove the else clause when
59+
# 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)

releasenotes/notes/remove-deprecations-from-pin-a700ae0cb6d51d03.yaml

Lines changed: 0 additions & 4 deletions
This file was deleted.

tests/appsec/contrib_appsec/django_app/urls.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ def login_user(request):
196196
def new_service(request, service_name: str):
197197
import ddtrace
198198

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

202202

tests/appsec/contrib_appsec/fastapi_app/app.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ async def multi_view_no_param(request: Request): # noqa: B008
104104
async def new_service(service_name: str, request: Request): # noqa: B008
105105
import ddtrace
106106

107-
ddtrace.trace.Pin._override(app, service=service_name, tracer=ddtrace.tracer)
107+
ddtrace.trace.Pin.override(app, service=service_name, tracer=ddtrace.tracer)
108108
return HTMLResponse(service_name, 200)
109109

110110
async def slow_numbers(minimum, maximum):

0 commit comments

Comments
 (0)