Normalize one OpenTelemetry ReadableSpan into a :class:SpanData.
Source code in autogen/beta/eval/sources/_otel.py
| def readable_span_to_data(span: ReadableSpan) -> SpanData:
"""Normalize one OpenTelemetry ``ReadableSpan`` into a :class:`SpanData`."""
context = span.context
parent = span.parent
status = span.status.status_code.name if span.status is not None else "UNSET"
return SpanData(
name=span.name or "",
span_id=format(context.span_id, "016x") if context is not None else "",
parent_id=format(parent.span_id, "016x") if parent is not None else None,
start_ns=span.start_time or 0,
end_ns=span.end_time or 0,
attributes=dict(span.attributes or {}),
status=status,
events=tuple(SpanEvent(e.name, dict(e.attributes or {})) for e in span.events),
)
|