Skip to content

chore: merge main into 1.0-dev#816

Merged
ishymko merged 7 commits into1.0-devfrom
ishymko/merge-main-1.0-dev
Mar 11, 2026
Merged

chore: merge main into 1.0-dev#816
ishymko merged 7 commits into1.0-devfrom
ishymko/merge-main-1.0-dev

Conversation

@ishymko
Copy link
Member

@ishymko ishymko commented Mar 11, 2026

No description provided.

dependabot bot and others added 7 commits March 2, 2026 15:35
Bumps the github-actions group with 3 updates:
[jakebailey/pyright-action](https://github.com/jakebailey/pyright-action),
[actions/upload-artifact](https://github.com/actions/upload-artifact)
and
[actions/download-artifact](https://github.com/actions/download-artifact).

Updates `jakebailey/pyright-action` from 2 to 3
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/jakebailey/pyright-action/releases">jakebailey/pyright-action's
releases</a>.</em></p>
<blockquote>
<h2>v3.0.0</h2>
<ul>
<li>Update github actions (<a
href="https://redirect.github.com/jakebailey/pyright-action/issues/208">#208</a>)
(5ceb87e)</li>
<li>Update actions/cache action to v5 (<a
href="https://redirect.github.com/jakebailey/pyright-action/issues/210">#210</a>)
(49e6fb4)</li>
<li>Disable type lint of build script (d991920)</li>
<li>Fix tests (1edc551)</li>
<li>Update action related deps (ce79cd6)</li>
<li>Update non-action deps (88a1ce8)</li>
<li>More v24 updates (c45be15)</li>
<li>Bump to v3, node24 (7dc11cf)</li>
<li>Update deps (f8c6100)</li>
<li>Update github actions (<a
href="https://redirect.github.com/jakebailey/pyright-action/issues/191">#191</a>)
(e20b42a)</li>
<li>Update github actions to v6 (<a
href="https://redirect.github.com/jakebailey/pyright-action/issues/195">#195</a>)
(f5686a6)</li>
<li>Update deps (e058033)</li>
</ul>
<h2>v2.3.3</h2>
<ul>
<li>Fix lint (4599f31)</li>
<li>Replace jest-path-serializer (1349f1a)</li>
<li>Fix deps (f701448)</li>
<li>fmt (ec50111)</li>
<li>Update engines (41972b7)</li>
<li>Update github actions (<a
href="https://redirect.github.com/jakebailey/pyright-action/issues/180">#180</a>)
(86e183a)</li>
<li>Update actions/checkout action to v5 (<a
href="https://redirect.github.com/jakebailey/pyright-action/issues/190">#190</a>)
(8b711b9)</li>
<li>Update deps (9631dc2)</li>
<li>Update deps (fa0d678)</li>
<li>Update github actions (<a
href="https://redirect.github.com/jakebailey/pyright-action/issues/163">#163</a>)
(623784a)</li>
<li>Fix eslint (73a65bd)</li>
<li>Update deps (dee7200)</li>
<li>Update deps (ea37d1c)</li>
<li>Update nvmrc (fb32d81)</li>
<li>Update eslint (b0c5af5)</li>
<li>Update deps (f4851c1)</li>
<li>Update actions/cache action to v4.2.0 (<a
href="https://redirect.github.com/jakebailey/pyright-action/issues/159">#159</a>)
(57f6678)</li>
<li>Update codecov/codecov-action action to v5 (<a
href="https://redirect.github.com/jakebailey/pyright-action/issues/154">#154</a>)
(f572338)</li>
<li>Update github actions (<a
href="https://redirect.github.com/jakebailey/pyright-action/issues/146">#146</a>)
(b7d7f8e)</li>
<li>Update deps (b721321)</li>
<li>Update deps (4156862)</li>
<li>Update github actions (<a
href="https://redirect.github.com/jakebailey/pyright-action/issues/121">#121</a>)
(ec480a0)</li>
<li>Update deps (bfe39b3)</li>
</ul>
<h2>v2.3.2</h2>
<ul>
<li>Support explicit &quot;latest&quot; version (f6f691c)</li>
<li>Update deps (c1dc810)</li>
<li>Update node to latest runner version (0b5777b)</li>
<li>Update deps (66bf589)</li>
<li>Fix lint fmt (222ed7c)</li>
<li>Fix compile for now (fa845b7)</li>
<li>Update deps (d7583ac)</li>
<li>Update vitest (64b81cd)</li>
<li>Update deps (a084e58)</li>
<li>Update deps (cbcd89c)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/jakebailey/pyright-action/commit/8ec14b5cfe41f26e5f41686a31eb6012758217ef"><code>8ec14b5</code></a>
Release v3.0.2</li>
<li><a
href="https://github.com/jakebailey/pyright-action/commit/03fd2c0c594f76acd9e4472e00361d0ac371d3c8"><code>03fd2c0</code></a>
Update mentioned checkout in readme</li>
<li><a
href="https://github.com/jakebailey/pyright-action/commit/9fb0169fdc561233dc09859a051595e53957b9ca"><code>9fb0169</code></a>
Update mentioned setup-python in readme</li>
<li><a
href="https://github.com/jakebailey/pyright-action/commit/19c6c236fc5e080abdd5561f14f026ca883378c5"><code>19c6c23</code></a>
Switch to tiny-jsonc</li>
<li><a
href="https://github.com/jakebailey/pyright-action/commit/12964857f8310c85319bcada3388572b1f5cf412"><code>1296485</code></a>
fix lint</li>
<li><a
href="https://github.com/jakebailey/pyright-action/commit/20b106db9ef172e8c30782f0a3c4d9a99afa6eee"><code>20b106d</code></a>
output metafile in build</li>
<li><a
href="https://github.com/jakebailey/pyright-action/commit/9b73e5f097fdaa21dcce526700dcf7415e09d3e6"><code>9b73e5f</code></a>
Release v3.0.1</li>
<li><a
href="https://github.com/jakebailey/pyright-action/commit/c781035d4810ccba2ce648980dcc58eb7169468a"><code>c781035</code></a>
Make docs reference v3</li>
<li><a
href="https://github.com/jakebailey/pyright-action/commit/61e7045315c3d22664d21e4fed96f366a9459e06"><code>61e7045</code></a>
Release v3.0.0</li>
<li><a
href="https://github.com/jakebailey/pyright-action/commit/5ceb87eecfe07b8c6b4c1aa53086b343fde0db9c"><code>5ceb87e</code></a>
Update github actions (<a
href="https://redirect.github.com/jakebailey/pyright-action/issues/208">#208</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/jakebailey/pyright-action/compare/v2...v3">compare
view</a></li>
</ul>
</details>
<br />

Updates `actions/upload-artifact` from 6 to 7
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/upload-artifact/releases">actions/upload-artifact's
releases</a>.</em></p>
<blockquote>
<h2>v7.0.0</h2>
<h2>v7 What's new</h2>
<h3>Direct Uploads</h3>
<p>Adds support for uploading single files directly (unzipped). Callers
can set the new <code>archive</code> parameter to <code>false</code> to
skip zipping the file during upload. Right now, we only support single
files. The action will fail if the glob passed resolves to multiple
files. The <code>name</code> parameter is also ignored with this
setting. Instead, the name of the artifact will be the name of the
uploaded file.</p>
<h3>ESM</h3>
<p>To support new versions of the <code>@actions/*</code> packages,
we've upgraded the package to ESM.</p>
<h2>What's Changed</h2>
<ul>
<li>Add proxy integration test by <a
href="https://github.com/Link"><code>@​Link</code></a>- in <a
href="https://redirect.github.com/actions/upload-artifact/pull/754">actions/upload-artifact#754</a></li>
<li>Upgrade the module to ESM and bump dependencies by <a
href="https://github.com/danwkennedy"><code>@​danwkennedy</code></a> in
<a
href="https://redirect.github.com/actions/upload-artifact/pull/762">actions/upload-artifact#762</a></li>
<li>Support direct file uploads by <a
href="https://github.com/danwkennedy"><code>@​danwkennedy</code></a> in
<a
href="https://redirect.github.com/actions/upload-artifact/pull/764">actions/upload-artifact#764</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/Link"><code>@​Link</code></a>- made
their first contribution in <a
href="https://redirect.github.com/actions/upload-artifact/pull/754">actions/upload-artifact#754</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/upload-artifact/compare/v6...v7.0.0">https://github.com/actions/upload-artifact/compare/v6...v7.0.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/actions/upload-artifact/commit/bbbca2ddaa5d8feaa63e36b76fdaad77386f024f"><code>bbbca2d</code></a>
Support direct file uploads (<a
href="https://redirect.github.com/actions/upload-artifact/issues/764">#764</a>)</li>
<li><a
href="https://github.com/actions/upload-artifact/commit/589182c5a4cec8920b8c1bce3e2fab1c97a02296"><code>589182c</code></a>
Upgrade the module to ESM and bump dependencies (<a
href="https://redirect.github.com/actions/upload-artifact/issues/762">#762</a>)</li>
<li><a
href="https://github.com/actions/upload-artifact/commit/47309c993abb98030a35d55ef7ff34b7fa1074b5"><code>47309c9</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/upload-artifact/issues/754">#754</a>
from actions/Link-/add-proxy-integration-tests</li>
<li><a
href="https://github.com/actions/upload-artifact/commit/02a8460834e70dab0ce194c64360c59dc1475ef0"><code>02a8460</code></a>
Add proxy integration test</li>
<li>See full diff in <a
href="https://github.com/actions/upload-artifact/compare/v6...v7">compare
view</a></li>
</ul>
</details>
<br />

Updates `actions/download-artifact` from 7 to 8
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/download-artifact/releases">actions/download-artifact's
releases</a>.</em></p>
<blockquote>
<h2>v8.0.0</h2>
<h2>v8 - What's new</h2>
<h3>Direct downloads</h3>
<p>To support direct uploads in <code>actions/upload-artifact</code>,
the action will no longer attempt to unzip all downloaded files.
Instead, the action checks the <code>Content-Type</code> header ahead of
unzipping and skips non-zipped files. Callers wishing to download a
zipped file as-is can also set the new <code>skip-decompress</code>
parameter to <code>false</code>.</p>
<h3>Enforced checks (breaking)</h3>
<p>A previous release introduced digest checks on the download. If a
download hash didn't match the expected hash from the server, the action
would log a warning. Callers can now configure the behavior on mismatch
with the <code>digest-mismatch</code> parameter. To be secure by
default, we are now defaulting the behavior to <code>error</code> which
will fail the workflow run.</p>
<h3>ESM</h3>
<p>To support new versions of the @actions/* packages, we've upgraded
the package to ESM.</p>
<h2>What's Changed</h2>
<ul>
<li>Don't attempt to un-zip non-zipped downloads by <a
href="https://github.com/danwkennedy"><code>@​danwkennedy</code></a> in
<a
href="https://redirect.github.com/actions/download-artifact/pull/460">actions/download-artifact#460</a></li>
<li>Add a setting to specify what to do on hash mismatch and default it
to <code>error</code> by <a
href="https://github.com/danwkennedy"><code>@​danwkennedy</code></a> in
<a
href="https://redirect.github.com/actions/download-artifact/pull/461">actions/download-artifact#461</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/download-artifact/compare/v7...v8.0.0">https://github.com/actions/download-artifact/compare/v7...v8.0.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/actions/download-artifact/commit/70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3"><code>70fc10c</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/download-artifact/issues/461">#461</a>
from actions/danwkennedy/digest-mismatch-behavior</li>
<li><a
href="https://github.com/actions/download-artifact/commit/f258da9a506b755b84a09a531814700b86ccfc62"><code>f258da9</code></a>
Add change docs</li>
<li><a
href="https://github.com/actions/download-artifact/commit/ccc058e5fbb0bb2352213eaec3491e117cbc4a5c"><code>ccc058e</code></a>
Fix linting issues</li>
<li><a
href="https://github.com/actions/download-artifact/commit/bd7976ba57ecea96e6f3df575eb922d11a12a9fd"><code>bd7976b</code></a>
Add a setting to specify what to do on hash mismatch and default it to
<code>error</code></li>
<li><a
href="https://github.com/actions/download-artifact/commit/ac21fcf45e0aaee541c0f7030558bdad38d77d6c"><code>ac21fcf</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/download-artifact/issues/460">#460</a>
from actions/danwkennedy/download-no-unzip</li>
<li><a
href="https://github.com/actions/download-artifact/commit/15999bff51058bc7c19b50ebbba518eaef7c26c0"><code>15999bf</code></a>
Add note about package bumps</li>
<li><a
href="https://github.com/actions/download-artifact/commit/974686ed5098c7f9c9289ec946b9058e496a2561"><code>974686e</code></a>
Bump the version to <code>v8</code> and add release notes</li>
<li><a
href="https://github.com/actions/download-artifact/commit/fbe48b1d2756394be4cd4358ed3bc1343b330e75"><code>fbe48b1</code></a>
Update test names to make it clearer what they do</li>
<li><a
href="https://github.com/actions/download-artifact/commit/96bf374a614d4360e225874c3efd6893a3f285e7"><code>96bf374</code></a>
One more test fix</li>
<li><a
href="https://github.com/actions/download-artifact/commit/b8c4819ef592cbe04fd93534534b38f853864332"><code>b8c4819</code></a>
Fix skip decompress test</li>
<li>Additional commits viewable in <a
href="https://github.com/actions/download-artifact/compare/v7...v8">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
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>&gt;=0.40.0</code> to
<code>&gt;=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) -&gt; AsyncIterator[State]:
async with httpx.AsyncClient() as client:
yield {&quot;http_client&quot;: client}</p>
<p>async def homepage(request: Request[State]):
client = request.state[&quot;http_client&quot;]
# 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) -&gt; AsyncIterator[State]:
async with httpx.AsyncClient() as client:
yield {&quot;http_client&quot;: client}</p>
<p>async def homepage(request: Request[State]):
client = request.state[&quot;http_client&quot;]
# 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: &quot;#/definitions/User&quot;
    nullable: true
    markdownDescription: &quot;A user object&quot;
</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: &quot;#/definitions/User&quot;
    nullable: true
    markdownDescription: &quot;A user object&quot;
</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 &quot;irm
https://github.com/astral-sh/ruff/releases/download/0.15.4/ruff-installer.ps1
| iex&quot;
</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 = &quot;markdown&quot; }
<h1>pyproject.toml</h1>
<p>[tool.ruff]
extension = { qmd = &quot;markdown&quot; }
</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…
Create a task store adapter that uses the Vertex Managed Task Store as a
backend.

Fixes #751
…event GC (#775)

# Description

ResultAggregator.consume_and_break_on_interrupt creates a background
asyncio.Task to continue consuming events after an interruption
(non-blocking or auth_required), but discards the task reference. On
Python 3.12+ the event loop only holds weak references to tasks, so the
garbage collector can silently collect the task before it completes —
dropping remaining events (completed/failed status) and push
notification callbacks.

Return the background task as a third tuple element so callers can hold
a strong reference. DefaultRequestHandler.on_message_send now tracks it
via _track_background_task(), the same mechanism already used for other
background work.

- [x] Follow the [`CONTRIBUTING`
Guide](https://github.com/a2aproject/a2a-python/blob/main/CONTRIBUTING.md).
- [x] Make your Pull Request title in the
<https://www.conventionalcommits.org/> specification.
- Important Prefixes for
[release-please](https://github.com/googleapis/release-please):
- `fix:` which represents bug fixes, and correlates to a
[SemVer](https://semver.org/) patch.
- `feat:` represents a new feature, and correlates to a SemVer minor.
- `feat!:`, or `fix!:`, `refactor!:`, etc., which represent a breaking
change (indicated by the `!`) and will result in a SemVer major.
- [x] Ensure the tests and linter pass (Run `bash scripts/format.sh`
from the repository root to format)

Fixes #774 🦕

---------

Co-authored-by: Ivan Shymko <ishymko@google.com>
…ext (#744)

## summary
- replace `default={}` and `default=UnauthenticatedUser()` with
`default_factory=dict` and `default_factory=UnauthenticatedUser` in
`ServerCallContext` to prevent shared mutable default instances across
all instances.
🤖 I have created a release *beep* *boop*
---


##
[0.3.25](v0.3.24...v0.3.25)
(2026-03-10)


### Features

* Implement a vertex based task store
([#752](#752))
([fa14dbf](fa14dbf))


### Bug Fixes

* return background task from consume_and_break_on_interrupt to prevent
GC ([#775](#775))
([a236d4d](a236d4d))
* use default_factory for mutable field defaults in ServerCallContext
([#744](#744))
([22b25d6](22b25d6))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
@ishymko ishymko requested a review from a team as a code owner March 11, 2026 16:58
@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request merges recent changes from the main branch into the 1.0-dev branch, primarily enhancing the asynchronous event processing pipeline. It introduces a robust mechanism for managing long-running background tasks initiated during event consumption, ensuring their proper lifecycle. Additionally, the agent's setup has been made more flexible by allowing the injection of its task storage component, which simplifies testing and future extensibility.

Highlights

  • Background Task Tracking: The consume_and_break_on_interrupt method in ResultAggregator now explicitly returns an asyncio.Task when event stream consumption is interrupted and continues in the background, allowing callers to track and manage these tasks.
  • Dependency Injection for TaskStore: The sut_agent.py entry point has been refactored to make the TaskStore injectable, improving modularity and testability.
  • Pydantic Default Handling: Default initializations for mutable fields (state, user) in ServerCallContext were updated to use default_factory to prevent unintended shared state across instances.
Changelog
  • src/a2a/server/context.py
    • Updated state and user fields to use default_factory for proper mutable default handling.
  • src/a2a/server/request_handlers/default_request_handler.py
    • Modified push_notification_callback to correctly handle and track the new background task returned by consume_and_break_on_interrupt.
  • src/a2a/server/tasks/result_aggregator.py
    • Modified the consume_and_break_on_interrupt method to return an asyncio.Task | None representing a background consumption task.
    • Updated docstrings to clarify the new return value and the caller's responsibility for tracking the background task.
    • Implemented the logic to create and return the background task when consumption is interrupted.
  • tck/sut_agent.py
    • Imported the TaskStore interface.
    • Renamed the main function to serve and refactored it to accept a TaskStore instance as an argument.
    • Re-introduced a main function that serves as the entry point, calling serve with a default InMemoryTaskStore.
  • tests/server/request_handlers/test_default_request_handler.py
    • Adjusted various test cases to accommodate the updated three-element return tuple from consume_and_break_on_interrupt.
    • Added assertions for the presence or absence of the background task in the return value.
  • tests/server/request_handlers/test_jsonrpc_handler.py
    • Modified test patches for ResultAggregator.consume_and_break_on_interrupt to include None as the third element in its return value, matching the updated signature.
  • tests/server/tasks/test_result_aggregator.py
    • Updated unit tests to verify the new bg_task return value from consume_and_break_on_interrupt.
    • Added assertions to check if the background task is None or not None as expected in different scenarios.
Ignored Files
  • Ignored by pattern: .github/workflows/** (1)
    • .github/workflows/python-publish.yml
  • Ignored by pattern: CHANGELOG.md (1)
    • CHANGELOG.md
Activity
  • No specific activity has been recorded for this pull request yet.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@ishymko ishymko merged commit 87b9fd6 into 1.0-dev Mar 11, 2026
9 checks passed
@ishymko ishymko deleted the ishymko/merge-main-1.0-dev branch March 11, 2026 17:01
Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

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

Code Review

This pull request introduces several improvements, most notably refactoring the handling of background asyncio tasks to ensure they are not prematurely garbage collected. The consume_and_break_on_interrupt function now correctly returns the created background task, making the caller responsible for tracking it. This change enhances the application's robustness. Other changes include fixing the use of mutable default arguments in a Pydantic model and refactoring for better testability. The accompanying test updates are thorough and align with the code changes. The overall quality of the changes is high, and I did not find any issues to report.

@ishymko ishymko mentioned this pull request Mar 11, 2026
4 tasks
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.

5 participants