Skip to content

Commit 0fffe4f

Browse files
authored
Merge branch 'main' into cbeauchesne/crash-investigation
2 parents 42a0a3d + 584e00b commit 0fffe4f

File tree

4 files changed

+106
-16
lines changed

4 files changed

+106
-16
lines changed

ddtrace/contrib/botocore/patch.py

Lines changed: 72 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,11 @@
1313

1414
from ddtrace import config
1515
from ddtrace.contrib.trace_utils import with_traced_module
16+
from ddtrace.internal.utils.deprecations import DDTraceDeprecationWarning
1617
from ddtrace.llmobs._integrations import BedrockIntegration
1718
from ddtrace.settings.config import Config
1819
from ddtrace.vendor import wrapt
20+
from ddtrace.vendor.debtcollector import deprecate
1921

2022
from ...constants import SPAN_KIND
2123
from ...ext import SpanKind
@@ -77,20 +79,30 @@
7779
)
7880

7981

80-
def get_version():
82+
def _get_version():
8183
# type: () -> str
8284
return __version__
8385

8486

87+
def get_version():
88+
deprecate(
89+
"get_version is deprecated",
90+
message="get_version is deprecated",
91+
removal_version="3.0.0",
92+
category=DDTraceDeprecationWarning,
93+
)
94+
return _get_version()
95+
96+
8597
def patch():
8698
if getattr(botocore.client, "_datadog_patch", False):
8799
return
88100
botocore.client._datadog_patch = True
89101

90102
botocore._datadog_integration = BedrockIntegration(integration_config=config.botocore)
91-
wrapt.wrap_function_wrapper("botocore.client", "BaseClient._make_api_call", patched_api_call(botocore))
103+
wrapt.wrap_function_wrapper("botocore.client", "BaseClient._make_api_call", _patched_api_call(botocore))
92104
Pin().onto(botocore.client.BaseClient)
93-
wrapt.wrap_function_wrapper("botocore.parsers", "ResponseParser.parse", patched_lib_fn)
105+
wrapt.wrap_function_wrapper("botocore.parsers", "ResponseParser.parse", _patched_lib_fn)
94106
Pin().onto(botocore.parsers.ResponseParser)
95107
_PATCHED_SUBMODULES.clear()
96108

@@ -103,7 +115,7 @@ def unpatch():
103115
unwrap(botocore.client.BaseClient, "_make_api_call")
104116

105117

106-
def patch_submodules(submodules):
118+
def _patch_submodules(submodules):
107119
# type: (Union[List[str], bool]) -> None
108120
if isinstance(submodules, bool) and submodules:
109121
_PATCHED_SUBMODULES.clear()
@@ -112,7 +124,17 @@ def patch_submodules(submodules):
112124
_PATCHED_SUBMODULES.update(submodules)
113125

114126

115-
def patched_lib_fn(original_func, instance, args, kwargs):
127+
def patch_submodules(submodules):
128+
deprecate(
129+
"patch_submodules is deprecated",
130+
message="patch_submodules is deprecated",
131+
removal_version="3.0.0",
132+
category=DDTraceDeprecationWarning,
133+
)
134+
return _patch_submodules(submodules)
135+
136+
137+
def _patched_lib_fn(original_func, instance, args, kwargs):
116138
pin = Pin.get_from(instance)
117139
if not pin or not pin.enabled() or not config.botocore["instrument_internals"]:
118140
return original_func(*args, **kwargs)
@@ -124,8 +146,18 @@ def patched_lib_fn(original_func, instance, args, kwargs):
124146
return original_func(*args, **kwargs)
125147

126148

149+
def patched_lib_fn(original_func, instance, args, kwargs):
150+
deprecate(
151+
"patched_lib_fn is deprecated",
152+
message="patched_lib_fn is deprecated",
153+
removal_version="3.0.0",
154+
category=DDTraceDeprecationWarning,
155+
)
156+
return _patched_lib_fn(original_func, instance, args, kwargs)
157+
158+
127159
@with_traced_module
128-
def patched_api_call(botocore, pin, original_func, instance, args, kwargs):
160+
def _patched_api_call(botocore, pin, original_func, instance, args, kwargs):
129161
if not pin or not pin.enabled():
130162
return original_func(*args, **kwargs)
131163

@@ -153,7 +185,7 @@ def patched_api_call(botocore, pin, original_func, instance, args, kwargs):
153185
if endpoint_name == "bedrock-runtime" and operation.startswith("InvokeModel"):
154186
patching_fn = patched_bedrock_api_call
155187
else:
156-
patching_fn = PATCHING_FUNCTIONS.get(endpoint_name, patched_api_call_fallback)
188+
patching_fn = PATCHING_FUNCTIONS.get(endpoint_name, _patched_api_call_fallback)
157189

158190
return patching_fn(
159191
original_func=original_func,
@@ -164,7 +196,17 @@ def patched_api_call(botocore, pin, original_func, instance, args, kwargs):
164196
)
165197

166198

167-
def prep_context_injection(ctx, endpoint_name, operation, trace_operation, params):
199+
def patched_api_call(botocore, pin, original_func, instance, args, kwargs):
200+
deprecate(
201+
"patched_api_call is deprecated",
202+
message="patched_api_call is deprecated",
203+
removal_version="3.0.0",
204+
category=DDTraceDeprecationWarning,
205+
)
206+
return _patched_api_call(botocore, pin, original_func, instance, args, kwargs)
207+
208+
209+
def _prep_context_injection(ctx, endpoint_name, operation, trace_operation, params):
168210
cloud_service = None
169211
injection_function = None
170212
schematization_function = schematize_cloud_messaging_operation
@@ -189,7 +231,17 @@ def prep_context_injection(ctx, endpoint_name, operation, trace_operation, param
189231
)
190232

191233

192-
def patched_api_call_fallback(original_func, instance, args, kwargs, function_vars):
234+
def prep_context_injection(ctx, endpoint_name, operation, trace_operation, params):
235+
deprecate(
236+
"prep_context_injection is deprecated",
237+
message="prep_context_injection is deprecated",
238+
removal_version="3.0.0",
239+
category=DDTraceDeprecationWarning,
240+
)
241+
return _prep_context_injection(ctx, endpoint_name, operation, trace_operation, params)
242+
243+
244+
def _patched_api_call_fallback(original_func, instance, args, kwargs, function_vars):
193245
# default patched api call that is used generally for several services / operations
194246
params = function_vars.get("params")
195247
trace_operation = function_vars.get("trace_operation")
@@ -212,7 +264,7 @@ def patched_api_call_fallback(original_func, instance, args, kwargs, function_va
212264
) as ctx, ctx.get_item("instrumented_api_call"):
213265
core.dispatch("botocore.patched_api_call.started", [ctx])
214266
if args and config.botocore["distributed_tracing"]:
215-
prep_context_injection(ctx, endpoint_name, operation, trace_operation, params)
267+
_prep_context_injection(ctx, endpoint_name, operation, trace_operation, params)
216268

217269
try:
218270
result = original_func(*args, **kwargs)
@@ -230,3 +282,13 @@ def patched_api_call_fallback(original_func, instance, args, kwargs, function_va
230282
else:
231283
core.dispatch("botocore.patched_api_call.success", [ctx, result])
232284
return result
285+
286+
287+
def patched_api_call_fallback(original_func, instance, args, kwargs, function_vars):
288+
deprecate(
289+
"patched_api_call_fallback is deprecated",
290+
message="patched_api_call_fallback is deprecated",
291+
removal_version="3.0.0",
292+
category=DDTraceDeprecationWarning,
293+
)
294+
return _patched_api_call_fallback(original_func, instance, args, kwargs, function_vars)

ddtrace/contrib/consul/patch.py

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
from ddtrace import config
44
from ddtrace.internal.constants import COMPONENT
55
from ddtrace.internal.schema.span_attribute_schema import SpanDirection
6+
from ddtrace.internal.utils.deprecations import DDTraceDeprecationWarning
7+
from ddtrace.vendor.debtcollector import deprecate
68
from ddtrace.vendor.wrapt import wrap_function_wrapper as _w
79

810
from ...constants import ANALYTICS_SAMPLE_RATE_KEY
@@ -22,11 +24,21 @@
2224
_KV_FUNCS = ["put", "get", "delete"]
2325

2426

25-
def get_version():
27+
def _get_version():
2628
# type: () -> str
2729
return getattr(consul, "__version__", "")
2830

2931

32+
def get_version():
33+
deprecate(
34+
"get_version is deprecated",
35+
message="get_version is deprecated",
36+
removal_version="3.0.0",
37+
category=DDTraceDeprecationWarning,
38+
)
39+
return _get_version()
40+
41+
3042
def patch():
3143
if getattr(consul, "__datadog_patch", False):
3244
return
@@ -36,7 +48,7 @@ def patch():
3648
pin.onto(consul.Consul.KV)
3749

3850
for f_name in _KV_FUNCS:
39-
_w("consul", "Consul.KV.%s" % f_name, wrap_function(f_name))
51+
_w("consul", "Consul.KV.%s" % f_name, _wrap_function(f_name))
4052

4153

4254
def unpatch():
@@ -48,7 +60,7 @@ def unpatch():
4860
_u(consul.Consul.KV, f_name)
4961

5062

51-
def wrap_function(name):
63+
def _wrap_function(name):
5264
def trace_func(wrapped, instance, args, kwargs):
5365
pin = Pin.get_from(instance)
5466
if not pin or not pin.enabled():
@@ -83,3 +95,13 @@ def trace_func(wrapped, instance, args, kwargs):
8395
return wrapped(*args, **kwargs)
8496

8597
return trace_func
98+
99+
100+
def wrap_function(name):
101+
deprecate(
102+
"wrap_function is deprecated",
103+
message="get_version is deprecated",
104+
removal_version="3.0.0",
105+
category=DDTraceDeprecationWarning,
106+
)
107+
return _wrap_function(name)
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
deprecations:
3+
- |
4+
botocore: All methods in botocore/patch.py except ``patch()`` and ``unpatch()`` are deprecated and will be removed in version 3.0.0.
5+
- |
6+
consul: All methods in consul/patch.py except ``patch()`` and ``unpatch()`` are deprecated and will be removed in version 3.0.0.

tests/contrib/botocore/test.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@
3636
from ddtrace.constants import ERROR_MSG
3737
from ddtrace.constants import ERROR_STACK
3838
from ddtrace.constants import ERROR_TYPE
39+
from ddtrace.contrib.botocore.patch import _patch_submodules
3940
from ddtrace.contrib.botocore.patch import patch
40-
from ddtrace.contrib.botocore.patch import patch_submodules
4141
from ddtrace.contrib.botocore.patch import unpatch
4242
from ddtrace.internal.compat import PYTHON_VERSION_INFO
4343
from ddtrace.internal.datastreams.processor import PROPAGATION_KEY_BASE_64
@@ -76,7 +76,7 @@ class BotocoreTest(TracerTestCase):
7676
@mock_sqs
7777
def setUp(self):
7878
patch()
79-
patch_submodules(True)
79+
_patch_submodules(True)
8080

8181
self.session = botocore.session.get_session()
8282
self.session.set_credentials(access_key="access-key", secret_key="secret-key")
@@ -103,7 +103,7 @@ def tearDown(self):
103103
@mock_ec2
104104
@mock_s3
105105
def test_patch_submodules(self):
106-
patch_submodules(["s3"])
106+
_patch_submodules(["s3"])
107107
ec2 = self.session.create_client("ec2", region_name="us-west-2")
108108
Pin(service=self.TEST_SERVICE, tracer=self.tracer).onto(ec2)
109109

0 commit comments

Comments
 (0)