Skip to content

Commit baa72fe

Browse files
committed
docs: add missing docstrings for span processor
1 parent 4b85acd commit baa72fe

File tree

1 file changed

+39
-10
lines changed
  • instrumentation-genai/opentelemetry-instrumentation-openai-agents-v2/src/opentelemetry/instrumentation/openai_agents

1 file changed

+39
-10
lines changed

instrumentation-genai/opentelemetry-instrumentation-openai-agents-v2/src/opentelemetry/instrumentation/openai_agents/span_processor.py

Lines changed: 39 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,8 @@ def _enum_values(enum_cls) -> dict[str, str]:
8080

8181

8282
class GenAIProvider:
83+
"""String constants for known GenAI provider names."""
84+
8385
OPENAI = _PROVIDER_VALUES["OPENAI"]
8486
GCP_GEN_AI = _PROVIDER_VALUES["GCP_GEN_AI"]
8587
GCP_VERTEX_AI = _PROVIDER_VALUES["GCP_VERTEX_AI"]
@@ -103,6 +105,8 @@ class GenAIProvider:
103105

104106

105107
class GenAIOperationName:
108+
"""Normalized GenAI operation names used by the processor."""
109+
106110
CHAT = _OPERATION_VALUES["CHAT"]
107111
GENERATE_CONTENT = _OPERATION_VALUES["GENERATE_CONTENT"]
108112
TEXT_COMPLETION = _OPERATION_VALUES["TEXT_COMPLETION"]
@@ -129,13 +133,17 @@ class GenAIOperationName:
129133

130134

131135
class GenAIOutputType:
136+
"""Supported GenAI output types normalized by the processor."""
137+
132138
TEXT = _OUTPUT_VALUES["TEXT"]
133139
JSON = _OUTPUT_VALUES["JSON"]
134140
IMAGE = _OUTPUT_VALUES["IMAGE"]
135141
SPEECH = _OUTPUT_VALUES["SPEECH"]
136142

137143

138144
class GenAIToolType:
145+
"""Canonical tool type values for tool spans."""
146+
139147
FUNCTION = "function"
140148
EXTENSION = "extension"
141149
DATASTORE = "datastore"
@@ -144,13 +152,16 @@ class GenAIToolType:
144152

145153

146154
class GenAIEvaluationAttributes:
155+
"""Attribute names used to describe GenAI evaluation metadata."""
156+
147157
NAME = "gen_ai.evaluation.name"
148158
SCORE_VALUE = "gen_ai.evaluation.score.value"
149159
SCORE_LABEL = "gen_ai.evaluation.score.label"
150160
EXPLANATION = "gen_ai.evaluation.explanation"
151161

152162

153163
def _attr(name: str, fallback: str) -> str:
164+
"""Return semantic attribute name with fallback for older SDK versions."""
154165
return getattr(GenAIAttributes, name, fallback)
155166

156167

@@ -308,13 +319,15 @@ class ContentCaptureMode(Enum):
308319

309320
@property
310321
def capture_in_span(self) -> bool:
322+
"""Return True when content should be captured on span attributes."""
311323
return self in (
312324
ContentCaptureMode.SPAN_ONLY,
313325
ContentCaptureMode.SPAN_AND_EVENT,
314326
)
315327

316328
@property
317329
def capture_in_event(self) -> bool:
330+
"""Return True when content should be captured on span events."""
318331
return self in (
319332
ContentCaptureMode.EVENT_ONLY,
320333
ContentCaptureMode.SPAN_AND_EVENT,
@@ -451,16 +464,29 @@ def __init__(
451464
"""Initialize processor with metrics support.
452465
453466
Args:
454-
tracer: Optional OpenTelemetry tracer
455-
system_name: Provider name (openai/azure.ai.inference/etc.)
456-
include_sensitive_data: Include model/tool IO when True
457-
base_url: API endpoint for server.address/port
458-
emit_legacy: Also emit deprecated attribute names
459-
agent_name: Name of the agent (can be overridden by env var)
460-
agent_id: ID of the agent (can be overridden by env var)
461-
agent_description: Description of the agent (can be overridden by env var)
462-
server_address: Server address (can be overridden by env var or base_url)
463-
server_port: Server port (can be overridden by env var or base_url)
467+
tracer: Optional OpenTelemetry tracer.
468+
system_name: Provider name (openai/azure.ai.inference/etc.).
469+
include_sensitive_data: Include model/tool IO when True.
470+
content_mode: Control where message content is captured.
471+
base_url: API endpoint for server.address/port.
472+
emit_legacy: Retained for compatibility; legacy emission disabled.
473+
agent_name: Name of the agent (can be overridden by env var).
474+
agent_id: ID of the agent (can be overridden by env var).
475+
agent_description: Description of the agent (can be overridden by
476+
env var).
477+
server_address: Server address (can be overridden by env var or
478+
base_url).
479+
server_port: Server port (can be overridden by env var or base_url).
480+
metrics_enabled: Enable GenAI metrics when True.
481+
agent_name_default: Fallback agent name when span data omits one.
482+
agent_id_default: Fallback agent id when span data omits one.
483+
agent_description_default: Fallback agent description when span data
484+
omits one.
485+
base_url_default: Default API endpoint when not supplied explicitly.
486+
server_address_default: Default server address when not supplied
487+
explicitly.
488+
server_port_default: Default server port when not supplied
489+
explicitly.
464490
"""
465491
self._tracer = tracer
466492
self.system_name = normalize_provider(system_name) or system_name
@@ -1068,6 +1094,7 @@ def _build_content_payload(self, span: Span[Any]) -> ContentPayload:
10681094
elif _is_instance_of(span_data, FunctionSpanData) and capture_tools:
10691095

10701096
def _serialize_tool_value(value: Any) -> Optional[str]:
1097+
"""Serialize tool payloads while preserving JSON structures."""
10711098
if value is None:
10721099
return None
10731100
if isinstance(value, (dict, list)):
@@ -1783,6 +1810,7 @@ def _merge_content_sequence(
17831810
return result
17841811

17851812
def _clone_message(self, message: Any) -> Any:
1813+
"""Return a deep copy of normalized message content."""
17861814
if isinstance(message, dict):
17871815
return {
17881816
key: self._clone_message(value)
@@ -1795,6 +1823,7 @@ def _clone_message(self, message: Any) -> Any:
17951823
return message
17961824

17971825
def _is_placeholder_message(self, message: Any) -> bool:
1826+
"""Return True when message only contains redacted placeholder text."""
17981827
if not isinstance(message, dict):
17991828
return False
18001829
parts = message.get("parts")

0 commit comments

Comments
 (0)