Skip to content

Commit 76a7a67

Browse files
committed
fix: deduping code
1 parent 742d77f commit 76a7a67

File tree

1 file changed

+27
-36
lines changed

1 file changed

+27
-36
lines changed

sentry_sdk/integrations/pydantic_ai/patches/graph_nodes.py

Lines changed: 27 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,31 @@ def _patch_graph_nodes():
3131
CallToolsNode -> Handles tool calls (spans created in tool patching)
3232
"""
3333

34+
def _extract_span_data(node, ctx):
35+
# type: (Any, Any) -> tuple[list[Any], Any, Any]
36+
"""Extract common data needed for creating chat spans.
37+
38+
Returns:
39+
Tuple of (messages, model, model_settings)
40+
"""
41+
# Extract model and settings from context
42+
model = None
43+
model_settings = None
44+
if hasattr(ctx, "deps"):
45+
model = getattr(ctx.deps, "model", None)
46+
model_settings = getattr(ctx.deps, "model_settings", None)
47+
48+
# Build full message list: history + current request
49+
messages = []
50+
if hasattr(ctx, "state") and hasattr(ctx.state, "message_history"):
51+
messages.extend(ctx.state.message_history)
52+
53+
current_request = getattr(node, "request", None)
54+
if current_request:
55+
messages.append(current_request)
56+
57+
return messages, model, model_settings
58+
3459
# Patch UserPromptNode to create invoke_agent spans
3560
original_user_prompt_run = UserPromptNode.run
3661

@@ -71,24 +96,7 @@ async def wrapped_user_prompt_run(self, ctx):
7196
@wraps(original_model_request_run)
7297
async def wrapped_model_request_run(self, ctx):
7398
# type: (Any, Any) -> Any
74-
# Extract data from context
75-
model = None
76-
model_settings = None
77-
if hasattr(ctx, "deps"):
78-
model = getattr(ctx.deps, "model", None)
79-
model_settings = getattr(ctx.deps, "model_settings", None)
80-
81-
# Build full message list: history + current request
82-
messages = []
83-
84-
# Add message history
85-
if hasattr(ctx, "state") and hasattr(ctx.state, "message_history"):
86-
messages.extend(ctx.state.message_history)
87-
88-
# Add current request
89-
current_request = getattr(self, "request", None)
90-
if current_request:
91-
messages.append(current_request)
99+
messages, model, model_settings = _extract_span_data(self, ctx)
92100

93101
with ai_client_span(messages, None, model, model_settings) as span:
94102
result = await original_model_request_run(self, ctx)
@@ -115,24 +123,7 @@ def create_wrapped_stream(original_stream_method):
115123
@wraps(original_stream_method)
116124
async def wrapped_model_request_stream(self, ctx):
117125
# type: (Any, Any) -> Any
118-
# Extract data from context
119-
model = None
120-
model_settings = None
121-
if hasattr(ctx, "deps"):
122-
model = getattr(ctx.deps, "model", None)
123-
model_settings = getattr(ctx.deps, "model_settings", None)
124-
125-
# Build full message list: history + current request
126-
messages = []
127-
128-
# Add message history
129-
if hasattr(ctx, "state") and hasattr(ctx.state, "message_history"):
130-
messages.extend(ctx.state.message_history)
131-
132-
# Add current request
133-
current_request = getattr(self, "request", None)
134-
if current_request:
135-
messages.append(current_request)
126+
messages, model, model_settings = _extract_span_data(self, ctx)
136127

137128
# Create chat span for streaming request
138129
import sentry_sdk

0 commit comments

Comments
 (0)