Skip to content

Commit 158d6c9

Browse files
authored
Move duplicated code to a dependency (open-telemetry#942)
1 parent 8bc7786 commit 158d6c9

File tree

5 files changed

+20
-70
lines changed

5 files changed

+20
-70
lines changed

eachdist.ini

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ sortfirst=
1010
ext/opentelemetry-ext-wsgi
1111
ext/opentelemetry-ext-dbapi
1212
ext/opentelemetry-ext-asgi
13+
ext/opentelemetry-ext-botocore
1314
ext/*
1415

1516
[lintroots]

ext/opentelemetry-ext-boto/setup.cfg

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ install_requires =
4343
boto ~= 2.0
4444
opentelemetry-api == 0.11.dev0
4545
opentelemetry-instrumentation == 0.11.dev0
46+
opentelemetry-ext-botocore == 0.11.dev0
4647

4748
[options.extras_require]
4849
test =

ext/opentelemetry-ext-boto/src/opentelemetry/ext/boto/__init__.py

Lines changed: 2 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,10 @@
4848
from inspect import currentframe
4949

5050
from boto.connection import AWSAuthConnection, AWSQueryConnection
51-
from wrapt import ObjectProxy, wrap_function_wrapper
51+
from wrapt import wrap_function_wrapper
5252

5353
from opentelemetry.ext.boto.version import __version__
54+
from opentelemetry.ext.botocore import add_span_arg_tags, unwrap
5455
from opentelemetry.instrumentation.instrumentor import BaseInstrumentor
5556
from opentelemetry.sdk.trace import Resource
5657
from opentelemetry.trace import SpanKind, get_tracer
@@ -197,55 +198,3 @@ def _patched_auth_request(self, original_func, instance, args, kwargs):
197198
args,
198199
kwargs,
199200
)
200-
201-
202-
def truncate_arg_value(value, max_len=1024):
203-
"""Truncate values which are bytes and greater than ``max_len``.
204-
Useful for parameters like "Body" in ``put_object`` operations.
205-
"""
206-
if isinstance(value, bytes) and len(value) > max_len:
207-
return b"..."
208-
209-
return value
210-
211-
212-
def add_span_arg_tags(span, endpoint_name, args, args_names, args_traced):
213-
if endpoint_name not in ["kms", "sts"]:
214-
tags = dict(
215-
(name, value)
216-
for (name, value) in zip(args_names, args)
217-
if name in args_traced
218-
)
219-
tags = flatten_dict(tags)
220-
for key, value in {
221-
k: truncate_arg_value(v)
222-
for k, v in tags.items()
223-
if k not in {"s3": ["params.Body"]}.get(endpoint_name, [])
224-
}.items():
225-
span.set_attribute(key, value)
226-
227-
228-
def flatten_dict(dict_, sep=".", prefix=""):
229-
"""
230-
Returns a normalized dict of depth 1 with keys in order of embedding
231-
"""
232-
# adapted from https://stackoverflow.com/a/19647596
233-
return (
234-
{
235-
prefix + sep + k if prefix else k: v
236-
for kk, vv in dict_.items()
237-
for k, v in flatten_dict(vv, sep, kk).items()
238-
}
239-
if isinstance(dict_, dict)
240-
else {prefix: dict_}
241-
)
242-
243-
244-
def unwrap(obj, attr):
245-
function = getattr(obj, attr, None)
246-
if (
247-
function
248-
and isinstance(function, ObjectProxy)
249-
and hasattr(function, "__wrapped__")
250-
):
251-
setattr(obj, attr, function.__wrapped__)

ext/opentelemetry-ext-botocore/src/opentelemetry/ext/botocore/__init__.py

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,21 @@ def truncate_arg_value(value, max_len=1024):
160160

161161
return value
162162

163+
def flatten_dict(dict_, sep=".", prefix=""):
164+
"""
165+
Returns a normalized dict of depth 1 with keys in order of embedding
166+
"""
167+
# adapted from https://stackoverflow.com/a/19647596
168+
return (
169+
{
170+
prefix + sep + k if prefix else k: v
171+
for kk, vv in dict_.items()
172+
for k, v in flatten_dict(vv, sep, kk).items()
173+
}
174+
if isinstance(dict_, dict)
175+
else {prefix: dict_}
176+
)
177+
163178
if endpoint_name not in {"kms", "sts"}:
164179
tags = dict(
165180
(name, value)
@@ -175,22 +190,6 @@ def truncate_arg_value(value, max_len=1024):
175190
span.set_attribute(key, value)
176191

177192

178-
def flatten_dict(dict_, sep=".", prefix=""):
179-
"""
180-
Returns a normalized dict of depth 1 with keys in order of embedding
181-
"""
182-
# adapted from https://stackoverflow.com/a/19647596
183-
return (
184-
{
185-
prefix + sep + k if prefix else k: v
186-
for kk, vv in dict_.items()
187-
for k, v in flatten_dict(vv, sep, kk).items()
188-
}
189-
if isinstance(dict_, dict)
190-
else {prefix: dict_}
191-
)
192-
193-
194193
def deep_getattr(obj, attr_string, default=None):
195194
"""
196195
Returns the attribute of ``obj`` at the dotted path given by

tox.ini

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -256,11 +256,11 @@ commands_pre =
256256

257257
asyncpg: pip install {toxinidir}/ext/opentelemetry-ext-asyncpg
258258

259+
boto: pip install {toxinidir}/ext/opentelemetry-ext-botocore[test]
259260
boto: pip install {toxinidir}/ext/opentelemetry-ext-boto[test]
260261

261262
flask: pip install {toxinidir}/ext/opentelemetry-ext-flask[test]
262263

263-
botocore: pip install {toxinidir}/opentelemetry-instrumentation
264264
botocore: pip install {toxinidir}/ext/opentelemetry-ext-botocore[test]
265265

266266
dbapi: pip install {toxinidir}/ext/opentelemetry-ext-dbapi[test]

0 commit comments

Comments
 (0)