Skip to content

Commit 40d1b91

Browse files
authored
Add ID generation methods to TraceProvider (#729)
1 parent 2002dd9 commit 40d1b91

File tree

4 files changed

+37
-11
lines changed

4 files changed

+37
-11
lines changed

src/agents/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@
9292
handoff_span,
9393
mcp_tools_span,
9494
set_trace_processors,
95+
set_trace_provider,
9596
set_tracing_disabled,
9697
set_tracing_export_api_key,
9798
speech_group_span,
@@ -221,6 +222,7 @@ def enable_verbose_stdout_logging():
221222
"guardrail_span",
222223
"handoff_span",
223224
"set_trace_processors",
225+
"set_trace_provider",
224226
"set_tracing_disabled",
225227
"speech_group_span",
226228
"transcription_span",

src/agents/tracing/__init__.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
)
1919
from .processor_interface import TracingProcessor
2020
from .processors import default_exporter, default_processor
21-
from .setup import GLOBAL_TRACE_PROVIDER
21+
from .setup import GLOBAL_TRACE_PROVIDER, set_trace_provider
2222
from .span_data import (
2323
AgentSpanData,
2424
CustomSpanData,
@@ -49,6 +49,7 @@
4949
"handoff_span",
5050
"response_span",
5151
"set_trace_processors",
52+
"set_trace_provider",
5253
"set_tracing_disabled",
5354
"trace",
5455
"Trace",

src/agents/tracing/setup.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import os
44
import threading
5+
import uuid
6+
from datetime import datetime, timezone
57
from typing import Any
68

79
from ..logger import logger
@@ -118,6 +120,22 @@ def set_disabled(self, disabled: bool) -> None:
118120
"""
119121
self._disabled = disabled
120122

123+
def time_iso(self) -> str:
124+
"""Return the current time in ISO 8601 format."""
125+
return datetime.now(timezone.utc).isoformat()
126+
127+
def gen_trace_id(self) -> str:
128+
"""Generate a new trace ID."""
129+
return f"trace_{uuid.uuid4().hex}"
130+
131+
def gen_span_id(self) -> str:
132+
"""Generate a new span ID."""
133+
return f"span_{uuid.uuid4().hex[:24]}"
134+
135+
def gen_group_id(self) -> str:
136+
"""Generate a new group ID."""
137+
return f"group_{uuid.uuid4().hex[:24]}"
138+
121139
def create_trace(
122140
self,
123141
name: str,
@@ -212,3 +230,9 @@ def shutdown(self) -> None:
212230

213231

214232
GLOBAL_TRACE_PROVIDER = TraceProvider()
233+
234+
235+
def set_trace_provider(provider: TraceProvider) -> None:
236+
"""Set the global trace provider used by tracing utilities."""
237+
global GLOBAL_TRACE_PROVIDER
238+
GLOBAL_TRACE_PROVIDER = provider

src/agents/tracing/util.py

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,21 @@
1-
import uuid
2-
from datetime import datetime, timezone
1+
from .setup import GLOBAL_TRACE_PROVIDER
32

43

54
def time_iso() -> str:
6-
"""Returns the current time in ISO 8601 format."""
7-
return datetime.now(timezone.utc).isoformat()
5+
"""Return the current time in ISO 8601 format."""
6+
return GLOBAL_TRACE_PROVIDER.time_iso()
87

98

109
def gen_trace_id() -> str:
11-
"""Generates a new trace ID."""
12-
return f"trace_{uuid.uuid4().hex}"
10+
"""Generate a new trace ID."""
11+
return GLOBAL_TRACE_PROVIDER.gen_trace_id()
1312

1413

1514
def gen_span_id() -> str:
16-
"""Generates a new span ID."""
17-
return f"span_{uuid.uuid4().hex[:24]}"
15+
"""Generate a new span ID."""
16+
return GLOBAL_TRACE_PROVIDER.gen_span_id()
1817

1918

2019
def gen_group_id() -> str:
21-
"""Generates a new group ID."""
22-
return f"group_{uuid.uuid4().hex[:24]}"
20+
"""Generate a new group ID."""
21+
return GLOBAL_TRACE_PROVIDER.gen_group_id()

0 commit comments

Comments
 (0)