diff --git a/packages/uipath-platform/pyproject.toml b/packages/uipath-platform/pyproject.toml index c5cdf13ee..ba5634ef1 100644 --- a/packages/uipath-platform/pyproject.toml +++ b/packages/uipath-platform/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "uipath-platform" -version = "0.1.17" +version = "0.1.18" description = "HTTP client library for programmatic access to UiPath Platform" readme = { file = "README.md", content-type = "text/markdown" } requires-python = ">=3.11" diff --git a/packages/uipath-platform/src/uipath/platform/common/_base_service.py b/packages/uipath-platform/src/uipath/platform/common/_base_service.py index 41b90011d..d236e4ef5 100644 --- a/packages/uipath-platform/src/uipath/platform/common/_base_service.py +++ b/packages/uipath-platform/src/uipath/platform/common/_base_service.py @@ -11,6 +11,8 @@ HTTPStatusError, Response, ) +from opentelemetry import trace +from opentelemetry.trace import format_span_id, format_trace_id from tenacity import ( retry, retry_if_exception, @@ -61,6 +63,19 @@ def _get_caller_component() -> str: return "" +_TRACE_PARENT_HEADER = "x-uipath-traceparent-id" + + +def _inject_trace_context(headers: dict[str, str]) -> None: + """Inject UiPath trace context header from the active OTEL span.""" + span = trace.get_current_span() + ctx = span.get_span_context() + if ctx.trace_id and ctx.span_id: + headers[_TRACE_PARENT_HEADER] = ( + f"00-{format_trace_id(ctx.trace_id)}-{format_span_id(ctx.span_id)}-01" + ) + + class BaseService: def __init__( self, config: UiPathApiConfig, execution_context: UiPathExecutionContext @@ -106,6 +121,7 @@ def request( kwargs.setdefault("headers", {}) kwargs["headers"][HEADER_USER_AGENT] = user_agent_value(specific_component) + _inject_trace_context(kwargs["headers"]) override = resolve_service_url(str(url)) if override: @@ -150,6 +166,7 @@ async def request_async( kwargs["headers"][HEADER_USER_AGENT] = user_agent_value( self._specific_component ) + _inject_trace_context(kwargs["headers"]) override = resolve_service_url(str(url)) if override: diff --git a/packages/uipath-platform/uv.lock b/packages/uipath-platform/uv.lock index 4360ed46b..0ea4a2f63 100644 --- a/packages/uipath-platform/uv.lock +++ b/packages/uipath-platform/uv.lock @@ -1088,7 +1088,7 @@ dev = [ [[package]] name = "uipath-platform" -version = "0.1.17" +version = "0.1.18" source = { editable = "." } dependencies = [ { name = "httpx" }, diff --git a/packages/uipath/uv.lock b/packages/uipath/uv.lock index 41ecc6a40..77434aaa8 100644 --- a/packages/uipath/uv.lock +++ b/packages/uipath/uv.lock @@ -2682,7 +2682,7 @@ dev = [ [[package]] name = "uipath-platform" -version = "0.1.17" +version = "0.1.18" source = { editable = "../uipath-platform" } dependencies = [ { name = "httpx" },