From 4a9b095c0ab5bd7729cf2b4ae34b4f87d70d5f5d Mon Sep 17 00:00:00 2001 From: xlyoung Date: Thu, 4 Jun 2026 11:45:44 +0800 Subject: [PATCH] fix: handle null response.output in parse_response The parse_response() function iterates response.output without checking for None. The chatgpt.com Codex backend sometimes sends response.output: null in the consolidated response.completed event, even when valid response.output_item.done events were streamed earlier. This causes TypeError: 'NoneType' object is not iterable, killing the entire stream before the consumer can read the deltas. Fix: use (response.output or []) to handle null output gracefully. Fixes #3325 --- src/openai/lib/_parsing/_responses.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/openai/lib/_parsing/_responses.py b/src/openai/lib/_parsing/_responses.py index 8853a0749f..9a2914dcc0 100644 --- a/src/openai/lib/_parsing/_responses.py +++ b/src/openai/lib/_parsing/_responses.py @@ -58,7 +58,7 @@ def parse_response( ) -> ParsedResponse[TextFormatT]: output_list: List[ParsedResponseOutputItem[TextFormatT]] = [] - for output in response.output: + for output in (response.output or []): if output.type == "message": content_list: List[ParsedContent[TextFormatT]] = [] for item in output.content: