Skip to content

chore(deps): bump httpx2 from 2.7.0 to 2.12.0 in the python-security group across 1 directory - #3823

Merged
marcuswood-oai merged 6 commits into
mainfrom
dependabot/uv/python-security-51f1bad80e
Sep 21, 2026
Merged

marcuswood-oai merged 6 commits into
mainfrom
dependabot/uv/python-security-51f1bad80e

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Sep 8, 2026 •

Copy link
Copy Markdown
Contributor

Raise the published HTTPX2 minimum to 2.12.0 so SDK installations receive incremental response decompression and stream cleanup on decoding errors. Keep the matching HTTPcore2 constraint and update both the project and runnable realtime-example locks.

Keep focused synchronous and asynchronous regressions for bounded, lossless decoding of a large gzip response and immediate stream closure on malformed gzip/deflate data. Existing large JSON/SSE parser coverage remains intact, with all large cases in one collected test to keep xdist execution sequential. Preserve the release-please lock marker and align policy, wheel-metadata validation, and retry-header assertions with the new dependency.

Validation: five focused tests, Ruff, Pyright, and mypy passed locally after trimming redundant parser and dependency-floor tests. Earlier regression reversal confirmed the bounded-decoding and stream-cleanup probes fail against HTTPX2 2.10.0. Changed dependency artifact URLs and hashes were verified against PyPI, and build metadata was reviewed. Hosted CI validates the final head, including the Python 3.10/3.14 and HTTPX2 test jobs, wheel installation, lint, and custom-code budgets.


Bumps the python-security group with 1 update in the / directory: httpx2.

Updates httpx2 from 2.7.0 to 2.12.0

Release notes

Sourced from httpx2's releases.

v2.12.0

Highlights

🛡️ Bounded response decompression

httpx2 now decodes gzip, deflate, Brotli, and Zstandard responses incrementally. Each decode step emits at most 1 MiB, so streaming a highly compressed response no longer requires materializing an entire inflated network chunk in memory (pydantic/httpx2#1126).

📦 Shared Zstandard API

Python 3.13 and earlier now use backports.zstd, which provides the same bounded incremental decompression API as compression.zstd on Python 3.14 and later (pydantic/httpx2#1146).

httpx2

Changed

Fixed

httpcore2

No changes since 2.11.0. Version bumped to stay in lockstep with httpx2.

Full Changelog: pydantic/httpx2@v2.11.0...v2.12.0

v2.11.0

Highlights

🌐 Public origin API

httpx2 now includes an immutable and hashable Origin value object, available through URL.origin. It provides normalized scheme, host, and effective port comparisons without including URL paths, queries, fragments, or credentials (pydantic/httpx2#1134).

🛠️ Request compatibility and validation

httpx2

Added

Changed

... (truncated)

Changelog

Sourced from httpx2's changelog.

2.12.0 (August 18th, 2026)

Changed

  • Use backports.zstd for Zstandard decoding on Python 3.13 and earlier. (#1146)

Fixed

  • Bound peak memory while streaming compressed responses and close response streams when decoding fails. (#1126)

2.11.0 (August 18th, 2026)

Added

  • Add the public Origin value object and URL.origin property for normalized, hashable origin comparisons. (#1134)

Changed

  • Require Brotli 1.2.0 or later for the brotli extra. (#1141)

Fixed

  • Restore deprecated status code aliases. (#1135)
  • Extract HTTP/2 release notes from changelog headings correctly. (#1136)
  • Respect explicit Transfer-Encoding headers and expose buffered request body lengths to WSGI applications. (#1137)
  • Validate multipart part header names and values before serialization. (#1142)

2.10.0 (August 9th, 2026)

Added

  • Add support for running on WebAssembly / Emscripten via Pyodide, using a JavaScript fetch-based transport defined in httpx2-jsfetch. (#1119)
  • Add max_event_size to cap SSE event buffering. (#1071)
  • Add RFC 9110 status code constants. (#1069)
  • Add support for Python 3.15. (#1090)

Changed

  • Improve SSE chunk buffering performance. (#1117)
  • Skip cookie extraction for responses without Set-Cookie headers. (#1107)
  • Return str | None instead of Any from Headers.get. (#1121)

Fixed

... (truncated)

Commits

@dependabot dependabot Bot added dependencies Pull requests that update a dependency file python:uv Pull requests that update python:uv code labels Sep 8, 2026
@dependabot
dependabot Bot requested a review from a team as a code owner September 8, 2026 22:28
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file python:uv Pull requests that update python:uv code labels Sep 8, 2026
@openai-sdks

openai-sdks Bot commented Sep 8, 2026 •

Copy link
Copy Markdown
Contributor

OkTest Summary

✅ 236/236 SDK tests passed in 11.971s for Python SDK PR #3823.

Test results — 42 files
Test Result Time
tests/chat-completions-complex-body.test.ts ✅ Passed 200ms
tests/chat-completions-create.test.ts ✅ Passed 309ms
tests/chat-completions-stream.test.ts ✅ Passed 251ms
tests/files-content-binary.test.ts ✅ Passed 264ms
tests/files-create-multipart.test.ts ✅ Passed 239ms
tests/files-list-pagination.test.ts ✅ Passed 239ms
tests/initialize-config.test.ts ✅ Passed 260ms
tests/instance-isolation.test.ts ✅ Passed 218ms
tests/models-list.test.ts ✅ Passed 259ms
tests/responses-background-lifecycle.test.ts ✅ Passed 257ms
tests/responses-body-method-errors.test.ts ✅ Passed 503ms
tests/responses-cancel-timeout.test.ts ✅ Passed 276ms
tests/responses-cancel.test.ts ✅ Passed 246ms
tests/responses-compact-retries.test.ts ✅ Passed 379ms
tests/responses-compact.test.ts ✅ Passed 334ms
tests/responses-create-advanced-stream.test.ts ✅ Passed 166ms
tests/responses-create-advanced.test.ts ✅ Passed 234ms
tests/responses-create-disconnect.test.ts ✅ Passed 1.114s
tests/responses-create-errors.test.ts ✅ Passed 315ms
tests/responses-create-malformed-api-responses.test.ts ✅ Passed 227ms
tests/responses-create-retries.test.ts ✅ Passed 312ms
tests/responses-create-stream-failures.test.ts ✅ Passed 654ms
tests/responses-create-stream-timeout.test.ts ✅ Passed 230ms
tests/responses-create-stream-wire.test.ts ✅ Passed 3.141s
tests/responses-create-stream.test.ts ✅ Passed 113ms
tests/responses-create-terminal-states.test.ts ✅ Passed 400ms
tests/responses-create-timeout.test.ts ✅ Passed 318ms
tests/responses-create.test.ts ✅ Passed 519ms
tests/responses-delete.test.ts ✅ Passed 201ms
tests/responses-input-items-errors.test.ts ✅ Passed 337ms
tests/responses-input-items-list.test.ts ✅ Passed 310ms
tests/responses-input-items-options.test.ts ✅ Passed 321ms
tests/responses-input-tokens-count-timeout.test.ts ✅ Passed 312ms
tests/responses-input-tokens-count.test.ts ✅ Passed 263ms
tests/responses-malformed-inputs.test.ts ✅ Passed 2.268s
tests/responses-not-found-errors.test.ts ✅ Passed 403ms
tests/responses-parse.test.ts ✅ Passed 290ms
tests/responses-retrieve-retries.test.ts ✅ Passed 294ms
tests/responses-retrieve.test.ts ✅ Passed 274ms
tests/responses-stored-method-errors.test.ts ✅ Passed 906ms
tests/retry-behavior.test.ts ✅ Passed 3.219s
tests/sdk-error-shape.test.ts ✅ Passed 398ms

View OkTest run #35650787830

SDK merge (f52f3b9540d4) · head (899727a4939f) · base (febbcdfe39f6) · OkTest (a0be4375e02d)

@github-actions

github-actions Bot commented Sep 8, 2026 •

Copy link
Copy Markdown
Contributor

Castiron custom code

✅ No new custom-code files detected.

47 mixed files remain; 0 existing customizations changed.

Compared febbcdfe39f6 → 899727a4939f. Generated baselines verified.

47 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/sessions/sessions.py
  • src/openai/resources/beta/beta.py
  • src/openai/resources/beta/responses/responses.py
  • src/openai/resources/beta/threads/runs/runs.py
  • src/openai/resources/beta/threads/threads.py
  • src/openai/resources/chat/completions/completions.py
  • src/openai/resources/embeddings.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/responses/responses.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

7 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 35650852099 --repo openai/openai-python \
  --name castiron-custom-code-35650852099-1 --dir /tmp/castiron-custom-code-35650852099-1
git apply --stat /tmp/castiron-custom-code-35650852099-1/custom-code.patch
cat /tmp/castiron-custom-code-35650852099-1/custom-code.patch

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

git fetch --no-tags origin febbcdfe39f6887caeb4c3c18e5aabb4404ef59b 899727a4939f2c87b613578a1933442e6882dbe1
python3 scripts/castiron/custom_code_report.py report \
  --base febbcdfe39f6887caeb4c3c18e5aabb4404ef59b \
  --head 899727a4939f2c87b613578a1933442e6882dbe1 --fetch --require-head-hash --public \
  --out /tmp/castiron-custom-code-899727a4939f
cat /tmp/castiron-custom-code-899727a4939f/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

@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: 34b090b7ee

ℹ️ About Codex in GitHub

Codex has been enabled to automatically 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 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread uv.lock Outdated
Comment thread uv.lock
@dependabot
dependabot Bot force-pushed the dependabot/uv/python-security-51f1bad80e branch from 34b090b to 5963ac9 Compare September 9, 2026 00:19

@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: 5963ac9105

ℹ️ About Codex in GitHub

Codex has been enabled to automatically 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 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread uv.lock
@dependabot
dependabot Bot force-pushed the dependabot/uv/python-security-51f1bad80e branch from 5963ac9 to ea57da5 Compare September 9, 2026 15:33

@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: ea57da525c

ℹ️ About Codex in GitHub

Codex has been enabled to automatically 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 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread uv.lock
@dependabot
dependabot Bot force-pushed the dependabot/uv/python-security-51f1bad80e branch 5 times, most recently from 47b2400 to b442724 Compare September 15, 2026 23:14
@dependabot
dependabot Bot force-pushed the dependabot/uv/python-security-51f1bad80e branch 4 times, most recently from d65635e to 8190202 Compare September 18, 2026 21:28
Bumps the python-security group with 1 update in the / directory: [httpx2](https://github.com/pydantic/httpx2).


Updates `httpx2` from 2.7.0 to 2.12.0
- [Release notes](https://github.com/pydantic/httpx2/releases)
- [Changelog](https://github.com/pydantic/httpx2/blob/main/src/httpx2/CHANGELOG.md)
- [Commits](pydantic/httpx2@v2.7.0...v2.12.0)

---
updated-dependencies:
- dependency-name: httpx2
  dependency-version: 2.12.0
  dependency-type: direct:production
  dependency-group: python-security
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot
dependabot Bot force-pushed the dependabot/uv/python-security-51f1bad80e branch from 8190202 to a8d0d73 Compare September 21, 2026 09:24
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 21, 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-09-21T20:25:26.186824Z 899727a New commits
🔒 Security Review ✅ Completed 2026-09-21T20:27:01.533738Z 899727a New commits
ℹ️ 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.

@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: 4acb30c5c9

ℹ️ 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 tests/test_httpx2_decompression.py Outdated

@marcuswood-oai marcuswood-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 the final diff at 899727a. The trimmed tests retain focused sync/async coverage for bounded, lossless decompression and immediate cleanup on malformed responses. All 17 applicable CI checks pass. Python 3.10 passed on rerun after an existing WebSocket fixture timing failure; that test also passed locally.

@marcuswood-oai
marcuswood-oai added this pull request to the merge queue Sep 21, 2026
Merged via the queue into main with commit 9b8e399 Sep 21, 2026
36 of 37 checks passed
@marcuswood-oai
marcuswood-oai deleted the dependabot/uv/python-security-51f1bad80e branch September 21, 2026 20:38
@openai-sdks openai-sdks Bot mentioned this pull request Sep 21, 2026
marcuswood-oai pushed a commit that referenced this pull request Sep 22, 2026
Automated Release PR
---


##
[3.17.0](v3.16.2...v3.17.0)
(2026-09-22)


### Features

* **api:** add external storage configuration management
([#3909](#3909))
([6332577](6332577))
* **api:** add safety case retrieval
([#3911](#3911))
([a87b938](a87b938))
* **api:** add safety warning and deactivation webhook events
([#3908](#3908))
([19f1f37](19f1f37))
* **api:** add session environment reset events
([#3913](#3913))
([69a2c1d](69a2c1d))
* **api:** add SIP media security to incoming call events
([#3907](#3907))
([c377eb2](c377eb2))
* **api:** support environment variable vault credentials
([#3905](#3905))
([eeebc53](eeebc53))


### Bug Fixes

* **api:** correct model types and network policy docs
([618bb31](618bb31))
* **api:** preserve model choices and defer error response docs
([#3931](#3931))
([6e7a90f](6e7a90f))
* **lib:** treat null message content as empty in parse_response
([#3851](#3851))
([fab5283](fab5283))
* **lib:** use log.warning instead of the deprecated log.warn
([#3878](#3878))
([56b1708](56b1708))


### Chores

* **api:** document API error response contracts
([#3917](#3917))
([fededc9](fededc9))
* **api:** document response management resources
([#3912](#3912))
([eaa5b77](eaa5b77))
* **deps:** bump actions/github-script from 7.1.0 to 9.0.0
([#3769](#3769))
([32e07e1](32e07e1))
* **deps:** bump actions/upload-artifact from 5.0.0 to 7.0.1
([#3767](#3767))
([b413abe](b413abe))
* **deps:** bump CodeQL init and analyze to 4.37.8
([#3765](#3765))
([f95237f](f95237f))
* **deps:** bump CodeQL init and analyze to 4.37.8
([#3766](#3766))
([690a8b5](690a8b5))
* **deps:** bump httpx2 from 2.7.0 to 2.12.0 in the python-security
group across 1 directory
([#3823](#3823))
([9b8e399](9b8e399))
* **deps:** bump openai/codex-action from 1.11 to 1.12
([#3768](#3768))
([9c1579b](9c1579b))

---
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>
@markstuart-oai

Copy link
Copy Markdown
Contributor

@marcuswood-oai Acknowledging your final-head review: its local regressions and CI apply to 899727a4939f2c87b613578a1933442e6882dbe1, including the documented fixture-timing rerun. I verified that 3.17.0 retains HTTPX2/HTTPcore2 2.12.0 and that the integrated commit's Python 3.10/3.14 and HTTPX2 CI succeeded. Older WebSocket results using 2.7.0 are not being presented as fresh validation of the newer dependency pair. No change to this merged PR is requested by that reconciliation.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file python:uv Pull requests that update python:uv code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants