Commit 8b647bd
authored
chore(deps): bump the all group with 13 updates (#747)
Bumps the all group with 13 updates:
| Package | From | To |
| --- | --- | --- |
| [google-api-core](https://github.com/googleapis/google-cloud-python) |
`2.29.0` | `2.30.0` |
| [fastapi](https://github.com/fastapi/fastapi) | `0.128.0` | `0.134.0`
|
| [sse-starlette](https://github.com/sysid/sse-starlette) | `3.2.0` |
`3.3.2` |
| [starlette](https://github.com/Kludex/starlette) | `0.50.0` | `0.52.1`
|
| [grpcio](https://github.com/grpc/grpc) | `1.76.0` | `1.78.0` |
| [grpcio-tools](https://github.com/grpc/grpc) | `1.76.0` | `1.78.0` |
| [grpcio-reflection](https://grpc.io) | `1.76.0` | `1.78.0` |
|
[datamodel-code-generator](https://github.com/koxudaxi/datamodel-code-generator)
| `0.53.0` | `0.54.0` |
| [ruff](https://github.com/astral-sh/ruff) | `0.14.14` | `0.15.4` |
| [types-protobuf](https://github.com/typeshed-internal/stub_uploader) |
`6.32.1.20251210` | `6.32.1.20260221` |
| [autoflake](https://github.com/PyCQA/autoflake) | `2.3.1` | `2.3.3` |
| [trio](https://github.com/python-trio/trio) | `0.32.0` | `0.33.0` |
| [uvicorn](https://github.com/Kludex/uvicorn) | `0.40.0` | `0.41.0` |
Updates `google-api-core` from 2.29.0 to 2.30.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/googleapis/google-cloud-python/releases">google-api-core's
releases</a>.</em></p>
<blockquote>
<h2>google-api-core: v2.30.0</h2>
<h2><a
href="https://github.com/googleapis/google-cloud-python/compare/google-api-core-v2.29.0...google-api-core-v2.30.0">2.30.0</a>
(2026-02-17)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>preserve exception cause (<a
href="https://github.com/googleapis/google-cloud-python/commit/c7fc19303e0f1d7357109a73c13f875a5ced7606">c7fc19303e0f1d7357109a73c13f875a5ced7606</a>)</li>
<li>require Python ≥ 3.9, protobuf ≥ 4.25.8 (<a
href="https://github.com/googleapis/google-cloud-python/commit/2d1aa4288c222b247fc49ea0da03c126c051e079">2d1aa4288c222b247fc49ea0da03c126c051e079</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/googleapis/google-cloud-python/commit/f0841b187388e1a63dcc258d48497b4356a60f3a"><code>f0841b1</code></a>
chore: librarian release pull request: 20260217T210947Z (<a
href="https://redirect.github.com/googleapis/google-cloud-python/issues/15573">#15573</a>)</li>
<li><a
href="https://github.com/googleapis/google-cloud-python/commit/fd22688dd38fffffeebdb8590541c79a4d5995c2"><code>fd22688</code></a>
chore: librarian onboard pull request: 20260218T181744Z (<a
href="https://redirect.github.com/googleapis/google-cloud-python/issues/15579">#15579</a>)</li>
<li><a
href="https://github.com/googleapis/google-cloud-python/commit/930dc0fd0425a221cf30b9b2e68a69726a3864ec"><code>930dc0f</code></a>
docs: update the list of available APIs (<a
href="https://redirect.github.com/googleapis/google-cloud-python/issues/15571">#15571</a>)</li>
<li><a
href="https://github.com/googleapis/google-cloud-python/commit/085a9fa86d6e4189b5dc495712457391d3a8575f"><code>085a9fa</code></a>
chores: add .repo-metadata.json for google-cloud-vectorsearch (<a
href="https://redirect.github.com/googleapis/google-cloud-python/issues/15574">#15574</a>)</li>
<li><a
href="https://github.com/googleapis/google-cloud-python/commit/4ca6f9e2f825c185d092f9879c05098659b1a871"><code>4ca6f9e</code></a>
chore: librarian generate pull request: 20260218T081656Z (<a
href="https://redirect.github.com/googleapis/google-cloud-python/issues/15577">#15577</a>)</li>
<li><a
href="https://github.com/googleapis/google-cloud-python/commit/e1b43528a2848c91a53b907474a7f787208995bf"><code>e1b4352</code></a>
chore(migration): Migrate code from googleapis/python-api-core into
packages/...</li>
<li><a
href="https://github.com/googleapis/google-cloud-python/commit/5f4fbded13aaf8e81b813297370038a259315d2c"><code>5f4fbde</code></a>
chore: revert changes to scripts</li>
<li><a
href="https://github.com/googleapis/google-cloud-python/commit/485bd6063b5143d287f8f1e8cbc5526c4c242ac0"><code>485bd60</code></a>
chore: clean up</li>
<li><a
href="https://github.com/googleapis/google-cloud-python/commit/452f5d8b33ebce54d229512855a34ca923040205"><code>452f5d8</code></a>
chore: update librarian state.yaml</li>
<li><a
href="https://github.com/googleapis/google-cloud-python/commit/d8e1a9abf6a581d3bc10bef2cfba788e3bdc3baa"><code>d8e1a9a</code></a>
chore: clean up</li>
<li>Additional commits viewable in <a
href="https://github.com/googleapis/google-cloud-python/compare/google-api-core-v2.29.0...google-api-core-v2.30.0">compare
view</a></li>
</ul>
</details>
<br />
Updates `fastapi` from 0.128.0 to 0.134.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/fastapi/fastapi/releases">fastapi's
releases</a>.</em></p>
<blockquote>
<h2>0.134.0</h2>
<h3>Features</h3>
<ul>
<li>✨ Add support for streaming JSON Lines and binary data with
<code>yield</code>. PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/15022">#15022</a>
by <a href="https://github.com/tiangolo"><code>@tiangolo</code></a>.
<ul>
<li>This also upgrades Starlette from <code>>=0.40.0</code> to
<code>>=0.46.0</code>, as it's needed to properly unrwap and re-raise
exceptions from exception groups.</li>
<li>New docs: <a
href="https://fastapi.tiangolo.com/tutorial/stream-json-lines/">Stream
JSON Lines</a>.</li>
<li>And new docs: <a
href="https://fastapi.tiangolo.com/advanced/stream-data/">Stream
Data</a>.</li>
</ul>
</li>
</ul>
<h3>Docs</h3>
<ul>
<li>📝 Update Library Agent Skill with streaming responses. PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/15024">#15024</a>
by <a
href="https://github.com/tiangolo"><code>@tiangolo</code></a>.</li>
<li>📝 Update docs for responses and new stream with <code>yield</code>.
PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/15023">#15023</a>
by <a
href="https://github.com/tiangolo"><code>@tiangolo</code></a>.</li>
<li>📝 Add <code>await</code> in <code>StreamingResponse</code> code
example to allow cancellation. PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/14681">#14681</a>
by <a
href="https://github.com/casperdcl"><code>@casperdcl</code></a>.</li>
<li>📝 Rename <code>docs_src/websockets</code> to
<code>docs_src/websockets_</code> to avoid import errors. PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/14979">#14979</a>
by <a
href="https://github.com/YuriiMotov"><code>@YuriiMotov</code></a>.</li>
</ul>
<h3>Internal</h3>
<ul>
<li>🔨 Run tests with <code>pytest-xdist</code> and
<code>pytest-cov</code>. PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/14992">#14992</a>
by <a
href="https://github.com/YuriiMotov"><code>@YuriiMotov</code></a>.</li>
</ul>
<h2>0.133.1</h2>
<h3>Features</h3>
<ul>
<li>🔧 Add FastAPI Agent Skill. PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/14982">#14982</a>
by <a href="https://github.com/tiangolo"><code>@tiangolo</code></a>.
<ul>
<li>Read more about it in <a
href="https://tiangolo.com/ideas/library-agent-skills/">Library Agent
Skills</a>.</li>
</ul>
</li>
</ul>
<h3>Internal</h3>
<ul>
<li>✅ Fix all tests are skipped on Windows. PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/14994">#14994</a>
by <a
href="https://github.com/YuriiMotov"><code>@YuriiMotov</code></a>.</li>
</ul>
<h2>0.133.0</h2>
<h3>Upgrades</h3>
<ul>
<li>⬆️ Add support for Starlette 1.0.0+. PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/14987">#14987</a>
by <a
href="https://github.com/tiangolo"><code>@tiangolo</code></a>.</li>
</ul>
<h2>0.132.1</h2>
<h3>Refactors</h3>
<ul>
<li>♻️ Refactor logic to handle OpenAPI and Swagger UI escaping data. PR
<a
href="https://redirect.github.com/fastapi/fastapi/pull/14986">#14986</a>
by <a
href="https://github.com/tiangolo"><code>@tiangolo</code></a>.</li>
</ul>
<h3>Internal</h3>
<ul>
<li>👥 Update FastAPI People - Experts. PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/14972">#14972</a>
by <a
href="https://github.com/tiangolo"><code>@tiangolo</code></a>.</li>
<li>👷 Allow skipping <code>benchmark</code> job in <code>test</code>
workflow. PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/14974">#14974</a>
by <a
href="https://github.com/YuriiMotov"><code>@YuriiMotov</code></a>.</li>
</ul>
<h2>0.132.0</h2>
<h3>Breaking Changes</h3>
<ul>
<li>🔒️ Add <code>strict_content_type</code> checking for JSON requests.
PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/14978">#14978</a>
by <a href="https://github.com/tiangolo"><code>@tiangolo</code></a>.
<ul>
<li>Now FastAPI checks, by default, that JSON requests have a
<code>Content-Type</code> header with a valid JSON value, like
<code>application/json</code>, and rejects requests that don't.</li>
<li>If the clients for your app don't send a valid
<code>Content-Type</code> header you can disable this with
<code>strict_content_type=False</code>.</li>
</ul>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/fastapi/fastapi/commit/48d58ae3b6ef4ded5a4794618c00345667256d98"><code>48d58ae</code></a>
📝 Update release notes</li>
<li><a
href="https://github.com/fastapi/fastapi/commit/d3b1d6cbd4d2429334bc07b735851d02c8a25631"><code>d3b1d6c</code></a>
📝 Update release notes</li>
<li><a
href="https://github.com/fastapi/fastapi/commit/d98eb74da906e39e8fc9573b33fe5eefb1ea07e4"><code>d98eb74</code></a>
🔖 Release version 0.134.0</li>
<li><a
href="https://github.com/fastapi/fastapi/commit/d33ad3f90fe193688d054782c056cab8cee2e003"><code>d33ad3f</code></a>
📝 Update release notes</li>
<li><a
href="https://github.com/fastapi/fastapi/commit/b7fefb147e42004a0a2ecfa1b44c581cd7b4edd8"><code>b7fefb1</code></a>
📝 Update release notes</li>
<li><a
href="https://github.com/fastapi/fastapi/commit/c01dc8b03c069650aaae702ef96eb648cd05dc38"><code>c01dc8b</code></a>
📝 Update Library Agent Skill with streaming responses (<a
href="https://redirect.github.com/fastapi/fastapi/issues/15024">#15024</a>)</li>
<li><a
href="https://github.com/fastapi/fastapi/commit/8344d078e2fa39365ec71d6d9ad4ddd9c583c8f1"><code>8344d07</code></a>
📝 Update release notes</li>
<li><a
href="https://github.com/fastapi/fastapi/commit/1377052c6cc5eff92a6bcbb54c0fcb66e14e06d7"><code>1377052</code></a>
📝 Update docs for responses and new stream with <code>yield</code> (<a
href="https://redirect.github.com/fastapi/fastapi/issues/15023">#15023</a>)</li>
<li><a
href="https://github.com/fastapi/fastapi/commit/c0836dc1b7f4ba91e9563c8c4ccd0ebe655bc914"><code>c0836dc</code></a>
📝 Update release notes</li>
<li><a
href="https://github.com/fastapi/fastapi/commit/c3f54a0794d8acadb0059c55edbb314678253921"><code>c3f54a0</code></a>
📝 Add <code>await</code> in <code>StreamingResponse</code> code example
to allow cancellation (<a
href="https://redirect.github.com/fastapi/fastapi/issues/14681">#14681</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/fastapi/fastapi/compare/0.128.0...0.134.0">compare
view</a></li>
</ul>
</details>
<br />
Updates `sse-starlette` from 3.2.0 to 3.3.2
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/sysid/sse-starlette/releases">sse-starlette's
releases</a>.</em></p>
<blockquote>
<h2>v3.3.2</h2>
<h2>What's Changed</h2>
<ul>
<li>chore(deps): bump cryptography from 46.0.3 to 46.0.5 by <a
href="https://github.com/dependabot"><code>@dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/sysid/sse-starlette/pull/166">sysid/sse-starlette#166</a></li>
<li>chore(deps): bump filelock from 3.20.1 to 3.20.3 by <a
href="https://github.com/dependabot"><code>@dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/sysid/sse-starlette/pull/170">sysid/sse-starlette#170</a></li>
<li>Consolidate examples into 7 self-contained scripts by <a
href="https://github.com/sysid"><code>@sysid</code></a> in <a
href="https://redirect.github.com/sysid/sse-starlette/pull/171">sysid/sse-starlette#171</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/sysid/sse-starlette/compare/v3.3.1...v3.3.2">https://github.com/sysid/sse-starlette/compare/v3.3.1...v3.3.2</a></p>
<h2>v3.3.1</h2>
<h2>What's Changed</h2>
<ul>
<li>chore: modernize project infrastructure by <a
href="https://github.com/sysid"><code>@sysid</code></a> in <a
href="https://redirect.github.com/sysid/sse-starlette/pull/169">sysid/sse-starlette#169</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/sysid/sse-starlette/compare/v3.3.0...v3.3.1">https://github.com/sysid/sse-starlette/compare/v3.3.0...v3.3.1</a></p>
<h2>v3.3.0</h2>
<h2>What's Changed</h2>
<ul>
<li>feat: expose shutdown event for cooperative generator shutdown (<a
href="https://redirect.github.com/sysid/sse-starlette/issues/167">#167</a>)</li>
</ul>
<ul>
<li>chore(deps): bump actions/checkout from 4 to 6 by <a
href="https://github.com/dependabot"><code>@dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/sysid/sse-starlette/pull/155">sysid/sse-starlette#155</a></li>
<li>chore(deps): bump virtualenv from 20.35.4 to 20.36.1 by <a
href="https://github.com/dependabot"><code>@dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/sysid/sse-starlette/pull/162">sysid/sse-starlette#162</a></li>
<li>chore(deps): bump urllib3 from 2.6.2 to 2.6.3 by <a
href="https://github.com/dependabot"><code>@dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/sysid/sse-starlette/pull/161">sysid/sse-starlette#161</a></li>
<li>chore(deps): bump cbor2 from 5.7.1 to 5.8.0 by <a
href="https://github.com/dependabot"><code>@dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/sysid/sse-starlette/pull/163">sysid/sse-starlette#163</a></li>
<li>chore(deps): bump pyasn1 from 0.6.1 to 0.6.2 by <a
href="https://github.com/dependabot"><code>@dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/sysid/sse-starlette/pull/160">sysid/sse-starlette#160</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/sysid/sse-starlette/compare/v3.2.0...v3.3.0">https://github.com/sysid/sse-starlette/compare/v3.2.0...v3.3.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/sysid/sse-starlette/commit/de9ed5d65813dde81dd541f0fcf066d743e4756d"><code>de9ed5d</code></a>
Bump version to 3.3.2</li>
<li><a
href="https://github.com/sysid/sse-starlette/commit/cc74bc86df8ef0763b7d39639cec7fc4196838b4"><code>cc74bc8</code></a>
Merge pull request <a
href="https://redirect.github.com/sysid/sse-starlette/issues/171">#171</a>
from sysid/001-cleanup-examples</li>
<li><a
href="https://github.com/sysid/sse-starlette/commit/0a3d0084b29f86efbf0703491c1e1f9d790c33fb"><code>0a3d008</code></a>
docs: consolidate examples into 7 self-contained scripts with PEP 723
metadata</li>
<li><a
href="https://github.com/sysid/sse-starlette/commit/dc238b5c878b598be463d69732aa1169c3e14b94"><code>dc238b5</code></a>
Merge pull request <a
href="https://redirect.github.com/sysid/sse-starlette/issues/170">#170</a>
from sysid/dependabot/uv/filelock-3.20.3</li>
<li><a
href="https://github.com/sysid/sse-starlette/commit/d9338992a427f1eaac9809ef4dd6b4b63ac32e28"><code>d933899</code></a>
Merge pull request <a
href="https://redirect.github.com/sysid/sse-starlette/issues/166">#166</a>
from sysid/dependabot/uv/cryptography-46.0.5</li>
<li><a
href="https://github.com/sysid/sse-starlette/commit/ff8bae4b825304290eba5e07bda005ce4cf4ebba"><code>ff8bae4</code></a>
fix: correct version to 3.3.1 (PR <a
href="https://redirect.github.com/sysid/sse-starlette/issues/168">#168</a>
merge reverted 3.3.0 to 3.2.0)</li>
<li><a
href="https://github.com/sysid/sse-starlette/commit/5ed4e200dfed59443240361ad9ac62e6ec4e0f93"><code>5ed4e20</code></a>
chore(deps): bump filelock from 3.20.1 to 3.20.3</li>
<li><a
href="https://github.com/sysid/sse-starlette/commit/ed680ded16daa59e91c4179b8cbe1563cd64fa92"><code>ed680de</code></a>
Bump version to 3.2.1</li>
<li><a
href="https://github.com/sysid/sse-starlette/commit/610af8e92bbf1ecb7335cfc9254d91183501fe74"><code>610af8e</code></a>
Merge pull request <a
href="https://redirect.github.com/sysid/sse-starlette/issues/169">#169</a>
from sysid/chore/maintenance</li>
<li><a
href="https://github.com/sysid/sse-starlette/commit/a46cce7cf4be11322b94de13e13ce82a369b70f8"><code>a46cce7</code></a>
chore: modernize project infrastructure</li>
<li>Additional commits viewable in <a
href="https://github.com/sysid/sse-starlette/compare/v3.2.0...v3.3.2">compare
view</a></li>
</ul>
</details>
<br />
Updates `starlette` from 0.50.0 to 0.52.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/Kludex/starlette/releases">starlette's
releases</a>.</em></p>
<blockquote>
<h2>Version 0.52.1</h2>
<h2>What's Changed</h2>
<ul>
<li>Only use <code>typing_extensions</code> in older Python versions by
<a href="https://github.com/Kludex"><code>@Kludex</code></a> in <a
href="https://redirect.github.com/Kludex/starlette/pull/3109">Kludex/starlette#3109</a></li>
</ul>
<hr />
<p><strong>Full Changelog</strong>: <a
href="https://github.com/Kludex/starlette/compare/0.52.0...0.52.1">https://github.com/Kludex/starlette/compare/0.52.0...0.52.1</a></p>
<h2>Version 0.52.0</h2>
<p>In this release, <code>State</code> can be accessed using
dictionary-style syntax for improved type safety (<a
href="https://redirect.github.com/Kludex/starlette/pull/3036">#3036</a>).</p>
<pre lang="python"><code>from collections.abc import AsyncIterator
from contextlib import asynccontextmanager
from typing import TypedDict
<p>import httpx</p>
<p>from starlette.applications import Starlette
from starlette.requests import Request</p>
<p>class State(TypedDict):
http_client: httpx.AsyncClient</p>
<p><a
href="https://github.com/asynccontextmanager"><code>@asynccontextmanager</code></a>
async def lifespan(app: Starlette) -> AsyncIterator[State]:
async with httpx.AsyncClient() as client:
yield {"http_client": client}</p>
<p>async def homepage(request: Request[State]):
client = request.state["http_client"]
# If you run the below line with mypy or pyright, it will reveal the
correct type.
reveal_type(client) # Revealed type is 'httpx.AsyncClient'
</code></pre></p>
<p>See <a
href="https://github.com/Kludex/starlette/blob/HEAD/lifespan.md#accessing-state">Accessing
State</a> for more details.</p>
<hr />
<p><strong>Full Changelog</strong>: <a
href="https://github.com/Kludex/starlette/compare/0.51.0...0.52.0">https://github.com/Kludex/starlette/compare/0.51.0...0.52.0</a></p>
<h2>Version 0.51.0</h2>
<h2>Added</h2>
<ul>
<li>Add <code>allow_private_network</code> in
<code>CORSMiddleware</code> <a
href="https://redirect.github.com/Kludex/starlette/pull/3065">#3065</a>.</li>
</ul>
<h2>Changed</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/Kludex/starlette/blob/main/docs/release-notes.md">starlette's
changelog</a>.</em></p>
<blockquote>
<h2>0.52.1 (January 18, 2026)</h2>
<h4>Fixed</h4>
<ul>
<li>Only use <code>typing_extensions</code> in older Python versions <a
href="https://redirect.github.com/Kludex/starlette/pull/3109">#3109</a>.</li>
</ul>
<h2>0.52.0 (January 18, 2026)</h2>
<p>In this release, <code>State</code> can be accessed using
dictionary-style syntax for improved type
safety (<a
href="https://redirect.github.com/Kludex/starlette/pull/3036">#3036</a>).</p>
<pre lang="python"><code>from collections.abc import AsyncIterator
from contextlib import asynccontextmanager
from typing import TypedDict
<p>import httpx</p>
<p>from starlette.applications import Starlette
from starlette.requests import Request</p>
<p>class State(TypedDict):
http_client: httpx.AsyncClient</p>
<p><a
href="https://github.com/asynccontextmanager"><code>@asynccontextmanager</code></a>
async def lifespan(app: Starlette) -> AsyncIterator[State]:
async with httpx.AsyncClient() as client:
yield {"http_client": client}</p>
<p>async def homepage(request: Request[State]):
client = request.state["http_client"]
# If you run the below line with mypy or pyright, it will reveal the
correct type.
reveal_type(client) # Revealed type is 'httpx.AsyncClient'
</code></pre></p>
<p>See <a
href="https://github.com/Kludex/starlette/blob/main/docs/lifespan.md#accessing-state">Accessing
State</a> for more details.</p>
<h2>0.51.0 (January 10, 2026)</h2>
<h4>Added</h4>
<ul>
<li>Add <code>allow_private_network</code> in
<code>CORSMiddleware</code> <a
href="https://redirect.github.com/Kludex/starlette/pull/3065">#3065</a>.</li>
</ul>
<h4>Changed</h4>
<ul>
<li>Increase warning stacklevel on <code>DeprecationWarning</code> for
wsgi module <a
href="https://redirect.github.com/Kludex/starlette/pull/3082">#3082</a>.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/Kludex/starlette/commit/e5b8a5d200504a2608bed11fe6f66b1d20b9ae2c"><code>e5b8a5d</code></a>
Version 0.52.1 (<a
href="https://redirect.github.com/Kludex/starlette/issues/3110">#3110</a>)</li>
<li><a
href="https://github.com/Kludex/starlette/commit/d02eadecb5409e9553922081ac123757849335e7"><code>d02eade</code></a>
Only use <code>typing_extensions</code> in older Python versions (<a
href="https://redirect.github.com/Kludex/starlette/issues/3109">#3109</a>)</li>
<li><a
href="https://github.com/Kludex/starlette/commit/f490b42f5fa0808ead53115a45d907c6d8e16a47"><code>f490b42</code></a>
Version 0.52.0 (<a
href="https://redirect.github.com/Kludex/starlette/issues/3107">#3107</a>)</li>
<li><a
href="https://github.com/Kludex/starlette/commit/d8c7cf9aca95b31c7a70473d03c26bc8ce33cd74"><code>d8c7cf9</code></a>
Turn <code>State</code> into a <code>Mapping</code> (<a
href="https://redirect.github.com/Kludex/starlette/issues/3036">#3036</a>)</li>
<li><a
href="https://github.com/Kludex/starlette/commit/cfce146611f7cc2b14c524b26d7e1d6cf0ddcd9f"><code>cfce146</code></a>
chore: bump coverage (<a
href="https://redirect.github.com/Kludex/starlette/issues/3103">#3103</a>)</li>
<li><a
href="https://github.com/Kludex/starlette/commit/9138e5597285c6120821a6ad862880d479f329f3"><code>9138e55</code></a>
fix: setup github pages for deployment (<a
href="https://redirect.github.com/Kludex/starlette/issues/3102">#3102</a>)</li>
<li><a
href="https://github.com/Kludex/starlette/commit/aff6df756b231c42ca088788db4bf4b193f7cc5b"><code>aff6df7</code></a>
docs: add environment for github docs (<a
href="https://redirect.github.com/Kludex/starlette/issues/3101">#3101</a>)</li>
<li><a
href="https://github.com/Kludex/starlette/commit/434bab94749b8522b08bbef3eff5fb742629d4fd"><code>434bab9</code></a>
docS: fix gh pages deploy (<a
href="https://redirect.github.com/Kludex/starlette/issues/3100">#3100</a>)</li>
<li><a
href="https://github.com/Kludex/starlette/commit/03426be1d41fc3963cd2dab5f10992e137eaf5f4"><code>03426be</code></a>
docs: replace mkdocs by zensical (<a
href="https://redirect.github.com/Kludex/starlette/issues/3098">#3098</a>)</li>
<li><a
href="https://github.com/Kludex/starlette/commit/df2ee22bc072dc19962120a7559f8fc0de7a094e"><code>df2ee22</code></a>
Version 0.51.0 (<a
href="https://redirect.github.com/Kludex/starlette/issues/3097">#3097</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/Kludex/starlette/compare/0.50.0...0.52.1">compare
view</a></li>
</ul>
</details>
<br />
Updates `grpcio` from 1.76.0 to 1.78.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/grpc/grpc/releases">grpcio's
releases</a>.</em></p>
<blockquote>
<h2>Release v1.78.0</h2>
<p>This is release 1.78.0 (<a
href="https://github.com/grpc/grpc/blob/master/doc/g_stands_for.md">gutsy</a>)
of gRPC Core.</p>
<p>For gRPC documentation, see <a href="https://grpc.io/">grpc.io</a>.
For previous releases, see <a
href="https://github.com/grpc/grpc/releases">Releases</a>.</p>
<p>This release contains refinements, improvements, and bug fixes, with
highlights listed below.</p>
<h2>C++</h2>
<ul>
<li>adding address_sorting dep in naming test build. (<a
href="https://redirect.github.com/grpc/grpc/pull/41045">#41045</a>)</li>
</ul>
<h2>Objective-C</h2>
<ul>
<li>[Backport][v1.78.x][Fix][Compiler] Plugins fall back to the edition
2023 for older protobuf. (<a
href="https://redirect.github.com/grpc/grpc/pull/41358">#41358</a>)</li>
</ul>
<h2>Python</h2>
<ul>
<li>[python] aio: fix race condition causing <code>asyncio.run()</code>
to hang forever during the shutdown process. (<a
href="https://redirect.github.com/grpc/grpc/pull/40989">#40989</a>)</li>
<li>[Python] Migrate to pyproject.toml build system from setup.py
builds. (<a
href="https://redirect.github.com/grpc/grpc/pull/40833">#40833</a>)</li>
<li>[Python] Log error details when ExecuteBatchError occurs (at DEBUG
level). (<a
href="https://redirect.github.com/grpc/grpc/pull/40921">#40921</a>)</li>
<li>[Python] Update setuptools min version to 77.0.1 . (<a
href="https://redirect.github.com/grpc/grpc/pull/40931">#40931</a>)</li>
</ul>
<h2>Ruby</h2>
<ul>
<li>[ruby] Fix version comparison for the ruby_abi_version symbol for
ruby 4 compatibility. (<a
href="https://redirect.github.com/grpc/grpc/pull/41061">#41061</a>)</li>
</ul>
<h2>Release v1.78.0-pre2</h2>
<p>This is a prerelease of gRPC Core 1.78.0 (gutsy).</p>
<p>For gRPC documentation, see <a href="https://grpc.io/">grpc.io</a>.
For previous releases, see <a
href="https://github.com/grpc/grpc/releases">Releases</a>.</p>
<p>This prerelease contains refinements, improvements, and bug
fixes.</p>
<h2>Release v1.78.0-pre1</h2>
<p>This is a prerelease of gRPC Core 1.78.0 (gutsy).</p>
<p>For gRPC documentation, see <a href="https://grpc.io/">grpc.io</a>.
For previous releases, see <a
href="https://github.com/grpc/grpc/releases">Releases</a>.</p>
<p>This prerelease contains refinements, improvements, and bug
fixes.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/grpc/grpc/commit/5e6ba94242b92e363220bc2163d55ce3554d4ecc"><code>5e6ba94</code></a>
[build] add missing includes (backport to 1.78.x) (<a
href="https://redirect.github.com/grpc/grpc/issues/41518">#41518</a>)</li>
<li><a
href="https://github.com/grpc/grpc/commit/e364c5ca7f28da753be233b4f1966ab309c01ed3"><code>e364c5c</code></a>
[PHP] ignore PHPUnit security advisory in Mac build (backport to 1.78.x)
(<a
href="https://redirect.github.com/grpc/grpc/issues/41">#41</a>...</li>
<li><a
href="https://github.com/grpc/grpc/commit/ea4d6271b2a3e94c1549317cc1e523be8f294dee"><code>ea4d627</code></a>
[Release] Bump version to 1.78.0 (on v1.78.x branch) (<a
href="https://redirect.github.com/grpc/grpc/issues/41489">#41489</a>)</li>
<li><a
href="https://github.com/grpc/grpc/commit/9840ecd84d075e53d5a01b93e3ea7c71cb641944"><code>9840ecd</code></a>
[Release] Bump version to 1.78.0-pre2 (on v1.78.x branch) (<a
href="https://redirect.github.com/grpc/grpc/issues/41397">#41397</a>)</li>
<li><a
href="https://github.com/grpc/grpc/commit/ea1d162a851c178dad9e8f90d7172c44228a93cb"><code>ea1d162</code></a>
[Backport][v1.78.x][Fix][Compiler] Plugins fall back to the edition 2023
for ...</li>
<li><a
href="https://github.com/grpc/grpc/commit/818a08f379de39de0dc594ac063b0ce99875ec47"><code>818a08f</code></a>
[Backport][v1.78.x][PHP] Fix runtime error with PHp8.5 alpha because
zend_exc...</li>
<li><a
href="https://github.com/grpc/grpc/commit/f7f13023412c1a589af7558eb0b9f8f664a76431"><code>f7f1302</code></a>
[Backport][v1.78.x][Fix][Build] Move xds-protos templates to the new
path (<a
href="https://redirect.github.com/grpc/grpc/issues/4">#4</a>...</li>
<li><a
href="https://github.com/grpc/grpc/commit/a38203462e4e64bc847942f08b6dffb780e5e70b"><code>a382034</code></a>
[Release] Bump version to 1.78.0-pre1 (on v1.78.x branch) (<a
href="https://redirect.github.com/grpc/grpc/issues/41290">#41290</a>)</li>
<li><a
href="https://github.com/grpc/grpc/commit/8d22d6239230b9f3c446f0bac719e46460cbdb30"><code>8d22d62</code></a>
[Release] Bump core version to 52.0.0 for upcoming release (<a
href="https://redirect.github.com/grpc/grpc/issues/41288">#41288</a>)</li>
<li><a
href="https://github.com/grpc/grpc/commit/ad19eab6500686839bb7ff14ec8f2a8463a32a57"><code>ad19eab</code></a>
[PH2][Settings][Security]</li>
<li>Additional commits viewable in <a
href="https://github.com/grpc/grpc/compare/v1.76.0...v1.78.0">compare
view</a></li>
</ul>
</details>
<br />
Updates `grpcio-tools` from 1.76.0 to 1.78.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/grpc/grpc/releases">grpcio-tools's
releases</a>.</em></p>
<blockquote>
<h2>Release v1.78.0</h2>
<p>This is release 1.78.0 (<a
href="https://github.com/grpc/grpc/blob/master/doc/g_stands_for.md">gutsy</a>)
of gRPC Core.</p>
<p>For gRPC documentation, see <a href="https://grpc.io/">grpc.io</a>.
For previous releases, see <a
href="https://github.com/grpc/grpc/releases">Releases</a>.</p>
<p>This release contains refinements, improvements, and bug fixes, with
highlights listed below.</p>
<h2>C++</h2>
<ul>
<li>adding address_sorting dep in naming test build. (<a
href="https://redirect.github.com/grpc/grpc/pull/41045">#41045</a>)</li>
</ul>
<h2>Objective-C</h2>
<ul>
<li>[Backport][v1.78.x][Fix][Compiler] Plugins fall back to the edition
2023 for older protobuf. (<a
href="https://redirect.github.com/grpc/grpc/pull/41358">#41358</a>)</li>
</ul>
<h2>Python</h2>
<ul>
<li>[python] aio: fix race condition causing <code>asyncio.run()</code>
to hang forever during the shutdown process. (<a
href="https://redirect.github.com/grpc/grpc/pull/40989">#40989</a>)</li>
<li>[Python] Migrate to pyproject.toml build system from setup.py
builds. (<a
href="https://redirect.github.com/grpc/grpc/pull/40833">#40833</a>)</li>
<li>[Python] Log error details when ExecuteBatchError occurs (at DEBUG
level). (<a
href="https://redirect.github.com/grpc/grpc/pull/40921">#40921</a>)</li>
<li>[Python] Update setuptools min version to 77.0.1 . (<a
href="https://redirect.github.com/grpc/grpc/pull/40931">#40931</a>)</li>
</ul>
<h2>Ruby</h2>
<ul>
<li>[ruby] Fix version comparison for the ruby_abi_version symbol for
ruby 4 compatibility. (<a
href="https://redirect.github.com/grpc/grpc/pull/41061">#41061</a>)</li>
</ul>
<h2>Release v1.78.0-pre2</h2>
<p>This is a prerelease of gRPC Core 1.78.0 (gutsy).</p>
<p>For gRPC documentation, see <a href="https://grpc.io/">grpc.io</a>.
For previous releases, see <a
href="https://github.com/grpc/grpc/releases">Releases</a>.</p>
<p>This prerelease contains refinements, improvements, and bug
fixes.</p>
<h2>Release v1.78.0-pre1</h2>
<p>This is a prerelease of gRPC Core 1.78.0 (gutsy).</p>
<p>For gRPC documentation, see <a href="https://grpc.io/">grpc.io</a>.
For previous releases, see <a
href="https://github.com/grpc/grpc/releases">Releases</a>.</p>
<p>This prerelease contains refinements, improvements, and bug
fixes.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/grpc/grpc/commit/5e6ba94242b92e363220bc2163d55ce3554d4ecc"><code>5e6ba94</code></a>
[build] add missing includes (backport to 1.78.x) (<a
href="https://redirect.github.com/grpc/grpc/issues/41518">#41518</a>)</li>
<li><a
href="https://github.com/grpc/grpc/commit/e364c5ca7f28da753be233b4f1966ab309c01ed3"><code>e364c5c</code></a>
[PHP] ignore PHPUnit security advisory in Mac build (backport to 1.78.x)
(<a
href="https://redirect.github.com/grpc/grpc/issues/41">#41</a>...</li>
<li><a
href="https://github.com/grpc/grpc/commit/ea4d6271b2a3e94c1549317cc1e523be8f294dee"><code>ea4d627</code></a>
[Release] Bump version to 1.78.0 (on v1.78.x branch) (<a
href="https://redirect.github.com/grpc/grpc/issues/41489">#41489</a>)</li>
<li><a
href="https://github.com/grpc/grpc/commit/9840ecd84d075e53d5a01b93e3ea7c71cb641944"><code>9840ecd</code></a>
[Release] Bump version to 1.78.0-pre2 (on v1.78.x branch) (<a
href="https://redirect.github.com/grpc/grpc/issues/41397">#41397</a>)</li>
<li><a
href="https://github.com/grpc/grpc/commit/ea1d162a851c178dad9e8f90d7172c44228a93cb"><code>ea1d162</code></a>
[Backport][v1.78.x][Fix][Compiler] Plugins fall back to the edition 2023
for ...</li>
<li><a
href="https://github.com/grpc/grpc/commit/818a08f379de39de0dc594ac063b0ce99875ec47"><code>818a08f</code></a>
[Backport][v1.78.x][PHP] Fix runtime error with PHp8.5 alpha because
zend_exc...</li>
<li><a
href="https://github.com/grpc/grpc/commit/f7f13023412c1a589af7558eb0b9f8f664a76431"><code>f7f1302</code></a>
[Backport][v1.78.x][Fix][Build] Move xds-protos templates to the new
path (<a
href="https://redirect.github.com/grpc/grpc/issues/4">#4</a>...</li>
<li><a
href="https://github.com/grpc/grpc/commit/a38203462e4e64bc847942f08b6dffb780e5e70b"><code>a382034</code></a>
[Release] Bump version to 1.78.0-pre1 (on v1.78.x branch) (<a
href="https://redirect.github.com/grpc/grpc/issues/41290">#41290</a>)</li>
<li><a
href="https://github.com/grpc/grpc/commit/8d22d6239230b9f3c446f0bac719e46460cbdb30"><code>8d22d62</code></a>
[Release] Bump core version to 52.0.0 for upcoming release (<a
href="https://redirect.github.com/grpc/grpc/issues/41288">#41288</a>)</li>
<li><a
href="https://github.com/grpc/grpc/commit/ad19eab6500686839bb7ff14ec8f2a8463a32a57"><code>ad19eab</code></a>
[PH2][Settings][Security]</li>
<li>Additional commits viewable in <a
href="https://github.com/grpc/grpc/compare/v1.76.0...v1.78.0">compare
view</a></li>
</ul>
</details>
<br />
Updates `grpcio-reflection` from 1.76.0 to 1.78.0
Updates `datamodel-code-generator` from 0.53.0 to 0.54.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/koxudaxi/datamodel-code-generator/releases">datamodel-code-generator's
releases</a>.</em></p>
<blockquote>
<h2>0.54.0</h2>
<h2>Breaking Changes</h2>
<h3>Code Generation Changes</h3>
<ul>
<li>Enum member names from oneOf/anyOf const constructs now use
<code>title</code> field when provided - Previously, when creating enums
from <code>oneOf</code>/<code>anyOf</code> constructs with
<code>const</code> values, the <code>title</code> field was incorrectly
ignored and enum member names were generated using the pattern
<code>{type}_{value}</code> (e.g., <code>integer_200</code>). Now, when
a <code>title</code> is specified, it is correctly used as the enum
member name (e.g., <code>OK</code> instead of <code>integer_200</code>).
Users who have code depending on the previously generated enum member
names will need to update their references. (<a
href="https://redirect.github.com/koxudaxi/datamodel-code-generator/issues/2975">#2975</a>)
Before:
<pre lang="python"><code>class StatusCode(IntEnum):
integer_200 = 200
integer_404 = 404
integer_500 = 500
</code></pre>
After:
<pre lang="python"><code>class StatusCode(IntEnum):
OK = 200
Not_Found = 404
Server_Error = 500
</code></pre>
</li>
<li>Field names matching Python builtins are now automatically sanitized
- When a field name matches a Python builtin type AND the field's type
annotation uses that same builtin (e.g., <code>int: int</code>,
<code>list: list[str]</code>, <code>dict: dict[str, Any]</code>), the
field is now renamed with a trailing underscore (e.g.,
<code>int_</code>) and an alias is added to preserve the original JSON
field name. This prevents Python syntax issues and shadowing of builtin
types. Previously, such fields were generated as-is (e.g., <code>int:
int | None = None</code>), which could cause code that shadows Python
builtins. After this change, the same field becomes <code>int_: int |
None = Field(None, alias='int')</code>. This affects fields named:
<code>int</code>, <code>float</code>, <code>bool</code>,
<code>str</code>, <code>bytes</code>, <code>list</code>,
<code>dict</code>, <code>set</code>, <code>frozenset</code>,
<code>tuple</code>, and other Python builtins when their type annotation
uses the matching builtin type. (<a
href="https://redirect.github.com/koxudaxi/datamodel-code-generator/issues/2968">#2968</a>)</li>
<li>$ref with non-standard metadata fields no longer triggers schema
merging - Previously, when a <code>$ref</code> was combined with
non-standard fields like <code>markdownDescription</code>,
<code>if</code>, <code>then</code>, <code>else</code>, or other extras
not in the whitelist, the generator would merge schemas and potentially
create duplicate models (e.g., <code>UserWithExtra</code> alongside
<code>User</code>). Now, only whitelisted schema-affecting extras
(currently just <code>const</code>) trigger merging. This means:
<ul>
<li>Fewer merged/duplicate models will be generated</li>
<li>References are preserved directly instead of being expanded</li>
<li>Field types may change from inline merged types to direct references
Example schema:</li>
</ul>
<pre lang="yaml"><code>properties:
user:
$ref: "#/definitions/User"
nullable: true
markdownDescription: "A user object"
</code></pre>
Before: Could generate a merged <code>UserWithMarkdownDescription</code>
model
After: Directly uses <code>User | None</code> reference (<a
href="https://redirect.github.com/koxudaxi/datamodel-code-generator/issues/2993">#2993</a>)</li>
<li>Enum member names no longer get underscore suffix with
<code>--capitalise-enum-members</code> - Previously, enum values like
<code>replace</code>, <code>count</code>, <code>index</code> would
generate <code>REPLACE_</code>, <code>COUNT_</code>, <code>INDEX_</code>
when using <code>--capitalise-enum-members</code>. Now they correctly
generate <code>REPLACE</code>, <code>COUNT</code>, <code>INDEX</code>.
The underscore suffix is only added when
<code>--use-subclass-enum</code> is also used AND the lowercase name
conflicts with builtin type methods. Users relying on the previous
naming (e.g., referencing <code>MyEnum.REPLACE_</code> in code) will
need to update to use the new names without trailing underscores. (<a
href="https://redirect.github.com/koxudaxi/datamodel-code-generator/issues/2999">#2999</a>)</li>
<li>Fields using <code>$ref</code> with inline keywords now include
merged metadata - When a schema property uses <code>$ref</code>
alongside additional keywords (e.g., <code>const</code>,
<code>enum</code>, <code>readOnly</code>, constraints), the generator
now correctly merges metadata (description, title, constraints,
defaults, readonly/writeOnly) from the referenced schema into the field
definition. Previously, this metadata was lost. For example, a field
like <code>type: Type</code> may now become <code>type: Type =
Field(..., description='Type of this object.', title='type')</code> when
the referenced schema includes those attributes. This also affects
<code>additionalProperties</code> and OpenAPI parameter schemas. (<a
href="https://redirect.github.com/koxudaxi/datamodel-code-generator/issues/2997">#2997</a>)</li>
</ul>
<h2>What's Changed</h2>
<ul>
<li>Refactor ruff check+format to use sequential subprocess calls by <a
href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a
href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/2967">koxudaxi/datamodel-code-generator#2967</a></li>
<li>Fix title ignored when creating enums from merging
<code>allOf</code>'s or <code>anyOf</code>'s objects by <a
href="https://github.com/ilovelinux"><code>@ilovelinux</code></a> in <a
href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/2975">koxudaxi/datamodel-code-generator#2975</a></li>
<li>Fix aliased imports not applied to base classes and non-matching
fields by <a
href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a
href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/2981">koxudaxi/datamodel-code-generator#2981</a></li>
<li>Fix handling of falsy default values for enums in
set-default-enum-member option by <a
href="https://github.com/kkinugasa"><code>@kkinugasa</code></a> in <a
href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/2977">koxudaxi/datamodel-code-generator#2977</a></li>
<li>Fix use_union_operator with Python builtin type field names by <a
href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a
href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/2968">koxudaxi/datamodel-code-generator#2968</a></li>
<li>Support $recursiveRef/$dynamicRef in JSON Schema and OpenAPI by <a
href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a
href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/2982">koxudaxi/datamodel-code-generator#2982</a></li>
<li>Address review feedback for recursive/dynamic ref support by <a
href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a
href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/2985">koxudaxi/datamodel-code-generator#2985</a></li>
<li>Fix RecursionError in _merge_ref_with_schema for circular $ref by <a
href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a
href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/2983">koxudaxi/datamodel-code-generator#2983</a></li>
<li>Fix missing Field import with multiple aliases on required fields by
<a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a
href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/2992">koxudaxi/datamodel-code-generator#2992</a></li>
<li>Fix patternProperties/propertyNames key constraints lost with
field_constraints by <a
href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a
href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/2994">koxudaxi/datamodel-code-generator#2994</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/koxudaxi/datamodel-code-generator/blob/main/CHANGELOG.md">datamodel-code-generator's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/koxudaxi/datamodel-code-generator/releases/tag/0.54.0">0.54.0</a>
- 2026-02-14</h2>
<h2>Breaking Changes</h2>
<h3>Code Generation Changes</h3>
<ul>
<li>Enum member names from oneOf/anyOf const constructs now use
<code>title</code> field when provided - Previously, when creating enums
from <code>oneOf</code>/<code>anyOf</code> constructs with
<code>const</code> values, the <code>title</code> field was incorrectly
ignored and enum member names were generated using the pattern
<code>{type}_{value}</code> (e.g., <code>integer_200</code>). Now, when
a <code>title</code> is specified, it is correctly used as the enum
member name (e.g., <code>OK</code> instead of <code>integer_200</code>).
Users who have code depending on the previously generated enum member
names will need to update their references. (<a
href="https://redirect.github.com/koxudaxi/datamodel-code-generator/issues/2975">#2975</a>)
Before:
<pre lang="python"><code>class StatusCode(IntEnum):
integer_200 = 200
integer_404 = 404
integer_500 = 500
</code></pre>
After:
<pre lang="python"><code>class StatusCode(IntEnum):
OK = 200
Not_Found = 404
Server_Error = 500
</code></pre>
</li>
<li>Field names matching Python builtins are now automatically sanitized
- When a field name matches a Python builtin type AND the field's type
annotation uses that same builtin (e.g., <code>int: int</code>,
<code>list: list[str]</code>, <code>dict: dict[str, Any]</code>), the
field is now renamed with a trailing underscore (e.g.,
<code>int_</code>) and an alias is added to preserve the original JSON
field name. This prevents Python syntax issues and shadowing of builtin
types. Previously, such fields were generated as-is (e.g., <code>int:
int | None = None</code>), which could cause code that shadows Python
builtins. After this change, the same field becomes <code>int_: int |
None = Field(None, alias='int')</code>. This affects fields named:
<code>int</code>, <code>float</code>, <code>bool</code>,
<code>str</code>, <code>bytes</code>, <code>list</code>,
<code>dict</code>, <code>set</code>, <code>frozenset</code>,
<code>tuple</code>, and other Python builtins when their type annotation
uses the matching builtin type. (<a
href="https://redirect.github.com/koxudaxi/datamodel-code-generator/issues/2968">#2968</a>)</li>
<li>$ref with non-standard metadata fields no longer triggers schema
merging - Previously, when a <code>$ref</code> was combined with
non-standard fields like <code>markdownDescription</code>,
<code>if</code>, <code>then</code>, <code>else</code>, or other extras
not in the whitelist, the generator would merge schemas and potentially
create duplicate models (e.g., <code>UserWithExtra</code> alongside
<code>User</code>). Now, only whitelisted schema-affecting extras
(currently just <code>const</code>) trigger merging. This means:
<ul>
<li>Fewer merged/duplicate models will be generated</li>
<li>References are preserved directly instead of being expanded</li>
<li>Field types may change from inline merged types to direct references
Example schema:</li>
</ul>
<pre lang="yaml"><code>properties:
user:
$ref: "#/definitions/User"
nullable: true
markdownDescription: "A user object"
</code></pre>
Before: Could generate a merged <code>UserWithMarkdownDescription</code>
model
After: Directly uses <code>User | None</code> reference (<a
href="https://redirect.github.com/koxudaxi/datamodel-code-generator/issues/2993">#2993</a>)</li>
<li>Enum member names no longer get underscore suffix with
<code>--capitalise-enum-members</code> - Previously, enum values like
<code>replace</code>, <code>count</code>, <code>index</code> would
generate <code>REPLACE_</code>, <code>COUNT_</code>, <code>INDEX_</code>
when using <code>--capitalise-enum-members</code>. Now they correctly
generate <code>REPLACE</code>, <code>COUNT</code>, <code>INDEX</code>.
The underscore suffix is only added when
<code>--use-subclass-enum</code> is also used AND the lowercase name
conflicts with builtin type methods. Users relying on the previous
naming (e.g., referencing <code>MyEnum.REPLACE_</code> in code) will
need to update to use the new names without trailing underscores. (<a
href="https://redirect.github.com/koxudaxi/datamodel-code-generator/issues/2999">#2999</a>)</li>
<li>Fields using <code>$ref</code> with inline keywords now include
merged metadata - When a schema property uses <code>$ref</code>
alongside additional keywords (e.g., <code>const</code>,
<code>enum</code>, <code>readOnly</code>, constraints), the generator
now correctly merges metadata (description, title, constraints,
defaults, readonly/writeOnly) from the referenced schema into the field
definition. Previously, this metadata was lost. For example, a field
like <code>type: Type</code> may now become <code>type: Type =
Field(..., description='Type of this object.', title='type')</code> when
the referenced schema includes those attributes. This also affects
<code>additionalProperties</code> and OpenAPI parameter schemas. (<a
href="https://redirect.github.com/koxudaxi/datamodel-code-generator/issues/2997">#2997</a>)</li>
</ul>
<h2>What's Changed</h2>
<ul>
<li>Refactor ruff check+format to use sequential subprocess calls by <a
href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a
href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/2967">koxudaxi/datamodel-code-generator#2967</a></li>
<li>Fix title ignored when creating enums from merging
<code>allOf</code>'s or <code>anyOf</code>'s objects by <a
href="https://github.com/ilovelinux"><code>@ilovelinux</code></a> in <a
href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/2975">koxudaxi/datamodel-code-generator#2975</a></li>
<li>Fix aliased imports not applied to base classes and non-matching
fields by <a
href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a
href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/2981">koxudaxi/datamodel-code-generator#2981</a></li>
<li>Fix handling of falsy default values for enums in
set-default-enum-member option by <a
href="https://github.com/kkinugasa"><code>@kkinugasa</code></a> in <a
href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/2977">koxudaxi/datamodel-code-generator#2977</a></li>
<li>Fix use_union_operator with Python builtin type field names by <a
href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a
href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/2968">koxudaxi/datamodel-code-generator#2968</a></li>
<li>Support $recursiveRef/$dynamicRef in JSON Schema and OpenAPI by <a
href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a
href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/2982">koxudaxi/datamodel-code-generator#2982</a></li>
<li>Address review feedback for recursive/dynamic ref support by <a
href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a
href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/2985">koxudaxi/datamodel-code-generator#2985</a></li>
<li>Fix RecursionError in _merge_ref_with_schema for circular $ref by <a
href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a
href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/2983">koxudaxi/datamodel-code-generator#2983</a></li>
<li>Fix missing Field import with multiple aliases on required fields by
<a href="https://github.com/koxudaxi"><code>@koxudaxi</code></a> in <a
href="https://redirect.github.com/koxudaxi/datamodel-code-generator/pull/2992">koxudaxi/datamodel-code-generator#2992</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/koxudaxi/datamodel-code-generator/commit/2ea62449515940d2af05e0723f8db2fd1b3cc11e"><code>2ea6244</code></a>
Fix incorrect relative imports with --use-exact-imports and
--collapse-root-m...</li>
<li><a
href="https://github.com/koxudaxi/datamodel-code-generator/commit/34b7d29a52765b2c6f3da920bc525bf37f0db624"><code>34b7d29</code></a>
fix codespeed python version (<a
href="https://redirect.github.com/koxudaxi/datamodel-code-generator/issues/3000">#3000</a>)</li>
<li><a
href="https://github.com/koxudaxi/datamodel-code-generator/commit/f3ef9c619a010ed4a30c2f7f6b514053f251a8e2"><code>f3ef9c6</code></a>
Fix merged result in parse_item not passed back to parse_object_fields
(<a
href="https://redirect.github.com/koxudaxi/datamodel-code-generator/issues/2997">#2997</a>)</li>
<li><a
href="https://github.com/koxudaxi/datamodel-code-generator/commit/501190398d5717a936301f550b61ecec520c8cb7"><code>5011903</code></a>
Fix extra underscore on enum members like replace with
--capitalise-enum-memb...</li>
<li><a
href="https://github.com/koxudaxi/datamodel-code-generator/commit/907a1a8cec66c4e25ef5dfe2128d131a5a9811f2"><code>907a1a8</code></a>
Fix exact imports with module/class name collision (<a
href="https://redirect.github.com/koxudaxi/datamodel-code-generator/issues/2998">#2998</a>)</li>
<li><a
href="https://github.com/koxudaxi/datamodel-code-generator/commit/2b659f001e744e1e95e464ab0d613fae0122bc01"><code>2b659f0</code></a>
Fix missing | None for nullable enum literals in TypedDict (<a
href="https://redirect.github.com/koxudaxi/datamodel-code-generator/issues/2991">#2991</a>)</li>
<li><a
href="https://github.com/koxudaxi/datamodel-code-generator/commit/992af20312420a2d8b8975fb9ee6e22430f5144f"><code>992af20</code></a>
Fix type loss when $ref is used with non-standard metadata fields (<a
href="https://redirect.github.com/koxudaxi/datamodel-code-generator/issues/2993">#2993</a>)</li>
<li><a
href="https://github.com/koxudaxi/datamodel-code-generator/commit/0f1bc0f41d758cfda02d4438cdbbd3c3b4265102"><code>0f1bc0f</code></a>
Fix patternProperties/propertyNames key constraints lost with
field_constrain...</li>
<li><a
href="https://github.com/koxudaxi/datamodel-code-generator/commit/24b576e5e514802f45fbfc39af29f6d53a983e49"><code>24b576e</code></a>
Fix missing Field import with multiple aliases on required fields (<a
href="https://redirect.github.com/koxudaxi/datamodel-code-generator/issues/2992">#2992</a>)</li>
<li><a
href="https://github.com/koxudaxi/datamodel-code-generator/commit/b58970a43c51805241fd93ce54deb23f2391052f"><code>b58970a</code></a>
Fix RecursionError in _merge_ref_with_schema for circular $ref (<a
href="https://redirect.github.com/koxudaxi/datamodel-code-generator/issues/2983">#2983</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/koxudaxi/datamodel-code-generator/compare/0.53.0...0.54.0">compare
view</a></li>
</ul>
</details>
<br />
Updates `ruff` from 0.14.14 to 0.15.4
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/astral-sh/ruff/releases">ruff's
releases</a>.</em></p>
<blockquote>
<h2>0.15.4</h2>
<h2>Release Notes</h2>
<p>Released on 2026-02-26.</p>
<p>This is a follow-up release to 0.15.3 that resolves a panic when the
new rule <code>PLR1712</code> was enabled with any rule that analyzes
definitions, such as many of the <code>ANN</code> or <code>D</code>
rules.</p>
<h3>Bug fixes</h3>
<ul>
<li>Fix panic on access to definitions after analyzing definitions (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23588">#23588</a>)</li>
<li>[<code>pyflakes</code>] Suppress false positive in <code>F821</code>
for names used before <code>del</code> in stub files (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23550">#23550</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>Clarify first-party import detection in Ruff (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23591">#23591</a>)</li>
<li>Fix incorrect <code>import-heading</code> example (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23568">#23568</a>)</li>
</ul>
<h3>Contributors</h3>
<ul>
<li><a
href="https://github.com/stakeswky"><code>@stakeswky</code></a></li>
<li><a href="https://github.com/ntBre"><code>@ntBre</code></a></li>
<li><a
href="https://github.com/thejcannon"><code>@thejcannon</code></a></li>
<li><a href="https://github.com/GeObts"><code>@GeObts</code></a></li>
</ul>
<h2>Install ruff 0.15.4</h2>
<h3>Install prebuilt binaries via shell script</h3>
<pre lang="sh"><code>curl --proto '=https' --tlsv1.2 -LsSf
https://github.com/astral-sh/ruff/releases/download/0.15.4/ruff-installer.sh
| sh
</code></pre>
<h3>Install prebuilt binaries via powershell script</h3>
<pre lang="sh"><code>powershell -ExecutionPolicy Bypass -c "irm
https://github.com/astral-sh/ruff/releases/download/0.15.4/ruff-installer.ps1
| iex"
</code></pre>
<h2>Download ruff 0.15.4</h2>
<table>
<thead>
<tr>
<th>File</th>
<th>Platform</th>
<th>Checksum</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="https://github.com/astral-sh/ruff/releases/download/0.15.4/ruff-aarch64-apple-darwin.tar.gz">ruff-aarch64-apple-darwin.tar.gz</a></td>
<td>Apple Silicon macOS</td>
<td><a
href="https://github.com/astral-sh/ruff/releases/download/0.15.4/ruff-aarch64-apple-darwin.tar.gz.sha256">checksum</a></td>
</tr>
<tr>
<td><a
href="https://github.com/astral-sh/ruff/releases/download/0.15.4/ruff-x86_64-apple-darwin.tar.gz">ruff-x86_64-apple-darwin.tar.gz</a></td>
<td>Intel macOS</td>
<td><a
href="https://github.com/astral-sh/ruff/releases/download/0.15.4/ruff-x86_64-apple-darwin.tar.gz.sha256">checksum</a></td>
</tr>
<tr>
<td><a
href="https://github.com/astral-sh/ruff/releases/download/0.15.4/ruff-aarch64-pc-windows-msvc.zip">ruff-aarch64-pc-windows-msvc.zip</a></td>
<td>ARM64 Windows</td>
<td><a
href="https://github.com/astral-sh/ruff/releases/download/0.15.4/ruff-aarch64-pc-windows-msvc.zip.sha256">checksum</a></td>
</tr>
<tr>
<td><a
href="https://github.com/astral-sh/ruff/releases/download/0.15.4/ruff-i686-pc-windows-msvc.zip">ruff-i686-pc-windows-msvc.zip</a></td>
<td>x86 Windows</td>
<td><a
href="https://github.com/astral-sh/ruff/releases/download/0.15.4/ruff-i686-pc-windows-msvc.zip.sha256">checksum</a></td>
</tr>
<tr>
<td><a
href="https://github.com/astral-sh/ruff/releases/download/0.15.4/ruff-x86_64-pc-windows-msvc.zip">ruff-x86_64-pc-windows-msvc.zip</a></td>
<td>x64 Windows</td>
<td><a
href="https://github.com/astral-sh/ruff/releases/download/0.15.4/ruff-x86_64-pc-windows-msvc.zip.sha256">checksum</a></td>
</tr>
<tr>
<td><a
href="https://github.com/astral-sh/ruff/releases/download/0.15.4/ruff-aarch64-unknown-linux-gnu.tar.gz">ruff-aarch64-unknown-linux-gnu.tar.gz</a></td>
<td>ARM64 Linux</td>
<td><a
href="https://github.com/astral-sh/ruff/releases/download/0.15.4/ruff-aarch64-unknown-linux-gnu.tar.gz.sha256">checksum</a></td>
</tr>
<tr>
<td><a
href="https://github.com/astral-sh/ruff/releases/download/0.15.4/ruff-i686-unknown-linux-gnu.tar.gz">ruff-i686-unknown-linux-gnu.tar.gz</a></td>
<td>x86 Linux</td>
<td><a
href="https://github.com/astral-sh/ruff/releases/download/0.15.4/ruff-i686-unknown-linux-gnu.tar.gz.sha256">checksum</a></td>
</tr>
<tr>
<td><a
href="https://github.com/astral-sh/ruff/releases/download/0.15.4/ruff-powerpc64-unknown-linux-gnu.tar.gz">ruff-powerpc64-unknown-linux-gnu.tar.gz</a></td>
<td>PPC64 Linux</td>
<td><a
href="https://github.com/astral-sh/ruff/releases/download/0.15.4/ruff-powerpc64-unknown-linux-gnu.tar.gz.sha256">checksum</a></td>
</tr>
</tbody>
</table>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md">ruff's
changelog</a>.</em></p>
<blockquote>
<h2>0.15.4</h2>
<p>Released on 2026-02-26.</p>
<p>This is a follow-up release to 0.15.3 that resolves a panic when the
new rule <code>PLR1712</code> was enabled with any rule that analyzes
definitions, such as many of the <code>ANN</code> or <code>D</code>
rules.</p>
<h3>Bug fixes</h3>
<ul>
<li>Fix panic on access to definitions after analyzing definitions (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23588">#23588</a>)</li>
<li>[<code>pyflakes</code>] Suppress false positive in <code>F821</code>
for names used before <code>del</code> in stub files (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23550">#23550</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>Clarify first-party import detection in Ruff (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23591">#23591</a>)</li>
<li>Fix incorrect <code>import-heading</code> example (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23568">#23568</a>)</li>
</ul>
<h3>Contributors</h3>
<ul>
<li><a
href="https://github.com/stakeswky"><code>@stakeswky</code></a></li>
<li><a href="https://github.com/ntBre"><code>@ntBre</code></a></li>
<li><a
href="https://github.com/thejcannon"><code>@thejcannon</code></a></li>
<li><a href="https://github.com/GeObts"><code>@GeObts</code></a></li>
</ul>
<h2>0.15.3</h2>
<p>Released on 2026-02-26.</p>
<h3>Preview features</h3>
<ul>
<li>
<p>Drop explicit support for <code>.qmd</code> file extension (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23572">#23572</a>)</p>
<p>This can now be enabled instead by setting the <a
href="https://docs.astral.sh/ruff/settings/#extension"><code>extension</code></a>
option:</p>
<pre lang="toml"><code># ruff.toml
extension = { qmd = "markdown" }
<h1>pyproject.toml</h1>
<p>[tool.ruff]
extension = { qmd = "markdown" }
</code></pre></p>
</li>
<li>
<p>Include configured extensions in file discovery (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23400">#23400</a>)</p>
</li>
<li>
<p>[<code>flake8-bandit</code>] Allow suspicious imports in
<code>TYPE_CHECKING</code> blocks (<code>S401</code>-<code>S415</code>)
(<a
href="https://redirect.github.com/astral-sh/ruff/pull/23441">#23441</a>)</p>
</li>
<li>
<p>[<code>flake8-bugbear</code>] Allow <code>B901</code> in pytest hook
wrappers (<a
href="https://redirect.github.com/astral-sh/ruff/pull/21931">#21931</a>)</p>
</li>
<li>
<p>[<code>flake8-import-conventions</code>] Add missing conventions from
upstream (<code>ICN001</code>, <code>ICN002</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/21373">#21373</a>)</p>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/astral-sh/ruff/commit/f14edd8661e2803254f89265548c7487f47a09f6"><code>f14edd8</code></a>
Bump 0.15.4 (<a
href="https://redirect.github.com/astral-sh/ruff/issues/23595">#23595</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/fd09d370076ab585444fd39f0fee79bf29280b68"><code>fd09d37</code></a>
Fix panic on access to definitions after analyzing definitions (<a
href="https://redirect.github.com/astral-sh/ruff/issues/23588">#23588</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/81d655fadce087b792e524ed1964e9bcc31b73cd"><code>81d655f</code></a>
[<code>pyflakes</code>] suppress false positive in <code>F821</code> for
names used before <code>del</code> in...</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/625b4f5a672d1baaa6f25e0999ca428f3f2522f1"><code>625b4f5</code></a>
[ruff] docs: Clarify first-party import detection in Ruff (<a
href="https://redirect.github.com/astral-sh/ruff/issues/23591">#23591</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/60facfa0bc02689637e25237f0df5abfc2f27054"><code>60facfa</code></a>
one word typo fix in a <code>while_loop.md</code> test case (<a
href="https://redirect.github.com/astral-sh/ruff/issues/23589">#23589</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/fbb9fa75cc1915973a739da0ec469094176bfdc6"><code>fbb9fa7</code></a>
docs: fix incorrect import-heading example (<a
href="https://redirect.github.com/astral-sh/ruff/issues/23568">#23568</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/5bc49a941279c9100ff834edae1cb63053aeec93"><code>5bc49a9</code></a>
Increase the ruleset size to 16 bits (<a
href="https://redirect.github.com/astral-sh/ruff/issues/23586">#23586</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/a62ba8c6e2bac0b899d90fd30a1b26c07aac44bb"><code>a62ba8c</code></a>
[ty] Fix overloaded callable assignability for unary Callable targets
(<a
href="https://redirect.github.com/astral-sh/ruff/issues/23277">#23277</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/e5f2f36a3f49b45fd7506d42b12c495c2517e936"><code>e5f2f36</code></a>
Bump 0.15.3 (<a
href="https://redirect.github.com/astral-sh/ruff/issues/23585">#23585</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/0e19fc9a61477e71abc4eb76f05a129b6b9ab873"><code>0e19fc9</code></a>
[ty] defer calculating conjunctions in narrowing constraints (<a
href="https://redirect.github.com/astral-sh/ruff/issues/23552">#23552</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/astral-sh/ruff/compare/0.14.14...0.15.4">compare
view</a></li>
</ul>
</details>
<br />
Updates `types-protobuf` from 6.32.1.20251210 to 6.32.1.20260221
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/typeshed-internal/stub_uploader/commits">compare
view</a></li>
</ul>
</details>
<br />
Updates `autoflake` from 2.3.1 to 2.3.3
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/PyCQA/autoflake/releases">autoflake's
releases</a>.</em></p>
<blockquote>
<h2>v2.3.3</h2>
<!-- raw HTML omitted -->
<h2>What's Changed</h2>
<ul>
<li>pyproject: fix packaging by <a
href="https://github.com/fsouza"><code>@fsouza</code></a> in <a
href="https://redirect.github.com/PyCQA/autoflake/pull/342">PyCQA/autoflake#342</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/PyCQA/autoflake/compare/v2.3.2...v2.3.3">https://github.com/PyCQA/autoflake/compare/v2.3.2...v2.3.3</a></p>
<h2>v2.3.2</h2>
<!-- raw HTML omitted -->
<h2>What's Changed</h2>
<ul>
<li>Update README.md by <a
href="https://github.com/arkadybag"><code>@arkadybag</code></a> in <a
href="https://redirect.github.com/PyCQA/autoflake/pull/310">PyCQA/autoflake#310</a></li>
<li>Drop Python 3.8 by <a
href="https://github.com/fsouza"><code>@fsouza</code></a> in <a
href="https://redirect.github.com/PyCQA/autoflake/pull/312">PyCQA/autoflake#312</a></li>
<li>pre-commit-config: <code>--py39-plus</code> by <a
href="https://github.com/fsouza"><code>@fsouza</code></a> in <a
href="https://redirect.github.com/PyCQA/autoflake/pull/313">PyCQA/autoflake#313</a></li>
<li>github/workflows: add Python 3.13 to the test matrix by <a
href="https://github.com/fsouza"><code>@fsouza</code></a> in <a
href="https://redirect.github.com/PyCQA/autoflake/pull/316">PyCQA/autoflake#316</a></li>
<li>Fix TypeError in <code>is_literal_or_name</code> on unhashable set
literals by <a
href="https://github.com/Fridayai700"><code>@Fridayai700</code></a> in
<a
href="https://redirect.github.com/PyCQA/autoflake/pull/339">PyCQA/autoflake#339</a></li>
<li>Fix IndexError in <code>extract_package_name</code> on malformed
import lines by <a
href="https://github.com/Fridayai700"><code>@Fridayai700</code></a> in
<a
href="https://redirect.github.com/PyCQA/autoflake/pull/338">PyCQA/autof…1 parent 2325ad2 commit 8b647bd
1 file changed
Lines changed: 158 additions & 158 deletions
0 commit comments