From 4ab3773e0333faf69503ffc14230cfe8cb0fc5f5 Mon Sep 17 00:00:00 2001 From: nightcityblade Date: Fri, 3 Jul 2026 11:26:42 +0800 Subject: [PATCH] fix: guard response parsing for null output --- src/openai/lib/_parsing/_responses.py | 2 +- tests/lib/test_responses_parsing.py | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 tests/lib/test_responses_parsing.py diff --git a/src/openai/lib/_parsing/_responses.py b/src/openai/lib/_parsing/_responses.py index 232718cef6..6fdadf9379 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: diff --git a/tests/lib/test_responses_parsing.py b/tests/lib/test_responses_parsing.py new file mode 100644 index 0000000000..e03d20e996 --- /dev/null +++ b/tests/lib/test_responses_parsing.py @@ -0,0 +1,17 @@ +from __future__ import annotations + +from openai.lib._parsing._responses import parse_response +from openai.types.responses.response import Response +from openai import NOT_GIVEN + + +def test_parse_response_handles_none_output() -> None: + response = Response.model_construct(output=None) + + parsed = parse_response( + text_format=NOT_GIVEN, + input_tools=NOT_GIVEN, + response=response, + ) + + assert parsed.output == []