Skip to content

Commit 697ed9f

Browse files
committed
make it better
1 parent 26fe6fc commit 697ed9f

File tree

1 file changed

+26
-41
lines changed

1 file changed

+26
-41
lines changed

sentry_sdk/tracing_utils.py

Lines changed: 26 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -943,6 +943,20 @@ def _sample_rand_range(parent_sampled, sample_rate):
943943
return sample_rate, 1.0
944944

945945

946+
def _get_value(source, key):
947+
# type: (Any, str) -> Optional[Any]
948+
value = None
949+
if isinstance(source, dict):
950+
value = source.get(key)
951+
else:
952+
if hasattr(source, key):
953+
try:
954+
value = getattr(source, key)
955+
except Exception:
956+
value = None
957+
return value
958+
959+
946960
def _get_span_name(template, name, kwargs=None):
947961
# type: (Union[str, SPANTEMPLATE], str, Optional[dict[str, Any]]) -> str
948962
"""
@@ -1048,24 +1062,11 @@ def _get_usage_attributes(usage):
10481062
"""
10491063
attributes = {}
10501064

1051-
def _get_value(source, key):
1052-
# type: (Any, str) -> Optional[int]
1053-
value = None
1054-
if isinstance(source, dict):
1055-
value = source.get(key)
1056-
else:
1057-
if hasattr(source, key):
1058-
try:
1059-
value = getattr(source, key)
1060-
except Exception:
1061-
value = None
1062-
return value if isinstance(value, int) else None
1063-
10641065
def _set_from_keys(attribute, keys):
10651066
# type: (str, tuple[str, ...]) -> None
10661067
for key in keys:
10671068
value = _get_value(usage, key)
1068-
if value is not None:
1069+
if value is not None and isinstance(value, int):
10691070
attributes[attribute] = value
10701071

10711072
_set_from_keys(
@@ -1095,40 +1096,24 @@ def _get_output_attributes(template, send_pii, result):
10951096
with capture_internal_exceptions():
10961097
# Usage from result, result.usage, and result.metadata.usage
10971098
usage_candidates = [result]
1098-
if isinstance(result, dict):
1099-
usage_candidates.append(result.get("usage"))
1100-
meta = result.get("metadata")
1101-
else:
1102-
usage_candidates.append(getattr(result, "usage", None))
1103-
meta = getattr(result, "metadata", None)
1099+
usage = _get_value(result, "usage")
1100+
usage_candidates.append(usage)
11041101

1105-
if isinstance(meta, dict):
1106-
usage_candidates.append(meta.get("usage"))
1107-
elif meta is not None:
1108-
usage_candidates.append(getattr(meta, "usage", None))
1102+
meta = _get_value(usage, "metadata")
1103+
usage = _get_value(meta, "usage")
1104+
usage_candidates.append(usage)
11091105

11101106
for usage_candidate in usage_candidates:
11111107
if usage_candidate is not None:
11121108
attributes.update(_get_usage_attributes(usage_candidate))
11131109

11141110
# Response model
1115-
model_name = None
1116-
if isinstance(result, dict):
1117-
val = result.get("model")
1118-
if isinstance(val, str):
1119-
model_name = val
1120-
val = result.get("model_name")
1121-
if isinstance(val, str):
1122-
model_name = val
1123-
else:
1124-
val = getattr(result, "model", None)
1125-
if isinstance(val, str):
1126-
model_name = val
1127-
val = getattr(result, "model_name", None)
1128-
if isinstance(val, str):
1129-
model_name = val
1130-
1131-
if model_name is not None:
1111+
model_name = _get_value(result, "model")
1112+
if model_name is not None and isinstance(model_name, str):
1113+
attributes[SPANDATA.GEN_AI_RESPONSE_MODEL] = model_name
1114+
1115+
model_name = _get_value(result, "model_name")
1116+
if model_name is not None and isinstance(model_name, str):
11321117
attributes[SPANDATA.GEN_AI_RESPONSE_MODEL] = model_name
11331118

11341119
# Tool output

0 commit comments

Comments
 (0)