From 987e23c0a8f4863bcd5de97b06b177df83549e56 Mon Sep 17 00:00:00 2001 From: Idan Tene <12184618+idantene@users.noreply.github.com> Date: Mon, 19 May 2025 14:19:58 +0300 Subject: [PATCH 1/2] Add is_valid_event to _streaming.py --- src/openai/_streaming.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/openai/_streaming.py b/src/openai/_streaming.py index 641c3a7a72..72184514e7 100644 --- a/src/openai/_streaming.py +++ b/src/openai/_streaming.py @@ -59,7 +59,7 @@ def __stream__(self) -> Iterator[_T]: if sse.data.startswith("[DONE]"): break - if sse.event is None or sse.event.startswith("response.") or sse.event.startswith('transcript.'): + if sse.event is None or sse.event.startswith("response") or sse.event.startswith('transcript'): data = sse.json() if is_mapping(data) and data.get("error"): message = None @@ -161,7 +161,7 @@ async def __stream__(self) -> AsyncIterator[_T]: if sse.data.startswith("[DONE]"): break - if sse.event is None or sse.event.startswith("response.") or sse.event.startswith('transcript.'): + if sse.event is None or sse.event.startswith("response") or sse.event.startswith('transcript'): data = sse.json() if is_mapping(data) and data.get("error"): message = None @@ -385,6 +385,15 @@ def is_stream_class_type(typ: type) -> TypeGuard[type[Stream[object]] | type[Asy return inspect.isclass(origin) and issubclass(origin, (Stream, AsyncStream)) +def is_valid_event(event: str | None) -> bool: + """Given an event fieldname, checks if it is a response, transcript, or None""" + if event is None: + return True + if event in ("response", "transcript") or event.startswith("response.") or event.startswith("transcript."): + return True + return False + + def extract_stream_chunk_type( stream_cls: type, *, From a1160398572df46ae4a12c57039346820ce71865 Mon Sep 17 00:00:00 2001 From: Idan Tene <12184618+idantene@users.noreply.github.com> Date: Mon, 19 May 2025 14:22:25 +0300 Subject: [PATCH 2/2] Use is_valid_event when yielding _streaming.py --- src/openai/_streaming.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/openai/_streaming.py b/src/openai/_streaming.py index 72184514e7..acb7fe6303 100644 --- a/src/openai/_streaming.py +++ b/src/openai/_streaming.py @@ -59,7 +59,7 @@ def __stream__(self) -> Iterator[_T]: if sse.data.startswith("[DONE]"): break - if sse.event is None or sse.event.startswith("response") or sse.event.startswith('transcript'): + if is_valid_event(sse.event): data = sse.json() if is_mapping(data) and data.get("error"): message = None @@ -161,7 +161,7 @@ async def __stream__(self) -> AsyncIterator[_T]: if sse.data.startswith("[DONE]"): break - if sse.event is None or sse.event.startswith("response") or sse.event.startswith('transcript'): + if is_valid_event(sse.event): data = sse.json() if is_mapping(data) and data.get("error"): message = None