Skip to content

fix(api): prioritize Python request routing fields - #4014

Merged
jbeckwith-oai merged 1 commit into
mainfrom
castiron/promotions/pr-160
Oct 2, 2026
Merged

jbeckwith-oai merged 1 commit into
mainfrom
castiron/promotions/pr-160

Conversation

@jbeckwith-oai

Copy link
Copy Markdown
Contributor

Summary

Prioritizes model, stream, and service_tier in Python JSON request bodies, placing them before potentially large input or messages fields.

Changes

  • Applies only to methods with one unambiguous application/json request body.
  • Preserves the relative order and values of all other request-body fields.
  • Leaves public method signatures and omitted-field behavior unchanged.
  • Leaves multipart, form-encoded, and mixed-media requests unchanged.
  • Shortens the SessionTurnError error-category description.

Castiron-Internal-PR: openai/openai-python-internal#160
Castiron-Source-SHA: 656e88c51bc2bd41723d286f7330123ea3501834
Castiron-Public-Base-SHA: 93bd2aa
@github-actions

github-actions Bot commented Oct 2, 2026 •

Copy link
Copy Markdown
Contributor

Castiron custom code

Evaluated main: 93bd2aa0fe0bb6658d510551f2670b231749385f.

✅ No new custom-code files detected.

49 mixed files remain; 0 existing customizations changed; 2 customizations removed; 7 generated baselines changed.

Compared 93bd2aa0fe0b → f61782398f3e. Generated baselines verified.

File Result Current custom patch
src/openai/resources/beta/agents/sessions/sessions.py Generated baseline changed +81 / −11
src/openai/resources/beta/responses/responses.py Generated baseline changed +140 / −107
src/openai/resources/beta/threads/runs/runs.py Generated baseline changed +1290 / −181
src/openai/resources/beta/threads/threads.py Generated baseline changed +390 / −7
src/openai/resources/chat/completions/completions.py Generated baseline changed +603 / −1
src/openai/resources/embeddings.py Generated baseline changed +27 / −21
src/openai/resources/responses/responses.py Generated baseline changed +1026 / −137
src/openai/types/beta/session_turn_error.py Customization removed None
tests/api_resources/beta/agents/vaults/test_credentials.py Customization removed None
42 existing customizations unchanged
  • api.md
  • scripts/castiron/README.md
  • scripts/castiron/custom_code_report.py
  • scripts/castiron/test_custom_code_report.py
  • src/openai/init.py
  • src/openai/_client.py
  • src/openai/resources/audio/transcriptions.py
  • src/openai/resources/audio/translations.py
  • src/openai/resources/beta/agents/environments/files.py
  • src/openai/resources/beta/agents/sessions/artifacts.py
  • src/openai/resources/beta/beta.py
  • src/openai/resources/files.py
  • src/openai/resources/live/forks.py
  • src/openai/resources/live/live.py
  • src/openai/resources/live/sideband.py
  • src/openai/resources/realtime/api.md
  • src/openai/resources/realtime/realtime.py
  • src/openai/resources/uploads/uploads.py
  • src/openai/resources/vector_stores/file_batches.py
  • src/openai/resources/vector_stores/files.py
  • src/openai/resources/videos.py
  • src/openai/resources/webhooks/init.py
  • src/openai/resources/webhooks/webhooks.py
  • src/openai/types/beta/agent_session_message.py
  • src/openai/types/chat/init.py
  • src/openai/types/chat/chat_completion_message_tool_call.py
  • src/openai/types/fine_tuning/fine_tuning_job_integration.py
  • src/openai/types/realtime/conversation_item_input_audio_transcription_delta_event.py
  • src/openai/types/realtime/realtime_error_event.py
  • src/openai/types/responses/init.py
  • src/openai/types/responses/response.py
  • src/openai/types/responses/response_function_web_search.py
  • src/openai/types/responses/response_function_web_search_param.py
  • src/openai/types/responses/responses_client_event.py
  • src/openai/types/responses/responses_client_event_param.py
  • src/openai/types/responses/tool.py
  • src/openai/types/responses/tool_param.py
  • src/openai/types/webhooks/init.py
  • src/openai/types/webhooks/live_call_incoming_webhook_event.py
  • src/openai/types/webhooks/unwrap_webhook_event.py

2 more in the full report.

A changed generated baseline means this report cannot reliably identify which handwritten lines changed.

Inspect the custom-code diff

Download the exact patch produced by this run (requires repository access):

gh run download 36963754998 --repo openai/openai-python \
  --name castiron-custom-code-36963754998-1 --dir /tmp/castiron-custom-code-36963754998-1
git apply --stat /tmp/castiron-custom-code-36963754998-1/custom-code.patch
cat /tmp/castiron-custom-code-36963754998-1/custom-code.patch

Or reproduce it from an SDK checkout containing the vendored reporter:

git fetch --no-tags origin 93bd2aa0fe0bb6658d510551f2670b231749385f f61782398f3eb73d8f77101ad418de4edcabc088
python3 scripts/castiron/custom_code_report.py report \
  --base 93bd2aa0fe0bb6658d510551f2670b231749385f \
  --head f61782398f3eb73d8f77101ad418de4edcabc088 --fetch --require-head-hash --public \
  --out /tmp/castiron-custom-code-f61782398f3e
cat /tmp/castiron-custom-code-f61782398f3e/custom-code.patch

This is the current full custom patch for mixed files, not an attribution of only the handwritten lines changed by this PR.

Full report and patch

@dpiet-oai dpiet-oai left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed all 19 changed files at f617823 and the surrounding sync/async transformation, omission, extra-body merge, and serialization paths. No actionable findings. The request-body changes preserve existing values and non-routing field order while placing routing fields first. The remaining changes cover generation metadata, the error-description shortening, and optional-metadata test cleanup.

Static review only; I did not run tests or independently reproduce the reported transport assertions.

@jbeckwith-oai
jbeckwith-oai marked this pull request as ready for review October 2, 2026 04:14
@jbeckwith-oai
jbeckwith-oai requested a review from a team as a code owner October 2, 2026 04:15
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 2, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-02T04:17:55.217331Z f617823 Draft marked ready
🔒 Security Review ✅ Completed 2026-10-02T04:17:23.085692Z f617823 Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@openai-sdks

openai-sdks Bot commented Oct 2, 2026 •

Copy link
Copy Markdown
Contributor

OkTest Summary

✅ 236/236 SDK tests passed in 10.928s for Python SDK PR #4014.

Test results — 42 files
Test Result Time
tests/chat-completions-complex-body.test.ts ✅ Passed 209ms
tests/chat-completions-create.test.ts ✅ Passed 253ms
tests/chat-completions-stream.test.ts ✅ Passed 281ms
tests/files-content-binary.test.ts ✅ Passed 174ms
tests/files-create-multipart.test.ts ✅ Passed 205ms
tests/files-list-pagination.test.ts ✅ Passed 167ms
tests/initialize-config.test.ts ✅ Passed 126ms
tests/instance-isolation.test.ts ✅ Passed 148ms
tests/models-list.test.ts ✅ Passed 192ms
tests/responses-background-lifecycle.test.ts ✅ Passed 160ms
tests/responses-body-method-errors.test.ts ✅ Passed 398ms
tests/responses-cancel-timeout.test.ts ✅ Passed 252ms
tests/responses-cancel.test.ts ✅ Passed 166ms
tests/responses-compact-retries.test.ts ✅ Passed 289ms
tests/responses-compact.test.ts ✅ Passed 221ms
tests/responses-create-advanced-stream.test.ts ✅ Passed 140ms
tests/responses-create-advanced.test.ts ✅ Passed 230ms
tests/responses-create-disconnect.test.ts ✅ Passed 1.207s
tests/responses-create-errors.test.ts ✅ Passed 190ms
tests/responses-create-malformed-api-responses.test.ts ✅ Passed 490ms
tests/responses-create-retries.test.ts ✅ Passed 212ms
tests/responses-create-stream-failures.test.ts ✅ Passed 189ms
tests/responses-create-stream-timeout.test.ts ✅ Passed 231ms
tests/responses-create-stream-wire.test.ts ✅ Passed 3.248s
tests/responses-create-stream.test.ts ✅ Passed 463ms
tests/responses-create-terminal-states.test.ts ✅ Passed 203ms
tests/responses-create-timeout.test.ts ✅ Passed 269ms
tests/responses-create.test.ts ✅ Passed 265ms
tests/responses-delete.test.ts ✅ Passed 225ms
tests/responses-input-items-errors.test.ts ✅ Passed 437ms
tests/responses-input-items-list.test.ts ✅ Passed 312ms
tests/responses-input-items-options.test.ts ✅ Passed 408ms
tests/responses-input-tokens-count-timeout.test.ts ✅ Passed 306ms
tests/responses-input-tokens-count.test.ts ✅ Passed 187ms
tests/responses-malformed-inputs.test.ts ✅ Passed 2.282s
tests/responses-not-found-errors.test.ts ✅ Passed 276ms
tests/responses-parse.test.ts ✅ Passed 238ms
tests/responses-retrieve-retries.test.ts ✅ Passed 249ms
tests/responses-retrieve.test.ts ✅ Passed 207ms
tests/responses-stored-method-errors.test.ts ✅ Passed 541ms
tests/retry-behavior.test.ts ✅ Passed 3.228s
tests/sdk-error-shape.test.ts ✅ Passed 335ms

View OkTest run #36963723862

SDK merge (c20f5298dac3) · head (f61782398f3e) · base (93bd2aa0fe0b) · OkTest (92ff272954a1)

@markstuart-oai markstuart-oai left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed all 19 changed files at f617823. No actionable findings. The 40 request-dictionary reorderings preserve values, omitted-field behavior and the relative order of other fields; the existing sync/async transform and JSON serialization paths preserve the new routing-field order. Public signatures and multipart/form handling are unchanged. The optional-metadata test cleanup retains explicit-empty coverage.

Source-only review; I did not run local tests or repeat the reported transport assertions. Hosted build, lint, Python 3.10/3.14, HTTPX2 and Castiron budget checks passed on this head. A newer baseline-consistency run was still in progress when checked.

@jbeckwith-oai
jbeckwith-oai added this pull request to the merge queue Oct 2, 2026

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: f61782398f

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/openai/resources/responses/responses.py
Merged via the queue into main with commit ffcc4c4 Oct 2, 2026
28 checks passed
@jbeckwith-oai
jbeckwith-oai deleted the castiron/promotions/pr-160 branch October 2, 2026 04:21
@openai-sdks openai-sdks Bot mentioned this pull request Oct 2, 2026
gh-actions-shared Bot pushed a commit to xf-qubit/openai-python that referenced this pull request Oct 2, 2026
Automated Release PR
---


##
[3.24.0](openai/openai-python@v3.23.0...v3.24.0)
(2026-10-02)


### Features

* **api:** add custom voice creation and agent session events
([openai#4013](openai#4013))
([e5de2e5](openai@e5de2e5))


### Bug Fixes

* **api:** prioritize Python request routing fields
([openai#4014](openai#4014))
([ffcc4c4](openai@ffcc4c4))
* **api:** prioritize routing fields in parse helpers
([openai#4016](openai#4016))
([ba53a10](openai@ba53a10))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: openai-sdks[bot] <284451331+openai-sdks[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants