Fix unreachable dead code in error event handling #2808
+110
−30
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
_streaming.pywhere theerrorevent check was incorrectly placed inside thethread.*event handling blockProblem
In
src/openai/_streaming.py, the check forsse.event == "error"was placed inside theif sse.event.startswith("thread.")block. Since"error"doesn't start with"thread.", this condition could never be true, making lines 67-79 (sync) and 170-182 (async) unreachable dead code.This was identified as a regression from a previous refactoring commit.
Solution
Moved the error event check to be before the
thread.*check, so it's evaluated independently:Also simplified the error handling to correctly parse the
ErrorObjectstructure from the Assistants API (which hasmessagedirectly indata, not nested underdata.error).Test plan
test_error_event_raises_api_error- verifies error events raise APIError with correct messagetest_error_event_with_missing_message- verifies default message is used when message field is missingFixes #2796
🤖 Generated with Claude Code