Skip to content

Commit 3d8c5bb

Browse files
committed
fix: don't yield final result an extra time
1 parent 19db815 commit 3d8c5bb

File tree

1 file changed

+7
-4
lines changed

1 file changed

+7
-4
lines changed

pydantic_ai_slim/pydantic_ai/result.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -114,16 +114,19 @@ async def stream_text(self, *, delta: bool = False, debounce_by: float | None =
114114
async for text in self._stream_response_text(delta=True, debounce_by=debounce_by):
115115
yield text
116116
else:
117-
text: str | None = None
117+
last_text: str | None = None
118118
async for text in self._stream_response_text(delta=False, debounce_by=debounce_by):
119119
for validator in self._output_validators:
120120
text = await validator.validate(text, self._run_ctx, partial=True) # pragma: no cover
121+
last_text = text
121122
yield text
122123

123-
if text is not None:
124+
if last_text is not None:
125+
validated_text = last_text
124126
for validator in self._output_validators:
125-
text = await validator.validate(text, self._run_ctx)
126-
yield text
127+
validated_text = await validator.validate(validated_text, self._run_ctx)
128+
if validated_text != last_text:
129+
yield validated_text
127130

128131
# TODO (v2): Drop in favor of `response` property
129132
def get(self) -> _messages.ModelResponse:

0 commit comments

Comments
 (0)