@@ -569,7 +569,7 @@ class StreamedResponse(ABC):
569569 _event_iterator : AsyncIterator [ModelResponseStreamEvent ] | None = field (default = None , init = False )
570570 _usage : RequestUsage = field (default_factory = RequestUsage , init = False )
571571
572- def __aiter__ (self ) -> AsyncIterator [ModelResponseStreamEvent ]: # noqa: C901
572+ def __aiter__ (self ) -> AsyncIterator [ModelResponseStreamEvent ]:
573573 """Stream the response as an async iterable of [`ModelResponseStreamEvent`][pydantic_ai.messages.ModelResponseStreamEvent]s.
574574
575575 This proxies the `_event_iterator()` and emits all events, while also checking for matches
@@ -616,15 +616,7 @@ def part_end_event(next_part: ModelResponsePart | None = None) -> PartEndEvent |
616616 next_part_kind = next_part .part_kind if next_part else None ,
617617 )
618618
619- async def chain_async_and_sync_iters (
620- iter1 : AsyncIterator [ModelResponseStreamEvent ], iter2 : Iterator [ModelResponseStreamEvent ]
621- ) -> AsyncIterator [ModelResponseStreamEvent ]:
622- async for event in iter1 :
623- yield event
624- for event in iter2 :
625- yield event
626-
627- async for event in chain_async_and_sync_iters (iterator , self ._parts_manager .final_flush ()):
619+ async for event in iterator :
628620 if isinstance (event , PartStartEvent ):
629621 if last_start_event :
630622 end_event = part_end_event (event .part )
@@ -642,8 +634,7 @@ async def chain_async_and_sync_iters(
642634
643635 self ._event_iterator = iterator_with_part_end (
644636 iterator_with_final_event (
645- # TODO chain_async_and_sync_iters(iterator, self._parts_manager.final_flush())
646- self ._get_event_iterator ()
637+ chain_async_and_sync_iters (self ._get_event_iterator (), self ._parts_manager .final_flush ())
647638 )
648639 )
649640 return self ._event_iterator
@@ -704,6 +695,16 @@ def timestamp(self) -> datetime:
704695 raise NotImplementedError ()
705696
706697
698+ async def chain_async_and_sync_iters (
699+ iter1 : AsyncIterator [ModelResponseStreamEvent ], iter2 : Iterator [ModelResponseStreamEvent ]
700+ ) -> AsyncIterator [ModelResponseStreamEvent ]:
701+ """Chain an async iterator with a sync iterator."""
702+ async for event in iter1 :
703+ yield event
704+ for event in iter2 :
705+ yield event
706+
707+
707708ALLOW_MODEL_REQUESTS = True
708709"""Whether to allow requests to models.
709710
0 commit comments