Mark abstract image/vision generators as real async generators
`ImageGenService.run_image_gen` and `VisionService.run_vision` were declared `async def ... -> AsyncGenerator[Frame, None]` with `pass` bodies. Without a `yield` anywhere in the body, Python treats the function as a coroutine returning an `AsyncGenerator`, not as an async generator itself, so callers got a coroutine where they expected an iterator. Add `raise NotImplementedError; yield` so the body contains a yield (making this a real async generator) while still raising cleanly if a subclass ever calls `super().run_*` by mistake.
This commit is contained in:
@@ -76,7 +76,6 @@
|
||||
"src/pipecat/services/heygen/client.py",
|
||||
"src/pipecat/services/heygen/video.py",
|
||||
"src/pipecat/services/hume/tts.py",
|
||||
"src/pipecat/services/image_service.py",
|
||||
"src/pipecat/services/inworld/realtime/llm.py",
|
||||
"src/pipecat/services/inworld/tts.py",
|
||||
"src/pipecat/services/kokoro/tts.py",
|
||||
@@ -115,7 +114,6 @@
|
||||
"src/pipecat/services/tavus/video.py",
|
||||
"src/pipecat/services/tts_service.py",
|
||||
"src/pipecat/services/ultravox/llm.py",
|
||||
"src/pipecat/services/vision_service.py",
|
||||
"src/pipecat/services/websocket_service.py",
|
||||
"src/pipecat/services/whisper/stt.py",
|
||||
"src/pipecat/services/xai/realtime/events.py",
|
||||
|
||||
@@ -57,7 +57,8 @@ class ImageGenService(AIService):
|
||||
Frame: Frames containing the generated image (typically ImageRawFrame
|
||||
or URLImageRawFrame).
|
||||
"""
|
||||
pass
|
||||
raise NotImplementedError
|
||||
yield # pragma: no cover
|
||||
|
||||
async def process_frame(self, frame: Frame, direction: FrameDirection):
|
||||
"""Process frames for image generation.
|
||||
|
||||
@@ -59,7 +59,8 @@ class VisionService(AIService):
|
||||
Frame: Frames containing the vision analysis results, typically TextFrame
|
||||
objects with descriptions or answers.
|
||||
"""
|
||||
pass
|
||||
raise NotImplementedError
|
||||
yield # pragma: no cover
|
||||
|
||||
async def process_frame(self, frame: Frame, direction: FrameDirection):
|
||||
"""Process frames, handling vision image frames for analysis.
|
||||
|
||||
Reference in New Issue
Block a user