Skip to content
This repository was archived by the owner on Mar 4, 2026. It is now read-only.

Commit ed13869

Browse files
committed
readable span
1 parent 0a053b4 commit ed13869

1 file changed

Lines changed: 16 additions & 8 deletions

File tree

src/uipath/core/tracing/manager.py

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from typing import Any, Callable, Dict, List, Optional
55

66
from opentelemetry import context, trace
7+
from opentelemetry.sdk.trace import ReadableSpan
78
from opentelemetry.trace import Span, set_span_in_context
89

910
logger = logging.getLogger(__name__)
@@ -18,7 +19,7 @@ def __init__(self):
1819
self._spans: Dict[int, Span] = {} # span_id -> span
1920
self._parent_map: Dict[int, Optional[int]] = {} # span_id -> parent_id
2021

21-
def register_span(self, span: Span) -> None:
22+
def register_span(self, span: ReadableSpan) -> None:
2223
"""Register a span and its parent relationship."""
2324
span_id = span.get_span_context().span_id
2425
parent_id = span.parent.span_id if span.parent else None
@@ -198,9 +199,9 @@ def get_parent_context() -> context.Context:
198199

199200
@staticmethod
200201
def _get_bottom_most_span(
201-
current_span: Span,
202-
external_span: Span,
203-
) -> Span:
202+
current_span: ReadableSpan,
203+
external_span: ReadableSpan,
204+
) -> ReadableSpan:
204205
"""Determine which span is deeper in the ancestor tree.
205206
206207
Args:
@@ -257,21 +258,28 @@ def _get_bottom_most_span(
257258
return external_span
258259

259260
@staticmethod
260-
def get_external_current_span() -> Optional[Span]:
261+
def get_external_current_span() -> Optional[ReadableSpan]:
261262
"""Get the current span from the external provider, if any."""
262263
if UiPathTracingManager._current_span_provider is not None:
263264
try:
264-
return UiPathTracingManager._current_span_provider()
265+
result = UiPathTracingManager._current_span_provider()
266+
return (
267+
result
268+
if result is None or isinstance(result, ReadableSpan)
269+
else None
270+
)
265271
except Exception as e:
266272
logger.warning(f"Error getting current span from provider: {e}")
267273
return None
268274

269275
@staticmethod
270-
def get_ancestor_spans() -> List[Span]:
276+
def get_ancestor_spans() -> List[ReadableSpan]:
271277
"""Get the ancestor spans from the registered provider, if any."""
272278
if UiPathTracingManager._current_span_ancestors_provider is not None:
273279
try:
274-
return UiPathTracingManager._current_span_ancestors_provider()
280+
result = UiPathTracingManager._current_span_ancestors_provider()
281+
282+
return [span for span in result if isinstance(span, ReadableSpan)]
275283
except Exception as e:
276284
logger.warning(f"Error getting ancestor spans from provider: {e}")
277285
return []

0 commit comments

Comments
 (0)