Skip to content

fix refleaks from suspended frames#512

Merged
jamadden merged 14 commits into
python-greenlet:masterfrom
kumaraditya303:ft-mem
Jun 17, 2026
Merged

fix refleaks from suspended frames#512
jamadden merged 14 commits into
python-greenlet:masterfrom
kumaraditya303:ft-mem

Conversation

@kumaraditya303

@kumaraditya303 kumaraditya303 commented Jun 16, 2026

Copy link
Copy Markdown
Contributor

This PR fixes refleaks of greenlet because of refs from suspended frames which were not previously cleared.

Follows up from #511

cc @jamadden

Comment thread src/greenlet/TUserGreenlet.cpp

@jamadden jamadden left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

This is a work-in-progress I know, but here's a review of what I'm seeing so far.

Comment thread src/greenlet/tests/leakcheck.py Outdated
Comment thread src/greenlet/PyGreenlet.cpp Outdated
Comment thread src/greenlet/tests/test_greenlet.py
@kumaraditya303 kumaraditya303 requested a review from jamadden June 17, 2026 12:42

@jamadden jamadden left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

One thing I'm pretty sure needs changed, and some discussion about ignoring the leak checks.

Comment thread src/greenlet/PyGreenlet.cpp Outdated
Comment thread src/greenlet/tests/leakcheck.py Outdated
Comment thread src/greenlet/tests/leakcheck.py Outdated
@jamadden

Copy link
Copy Markdown
Contributor

Oh, I neglected to add: I've run the gevent test suite, which exercises greenlet hard, with this set of changes on 3.14 and 3.15 without any issues.

@kumaraditya303

Copy link
Copy Markdown
Contributor Author

Ok, it looks like it only fails for 3.10 on Windows, I'll add ignore for that.

@kumaraditya303 kumaraditya303 requested a review from jamadden June 17, 2026 16:01
@jamadden jamadden merged commit 6563c5e into python-greenlet:master Jun 17, 2026
39 checks passed
@jamadden

Copy link
Copy Markdown
Contributor

Thanks!

Are you planning any more PRs, or am I good to make a release sometime in the next few days?

jamadden added a commit that referenced this pull request Jun 17, 2026
@kumaraditya303

Copy link
Copy Markdown
Contributor Author

Are you planning any more PRs, or am I good to make a release sometime in the next few days?

No, the work is complete, feel free to make a release.

@kumaraditya303 kumaraditya303 deleted the ft-mem branch June 17, 2026 16:36
lthoangg pushed a commit to lthoangg/OpenAgentd that referenced this pull request Jun 22, 2026
Bumps the python-minor-patch group with 18 updates:

| Package | From | To |
| --- | --- | --- |
| [pydantic-settings](https://github.com/pydantic/pydantic-settings) |
`2.13.1` | `2.14.2` |
| [greenlet](https://github.com/python-greenlet/greenlet) | `3.4.0` |
`3.5.2` |
| [ddgs](https://github.com/deedy5/ddgs) | `9.13.0` | `9.14.4` |
| [fastapi](https://github.com/fastapi/fastapi) | `0.135.3` | `0.138.0`
|
| [uvicorn](https://github.com/Kludex/uvicorn) | `0.44.0` | `0.49.0` |
| [sse-starlette](https://github.com/sysid/sse-starlette) | `3.3.4` |
`3.4.5` |
|
[opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python)
| `1.41.0` | `1.42.1` |
|
[opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python)
| `1.41.0` | `1.42.1` |
| [python-multipart](https://github.com/Kludex/python-multipart) |
`0.0.26` | `0.0.32` |
| [mcp](https://github.com/modelcontextprotocol/python-sdk) | `1.27.0` |
`1.28.0` |
| [boto3](https://github.com/boto/boto3) | `1.43.0` | `1.43.34` |
| [duckdb](https://github.com/duckdb/duckdb-python) | `1.5.2` | `1.5.4`
|
| [pytest](https://github.com/pytest-dev/pytest) | `9.0.2` | `9.1.1` |
| [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) |
`1.3.0` | `1.4.0` |
| [respx](https://github.com/lundberg/respx) | `0.22.0` | `0.23.1` |
| [ruff](https://github.com/astral-sh/ruff) | `0.15.8` | `0.15.18` |
| [tiktoken](https://github.com/openai/tiktoken) | `0.12.0` | `0.13.0` |
| [ty](https://github.com/astral-sh/ty) | `0.0.33` | `0.0.51` |

Updates `pydantic-settings` from 2.13.1 to 2.14.2
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/pydantic/pydantic-settings/releases">pydantic-settings's
releases</a>.</em></p>
<blockquote>
<h2>v2.14.2</h2>
<h2>What's Changed</h2>
<p>This is a security patch release.</p>
<ul>
<li>Prevent <code>NestedSecretsSettingsSource</code> from following
symlinks outside <code>secrets_dir</code> by <a
href="https://github.com/hramezani"><code>@​hramezani</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic-settings/pull/889">pydantic/pydantic-settings#889</a></li>
<li>Prepare release 2.14.2 by <a
href="https://github.com/hramezani"><code>@​hramezani</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic-settings/pull/890">pydantic/pydantic-settings#890</a></li>
</ul>
<h3>Security</h3>
<p>Fixes <a
href="https://github.com/pydantic/pydantic-settings/security/advisories/GHSA-4xgf-cpjx-pc3j">GHSA-4xgf-cpjx-pc3j</a>:
<code>NestedSecretsSettingsSource</code> with
<code>secrets_nested_subdir=True</code> could follow a symbolic link
inside <code>secrets_dir</code> pointing outside it, reading out-of-tree
files into settings values and bypassing the
<code>secrets_dir_max_size</code> cap. Affected versions: <code>&gt;=
2.12.0, &lt; 2.14.2</code>.</p>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/pydantic/pydantic-settings/compare/v2.14.1...v2.14.2">https://github.com/pydantic/pydantic-settings/compare/v2.14.1...v2.14.2</a></p>
<h2>v2.14.1</h2>
<h2>What's Changed</h2>
<ul>
<li>Bump the python-packages group with 4 updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/pydantic/pydantic-settings/pull/850">pydantic/pydantic-settings#850</a></li>
<li>Bump the python-packages group with 5 updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/pydantic/pydantic-settings/pull/854">pydantic/pydantic-settings#854</a></li>
<li>Bump the github-actions group with 3 updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/pydantic/pydantic-settings/pull/853">pydantic/pydantic-settings#853</a></li>
<li>Bump the python-packages group with 2 updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/pydantic/pydantic-settings/pull/856">pydantic/pydantic-settings#856</a></li>
<li>Fix field named <code>cls</code> conflicting with classmethod
parameter by <a
href="https://github.com/hramezani"><code>@​hramezani</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic-settings/pull/858">pydantic/pydantic-settings#858</a></li>
<li>Prepare release 2.14.1 by <a
href="https://github.com/hramezani"><code>@​hramezani</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic-settings/pull/859">pydantic/pydantic-settings#859</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/pydantic/pydantic-settings/compare/v2.14.0...v2.14.1">https://github.com/pydantic/pydantic-settings/compare/v2.14.0...v2.14.1</a></p>
<h2>v2.14.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Fix parsing env vars into Optional Strict types by <a
href="https://github.com/hramezani"><code>@​hramezani</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic-settings/pull/792">pydantic/pydantic-settings#792</a></li>
<li>Fix RecursionError with mutually recursive models in CLI by <a
href="https://github.com/hramezani"><code>@​hramezani</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic-settings/pull/794">pydantic/pydantic-settings#794</a></li>
<li>Fix env_file from model_config ignored in CliApp.run() (<a
href="https://redirect.github.com/pydantic/pydantic-settings/issues/795">#795</a>)
by <a href="https://github.com/hramezani"><code>@​hramezani</code></a>
in <a
href="https://redirect.github.com/pydantic/pydantic-settings/pull/796">pydantic/pydantic-settings#796</a></li>
<li>Update dependencies by <a
href="https://github.com/hramezani"><code>@​hramezani</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic-settings/pull/798">pydantic/pydantic-settings#798</a></li>
<li>Add Dependabot configuration by <a
href="https://github.com/hramezani"><code>@​hramezani</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic-settings/pull/801">pydantic/pydantic-settings#801</a></li>
<li>Bump samuelcolvin/check-python-version from 4.1 to 5 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/pydantic/pydantic-settings/pull/802">pydantic/pydantic-settings#802</a></li>
<li>Bump actions/upload-artifact from 4 to 7 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/pydantic/pydantic-settings/pull/803">pydantic/pydantic-settings#803</a></li>
<li>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/pydantic/pydantic-settings/pull/804">pydantic/pydantic-settings#804</a></li>
<li>Bump astral-sh/setup-uv from 5 to 7 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/pydantic/pydantic-settings/pull/805">pydantic/pydantic-settings#805</a></li>
<li>Bump actions/setup-python from 5 to 6 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/pydantic/pydantic-settings/pull/806">pydantic/pydantic-settings#806</a></li>
<li>Ignore chardet and group GitHub Actions in Dependabot by <a
href="https://github.com/hramezani"><code>@​hramezani</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic-settings/pull/808">pydantic/pydantic-settings#808</a></li>
<li>Bump actions/download-artifact from 4 to 8 in the github-actions
group by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/pydantic/pydantic-settings/pull/809">pydantic/pydantic-settings#809</a></li>
<li>Bump the python-packages group with 2 updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/pydantic/pydantic-settings/pull/810">pydantic/pydantic-settings#810</a></li>
<li>Support reading .env files from FIFOs (e.g. 1Password Environments)
by <a href="https://github.com/JacobHayes"><code>@​JacobHayes</code></a>
in <a
href="https://redirect.github.com/pydantic/pydantic-settings/pull/776">pydantic/pydantic-settings#776</a></li>
<li>Fix AliasChoices ignored when changing provider priority by <a
href="https://github.com/hramezani"><code>@​hramezani</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic-settings/pull/813">pydantic/pydantic-settings#813</a></li>
<li>fix: resolve KeyError in run_subcommand for underscore field names
by <a
href="https://github.com/bradykieffer"><code>@​bradykieffer</code></a>
in <a
href="https://redirect.github.com/pydantic/pydantic-settings/pull/799">pydantic/pydantic-settings#799</a></li>
<li>Bump the python-packages group with 3 updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/pydantic/pydantic-settings/pull/814">pydantic/pydantic-settings#814</a></li>
<li>Fix <code>Literal[numeric Enum]</code> coercion for CLI and env vars
by <a href="https://github.com/m9810223"><code>@​m9810223</code></a> in
<a
href="https://redirect.github.com/pydantic/pydantic-settings/pull/811">pydantic/pydantic-settings#811</a></li>
<li>Fix nested discriminated unions not discovered by env/CLI providers
by <a href="https://github.com/hramezani"><code>@​hramezani</code></a>
in <a
href="https://redirect.github.com/pydantic/pydantic-settings/pull/816">pydantic/pydantic-settings#816</a></li>
<li>Bump the python-packages group with 3 updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/pydantic/pydantic-settings/pull/820">pydantic/pydantic-settings#820</a></li>
<li>CLI ensure env nested max split internally. by <a
href="https://github.com/kschwab"><code>@​kschwab</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic-settings/pull/821">pydantic/pydantic-settings#821</a></li>
<li>Bump the python-packages group with 4 updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/pydantic/pydantic-settings/pull/824">pydantic/pydantic-settings#824</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/pydantic/pydantic-settings/commit/d703bd717e5e07439fa89da2245eee6139413e9e"><code>d703bd7</code></a>
Prepare release 2.14.2 (<a
href="https://redirect.github.com/pydantic/pydantic-settings/issues/890">#890</a>)</li>
<li><a
href="https://github.com/pydantic/pydantic-settings/commit/e95c30bec8cfaee88ee275138c064aea97a25bdf"><code>e95c30b</code></a>
Prepare release 2.14.1 (<a
href="https://redirect.github.com/pydantic/pydantic-settings/issues/859">#859</a>)</li>
<li><a
href="https://github.com/pydantic/pydantic-settings/commit/0c8734581b6cf70a995afad603ac456631d00621"><code>0c87345</code></a>
Fix field named <code>cls</code> conflicting with classmethod parameter
(<a
href="https://redirect.github.com/pydantic/pydantic-settings/issues/858">#858</a>)</li>
<li><a
href="https://github.com/pydantic/pydantic-settings/commit/7bd0072795a800065b42210b6dca90fc9b83daf7"><code>7bd0072</code></a>
Bump the python-packages group with 2 updates (<a
href="https://redirect.github.com/pydantic/pydantic-settings/issues/856">#856</a>)</li>
<li><a
href="https://github.com/pydantic/pydantic-settings/commit/b03e573d017ed48e1c2774a5e0b715db9766c76b"><code>b03e573</code></a>
Bump the github-actions group with 3 updates (<a
href="https://redirect.github.com/pydantic/pydantic-settings/issues/853">#853</a>)</li>
<li><a
href="https://github.com/pydantic/pydantic-settings/commit/eaa3b434938411ec8a3717ea646614561e713f51"><code>eaa3b43</code></a>
Bump the python-packages group with 5 updates (<a
href="https://redirect.github.com/pydantic/pydantic-settings/issues/854">#854</a>)</li>
<li><a
href="https://github.com/pydantic/pydantic-settings/commit/9f95615c24c6813c1d7d203576581a79cb6d9e8e"><code>9f95615</code></a>
Bump the python-packages group with 4 updates (<a
href="https://redirect.github.com/pydantic/pydantic-settings/issues/850">#850</a>)</li>
<li><a
href="https://github.com/pydantic/pydantic-settings/commit/8916beeecc6d0510e3d0532a0ed839937400ddc3"><code>8916bee</code></a>
Prepare release 2.14.0 (<a
href="https://redirect.github.com/pydantic/pydantic-settings/issues/848">#848</a>)</li>
<li><a
href="https://github.com/pydantic/pydantic-settings/commit/39e551c0910c85505b608ff85a103b2c9f7396c5"><code>39e551c</code></a>
Fix CLI descriptions lost under <code>python -OO</code> by falling back
to `json_schema_...</li>
<li><a
href="https://github.com/pydantic/pydantic-settings/commit/9ed7f48ea2c90f436a03b01f721fe6656c869b14"><code>9ed7f48</code></a>
Bump the python-packages group with 4 updates (<a
href="https://redirect.github.com/pydantic/pydantic-settings/issues/847">#847</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/pydantic/pydantic-settings/compare/v2.13.1...v2.14.2">compare
view</a></li>
</ul>
</details>
<br />

Updates `greenlet` from 3.4.0 to 3.5.2
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/python-greenlet/greenlet/blob/master/CHANGES.rst">greenlet's
changelog</a>.</em></p>
<blockquote>
<h1>3.5.2 (2026-06-17)</h1>
<ul>
<li>The minimum supported version of Python 3.15 is now 3.15b2.</li>
<li>Fix some garbage-collection related crashes on free-threaded Python
3.15. Thanks to Kumar Aditya in <code>PR
[#511](https://github.com/python-greenlet/greenlet/issues/511)
&lt;https://github.com/python-greenlet/greenlet/pull/511&gt;</code>_.</li>
<li>Improve garbage collection of greenlets. This mostly applies to
Python 3.15. Thanks to Kumar Aditya in <code>PR
[#512](https://github.com/python-greenlet/greenlet/issues/512)
&lt;https://github.com/python-greenlet/greenlet/pull/512&gt;</code>_.</li>
</ul>
<h1>3.5.1 (2026-05-20)</h1>
<ul>
<li>Add preliminary support for Python 3.15b1. This has not been
reviewed by CPython core developers, but all tests pass. Binary
wheels of this version won't work on earlier Python 3.15 builds and
may not work on later 3.15 builds.</li>
<li>Fix the discrepancy in the way the two <code>getcurrent</code> APIs
behave
during greenlet teardown. One API (the C API used by, e.g., gevent)
raised a
<code>RuntimeError</code>; the other (the Python
<code>greenlet.getcurrent</code> API)
returned <code>None</code>. This second way is incompatible with
greenlet's type
annotations, so <code>greenlet.getcurrent</code> now raises a
<code>RuntimeError</code> as well.</li>
</ul>
<h1>3.5.0 (2026-04-27)</h1>
<ul>
<li>
<p>Remove the <code>atexit</code> callback. This callback caused
greenlet APIs
to become unavailable far too soon during interpreter shutdown. Now
they remain available while all <code>atexit</code> callbacks run.
Sometime
after <code>Py_IsFinalizing</code> becomes true, they may begin
misbehaving.
Because the order in which C extensions are finalized is undefined,
C extensions that are sensitive to this need to check the results of
that function before invoking greenlet APIs. As a convenience,
<code>PyGreenlet_GetCurrent</code> sets an exception and returns
<code>NULL</code>
when this happens (and <code>greenlet.getcurrent</code> begins returning
<code>None</code>); other greenlet C API functions have undefined
behaviour.
Methods invoked directly on pre-existing <code>greenlet.greenlet</code>
objects will continue to function at least until the greenlet C
extension has been garbage collected and finalized.</p>
<p>See <code>PR 508
&lt;https://github.com/python-greenlet/greenlet/pull/508&gt;</code>_.</p>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/0b64e9c851ae7bd8fc9b73d98031168237ee71db"><code>0b64e9c</code></a>
Preparing release 3.5.2</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/3e28d276d01e74882f4cff1a4b54aed47153d617"><code>3e28d27</code></a>
Add change note for <a
href="https://redirect.github.com/python-greenlet/greenlet/issues/512">#512</a>
[skip ci]</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/6563c5e909a84c037c3d03e46851cd3016525a35"><code>6563c5e</code></a>
Merge pull request <a
href="https://redirect.github.com/python-greenlet/greenlet/issues/512">#512</a>
from kumaraditya303/ft-mem</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/ab6eff60766e8954d890eef064ee2e1dd7c8b262"><code>ab6eff6</code></a>
add ignore for win 3.10</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/41f5349a0f1b69ce180c90acb9a4cf2c84d612e7"><code>41f5349</code></a>
revert back to fails_leakcheck_on_py314_or_less</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/b0aac05734e9e41d4a592e0c913846990a9c7c24"><code>b0aac05</code></a>
set fail-fast=false and if condition correctly</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/2f87f316613d401bbf1b1653595654654e572550"><code>2f87f31</code></a>
rename to ignores_leakcheck_on_py314_or_less</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/28bbde3de939acefe8e9d72fb179115b81392a87"><code>28bbde3</code></a>
add comments</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/35206b8dc536cfe92c09509432b4a301b5fede5f"><code>35206b8</code></a>
fix test and restrict tp_is_gc &lt; 3.15</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/abdbab55b03334700fd264e523ac75926daba043"><code>abdbab5</code></a>
fix gil enabled</li>
<li>Additional commits viewable in <a
href="https://github.com/python-greenlet/greenlet/compare/3.4.0...3.5.2">compare
view</a></li>
</ul>
</details>
<br />

Updates `ddgs` from 9.13.0 to 9.14.4
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/deedy5/ddgs/releases">ddgs's
releases</a>.</em></p>
<blockquote>
<h2>v9.14.4</h2>
<h2>What's Changed</h2>
<ul>
<li>fix(engines): update DuckDuckgo by <a
href="https://github.com/deedy5"><code>@​deedy5</code></a> in <a
href="https://redirect.github.com/deedy5/ddgs/pull/465">deedy5/ddgs#465</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/deedy5/ddgs/compare/v9.14.3...v9.14.4">https://github.com/deedy5/ddgs/compare/v9.14.3...v9.14.4</a></p>
<h2>v9.14.3</h2>
<h2>What's Changed</h2>
<ul>
<li>feat(engines): add Startpage by <a
href="https://github.com/deedy5"><code>@​deedy5</code></a> in <a
href="https://redirect.github.com/deedy5/ddgs/pull/464">deedy5/ddgs#464</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/deedy5/ddgs/compare/v9.14.2...v9.14.3">https://github.com/deedy5/ddgs/compare/v9.14.2...v9.14.3</a></p>
<h2>v9.14.2</h2>
<h2>What's Changed</h2>
<ul>
<li>refactor(ddgs): improve engine selection and error handling by <a
href="https://github.com/deedy5"><code>@​deedy5</code></a> in <a
href="https://redirect.github.com/deedy5/ddgs/pull/456">deedy5/ddgs#456</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/deedy5/ddgs/compare/v9.14.1...v9.14.2">https://github.com/deedy5/ddgs/compare/v9.14.1...v9.14.2</a></p>
<h2>v9.14.1</h2>
<h2>What's Changed</h2>
<ul>
<li><a
href="https://github.com/deedy5/ddgs/commit/6e4a50706509c52e3d5da7d4870fbf82bc0a342e">fix(engines):
disable Google until fixed</a></li>
<li><a
href="https://github.com/deedy5/ddgs/commit/cb2abbb2006a30c67f5455ad9205306f7c571a7d">build(deps):
bump primp to 1.2.3</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/deedy5/ddgs/compare/v9.14.0...v9.14.1">https://github.com/deedy5/ddgs/compare/v9.14.0...v9.14.1</a></p>
<h2>v9.14.0</h2>
<h2>What's Changed</h2>
<ul>
<li>feat(dht): add beta p2p distributed cache network by <a
href="https://github.com/deedy5"><code>@​deedy5</code></a> in <a
href="https://redirect.github.com/deedy5/ddgs/pull/451">deedy5/ddgs#451</a></li>
</ul>
<h3>New Features</h3>
<ul>
<li>✅ DHT distributed peer-to-peer search result cache network
(beta)</li>
<li>Full libp2p Kademlia implementation</li>
<li>Automatic peer discovery and bootstrap network</li>
<li>Local cache with TTL eviction</li>
<li>REST API endpoints via <code>ddgs[api]</code> extra</li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/deedy5/ddgs/compare/v9.13.1...v9.14.0">https://github.com/deedy5/ddgs/compare/v9.13.1...v9.14.0</a></p>
<h2>v9.13.1</h2>
<h2>What's Changed</h2>
<ul>
<li>fix(cli): handle deprecated -k flag and add bing to images backends
by <a href="https://github.com/deedy5"><code>@​deedy5</code></a> in <a
href="https://redirect.github.com/deedy5/ddgs/pull/449">deedy5/ddgs#449</a></li>
<li>fix(base): remove per-element strip in extract_results by <a
href="https://github.com/deedy5"><code>@​deedy5</code></a> in <a
href="https://redirect.github.com/deedy5/ddgs/pull/450">deedy5/ddgs#450</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/deedy5/ddgs/compare/v9.13.0...v9.13.1">https://github.com/deedy5/ddgs/compare/v9.13.0...v9.13.1</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/deedy5/ddgs/commit/a4bf2f21827dc632296008068c5da00960f3cd05"><code>a4bf2f2</code></a>
chore(release): bump version to 9.14.4</li>
<li><a
href="https://github.com/deedy5/ddgs/commit/4b2afc4ac75985788c6b78a4c2fae831a872f105"><code>4b2afc4</code></a>
refactor(api_server): wrap fastapi_app import in try-except block</li>
<li><a
href="https://github.com/deedy5/ddgs/commit/21de33d67926d1db5e16d7c1ee179a36f9946a74"><code>21de33d</code></a>
fix(engines): update DuckDuckgo</li>
<li><a
href="https://github.com/deedy5/ddgs/commit/7347d5837b663824904725bf24a3b51d658bda50"><code>7347d58</code></a>
chore(release): bump version to 9.14.3</li>
<li><a
href="https://github.com/deedy5/ddgs/commit/97d993eb5c6b6b82e96e7e428ca1fd97c63259d1"><code>97d993e</code></a>
feat(engines): add Startpage</li>
<li><a
href="https://github.com/deedy5/ddgs/commit/ad0f617d9bfdd34510f2b36185610eee94f98f18"><code>ad0f617</code></a>
fix(engines): update Google useragents</li>
<li><a
href="https://github.com/deedy5/ddgs/commit/783308af96ed4c23dad4f21be7108f2ce48c4890"><code>783308a</code></a>
chore(release): bump version to 9.14.2</li>
<li><a
href="https://github.com/deedy5/ddgs/commit/9d21fffd77e28ceff19caa7ba57cbd9e426ef228"><code>9d21fff</code></a>
refactor(ddgs): improve engine selection and error handling</li>
<li><a
href="https://github.com/deedy5/ddgs/commit/d3194a3ab05454e354ac59c3d1ccc0189470e80a"><code>d3194a3</code></a>
chore(release): bump version to v9.14.1</li>
<li><a
href="https://github.com/deedy5/ddgs/commit/cb2abbb2006a30c67f5455ad9205306f7c571a7d"><code>cb2abbb</code></a>
build(deps): bump primp to 1.2.3</li>
<li>Additional commits viewable in <a
href="https://github.com/deedy5/ddgs/compare/v9.13.0...v9.14.4">compare
view</a></li>
</ul>
</details>
<br />

Updates `fastapi` from 0.135.3 to 0.138.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.138.0</h2>
<h3>Features</h3>
<ul>
<li>✨ Add support for <code>app.frontend(&quot;/&quot;,
directory=&quot;dist&quot;)</code> and
<code>router.frontend(&quot;/&quot;, directory=&quot;dist&quot;)</code>.
PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/15800">#15800</a>
by <a href="https://github.com/tiangolo"><code>@​tiangolo</code></a>.
<ul>
<li>Read the docs: <a
href="https://fastapi.tiangolo.com/tutorial/frontend/">Frontend</a>.</li>
</ul>
</li>
</ul>
<h3>Docs</h3>
<ul>
<li>📝 Fix typo in release notes. PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/15807">#15807</a>
by <a
href="https://github.com/tiangolo"><code>@​tiangolo</code></a>.</li>
<li>📝 Add <code>app.frontend()</code> instructions to Agent Library
Skill. PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/15805">#15805</a>
by <a
href="https://github.com/tiangolo"><code>@​tiangolo</code></a>.</li>
<li>📝 Update release notes link. PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/15802">#15802</a>
by <a
href="https://github.com/tiangolo"><code>@​tiangolo</code></a>.</li>
<li>✏️ Update white space characters in bigger apps. PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/15801">#15801</a>
by <a
href="https://github.com/tiangolo"><code>@​tiangolo</code></a>.</li>
<li>✏️ Fix grammar, typos, and broken links in docs. PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/15694">#15694</a>
by <a
href="https://github.com/YuriiMotov"><code>@​YuriiMotov</code></a>.</li>
</ul>
<h3>Translations</h3>
<ul>
<li>🌐 Enable Hindi docs translations. PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/15554">#15554</a>
by <a
href="https://github.com/YuriiMotov"><code>@​YuriiMotov</code></a>.</li>
</ul>
<h3>Internal</h3>
<ul>
<li>🐛 Fix failing test, update format for raised errors. PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/15804">#15804</a>
by <a
href="https://github.com/tiangolo"><code>@​tiangolo</code></a>.</li>
<li>👷 Fix test-alls-green. PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/15803">#15803</a>
by <a
href="https://github.com/tiangolo"><code>@​tiangolo</code></a>.</li>
<li>🔧 Enable checking <code>release-notes.md</code> for typos. PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/15796">#15796</a>
by <a
href="https://github.com/YuriiMotov"><code>@​YuriiMotov</code></a>.</li>
<li>📝 Tweak wording about deploying to FastAPI Cloud. PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/15793">#15793</a>
by <a
href="https://github.com/tiangolo"><code>@​tiangolo</code></a>.</li>
<li>🔨 Use <code>gpt-5.5</code> model in <code>translate.py</code>,
specify <code>-chat</code> to avoid warnings. PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/15792">#15792</a>
by <a
href="https://github.com/YuriiMotov"><code>@​YuriiMotov</code></a>.</li>
</ul>
<h2>0.137.2</h2>
<h3>Features</h3>
<ul>
<li>✨ Add <code>iter_route_contexts()</code> for advanced use cases that
used to use <code>router.routes</code> (e.g. Jupyverse). PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/15785">#15785</a>
by <a
href="https://github.com/tiangolo"><code>@​tiangolo</code></a>.</li>
</ul>
<h3>Translations</h3>
<ul>
<li>🌐 Fix broken Markdown in Korean custom response docs. PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/15774">#15774</a>
by <a href="https://github.com/kooqooo"><code>@​kooqooo</code></a>.</li>
<li>🌐 Update translations for fr (update-outdated). PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/15761">#15761</a>
by <a
href="https://github.com/tiangolo"><code>@​tiangolo</code></a>.</li>
<li>🌐 Update translations for zh-hant (update-outdated). PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/15760">#15760</a>
by <a
href="https://github.com/tiangolo"><code>@​tiangolo</code></a>.</li>
<li>🌐 Update translations for de (update-outdated). PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/15759">#15759</a>
by <a
href="https://github.com/tiangolo"><code>@​tiangolo</code></a>.</li>
<li>🌐 Update translations for ko (update-outdated). PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/15757">#15757</a>
by <a
href="https://github.com/tiangolo"><code>@​tiangolo</code></a>.</li>
<li>🌐 Update translations for uk (update-outdated). PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/15756">#15756</a>
by <a
href="https://github.com/tiangolo"><code>@​tiangolo</code></a>.</li>
<li>🌐 Update translations for zh (update-outdated). PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/15755">#15755</a>
by <a
href="https://github.com/tiangolo"><code>@​tiangolo</code></a>.</li>
<li>🌐 Update translations for tr (update-outdated). PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/15754">#15754</a>
by <a
href="https://github.com/tiangolo"><code>@​tiangolo</code></a>.</li>
<li>🌐 Update translations for pt (update-outdated). PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/15753">#15753</a>
by <a
href="https://github.com/tiangolo"><code>@​tiangolo</code></a>.</li>
<li>🌐 Update translations for es (update-outdated). PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/15752">#15752</a>
by <a
href="https://github.com/tiangolo"><code>@​tiangolo</code></a>.</li>
<li>🌐 Update translations for ja (update-outdated). PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/15751">#15751</a>
by <a
href="https://github.com/tiangolo"><code>@​tiangolo</code></a>.</li>
<li>🌐 Update translations for ru (update-outdated). PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/15758">#15758</a>
by <a
href="https://github.com/tiangolo"><code>@​tiangolo</code></a>.</li>
</ul>
<h3>Internal</h3>
<ul>
<li>🔧 Update sponsors: add BairesDev. PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/15787">#15787</a>
by <a
href="https://github.com/tiangolo"><code>@​tiangolo</code></a>.</li>
<li>🔨 Update sponsors script to simplify previews. PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/15786">#15786</a>
by <a
href="https://github.com/tiangolo"><code>@​tiangolo</code></a>.</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/fastapi/fastapi/commit/4b83b0d409009c8de9df4070fe163838b1a700c7"><code>4b83b0d</code></a>
🔖 Release version 0.138.0 (<a
href="https://redirect.github.com/fastapi/fastapi/issues/15808">#15808</a>)</li>
<li><a
href="https://github.com/fastapi/fastapi/commit/041cb0cdfa2d0f705d14ed07c2c2e0f92ef5f32c"><code>041cb0c</code></a>
📝 Update release notes</li>
<li><a
href="https://github.com/fastapi/fastapi/commit/10393846ede7a2947cec594d15a43f813001cab4"><code>1039384</code></a>
📝 Fix typo in release notes (<a
href="https://redirect.github.com/fastapi/fastapi/issues/15807">#15807</a>)</li>
<li><a
href="https://github.com/fastapi/fastapi/commit/0303491b69ff84a4632c0314e6db4df74f2f93f9"><code>0303491</code></a>
📝 Update release notes</li>
<li><a
href="https://github.com/fastapi/fastapi/commit/190f6e2033c8b886b25027be284d8c8c1893f28c"><code>190f6e2</code></a>
📝 Add Frontend instructions to Agent Library Skill (<a
href="https://redirect.github.com/fastapi/fastapi/issues/15805">#15805</a>)</li>
<li><a
href="https://github.com/fastapi/fastapi/commit/17945e5ab7f25234340c152a40d232a98857e079"><code>17945e5</code></a>
📝 Update release notes</li>
<li><a
href="https://github.com/fastapi/fastapi/commit/2260afaf433103c8104b34d256cf0b96b058823b"><code>2260afa</code></a>
🐛 Fix failing test, update format for raised errors (<a
href="https://redirect.github.com/fastapi/fastapi/issues/15804">#15804</a>)</li>
<li><a
href="https://github.com/fastapi/fastapi/commit/0cd5001d0ef80a07e2d775c5c75522391a3e06d7"><code>0cd5001</code></a>
📝 Update release notes</li>
<li><a
href="https://github.com/fastapi/fastapi/commit/7cb1ab6264bc03319832f553730b511192a0c0d3"><code>7cb1ab6</code></a>
👷 Fix test-alls-green (<a
href="https://redirect.github.com/fastapi/fastapi/issues/15803">#15803</a>)</li>
<li><a
href="https://github.com/fastapi/fastapi/commit/9c7eceb00ff6e1d37980954418f7c9dab30a4cd5"><code>9c7eceb</code></a>
📝 Update release notes</li>
<li>Additional commits viewable in <a
href="https://github.com/fastapi/fastapi/compare/0.135.3...0.138.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `uvicorn` from 0.44.0 to 0.49.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/Kludex/uvicorn/releases">uvicorn's
releases</a>.</em></p>
<blockquote>
<h2>Version 0.49.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Bump httptools minimum version to 0.8.0 by <a
href="https://github.com/Kludex"><code>@​Kludex</code></a> in <a
href="https://redirect.github.com/Kludex/uvicorn/pull/2962">Kludex/uvicorn#2962</a></li>
<li>Consume duplicate forwarding headers in ProxyHeadersMiddleware
(reverses the 0.48.0 behavior of ignoring them) by <a
href="https://github.com/Kludex"><code>@​Kludex</code></a> in <a
href="https://redirect.github.com/Kludex/uvicorn/pull/2971">Kludex/uvicorn#2971</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/Kludex/uvicorn/compare/0.48.0...0.49.0">https://github.com/Kludex/uvicorn/compare/0.48.0...0.49.0</a></p>
<h2>Version 0.48.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Default <code>ssl_ciphers</code> to <code>None</code> and use
OpenSSL defaults by <a
href="https://github.com/Kludex"><code>@​Kludex</code></a> in <a
href="https://redirect.github.com/Kludex/uvicorn/pull/2940">Kludex/uvicorn#2940</a></li>
<li>Ignore duplicate forwarding headers in
<code>ProxyHeadersMiddleware</code> by <a
href="https://github.com/Kludex"><code>@​Kludex</code></a> in <a
href="https://redirect.github.com/Kludex/uvicorn/pull/2944">Kludex/uvicorn#2944</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/Kludex/uvicorn/compare/0.47.0...0.48.0">https://github.com/Kludex/uvicorn/compare/0.47.0...0.48.0</a></p>
<h2>Version 0.47.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Eagerly import the ASGI app in the parent process by <a
href="https://github.com/Kludex"><code>@​Kludex</code></a> in <a
href="https://redirect.github.com/Kludex/uvicorn/pull/2919">Kludex/uvicorn#2919</a></li>
<li>Add <code>ssl_context_factory</code> for custom
<code>SSLContext</code> configuration by <a
href="https://github.com/Kludex"><code>@​Kludex</code></a> in <a
href="https://redirect.github.com/Kludex/uvicorn/pull/2920">Kludex/uvicorn#2920</a></li>
<li>Treat <code>fd=0</code> as a valid file descriptor with
reload/workers by <a
href="https://github.com/eltoder"><code>@​eltoder</code></a> in <a
href="https://redirect.github.com/Kludex/uvicorn/pull/2927">Kludex/uvicorn#2927</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/Kludex/uvicorn/compare/0.46.0...0.47.0">https://github.com/Kludex/uvicorn/compare/0.46.0...0.47.0</a></p>
<h2>Version 0.46.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Support <code>ws_max_size</code> in <code>wsproto</code>
implementation by <a
href="https://github.com/Kludex"><code>@​Kludex</code></a> in <a
href="https://redirect.github.com/Kludex/uvicorn/pull/2915">Kludex/uvicorn#2915</a></li>
<li>Support <code>ws_ping_interval</code> and
<code>ws_ping_timeout</code> in <code>wsproto</code> implementation by
<a href="https://github.com/Kludex"><code>@​Kludex</code></a> in <a
href="https://redirect.github.com/Kludex/uvicorn/pull/2916">Kludex/uvicorn#2916</a></li>
<li>Use <code>bytearray</code> for incoming WebSocket message buffer in
websockets-sansio by <a
href="https://github.com/Kludex"><code>@​Kludex</code></a> in <a
href="https://redirect.github.com/Kludex/uvicorn/pull/2917">Kludex/uvicorn#2917</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/Kludex/uvicorn/compare/0.45.0...0.46.0">https://github.com/Kludex/uvicorn/compare/0.45.0...0.46.0</a></p>
<h2>Version 0.45.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Preserve forwarded client ports in proxy headers middleware by <a
href="https://github.com/Kludex"><code>@​Kludex</code></a> in <a
href="https://redirect.github.com/Kludex/uvicorn/pull/2903">Kludex/uvicorn#2903</a></li>
<li>Accept <code>os.PathLike</code> for <code>log_config</code> by <a
href="https://github.com/Kludex"><code>@​Kludex</code></a> in <a
href="https://redirect.github.com/Kludex/uvicorn/pull/2905">Kludex/uvicorn#2905</a></li>
<li>Accept <code>log_level</code> strings case-insensitively by <a
href="https://github.com/Kludex"><code>@​Kludex</code></a> in <a
href="https://redirect.github.com/Kludex/uvicorn/pull/2907">Kludex/uvicorn#2907</a></li>
<li>Raise helpful <code>ImportError</code> when PyYAML is missing for
YAML log config by <a
href="https://github.com/Kludex"><code>@​Kludex</code></a> in <a
href="https://redirect.github.com/Kludex/uvicorn/pull/2906">Kludex/uvicorn#2906</a></li>
<li>Revert empty context for ASGI runs by <a
href="https://github.com/Kludex"><code>@​Kludex</code></a> in <a
href="https://redirect.github.com/Kludex/uvicorn/pull/2911">Kludex/uvicorn#2911</a></li>
<li>Add <code>--reset-contextvars</code> flag to isolate ASGI request
context by <a href="https://github.com/Kludex"><code>@​Kludex</code></a>
in <a
href="https://redirect.github.com/Kludex/uvicorn/pull/2912">Kludex/uvicorn#2912</a></li>
<li>Revert &quot;Emit <code>http.disconnect</code> on server shutdown
for streaming responses&quot; (<a
href="https://redirect.github.com/Kludex/uvicorn/issues/2829">#2829</a>)
by <a href="https://github.com/Kludex"><code>@​Kludex</code></a> in <a
href="https://redirect.github.com/Kludex/uvicorn/pull/2913">Kludex/uvicorn#2913</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/Krishnachaitanyakc"><code>@​Krishnachaitanyakc</code></a>
made their first contribution in <a
href="https://redirect.github.com/Kludex/uvicorn/pull/2870">Kludex/uvicorn#2870</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/Kludex/uvicorn/compare/0.44.0...0.45.0">https://github.com/Kludex/uvicorn/compare/0.44.0...0.45.0</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/Kludex/uvicorn/blob/main/docs/release-notes.md">uvicorn's
changelog</a>.</em></p>
<blockquote>
<h2>0.49.0 (June 3, 2026)</h2>
<h3>Changed</h3>
<ul>
<li>Bump <code>httptools</code> minimum version to 0.8.0 (<a
href="https://redirect.github.com/Kludex/uvicorn/issues/2962">#2962</a>)</li>
<li>Consume duplicate forwarding headers in
<code>ProxyHeadersMiddleware</code> (reverses the 0.48.0 behavior of
ignoring them) (<a
href="https://redirect.github.com/Kludex/uvicorn/issues/2971">#2971</a>)</li>
</ul>
<h2>0.48.0 (May 24, 2026)</h2>
<h3>Changed</h3>
<ul>
<li>Default <code>ssl_ciphers</code> to <code>None</code> and use
OpenSSL defaults (<a
href="https://redirect.github.com/Kludex/uvicorn/issues/2940">#2940</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Ignore duplicate forwarding headers in
<code>ProxyHeadersMiddleware</code> (<a
href="https://redirect.github.com/Kludex/uvicorn/issues/2944">#2944</a>)</li>
</ul>
<h2>0.47.0 (May 14, 2026)</h2>
<h3>Added</h3>
<ul>
<li>Add <code>ssl_context_factory</code> for custom
<code>SSLContext</code> configuration (<a
href="https://redirect.github.com/Kludex/uvicorn/issues/2920">#2920</a>)</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Eagerly import the ASGI app in the parent process (<a
href="https://redirect.github.com/Kludex/uvicorn/issues/2919">#2919</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Treat <code>fd=0</code> as a valid file descriptor with
reload/workers (<a
href="https://redirect.github.com/Kludex/uvicorn/issues/2927">#2927</a>)</li>
</ul>
<h2>0.46.0 (April 23, 2026)</h2>
<h3>Added</h3>
<ul>
<li>Support <code>ws_max_size</code> in <code>wsproto</code>
implementation (<a
href="https://redirect.github.com/Kludex/uvicorn/issues/2915">#2915</a>)</li>
<li>Support <code>ws_ping_interval</code> and
<code>ws_ping_timeout</code> in <code>wsproto</code> implementation (<a
href="https://redirect.github.com/Kludex/uvicorn/issues/2916">#2916</a>)</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Use <code>bytearray</code> for incoming WebSocket message buffer in
<code>websockets-sansio</code> (<a
href="https://redirect.github.com/Kludex/uvicorn/issues/2917">#2917</a>)</li>
</ul>
<h2>0.45.0 (April 21, 2026)</h2>
<h3>Added</h3>
<ul>
<li>Add <code>--reset-contextvars</code> flag to isolate ASGI request
context (<a
href="https://redirect.github.com/Kludex/uvicorn/issues/2912">#2912</a>)</li>
<li>Accept <code>os.PathLike</code> for <code>log_config</code> (<a
href="https://redirect.github.com/Kludex/uvicorn/issues/2905">#2905</a>)</li>
<li>Accept <code>log_level</code> strings case-insensitively (<a
href="https://redirect.github.com/Kludex/uvicorn/issues/2907">#2907</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/Kludex/uvicorn/commit/3ef2e3e08e3d9ad9572800f8bc54f3eaed9eab0a"><code>3ef2e3e</code></a>
Version 0.49.0 (<a
href="https://redirect.github.com/Kludex/uvicorn/issues/2973">#2973</a>)</li>
<li><a
href="https://github.com/Kludex/uvicorn/commit/eeb64b1d1c95a14096ed3313377c74b485f558fc"><code>eeb64b1</code></a>
Consume duplicate forwarding headers in ProxyHeadersMiddleware (<a
href="https://redirect.github.com/Kludex/uvicorn/issues/2971">#2971</a>)</li>
<li><a
href="https://github.com/Kludex/uvicorn/commit/630f4aca14e79183617c71be714030842a1041c5"><code>630f4ac</code></a>
Make the watchfiles reload tests deterministic (<a
href="https://redirect.github.com/Kludex/uvicorn/issues/2972">#2972</a>)</li>
<li><a
href="https://github.com/Kludex/uvicorn/commit/9154922e3730f7aba68ecc3ecbf536680ee8fd1c"><code>9154922</code></a>
chore(deps): bump the github-actions group across 1 directory with 6
updates ...</li>
<li><a
href="https://github.com/Kludex/uvicorn/commit/739727a1d80e468d1e47e98bbd824ee9e3c9554b"><code>739727a</code></a>
Migrate docs deploy from Cloudflare Pages to Workers (<a
href="https://redirect.github.com/Kludex/uvicorn/issues/2967">#2967</a>)</li>
<li><a
href="https://github.com/Kludex/uvicorn/commit/be4a240488d3fb678a11b8e8f83505266f5f1de7"><code>be4a240</code></a>
Gate docs preview deploy on Cloudflare token presence (<a
href="https://redirect.github.com/Kludex/uvicorn/issues/2966">#2966</a>)</li>
<li><a
href="https://github.com/Kludex/uvicorn/commit/c489d7e10dfe653a2bba914feedf2a632a026e6f"><code>c489d7e</code></a>
Bump httptools minimum version to 0.8.0 (<a
href="https://redirect.github.com/Kludex/uvicorn/issues/2962">#2962</a>)</li>
<li><a
href="https://github.com/Kludex/uvicorn/commit/9f547bd82ef52bcba206e04170b359bd6daa25b3"><code>9f547bd</code></a>
Skip docs preview deploy for Dependabot PRs (<a
href="https://redirect.github.com/Kludex/uvicorn/issues/2961">#2961</a>)</li>
<li><a
href="https://github.com/Kludex/uvicorn/commit/44446b894e37ca76830d6aa83df4349795400ed4"><code>44446b8</code></a>
Migrate documentation from MkDocs Material to Zensical (<a
href="https://redirect.github.com/Kludex/uvicorn/issues/2959">#2959</a>)</li>
<li><a
href="https://github.com/Kludex/uvicorn/commit/cfd659c4f18b526adce9c255c96707bab20af40c"><code>cfd659c</code></a>
Bump pymdown-extensions to 10.21.3 (<a
href="https://redirect.github.com/Kludex/uvicorn/issues/2958">#2958</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/Kludex/uvicorn/compare/0.44.0...0.49.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `sse-starlette` from 3.3.4 to 3.4.5
<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.4.5</h2>
<h2>What's Changed</h2>
<ul>
<li>chore(deps): bump ujson from 5.12.0 to 5.12.1 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/sysid/sse-starlette/pull/187">sysid/sse-starlette#187</a></li>
<li>chore(deps): bump idna from 3.11 to 3.15 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/sysid/sse-starlette/pull/188">sysid/sse-starlette#188</a></li>
<li>chore(deps): bump actions/download-artifact from 4 to 8 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/sysid/sse-starlette/pull/190">sysid/sse-starlette#190</a></li>
<li>chore(deps): bump starlette from 0.50.0 to 1.0.1 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/sysid/sse-starlette/pull/193">sysid/sse-starlette#193</a></li>
<li>chore(deps): bump twisted from 25.5.0 to 26.4.0rc2 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/sysid/sse-starlette/pull/194">sysid/sse-starlette#194</a></li>
<li>chore(deps): bump cryptography from 46.0.7 to 48.0.1 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/sysid/sse-starlette/pull/196">sysid/sse-starlette#196</a></li>
<li>chore(deps): bump msgpack from 1.1.2 to 1.2.1 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/sysid/sse-starlette/pull/197">sysid/sse-starlette#197</a></li>
<li>chore(deps): bump ujson from 5.12.1 to 5.13.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/sysid/sse-starlette/pull/198">sysid/sse-starlette#198</a></li>
<li>fix: test selection by <a
href="https://github.com/sysid"><code>@​sysid</code></a> in <a
href="https://redirect.github.com/sysid/sse-starlette/pull/199">sysid/sse-starlette#199</a></li>
<li>chore(deps): bump starlette from 1.0.1 to 1.3.1 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/sysid/sse-starlette/pull/195">sysid/sse-starlette#195</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/sysid/sse-starlette/compare/v3.4.4...v3.4.5">https://github.com/sysid/sse-starlette/compare/v3.4.4...v3.4.5</a></p>
<h2>v3.4.4</h2>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/sysid/sse-starlette/compare/v3.4.3...v3.4.4">https://github.com/sysid/sse-starlette/compare/v3.4.3...v3.4.4</a></p>
<h2>v3.4.3</h2>
<h2>What's Changed</h2>
<ul>
<li>chore(deps): bump granian from 2.6.0 to 2.7.4 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/sysid/sse-starlette/pull/185">sysid/sse-starlette#185</a></li>
<li>chore(deps): bump urllib3 from 2.6.3 to 2.7.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/sysid/sse-starlette/pull/186">sysid/sse-starlette#186</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/sysid/sse-starlette/compare/v3.4.2...v3.4.3">https://github.com/sysid/sse-starlette/compare/v3.4.2...v3.4.3</a></p>
<h2>v3.4.2</h2>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/sysid/sse-starlette/compare/v3.4.1...v3.4.2">https://github.com/sysid/sse-starlette/compare/v3.4.1...v3.4.2</a></p>
<h2>v3.4.1</h2>
<h2>What's Changed</h2>
<ul>
<li>chore(deps): bump cryptography from 46.0.6 to 46.0.7 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/sysid/sse-starlette/pull/181">sysid/sse-starlette#181</a></li>
<li>Chore/starlette sync by <a
href="https://github.com/sysid"><code>@​sysid</code></a> in <a
href="https://redirect.github.com/sysid/sse-starlette/pull/184">sysid/sse-starlette#184</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/sysid/sse-starlette/compare/v3.3.4...v3.4.1">https://github.com/sysid/sse-starlette/compare/v3.3.4...v3.4.1</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/sysid/sse-starlette/commit/d45e48299bcaba9a7d17c5baa0ff4108cd534039"><code>d45e482</code></a>
Bump version to 3.4.5</li>
<li><a
href="https://github.com/sysid/sse-starlette/commit/32fbde5a758e63353d67ba3444f5587649a183f0"><code>32fbde5</code></a>
Merge pull request <a
href="https://redirect.github.com/sysid/sse-starlette/issues/195">#195</a>
from sysid/dependabot/uv/starlette-1.3.1</li>
<li><a
href="https://github.com/sysid/sse-starlette/commit/eba40087f468febb2816c088dc68584be35a48d2"><code>eba4008</code></a>
Merge pull request <a
href="https://redirect.github.com/sysid/sse-starlette/issues/199">#199</a>
from sysid/fix/test-selection</li>
<li><a
href="https://github.com/sysid/sse-starlette/commit/8685f2fa4255b6da9e49545bee02abb3f489f50e"><code>8685f2f</code></a>
fix: test selection</li>
<li><a
href="https://github.com/sysid/sse-starlette/commit/66c734a3e20af28e3e9af17e57eeed0aae34e5cd"><code>66c734a</code></a>
Merge pull request <a
href="https://redirect.github.com/sysid/sse-starlette/issues/198">#198</a>
from sysid/dependabot/uv/ujson-5.13.0</li>
<li><a
href="https://github.com/sysid/sse-starlette/commit/fb928d3801bee784cf642124c17f54949eea85e3"><code>fb928d3</code></a>
Merge pull request <a
href="https://redirect.github.com/sysid/sse-starlette/issues/197">#197</a>
from sysid/dependabot/uv/msgpack-1.2.1</li>
<li><a
href="https://github.com/sysid/sse-starlette/commit/cf620f4ca6663cbb5b074783fedf889b6a59c974"><code>cf620f4</code></a>
Merge pull request <a
href="https://redirect.github.com/sysid/sse-starlette/issues/196">#196</a>
from sysid/dependabot/uv/cryptography-48.0.1</li>
<li><a
href="https://github.com/sysid/sse-starlette/commit/4a7cd516efd1e7ef6343d5bca0ddb00d3f966ef2"><code>4a7cd51</code></a>
chore(deps): bump ujson from 5.12.1 to 5.13.0</li>
<li><a
href="https://github.com/sysid/sse-starlette/commit/6069864e99255a61f1edc2781e6b2a81b283fbbb"><code>6069864</code></a>
chore(deps): bump msgpack from 1.1.2 to 1.2.1</li>
<li><a
href="https://github.com/sysid/sse-starlette/commit/9485e2be2c13970a834aa73ba4ed0c8d792639b5"><code>9485e2b</code></a>
chore(deps): bump cryptography from 46.0.7 to 48.0.1</li>
<li>Additional commits viewable in <a
href="https://github.com/sysid/sse-starlette/compare/v3.3.4...v3.4.5">compare
view</a></li>
</ul>
</details>
<br />

Updates `opentelemetry-api` from 1.41.0 to 1.42.1
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/open-telemetry/opentelemetry-python/blob/main/CHANGELOG.md">opentelemetry-api's
changelog</a>.</em></p>
<blockquote>
<h2>Version 1.42.1/0.63b1 (2026-05-21)</h2>
<h3>Fixed</h3>
<ul>
<li>Preserve the random trace ID flag when creating child spans instead
of always
setting the random trace id bit depending on the available trace id
generator.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5241">#5241</a>)</li>
</ul>
<h2>Version 1.42.0/0.63b0 (2026-05-19)</h2>
<h3>Added</h3>
<ul>
<li><code>opentelemetry-api</code>, <code>opentelemetry-sdk</code>: add
support for 'random-trace-id'
flags in W3C traceparent header trace flags. Implementations of
<code>IdGenerator</code>
that do randomly generate the 56 least significant bits, should also
implement a <code>is_trace_id_random</code> methods that returns
<code>True</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4854">#4854</a>)</li>
<li>logs: add exception support to Logger emit and LogRecord attributes
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4908">#4908</a>)</li>
<li><code>opentelemetry-exporter-otlp-proto-grpc</code>: make retryable
gRPC error codes
configurable for gRPC exporters
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4917">#4917</a>)</li>
<li><code>opentelemetry-sdk</code>: Add
<code>create_logger_provider</code>/<code>configure_logger_provider</code>
to declarative file configuration, enabling LoggerProvider instantiation
from
config files without reading env vars
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4990">#4990</a>)</li>
<li><code>opentelemetry-exporter-otlp-json-common</code>: add
'opentelemetry-exporter-otlp-json-common' package for OTLP JSON
exporters
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4996">#4996</a>)</li>
<li><code>opentelemetry-sdk</code>: Add <code>service</code> resource
detector support to declarative
file configuration via
<code>detection_development.detectors[].service</code>
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5003">#5003</a>)</li>
<li><code>opentelemetry-docker-tests</code>: add docker-tests coverage
of
<code>opentelemetry-exporter-otlp-proto-grpc</code> and
<code>opentelemetry-exporter-otlp-proto-http</code> metrics export
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5030">#5030</a>)</li>
<li>Add <code>registry</code> keyword argument to
<code>PrometheusMetricReader</code> to allow passing
a custom Prometheus registry
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5055">#5055</a>)</li>
<li>Add WeaverLiveCheck test util
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5088">#5088</a>)</li>
<li><code>opentelemetry-sdk</code>: add <code>load_entry_point</code>
shared utility to declarative
file configuration for loading plugins via entry points; refactor
propagator
loading to use it
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5093">#5093</a>)</li>
<li><code>opentelemetry-sdk</code>: add sampler plugin loading to
declarative file
configuration via the <code>opentelemetry_sampler</code> entry point
group, matching the
spec's PluginComponentProvider mechanism
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5095">#5095</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/open-telemetry/opentelemetry-python/commit/367e14d01104785ac28b1c66ac32b2082f864a12"><code>367e14d</code></a>
Prepare release 1.42.1/0.63b1 (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5243">#5243</a>)</li>
<li><a
href="https://github.com/open-telemetry/opentelemetry-python/commit/fd8e50410b1788d34b36173dea58d8e38dcc80bc"><code>fd8e504</code></a>
Preserve random trace ID flag for child spans (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5241">#5241</a>)
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5242">#5242</a>)</li>
<li><a
href="https://github.com/open-telemetry/opentelemetry-python/commit/013045e3787654123b08530059759842312325ab"><code>013045e</code></a>
[release/v1.42.x-0.63bx] Prepare release 1.42.0/0.63b0 (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5225">#5225</a>)</li>
<li><a
href="https://github.com/open-telemetry/opentelemetry-python/commit/1731583b4e7bc6ec6a33345aa19706fc83acc8d5"><code>1731583</code></a>
ci: Enable GitHub Merge Queue support (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5209">#5209</a>)</li>
<li><a
href="https://github.com/open-telemetry/opentelemetry-python/commit/7fab34d4f49c1cd67df07fa53471c0ae6c269008"><code>7fab34d</code></a>
fix(config): allow deflate for OTLP HTTP exporters (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5075">#5075</a>)</li>
<li><a
href="https://github.com/open-telemetry/opentelemetry-python/commit/0b690d2139f68dd42d2425c920aec882698443fa"><code>0b690d2</code></a>
ci: validate changelog fragment filenames (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5212">#5212</a>)</li>
<li><a
href="https://github.com/open-telemetry/opentelemetry-python/commit/d4fabb4d6d79812a6d38dd900212f6a0fdb1866b"><code>d4fabb4</code></a>
feat(config): exporter plugin loading via entry points for declarative
config...</li>
<li><a
href="https://github.com/open-telemetry/opentelemetry-python/commit/e19d34600b177b97cf1d8320a77ff75133515012"><code>e19d346</code></a>
feat(config): generic resource detector plugin loading for declarative
config...</li>
<li><a
href="https://github.com/open-telemetry/opentelemetry-python/commit/1d69bd2eaa02715ecf3877a8f391678be58f2f57"><code>1d69bd2</code></a>
sdk/metrics: copy attributes dict to prevent post-recording mutation (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5106">#5106</a>)</li>
<li><a
href="https://github.com/open-telemetry/opentelemetry-python/commit/990a6112a124e53cc0e3f66871ce8f8d00955d15"><code>990a611</code></a>
feat(config): propagator plugin loading via entry points for declarative
conf...</li>
<li>Additional commits viewable in <a
href="https://github.com/open-telemetry/opentelemetry-python/compare/v1.41.0...v1.42.1">compare
view</a></li>
</ul>
</details>
<br />

Updates `opentelemetry-sdk` from 1.41.0 to 1.42.1
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/open-telemetry/opentelemetry-python/blob/main/CHANGELOG.md">opentelemetry-sdk's
changelog</a>.</em></p>
<blockquote>
<h2>Version 1.42.1/0.63b1 (2026-05-21)</h2>
<h3>Fixed</h3>
<ul>
<li>Preserve the random trace ID flag when creating child spans instead
of always
setting the random trace id bit depending on the available trace id
generator.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5241">#5241</a>)</li>
</ul>
<h2>Version 1.42.0/0.63b0 (2026-05-19)</h2>
<h3>Added</h3>
<ul>
<li><code>opentelemetry-api</code>, <code>opentelemetry-sdk</code>: add
support for 'random-trace-id'
flags in W3C traceparent header trace flags. Implementations of
<code>IdGenerator</code>
that do randomly generate the 56 least significant bits, should also
implement a <code>is_trace_id_random</code> methods that returns
<code>True</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4854">#4854</a>)</li>
<li>logs: add exception support to Logger emit and LogRecord attributes
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4908">#4908</a>)</li>
<li><code>opentelemetry-exporter-otlp-proto-grpc</code>: make retryable
gRPC error codes
configurable for gRPC exporters
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4917">#4917</a>)</li>
<li><code>opentelemetry-sdk</code>: Add
<code>create_logger_provider</code>/<code>configure_logger_provider</code>
to declarative file configuration, enabling LoggerProvider instantiation
from
config files without reading env vars
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4990">#4990</a>)</li>
<li><code>opentelemetry-exporter-otlp-json-common</code>: add
'opentelemetry-exporter-otlp-json-common' package for OTLP JSON
exporters
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4996">#4996</a>)</li>
<li><code>opentelemetry-sdk</code>: Add <code>service</code> resource
detector support to declarative
file configuration via
<code>detection_development.detectors[].service</code>
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5003">#5003</a>)</li>
<li><code>opentelemetry-docker-tests</code>: add docker-tests coverage
of
<code>opentelemetry-exporter-otlp-proto-grpc</code> and
<code>opentelemetry-exporter-otlp-proto-http</code> metrics export
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5030">#5030</a>)</li>
<li>Add <code>registry</code> keyword argument to
<code>PrometheusMetricReader</code> to allow passing
a custom Prometheus registry
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5055">#5055</a>)</li>
<li>Add WeaverLiveCheck test util
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5088">#5088</a>)</li>
<li><code>opentelemetry-sdk</code>: add <code>load_entry_point</code>
shared utility to declarative
file configuration for loading plugins via entry points; refactor
propagator
loading to use it
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5093">#5093</a>)</li>
<li><code>opentelemetry-sdk</code>: add sampler plugin loading to
declarative file
configuration via the <code>opentelemetry_sampler</code> entry point
group, matching the
spec's PluginComponentProvider mechanism
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5095">#5095</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/open-telemetry/opentelemetry-python/commit/367e14d01104785ac28b1c66ac32b2082f864a12"><code>367e14d</code></a>
Prepare release 1.42.1/0.63b1 (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5243">#5243</a>)</li>
<li><a
href="https://github.com/open-telemetry/opentelemetry-python/commit/fd8e50410b1788d34b36173dea58d8e38dcc80bc"><code>fd8e504</code></a>
Preserve random trace ID flag for child spans (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5241">#5241</a>)
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5242">#5242</a>)</li>
<li><a
href="https://github.com/open-telemetry/opentelemetry-python/commit/013045e3787654123b08530059759842312325ab"><code>013045e</code></a>
[release/v1.42.x-0.63bx] Prepare release 1.42.0/0.63b0 (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5225">#5225</a>)</li>
<li><a
href="https://github.com/open-telemetry/opentelemetry-python/commit/1731583b4e7bc6ec6a33345aa19706fc83acc8d5"><code>1731583</code></a>
ci: Enable GitHub Merge Queue support (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5209">#5209</a>)</li>
<li><a
href="https://github.com/open-telemetry/opentelemetry-python/commit/7fab34d4f49c1cd67df07fa53471c0ae6c269008"><code>7fab34d</code></a>
fix(config): allow deflate for OTLP HTTP exporters (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5075">#5075</a>)</li>
<li><a
href="https://github.com/open-telemetry/opentelemetry-python/commit/0b690d2139f68dd42d2425c920aec882698443fa"><code>0b690d2</code></a>
ci: validate changelog fragment filenames (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5212">#5212</a>)</li>
<li><a
href="https://github.com/open-telemetry/opentelemetry-python/commit/d4fabb4d6d79812a6d38dd900212f6a0fdb1866b"><code>d4fabb4</code></a>
feat(config): exporter plugin loading via entry points for declarative
config...</li>
<li><a
href="https://github.com/open-telemetry/opentelemetry-python/commit/e19d34600b177b97cf1d8320a77ff75133515012"><code>e19d346</code></a>
feat(config): generic resource detector plugin loading for declarative
config...</li>
<li><a
href="https://github.com/open-telemetry/opentelemetry-python/commit/1d69bd2eaa02715ecf3877a8f391678be58f2f57"><code>1d69bd2</code></a>
sdk/metrics: copy attributes dict to prevent post-recording mutation (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5106">#5106</a>)</li>
<li><a
href="https://github.com/open-telemetry/opentelemetry-python/commit/990a6112a124e53cc0e3f66871ce8f8d00955d15"><code>990a611</code></a>
feat(config): propagator plugin loading via entry points for declarative
conf...</li>
<li>Additional commits viewable in <a
href="https://github.com/open-telemetry/opentelemetry-python/compare/v1.41.0...v1.42.1">compare
view</a></li>
</ul>
</details>
<br />

Updates `python-multipart` from 0.0.26 to 0.0.32
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/Kludex/python-multipart/releases">python-multipart's
releases</a>.</em></p>
<blockquote>
<h2>Version 0.0.32</h2>
<h2>What's Changed</h2>
<ul>
<li>Replace per-byte partial-boundary scan with rfind lookbehind by <a
href="https://github.com/Kludex"><code>@​Kludex</code></a> in <a
href="https://redirect.github.com/Kludex/python-multipart/pull/300">Kludex/python-multipart#300</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/Kludex/python-multipart/compare/0.0.31...0.0.32">https://github.com/Kludex/python-multipart/compare/0.0.31...0.0.32</a></p>
<h2>Version 0.0.31</h2>
<h2>What's Changed</h2>
<ul>
<li>Speed up multipart header parsing and callback dispatch by <a
href="https://github.com/Kludex"><code>@​Kludex</code></a> in <a
href="https://redirect.github.com/Kludex/python-multipart/pull/295">Kludex/python-multipart#295</a></li>
<li>Bound header field name size before validating by <a
href="https://github.com/Kludex"><code>@​Kludex</code></a> in <a
href="https://redirect.github.com/Kludex/python-multipart/pull/296">Kludex/python-multipart#296</a></li>
<li>Validate Content-Length is non-negative in parse_form by <a
href="https://github.com/Kludex"><code>@​Kludex</code></a> in <a
href="https://redirect.github.com/Kludex/python-multipart/pull/297">Kludex/python-multipart#297</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/Kludex/python-multipart/compare/0.0.30...0.0.31">https://github.com/Kludex/python-multipart/compare/0.0.30...0.0.31</a></p>
<h2>Version 0.0.30</h2>
<h2>What's Changed</h2>
<ul>
<li>Treat only <code>&amp;</code> as the urlencoded field separator by
<a href="https://github.com/Kludex"><code>@​Kludex</code></a> in <a
href="https://redirect.github.com/Kludex/python-multipart/pull/290">Kludex/python-multipart#290</a></li>
<li>Ignore RFC 2231 extended parameters in
<code>pa…
github-actions Bot pushed a commit to DataIntegrationGroup/OcotilloAPI that referenced this pull request Jun 22, 2026
Bumps the uv-non-major group with 26 updates:

| Package | From | To |
| --- | --- | --- |
| [anyio](https://github.com/agronholm/anyio) | `4.13.0` | `4.14.0` |
| [fastapi](https://github.com/fastapi/fastapi) | `0.136.3` | `0.138.0`
|
| [fastapi-pagination](https://github.com/uriyyo/fastapi-pagination) |
`0.15.14` | `0.15.15` |
| [google-auth](https://github.com/googleapis/google-cloud-python) |
`2.53.0` | `2.55.0` |
|
[google-cloud-storage](https://github.com/googleapis/google-cloud-python)
| `3.11.0` | `3.12.0` |
| [greenlet](https://github.com/python-greenlet/greenlet) | `3.5.1` |
`3.5.2` |
| [numpy](https://github.com/numpy/numpy) | `2.4.6` | `2.5.0` |
| [phonenumbers](https://github.com/daviddrysdale/python-phonenumbers) |
`9.0.32` | `9.0.33` |
| [python-multipart](https://github.com/Kludex/python-multipart) |
`0.0.31` | `0.0.32` |
| [scramp](https://github.com/tlocke/scramp) | `1.4.8` | `1.4.9` |
| [sentry-sdk[fastapi]](https://github.com/getsentry/sentry-python) |
`2.62.0` | `2.63.0` |
| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.50` |
`2.0.51` |
| [pytest](https://github.com/pytest-dev/pytest) | `9.0.3` | `9.1.1` |
| [babel](https://github.com/python-babel/babel) | `2.17.0` | `2.18.0` |
| [dateparser](https://github.com/scrapinghub/dateparser) | `1.3.0` |
`1.4.1` |
| [filelock](https://github.com/tox-dev/py-filelock) | `3.18.0` |
`3.29.4` |
| [markdown-it-py](https://github.com/executablebooks/markdown-it-py) |
`4.0.0` | `4.2.0` |
|
[opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python)
| `1.39.1` | `1.42.1` |
|
[opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python)
| `1.39.1` | `1.42.1` |
|
[opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python)
| `0.60b1` | `0.63b1` |
| [pygeofilter](https://github.com/geopython/pygeofilter) | `0.3.3` |
`0.4.0` |
| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |
| [regex](https://github.com/mrabarnett/mrab-regex) | `2026.2.19` |
`2026.5.9` |
| [sentry-sdk](https://github.com/getsentry/sentry-python) | `2.62.0` |
`2.63.0` |
| [tzlocal](https://github.com/regebro/tzlocal) | `5.3.1` | `5.4.3` |
| [werkzeug](https://github.com/pallets/werkzeug) | `3.1.6` | `3.1.8` |

Updates `anyio` from 4.13.0 to 4.14.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/agronholm/anyio/releases">anyio's
releases</a>.</em></p>
<blockquote>
<h2>4.14.0</h2>
<ul>
<li>
<p>Added support for Python 3.15</p>
</li>
<li>
<p>Added an asynchronous implementation of the <code>itertools</code>
module (<a
href="https://redirect.github.com/agronholm/anyio/issues/998">#998</a>;
PR by <a href="https://github.com/11kkw"><code>@​11kkw</code></a>)</p>
</li>
<li>
<p>Added the <code>local_port</code> parameter to
<code>connect_tcp()</code> to allow binding to a specific local port
before connecting (<a
href="https://redirect.github.com/agronholm/anyio/issues/1067">#1067</a>;
PR by <a
href="https://github.com/nullwiz"><code>@​nullwiz</code></a>)</p>
</li>
<li>
<p>Added support for custom capacity limiters in async path and file I/O
functions and classes</p>
</li>
<li>
<p>Added the <code>create_task()</code> task group method for easier
asyncio migration (returns a <code>TaskHandle</code>) (<a
href="https://redirect.github.com/agronholm/anyio/pull/1098">#1098</a>)</p>
</li>
<li>
<p>Changed <code>TaskGroup.start_soon()</code> to return a
<code>TaskHandle</code></p>
</li>
<li>
<p>Added an option for <code>TaskGroup.start()</code> to return a
<code>TaskHandle</code> (which then contains the start value in the
<code>start_value</code> property)</p>
</li>
<li>
<p>Added the <code>cancel()</code> convenience method to
<code>TaskGroup</code> as a shortcut for cancelling the task group's
cancel scope</p>
</li>
<li>
<p>Improved the error message when a known backend is not installed to
suggest the install command (<a
href="https://redirect.github.com/agronholm/anyio/pull/1115">#1115</a>;
PR by <a
href="https://github.com/EmmanuelNiyonshuti"><code>@​EmmanuelNiyonshuti</code></a>)</p>
</li>
<li>
<p>Improved <code>anyio.Path</code> to preserve subclass types by
returning <code>Self</code> in methods that return path objects (<a
href="https://redirect.github.com/agronholm/anyio/issues/1130">#1130</a>;
PR by <a
href="https://github.com/EmmanuelNiyonshuti"><code>@​EmmanuelNiyonshuti</code></a>)</p>
</li>
<li>
<p>Changed the parameter type annotation in
<code>anyio.Path.write_bytes()</code> to accept any
<code>ReadableBuffer</code>, thus allowing it to accept
<code>bytearray</code> and <code>memoryview</code> to match
<code>pathlib.Path.write_bytes()</code> (<a
href="https://redirect.github.com/agronholm/anyio/issues/1135">#1135</a>;
PR by <a href="https://github.com/SAY-5"><code>@​SAY-5</code></a>)</p>
</li>
<li>
<p>Changed several type annotations to only accept callables returning
coroutine-like objects instead of arbitrary awaitables:</p>
<ul>
<li><code>TaskGroup.start_soon()</code></li>
<li><code>TaskGroup.start()</code></li>
<li><code>anyio.from_thread.run()</code></li>
</ul>
<p>This reverts an earlier change from v3.7.0 which was made in error.
(<a
href="https://redirect.github.com/agronholm/anyio/pull/1153">#1153</a>)</p>
</li>
<li>
<p>Changed <code>anyio.run</code> to support callables returning
arbitrary awaitables at runtime on all backends. Previously, this only
worked on asyncio (<a
href="https://redirect.github.com/agronholm/anyio/pull/1171">#1171</a>;
PR by <a
href="https://github.com/gschaffner"><code>@​gschaffner</code></a>)</p>
</li>
<li>
<p>Changed several classes (and their subclasses) to have
<code>__slots__</code> (with <code>__weakref__</code>):</p>
<ul>
<li><code>anyio.CancelScope</code></li>
<li><code>anyio.CapacityLimiter</code></li>
<li><code>anyio.Condition</code></li>
<li><code>anyio.Event</code></li>
<li><code>anyio.Lock</code></li>
<li><code>anyio.ResourceGuard</code></li>
<li><code>anyio.Semaphore</code></li>
</ul>
</li>
<li>
<p>Fixed cancellation exception escaping a cancel scope when triggered
via <code>check_cancelled()</code> in a worker thread (<a
href="https://redirect.github.com/agronholm/anyio/issues/1113">#1113</a>)</p>
</li>
<li>
<p>Fixed <code>TaskGroup</code> raising <code>AttributeError</code>
instead of a clear error when entered more than once (<a
href="https://redirect.github.com/agronholm/anyio/issues/1109">#1109</a>;
PR by <a href="https://github.com/bahtya"><code>@​bahtya</code></a>)</p>
</li>
<li>
<p>Fixed lost type information when passing arguments to
<code>lru_cache</code> (<a
href="https://redirect.github.com/agronholm/anyio/pull/1104">#1104</a>;
PR by <a
href="https://github.com/Graeme22"><code>@​Graeme22</code></a>)</p>
</li>
<li>
<p>Fixed test resumption after <code>KeyboardInterrupt</code> in async
generator fixtures on the asyncio backend (<a
href="https://redirect.github.com/agronholm/anyio/issues/1060">#1060</a>;
PR by <a
href="https://github.com/EmmanuelNiyonshuti"><code>@​EmmanuelNiyonshuti</code></a>)</p>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/agronholm/anyio/commit/ffe91331adb912c5d150f5d373f7cd28a0e96a62"><code>ffe9133</code></a>
Bumped up the version</li>
<li><a
href="https://github.com/agronholm/anyio/commit/f8b9f011e548c2c1c3e9abb0287bb1048ab3dca8"><code>f8b9f01</code></a>
Fixed asyncio lock waiter deadlocks after cancellation (<a
href="https://redirect.github.com/agronholm/anyio/issues/1145">#1145</a>)</li>
<li><a
href="https://github.com/agronholm/anyio/commit/d517ee1d41080073cc244d8adebf822a08b762de"><code>d517ee1</code></a>
[pre-commit.ci] pre-commit autoupdate (<a
href="https://redirect.github.com/agronholm/anyio/issues/1176">#1176</a>)</li>
<li><a
href="https://github.com/agronholm/anyio/commit/550b68e1acaf82b1503b0e99fbc7f964cd07fe49"><code>550b68e</code></a>
Make <code>anyio.run</code> support <code>Awaitable</code> at runtime on
all backends (<a
href="https://redirect.github.com/agronholm/anyio/issues/1171">#1171</a>)</li>
<li><a
href="https://github.com/agronholm/anyio/commit/29a5e04e0f171af9db3a9d0556ed47f91d88d183"><code>29a5e04</code></a>
Fixed FastAPI test run</li>
<li><a
href="https://github.com/agronholm/anyio/commit/4d752ac37e693840036367d58ee6caf19d78e9ba"><code>4d752ac</code></a>
Updated downstream test setups for FastAPI and Anthropic MCP</li>
<li><a
href="https://github.com/agronholm/anyio/commit/ebdc9508a3860e23be805985e1b5a67f60b581eb"><code>ebdc950</code></a>
Added task handle support to start() and start_soon() (<a
href="https://redirect.github.com/agronholm/anyio/issues/1153">#1153</a>)</li>
<li><a
href="https://github.com/agronholm/anyio/commit/f32bfb89a7fb71fc24a1fc575f402b6a9f13cda0"><code>f32bfb8</code></a>
Fixed test suite compatibility issues with Pytest 9.1.0</li>
<li><a
href="https://github.com/agronholm/anyio/commit/85f7e8eada1ed4f077e4760f0c3d20d67452dcb8"><code>85f7e8e</code></a>
Added <code>__slots__</code> to several classes</li>
<li><a
href="https://github.com/agronholm/anyio/commit/b7ea84c275fde6420ea242844bc7fb0fee6132f7"><code>b7ea84c</code></a>
[pre-commit.ci] pre-commit autoupdate (<a
href="https://redirect.github.com/agronholm/anyio/issues/1165">#1165</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/agronholm/anyio/compare/4.13.0...4.14.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `fastapi` from 0.136.3 to 0.138.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.138.0</h2>
<h3>Features</h3>
<ul>
<li>✨ Add support for <code>app.frontend(&quot;/&quot;,
directory=&quot;dist&quot;)</code> and
<code>router.frontend(&quot;/&quot;, directory=&quot;dist&quot;)</code>.
PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/15800">#15800</a>
by <a href="https://github.com/tiangolo"><code>@​tiangolo</code></a>.
<ul>
<li>Read the docs: <a
href="https://fastapi.tiangolo.com/tutorial/frontend/">Frontend</a>.</li>
</ul>
</li>
</ul>
<h3>Docs</h3>
<ul>
<li>📝 Fix typo in release notes. PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/15807">#15807</a>
by <a
href="https://github.com/tiangolo"><code>@​tiangolo</code></a>.</li>
<li>📝 Add <code>app.frontend()</code> instructions to Agent Library
Skill. PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/15805">#15805</a>
by <a
href="https://github.com/tiangolo"><code>@​tiangolo</code></a>.</li>
<li>📝 Update release notes link. PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/15802">#15802</a>
by <a
href="https://github.com/tiangolo"><code>@​tiangolo</code></a>.</li>
<li>✏️ Update white space characters in bigger apps. PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/15801">#15801</a>
by <a
href="https://github.com/tiangolo"><code>@​tiangolo</code></a>.</li>
<li>✏️ Fix grammar, typos, and broken links in docs. PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/15694">#15694</a>
by <a
href="https://github.com/YuriiMotov"><code>@​YuriiMotov</code></a>.</li>
</ul>
<h3>Translations</h3>
<ul>
<li>🌐 Enable Hindi docs translations. PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/15554">#15554</a>
by <a
href="https://github.com/YuriiMotov"><code>@​YuriiMotov</code></a>.</li>
</ul>
<h3>Internal</h3>
<ul>
<li>🐛 Fix failing test, update format for raised errors. PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/15804">#15804</a>
by <a
href="https://github.com/tiangolo"><code>@​tiangolo</code></a>.</li>
<li>👷 Fix test-alls-green. PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/15803">#15803</a>
by <a
href="https://github.com/tiangolo"><code>@​tiangolo</code></a>.</li>
<li>🔧 Enable checking <code>release-notes.md</code> for typos. PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/15796">#15796</a>
by <a
href="https://github.com/YuriiMotov"><code>@​YuriiMotov</code></a>.</li>
<li>📝 Tweak wording about deploying to FastAPI Cloud. PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/15793">#15793</a>
by <a
href="https://github.com/tiangolo"><code>@​tiangolo</code></a>.</li>
<li>🔨 Use <code>gpt-5.5</code> model in <code>translate.py</code>,
specify <code>-chat</code> to avoid warnings. PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/15792">#15792</a>
by <a
href="https://github.com/YuriiMotov"><code>@​YuriiMotov</code></a>.</li>
</ul>
<h2>0.137.2</h2>
<h3>Features</h3>
<ul>
<li>✨ Add <code>iter_route_contexts()</code> for advanced use cases that
used to use <code>router.routes</code> (e.g. Jupyverse). PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/15785">#15785</a>
by <a
href="https://github.com/tiangolo"><code>@​tiangolo</code></a>.</li>
</ul>
<h3>Translations</h3>
<ul>
<li>🌐 Fix broken Markdown in Korean custom response docs. PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/15774">#15774</a>
by <a href="https://github.com/kooqooo"><code>@​kooqooo</code></a>.</li>
<li>🌐 Update translations for fr (update-outdated). PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/15761">#15761</a>
by <a
href="https://github.com/tiangolo"><code>@​tiangolo</code></a>.</li>
<li>🌐 Update translations for zh-hant (update-outdated). PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/15760">#15760</a>
by <a
href="https://github.com/tiangolo"><code>@​tiangolo</code></a>.</li>
<li>🌐 Update translations for de (update-outdated). PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/15759">#15759</a>
by <a
href="https://github.com/tiangolo"><code>@​tiangolo</code></a>.</li>
<li>🌐 Update translations for ko (update-outdated). PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/15757">#15757</a>
by <a
href="https://github.com/tiangolo"><code>@​tiangolo</code></a>.</li>
<li>🌐 Update translations for uk (update-outdated). PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/15756">#15756</a>
by <a
href="https://github.com/tiangolo"><code>@​tiangolo</code></a>.</li>
<li>🌐 Update translations for zh (update-outdated). PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/15755">#15755</a>
by <a
href="https://github.com/tiangolo"><code>@​tiangolo</code></a>.</li>
<li>🌐 Update translations for tr (update-outdated). PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/15754">#15754</a>
by <a
href="https://github.com/tiangolo"><code>@​tiangolo</code></a>.</li>
<li>🌐 Update translations for pt (update-outdated). PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/15753">#15753</a>
by <a
href="https://github.com/tiangolo"><code>@​tiangolo</code></a>.</li>
<li>🌐 Update translations for es (update-outdated). PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/15752">#15752</a>
by <a
href="https://github.com/tiangolo"><code>@​tiangolo</code></a>.</li>
<li>🌐 Update translations for ja (update-outdated). PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/15751">#15751</a>
by <a
href="https://github.com/tiangolo"><code>@​tiangolo</code></a>.</li>
<li>🌐 Update translations for ru (update-outdated). PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/15758">#15758</a>
by <a
href="https://github.com/tiangolo"><code>@​tiangolo</code></a>.</li>
</ul>
<h3>Internal</h3>
<ul>
<li>🔧 Update sponsors: add BairesDev. PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/15787">#15787</a>
by <a
href="https://github.com/tiangolo"><code>@​tiangolo</code></a>.</li>
<li>🔨 Update sponsors script to simplify previews. PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/15786">#15786</a>
by <a
href="https://github.com/tiangolo"><code>@​tiangolo</code></a>.</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/fastapi/fastapi/commit/4b83b0d409009c8de9df4070fe163838b1a700c7"><code>4b83b0d</code></a>
🔖 Release version 0.138.0 (<a
href="https://redirect.github.com/fastapi/fastapi/issues/15808">#15808</a>)</li>
<li><a
href="https://github.com/fastapi/fastapi/commit/041cb0cdfa2d0f705d14ed07c2c2e0f92ef5f32c"><code>041cb0c</code></a>
📝 Update release notes</li>
<li><a
href="https://github.com/fastapi/fastapi/commit/10393846ede7a2947cec594d15a43f813001cab4"><code>1039384</code></a>
📝 Fix typo in release notes (<a
href="https://redirect.github.com/fastapi/fastapi/issues/15807">#15807</a>)</li>
<li><a
href="https://github.com/fastapi/fastapi/commit/0303491b69ff84a4632c0314e6db4df74f2f93f9"><code>0303491</code></a>
📝 Update release notes</li>
<li><a
href="https://github.com/fastapi/fastapi/commit/190f6e2033c8b886b25027be284d8c8c1893f28c"><code>190f6e2</code></a>
📝 Add Frontend instructions to Agent Library Skill (<a
href="https://redirect.github.com/fastapi/fastapi/issues/15805">#15805</a>)</li>
<li><a
href="https://github.com/fastapi/fastapi/commit/17945e5ab7f25234340c152a40d232a98857e079"><code>17945e5</code></a>
📝 Update release notes</li>
<li><a
href="https://github.com/fastapi/fastapi/commit/2260afaf433103c8104b34d256cf0b96b058823b"><code>2260afa</code></a>
🐛 Fix failing test, update format for raised errors (<a
href="https://redirect.github.com/fastapi/fastapi/issues/15804">#15804</a>)</li>
<li><a
href="https://github.com/fastapi/fastapi/commit/0cd5001d0ef80a07e2d775c5c75522391a3e06d7"><code>0cd5001</code></a>
📝 Update release notes</li>
<li><a
href="https://github.com/fastapi/fastapi/commit/7cb1ab6264bc03319832f553730b511192a0c0d3"><code>7cb1ab6</code></a>
👷 Fix test-alls-green (<a
href="https://redirect.github.com/fastapi/fastapi/issues/15803">#15803</a>)</li>
<li><a
href="https://github.com/fastapi/fastapi/commit/9c7eceb00ff6e1d37980954418f7c9dab30a4cd5"><code>9c7eceb</code></a>
📝 Update release notes</li>
<li>Additional commits viewable in <a
href="https://github.com/fastapi/fastapi/compare/0.136.3...0.138.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `fastapi-pagination` from 0.15.14 to 0.15.15
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/uriyyo/fastapi-pagination/releases">fastapi-pagination's
releases</a>.</em></p>
<blockquote>
<h2>0.15.15</h2>
<h2>What's Changed</h2>
<ul>
<li>Fix compatibility issue with fastapi <code>0.137.0</code> <a
href="https://redirect.github.com/uriyyo/fastapi-pagination/pull/1930">#1930</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/uriyyo/fastapi-pagination/compare/0.15.14...0.15.15">https://github.com/uriyyo/fastapi-pagination/compare/0.15.14...0.15.15</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/uriyyo/fastapi-pagination/commit/4b0654fc99e5d14da8db26366b434ed8dd8011bc"><code>4b0654f</code></a>
Bump to next version [no ci]</li>
<li><a
href="https://github.com/uriyyo/fastapi-pagination/commit/3236a449e468a610c80d89bd09632258113d6974"><code>3236a44</code></a>
Fix compatibility issue with fastapi 0.137.0 (<a
href="https://redirect.github.com/uriyyo/fastapi-pagination/issues/1930">#1930</a>)</li>
<li><a
href="https://github.com/uriyyo/fastapi-pagination/commit/1f6709233fe3aaac66248c28cb500e2ff54a8dd1"><code>1f67092</code></a>
Merge pull request <a
href="https://redirect.github.com/uriyyo/fastapi-pagination/issues/1921">#1921</a>
from uriyyo/dependabot/uv/peewee-4.0.7</li>
<li><a
href="https://github.com/uriyyo/fastapi-pagination/commit/86752ddffcaea2a90a5f7a65175044f0926d0f62"><code>86752dd</code></a>
Bump peewee from 4.0.6 to 4.0.7</li>
<li><a
href="https://github.com/uriyyo/fastapi-pagination/commit/cba49a03801f3d47cb47bfdc57355195173c35fc"><code>cba49a0</code></a>
Merge pull request <a
href="https://redirect.github.com/uriyyo/fastapi-pagination/issues/1920">#1920</a>
from uriyyo/dependabot/uv/ruff-0.15.17</li>
<li><a
href="https://github.com/uriyyo/fastapi-pagination/commit/5071a70a0016efc6c8a7064ca9a336dc16861e41"><code>5071a70</code></a>
Bump ruff from 0.15.16 to 0.15.17</li>
<li><a
href="https://github.com/uriyyo/fastapi-pagination/commit/c4671adc5c6a421efe030bf89748156c5867b125"><code>c4671ad</code></a>
Merge pull request <a
href="https://redirect.github.com/uriyyo/fastapi-pagination/issues/1919">#1919</a>
from uriyyo/dependabot/uv/ty-0.0.48</li>
<li><a
href="https://github.com/uriyyo/fastapi-pagination/commit/a6534ec1d360010e90ff2f5befa96e07db07a430"><code>a6534ec</code></a>
Bump ty from 0.0.46 to 0.0.48</li>
<li><a
href="https://github.com/uriyyo/fastapi-pagination/commit/e21fd47f6b359b0a230387335331cac6d2f26b69"><code>e21fd47</code></a>
Merge pull request <a
href="https://redirect.github.com/uriyyo/fastapi-pagination/issues/1918">#1918</a>
from uriyyo/dependabot/uv/faker-40.23.0</li>
<li><a
href="https://github.com/uriyyo/fastapi-pagination/commit/8b12f5abaa0f9d769240a02d5eef0d5051bc633a"><code>8b12f5a</code></a>
Bump faker from 40.22.0 to 40.23.0</li>
<li>Additional commits viewable in <a
href="https://github.com/uriyyo/fastapi-pagination/compare/0.15.14...0.15.15">compare
view</a></li>
</ul>
</details>
<br />

Updates `google-auth` from 2.53.0 to 2.55.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/googleapis/google-cloud-python/releases">google-auth's
releases</a>.</em></p>
<blockquote>
<h2>google-auth: v2.55.0</h2>
<h2><a
href="https://github.com/googleapis/google-cloud-python/compare/google-auth-v2.54.0...google-auth-v2.55.0">v2.55.0</a>
(2026-06-15)</h2>
<h3>Features</h3>
<ul>
<li>make RAB feature production ready (<a
href="https://redirect.github.com/googleapis/google-cloud-python/issues/17390">#17390</a>)
(<a
href="https://github.com/googleapis/google-cloud-python/commit/af193931">af193931</a>)</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>run async background boundary refresh on detached session (<a
href="https://redirect.github.com/googleapis/google-cloud-python/issues/17441">#17441</a>)
(<a
href="https://github.com/googleapis/google-cloud-python/commit/56cbea85">56cbea85</a>)</li>
</ul>
<h2>google-auth: v2.54.0</h2>
<h2><a
href="https://github.com/googleapis/google-cloud-python/compare/google-auth-v2.53.0...google-auth-v2.54.0">v2.54.0</a>
(2026-06-11)</h2>
<h3>Features</h3>
<ul>
<li>implement regional access boundary support for standalone JWT and
async service accounts (<a
href="https://redirect.github.com/googleapis/google-cloud-python/issues/17025">#17025</a>)
(<a
href="https://github.com/googleapis/google-cloud-python/commit/35af6168">35af6168</a>)</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>
<p>configure mTLS for impersonated credentials (<a
href="https://redirect.github.com/googleapis/google-cloud-python/issues/17404">#17404</a>)
(<a
href="https://github.com/googleapis/google-cloud-python/commit/57269d56">57269d56</a>)</p>
</li>
<li>
<p>fail-fast on missing ECP config file to avoid 30s hang (<a
href="https://redirect.github.com/googleapis/google-cloud-python/issues/17377">#17377</a>)
(<a
href="https://github.com/googleapis/google-cloud-python/commit/e0961270">e0961270</a>)</p>
</li>
<li>
<p>Rename the &amp;<a
href="https://redirect.github.com/googleapis/google-cloud-python/issues/39">#39</a>;seed&amp;<a
href="https://redirect.github.com/googleapis/google-cloud-python/issues/39">#39</a>;
argument for setting an initial regional access boundary for clarity (<a
href="https://redirect.github.com/googleapis/google-cloud-python/issues/17186">#17186</a>)
(<a
href="https://github.com/googleapis/google-cloud-python/commit/e5c8cf92">e5c8cf92</a>)</p>
</li>
<li>
<p>update incorrect urls in setup.py to point at monorepo vs splitrepo
(<a
href="https://redirect.github.com/googleapis/google-cloud-python/issues/17237">#17237</a>)
(<a
href="https://github.com/googleapis/google-cloud-python/commit/eaed04ba">eaed04ba</a>)</p>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/googleapis/google-cloud-python/commit/08a8f9013af8ec0d5e82b7e5d428caded2f41156"><code>08a8f90</code></a>
chore: librarian release pull request: 20260615T173024Z (<a
href="https://redirect.github.com/googleapis/google-cloud-python/issues/17468">#17468</a>)</li>
<li><a
href="https://github.com/googleapis/google-cloud-python/commit/305f5bdd7e083fef33cb59dca581fbf3b7908a03"><code>305f5bd</code></a>
test(auth): assert quota project header injection in google-auth tests
(<a
href="https://redirect.github.com/googleapis/google-cloud-python/issues/17448">#17448</a>)</li>
<li><a
href="https://github.com/googleapis/google-cloud-python/commit/af193931e4e38c4b59751edb8e915ae3388b8524"><code>af19393</code></a>
feat(auth): make RAB feature production ready (<a
href="https://redirect.github.com/googleapis/google-cloud-python/issues/17390">#17390</a>)</li>
<li><a
href="https://github.com/googleapis/google-cloud-python/commit/00ec9bfd967546809e84114be1c63f9482ad90b2"><code>00ec9bf</code></a>
chore: release bigframes v2.43.0 (<a
href="https://redirect.github.com/googleapis/google-cloud-python/issues/17460">#17460</a>)</li>
<li><a
href="https://github.com/googleapis/google-cloud-python/commit/f4945bd33f385c8ad7fcf71c03e677c28bba2378"><code>f4945bd</code></a>
tests: fix compatibility with pytest 9.1.0 (<a
href="https://redirect.github.com/googleapis/google-cloud-python/issues/17465">#17465</a>)</li>
<li><a
href="https://github.com/googleapis/google-cloud-python/commit/56cbea8509c66889485b43f2d98d60210eae81bc"><code>56cbea8</code></a>
fix(rab): run async background boundary refresh on detached session (<a
href="https://redirect.github.com/googleapis/google-cloud-python/issues/17441">#17441</a>)</li>
<li><a
href="https://github.com/googleapis/google-cloud-python/commit/b50cf1aed2d5376a26c8d8e375e414e577fa27f3"><code>b50cf1a</code></a>
chore(google-auth): drop python 3.7 EOL false positives and refactor
metrics ...</li>
<li><a
href="https://github.com/googleapis/google-cloud-python/commit/145034a345eb3e14ea3f23dfcafa3d2409a09067"><code>145034a</code></a>
fix: preserve aliases on cast columns and fix star selection in sqlglot
(<a
href="https://redirect.github.com/googleapis/google-cloud-python/issues/173">#173</a>...</li>
<li><a
href="https://github.com/googleapis/google-cloud-python/commit/dd59d3623c0af8c3ae683b0ea808b1992a917071"><code>dd59d36</code></a>
chore: address pandas 3 failure and remove inherently flaky system test
(<a
href="https://redirect.github.com/googleapis/google-cloud-python/issues/17452">#17452</a>)</li>
<li><a
href="https://github.com/googleapis/google-cloud-python/commit/4d3447d567f7e0f6d5793f1dc55da87b437de231"><code>4d3447d</code></a>
chore: skip sqlalchemy-bigquery test to unblock CI (<a
href="https://redirect.github.com/googleapis/google-cloud-python/issues/17288">#17288</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/googleapis/google-cloud-python/compare/google-auth-v2.53.0...google-auth-v2.55.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `google-cloud-storage` from 3.11.0 to 3.12.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/googleapis/google-cloud-python/releases">google-cloud-storage's
releases</a>.</em></p>
<blockquote>
<h2>google-cloud-storage: v3.12.0</h2>
<h2><a
href="https://github.com/googleapis/google-cloud-python/compare/google-cloud-storage-v3.11.0...google-cloud-storage-v3.12.0">v3.12.0</a>
(2026-06-11)</h2>
<h3>Features</h3>
<ul>
<li>
<p>full object checksum: implement rolling checksum and verification in
reads resumption strategy (<a
href="https://redirect.github.com/googleapis/google-cloud-python/issues/17262">#17262</a>)
(<a
href="https://github.com/googleapis/google-cloud-python/commit/2361ba6e">2361ba6e</a>)</p>
</li>
<li>
<p>Enable full object checksum PR 1/3 : parse finalize_time and server
crc32c in async object stream (<a
href="https://redirect.github.com/googleapis/google-cloud-python/issues/17261">#17261</a>)
(<a
href="https://github.com/googleapis/google-cloud-python/commit/72c7a272">72c7a272</a>)</p>
</li>
<li>
<p>full object checksum: integrate full-object checksum in
AsyncMultiRangeDownloader (<a
href="https://redirect.github.com/googleapis/google-cloud-python/issues/17263">#17263</a>)
(<a
href="https://github.com/googleapis/google-cloud-python/commit/b6a85e49">b6a85e49</a>)</p>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/googleapis/google-cloud-python/blob/main/packages/google-cloud-documentai/CHANGELOG.md">google-cloud-storage's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/googleapis/google-cloud-python/compare/google-cloud-documentai-v3.11.0...google-cloud-documentai-v3.12.0">3.12.0</a>
(2026-03-23)</h2>
<h3>Features</h3>
<ul>
<li>Add a field for upgrading previous processor version when fine
tuning (<a
href="https://github.com/googleapis/google-cloud-python/commit/ee7dd7dc168ecf943440cef38efff348e8eff095">ee7dd7dc168ecf943440cef38efff348e8eff095</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/googleapis/google-cloud-python/commit/654701257c6ed4c329729d32965faba4a79627e1"><code>6547012</code></a>
chore: librarian release pull request: 20260611T192009Z (<a
href="https://redirect.github.com/googleapis/google-cloud-python/issues/17432">#17432</a>)</li>
<li><a
href="https://github.com/googleapis/google-cloud-python/commit/2e75c78cdd09d4472ed412a2e925196effaea9fd"><code>2e75c78</code></a>
feat: update API sources and regenerate (<a
href="https://redirect.github.com/googleapis/google-cloud-python/issues/17431">#17431</a>)</li>
<li><a
href="https://github.com/googleapis/google-cloud-python/commit/f59c2b2aa61316cf04b650933036ef50f6a1f08c"><code>f59c2b2</code></a>
fix: bump pyarrow from 15.0.2 to 23.0.1 in /packages/bigframes (<a
href="https://redirect.github.com/googleapis/google-cloud-python/issues/17386">#17386</a>)</li>
<li><a
href="https://github.com/googleapis/google-cloud-python/commit/dd823f5edeef2550c52baf7e66ef306bd0a93707"><code>dd823f5</code></a>
chore(bigtable): add bigtable samples (<a
href="https://redirect.github.com/googleapis/google-cloud-python/issues/17240">#17240</a>)</li>
<li><a
href="https://github.com/googleapis/google-cloud-python/commit/7d230af033a12f527b84baa3647e113c6e8c3d01"><code>7d230af</code></a>
chore(deps): bump pyspark from 3.5.1 to 3.5.2 in /packages/bigframes (<a
href="https://redirect.github.com/googleapis/google-cloud-python/issues/17400">#17400</a>)</li>
<li><a
href="https://github.com/googleapis/google-cloud-python/commit/57269d567227655e16a2c518e29129c31ebe65be"><code>57269d5</code></a>
fix(auth): configure mTLS for impersonated credentials (<a
href="https://redirect.github.com/googleapis/google-cloud-python/issues/17404">#17404</a>)</li>
<li><a
href="https://github.com/googleapis/google-cloud-python/commit/59fe7cf83c123102baf5439af4acd6218d7ce01b"><code>59fe7cf</code></a>
feat: update API sources and regenerate (<a
href="https://redirect.github.com/googleapis/google-cloud-python/issues/17413">#17413</a>)</li>
<li><a
href="https://github.com/googleapis/google-cloud-python/commit/ca02afce77af166d9e69cd65caf94fe5db505b30"><code>ca02afc</code></a>
feat(google/developers/knowledge/v1): add google-developer-knowledge (<a
href="https://redirect.github.com/googleapis/google-cloud-python/issues/17417">#17417</a>)</li>
<li><a
href="https://github.com/googleapis/google-cloud-python/commit/3a90cc8e867c8a2d2f8060858fde9eda94f80a54"><code>3a90cc8</code></a>
fix(bigframes): improve error message when unescaped <code>{</code> are
found in SQL cel...</li>
<li><a
href="https://github.com/googleapis/google-cloud-python/commit/384724c2d4c955e15274e9824bcdb93c685b79f6"><code>384724c</code></a>
feat: support row_range in sample_row_keys method (<a
href="https://redirect.github.com/googleapis/google-cloud-python/issues/17330">#17330</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/googleapis/google-cloud-python/compare/google-cloud-storage-v3.11.0...google-cloud-storage-v3.12.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `greenlet` from 3.5.1 to 3.5.2
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/python-greenlet/greenlet/blob/master/CHANGES.rst">greenlet's
changelog</a>.</em></p>
<blockquote>
<h1>3.5.2 (2026-06-17)</h1>
<ul>
<li>The minimum supported version of Python 3.15 is now 3.15b2.</li>
<li>Fix some garbage-collection related crashes on free-threaded Python
3.15. Thanks to Kumar Aditya in <code>PR
[#511](https://github.com/python-greenlet/greenlet/issues/511)
&lt;https://github.com/python-greenlet/greenlet/pull/511&gt;</code>_.</li>
<li>Improve garbage collection of greenlets. This mostly applies to
Python 3.15. Thanks to Kumar Aditya in <code>PR
[#512](https://github.com/python-greenlet/greenlet/issues/512)
&lt;https://github.com/python-greenlet/greenlet/pull/512&gt;</code>_.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/0b64e9c851ae7bd8fc9b73d98031168237ee71db"><code>0b64e9c</code></a>
Preparing release 3.5.2</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/3e28d276d01e74882f4cff1a4b54aed47153d617"><code>3e28d27</code></a>
Add change note for <a
href="https://redirect.github.com/python-greenlet/greenlet/issues/512">#512</a>
[skip ci]</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/6563c5e909a84c037c3d03e46851cd3016525a35"><code>6563c5e</code></a>
Merge pull request <a
href="https://redirect.github.com/python-greenlet/greenlet/issues/512">#512</a>
from kumaraditya303/ft-mem</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/ab6eff60766e8954d890eef064ee2e1dd7c8b262"><code>ab6eff6</code></a>
add ignore for win 3.10</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/41f5349a0f1b69ce180c90acb9a4cf2c84d612e7"><code>41f5349</code></a>
revert back to fails_leakcheck_on_py314_or_less</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/b0aac05734e9e41d4a592e0c913846990a9c7c24"><code>b0aac05</code></a>
set fail-fast=false and if condition correctly</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/2f87f316613d401bbf1b1653595654654e572550"><code>2f87f31</code></a>
rename to ignores_leakcheck_on_py314_or_less</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/28bbde3de939acefe8e9d72fb179115b81392a87"><code>28bbde3</code></a>
add comments</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/35206b8dc536cfe92c09509432b4a301b5fede5f"><code>35206b8</code></a>
fix test and restrict tp_is_gc &lt; 3.15</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/abdbab55b03334700fd264e523ac75926daba043"><code>abdbab5</code></a>
fix gil enabled</li>
<li>Additional commits viewable in <a
href="https://github.com/python-greenlet/greenlet/compare/3.5.1...3.5.2">compare
view</a></li>
</ul>
</details>
<br />

Updates `numpy` from 2.4.6 to 2.5.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/numpy/numpy/releases">numpy's
releases</a>.</em></p>
<blockquote>
<h2>v2.5.0 (June 21, 2026)</h2>
<h1>NumPy 2.5.0 Release Notes</h1>
<p>Numpy 2.5.0 is a transitional release. It drops support for Python
3.11,
marking the end of distutils, and expires a large number of deprecations
made
in the 2.0.x release. It also improves free threading and brings sorting
into
compliance with the array-api standard with the addition of descending
sorts.
There is also a fair amount of preparation for Python 3.15, which will
be
supported starting with the first rc.</p>
<p>This release supports Python versions 3.12-3.14.</p>
<h2>Highlights</h2>
<ul>
<li>Distutils has been removed,</li>
<li>Many expired deprecations, see below,</li>
<li>Many new deprecations, see below,</li>
<li>Many static typing improvements.</li>
<li>Improved support for free threading,</li>
<li>Support for descending sorts,</li>
</ul>
<p>See New Features below for other additions.</p>
<h2>Deprecations</h2>
<ul>
<li>
<p><code>numpy.char.chararray</code> is deprecated. Use an
<code>ndarray</code> with a string or bytes dtype instead.</p>
<p>(<a
href="https://redirect.github.com/numpy/numpy/pull/30605">gh-30605</a>)</p>
</li>
<li>
<p><code>numpy.take</code> now correctly checks if the result can be
cast to the provided
<code>out=out</code> under the same-kind rule. A
<code>DeprecationWarning</code> is given now
when this check fails. Previously, <code>take</code> incorrectly checked
if <code>out</code>
could be cast to the result (the wrong direction). This deprecation also
affects <code>compress</code> and possibly other functions. (Future
versions of NumPy
may tighten the casting check further.)</p>
<p>(<a
href="https://redirect.github.com/numpy/numpy/pull/30615">gh-30615</a>)</p>
</li>
<li>
<p>The <code>numpy.char.[as]array</code> functions are deprecated. Use
an
<code>numpy.[as]array</code> with a string or bytes dtype instead.</p>
<p>(<a
href="https://redirect.github.com/numpy/numpy/pull/30802">gh-30802</a>)</p>
</li>
<li>
<p>Setting the dtype attribute is deprecated because mutating an array
is unsafe
if an array is shared, especially by multiple threads. As an
alternative,
you can create a view with a new dtype via
<code>array.view(dtype=new_dtype)</code>.</p>
<p>(<a
href="https://redirect.github.com/numpy/numpy/pull/29244">gh-29244</a>)</p>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/numpy/numpy/commit/6910b28fc12f4c3e821f315e24c51a6a2d89ba49"><code>6910b28</code></a>
Merge pull request <a
href="https://redirect.github.com/numpy/numpy/issues/31706">#31706</a>
from charris/prepare-2.5.0-release</li>
<li><a
href="https://github.com/numpy/numpy/commit/e0acd2bef5dc193eeec3b2d6b7ea9fc30fd7e263"><code>e0acd2b</code></a>
REL: Prepare for the NumPy 2.5.0 release.</li>
<li><a
href="https://github.com/numpy/numpy/commit/8d928b715af39e403441e243df45a25db9d79ce3"><code>8d928b7</code></a>
Merge pull request <a
href="https://redirect.github.com/numpy/numpy/issues/31704">#31704</a>
from charris/backport-31649</li>
<li><a
href="https://github.com/numpy/numpy/commit/c2055ba2aabbfc31164297dd7ecb9b3a001262f6"><code>c2055ba</code></a>
MAINT: update openblas to 0.3.33.112.0 (<a
href="https://redirect.github.com/numpy/numpy/issues/31649">#31649</a>)</li>
<li><a
href="https://github.com/numpy/numpy/commit/ce17c81376e5d1195a22610a1f4bc79795c18911"><code>ce17c81</code></a>
Merge pull request <a
href="https://redirect.github.com/numpy/numpy/issues/31703">#31703</a>
from charris/backport-31609</li>
<li><a
href="https://github.com/numpy/numpy/commit/3de6203f44832dc5580d4cec30691f0fa10add87"><code>3de6203</code></a>
BUG: fix StringDType distinct-allocator bugs and add tests (<a
href="https://redirect.github.com/numpy/numpy/issues/31609">#31609</a>)</li>
<li><a
href="https://github.com/numpy/numpy/commit/c723971cf2dc71f0a9db851a72e47a2548f7bda6"><code>c723971</code></a>
Merge pull request <a
href="https://redirect.github.com/numpy/numpy/issues/31700">#31700</a>
from charris/backport-31694</li>
<li><a
href="https://github.com/numpy/numpy/commit/64513b250beb6b180449be76407352f33e5ee209"><code>64513b2</code></a>
MAINT: Bump pypa/cibuildwheel from 3.4.1 to 4.1.0</li>
<li><a
href="https://github.com/numpy/numpy/commit/04707f0dfb2de64883564be66623cb3705045a49"><code>04707f0</code></a>
Merge pull request <a
href="https://redirect.github.com/numpy/numpy/issues/31698">#31698</a>
from charris/try-fix-emscripten</li>
<li><a
href="https://github.com/numpy/numpy/commit/5cf0686152a721c66eda84cacb6d0b49cab394c4"><code>5cf0686</code></a>
MAINT: Try to fix emscripten wheel build.</li>
<li>Additional commits viewable in <a
href="https://github.com/numpy/numpy/compare/v2.4.6...v2.5.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `phonenumbers` from 9.0.32 to 9.0.33
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/daviddrysdale/python-phonenumbers/commit/0efec901889d8ca3fb8a4f894f4e13f4019cc75c"><code>0efec90</code></a>
Fix lint</li>
<li><a
href="https://github.com/daviddrysdale/python-phonenumbers/commit/6400333057df59b6a17eb79ecd3e8bf9ac03cd2a"><code>6400333</code></a>
Prep for 9.0.33 release</li>
<li><a
href="https://github.com/daviddrysdale/python-phonenumbers/commit/44199927677187f2b0c100efd198785ee891cd7d"><code>4419992</code></a>
Generated files for metadata</li>
<li><a
href="https://github.com/daviddrysdale/python-phonenumbers/commit/2e01d60f951ee0986faba2b4d0c77ae51bf522a6"><code>2e01d60</code></a>
Merge metadata changes from upstream 9.0.33</li>
<li><a
href="https://github.com/daviddrysdale/python-phonenumbers/commit/bdee3ff7c793343e180a06f5183d01466d3d17a4"><code>bdee3ff</code></a>
Merge code changes from upstream v9.0.33</li>
<li>See full diff in <a
href="https://github.com/daviddrysdale/python-phonenumbers/compare/v9.0.32...v9.0.33">compare
view</a></li>
</ul>
</details>
<br />

Updates `python-multipart` from 0.0.31 to 0.0.32
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/Kludex/python-multipart/releases">python-multipart's
releases</a>.</em></p>
<blockquote>
<h2>Version 0.0.32</h2>
<h2>What's Changed</h2>
<ul>
<li>Replace per-byte partial-boundary scan with rfind lookbehind by <a
href="https://github.com/Kludex"><code>@​Kludex</code></a> in <a
href="https://redirect.github.com/Kludex/python-multipart/pull/300">Kludex/python-multipart#300</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/Kludex/python-multipart/compare/0.0.31...0.0.32">https://github.com/Kludex/python-multipart/compare/0.0.31...0.0.32</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/Kludex/python-multipart/blob/main/CHANGELOG.md">python-multipart's
changelog</a>.</em></p>
<blockquote>
<h2>0.0.32 (2026-06-04)</h2>
<ul>
<li>Speed up partial-boundary scanning for CR/LF-dense part data <a
href="https://redirect.github.com/Kludex/python-multipart/pull/300">#300</a>.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/Kludex/python-multipart/commit/238ead62a0bb6f6cdfe122708faa13812f59f9a6"><code>238ead6</code></a>
Version 0.0.32 (<a
href="https://redirect.github.com/Kludex/python-multipart/issues/302">#302</a>)</li>
<li><a
href="https://github.com/Kludex/python-multipart/commit/86729796093b04f7cf414ea6c2c4499e2a5750af"><code>8672979</code></a>
Replace per-byte partial-boundary scan with rfind lookbehind (<a
href="https://redirect.github.com/Kludex/python-multipart/issues/300">#300</a>)</li>
<li><a
href="https://github.com/Kludex/python-multipart/commit/8190779d8234c8bf8cbed7891c11d4bfb79e84df"><code>8190779</code></a>
Bump the python-packages group with 7 updates (<a
href="https://redirect.github.com/Kludex/python-multipart/issues/301">#301</a>)</li>
<li><a
href="https://github.com/Kludex/python-multipart/commit/0d3c086d237f6fd20fefe8853e95979276a07c44"><code>0d3c086</code></a>
Use uv package ecosystem for Dependabot (<a
href="https://redirect.github.com/Kludex/python-multipart/issues/299">#299</a>)</li>
<li>See full diff in <a
href="https://github.com/Kludex/python-multipart/compare/0.0.31...0.0.32">compare
view</a></li>
</ul>
</details>
<br />

Updates `scramp` from 1.4.8 to 1.4.9
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/tlocke/scramp/commits">compare view</a></li>
</ul>
</details>
<br />

Updates `sentry-sdk[fastapi]` from 2.62.0 to 2.63.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/getsentry/sentry-python/releases">sentry-sdk[fastapi]'s
releases</a>.</em></p>
<blockquote>
<h2>2.63.0</h2>
<h3>Bug Fixes 🐛</h3>
<h4>Fastapi</h4>
<ul>
<li>Prevent double wrapping of sync handlers on FastAPI &gt;= 0.137 by
<a href="https://github.com/jhonny-on"><code>@​jhonny-on</code></a> in
<a
href="https://redirect.github.com/getsentry/sentry-python/pull/6569">#6569</a></li>
<li>Use effective_route_context path for prefixed routers by <a
href="https://github.com/ericapisani"><code>@​ericapisani</code></a> in
<a
href="https://redirect.github.com/getsentry/sentry-python/pull/6572">#6572</a></li>
</ul>
<h4>Other</h4>
<ul>
<li>(asgi) Gate query string and client IP behind send_default_pii by <a
href="https://github.com/ericapisani"><code>@​ericapisani</code></a> in
<a
href="https://redirect.github.com/getsentry/sentry-python/pull/6501">#6501</a></li>
<li>(serializer) Avoid creating reference cycles on every call by <a
href="https://github.com/Malkiz223"><code>@​Malkiz223</code></a> in <a
href="https://redirect.github.com/getsentry/sentry-python/pull/6563">#6563</a></li>
<li>(user) Set <code>user.ip_address</code> on telemetry if present by
<a href="https://github.com/sentrivana"><code>@​sentrivana</code></a> in
<a
href="https://redirect.github.com/getsentry/sentry-python/pull/6555">#6555</a></li>
<li>Remove 0000 trace_id fallbacks by <a
href="https://github.com/sl0thentr0py"><code>@​sl0thentr0py</code></a>
in <a
href="https://redirect.github.com/getsentry/sentry-python/pull/6570">#6570</a></li>
<li>MANIFEST.in: Graft tests directory. by <a
href="https://github.com/charlesroelli"><code>@​charlesroelli</code></a>
in <a
href="https://redirect.github.com/getsentry/sentry-python/pull/6237">#6237</a></li>
</ul>
<h3>Internal Changes 🔧</h3>
<ul>
<li>(fastapi) Verify request info capture with POST endpoints by <a
href="https://github.com/alexander-alderman-webb"><code>@​alexander-alderman-webb</code></a>
in <a
href="https://redirect.github.com/getsentry/sentry-python/pull/6287">#6287</a></li>
<li>(starlette) Verify request info capture with POST endpoints by <a
href="https://github.com/alexander-alderman-webb"><code>@​alexander-alderman-webb</code></a>
in <a
href="https://redirect.github.com/getsentry/sentry-python/pull/6269">#6269</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/getsentry/sentry-python/blob/master/CHANGELOG.md">sentry-sdk[fastapi]'s
changelog</a>.</em></p>
<blockquote>
<h2>2.63.0</h2>
<h3>Bug Fixes 🐛</h3>
<h4>Fastapi</h4>
<ul>
<li>Prevent double wrapping of sync handlers on FastAPI &gt;= 0.137 by
<a href="https://github.com/jhonny-on"><code>@​jhonny-on</code></a> in
<a
href="https://redirect.github.com/getsentry/sentry-python/pull/6569">#6569</a></li>
<li>Use effective_route_context path for prefixed routers by <a
href="https://github.com/ericapisani"><code>@​ericapisani</code></a> in
<a
href="https://redirect.github.com/getsentry/sentry-python/pull/6572">#6572</a></li>
</ul>
<h4>Other</h4>
<ul>
<li>(asgi) Gate query string and client IP behind send_default_pii by <a
href="https://github.com/ericapisani"><code>@​ericapisani</code></a> in
<a
href="https://redirect.github.com/getsentry/sentry-python/pull/6501">#6501</a></li>
<li>(serializer) Avoid creating reference cycles on every call by <a
href="https://github.com/Malkiz223"><code>@​Malkiz223</code></a> in <a
href="https://redirect.github.com/getsentry/sentry-python/pull/6563">#6563</a></li>
<li>(user) Set <code>user.ip_address</code> on telemetry if present by
<a href="https://github.com/sentrivana"><code>@​sentrivana</code></a> in
<a
href="https://redirect.github.com/getsentry/sentry-python/pull/6555">#6555</a></li>
<li>Remove 0000 trace_id fallbacks by <a
href="https://github.com/sl0thentr0py"><code>@​sl0thentr0py</code></a>
in <a
href="https://redirect.github.com/getsentry/sentry-python/pull/6570">#6570</a></li>
<li>MANIFEST.in: Graft tests directory. by <a
href="https://github.com/charlesroelli"><code>@​charlesroelli</code></a>
in <a
href="https://redirect.github.com/getsentry/sentry-python/pull/6237">#6237</a></li>
</ul>
<h3>Internal Changes 🔧</h3>
<ul>
<li>(fastapi) Verify request info capture with POST endpoints by <a
href="https://github.com/alexander-alderman-webb"><code>@​alexander-alderman-webb</code></a>
in <a
href="https://redirect.github.com/getsentry/sentry-python/pull/6287">#6287</a></li>
<li>(starlette) Verify request info capture with POST endpoints by <a
href="https://github.com/alexander-alderman-webb"><code>@​alexander-alderman-webb</code></a>
in <a
href="https://redirect.github.com/getsentry/sentry-python/pull/6269">#6269</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/getsentry/sentry-python/commit/44b008a336bd9c64bf54ab8318bffbf9cc015bd1"><code>44b008a</code></a>
update changelog</li>
<li><a
href="https://github.com/getsentry/sentry-python/commit/0b2af511fd1b28208b8f8860c68efcab85e81970"><code>0b2af51</code></a>
Update CHANGELOG.md</li>
<li><a
href="https://github.com/getsentry/sentry-python/commit/250caadc80033e975e7b4746ee1411bcf7fa98f3"><code>250caad</code></a>
release: 2.63.0</li>
<li><a
href="https://github.com/getsentry/sentry-python/commit/72a57de789777a7b0b836ef1225463478cb7df6a"><code>72a57de</code></a>
fix(flask): Set user data on scope at request start (<a
href="https://redirect.github.com/getsentry/sentry-python/issues/6566">#6566</a>)</li>
<li><a
href="https://github.com/getsentry/sentry-python/commit/6a4c3a1cb84a94b30ff1c0648e127dcf80bd83f8"><code>6a4c3a1</code></a>
fix: Remove 0000 trace_id fallbacks (<a
href="https://redirect.github.com/getsentry/sentry-python/issues/6570">#6570</a>)</li>
<li><a
href="https://github.com/getsentry/sentry-python/commit/1df9835e485a346f670ca5615106536a20212795"><code>1df9835</code></a>
feat(falcon): Set name and source on request span when streaming (<a
href="https://redirect.github.com/getsentry/sentry-python/issues/6562">#6562</a>)</li>
<li><a
href="https://github.com/getsentry/sentry-python/commit/77874bdb80039de5521830a88b133015e3c0b7a0"><code>77874bd</code></a>
test(falcon): Support span streaming (<a
href="https://redirect.github.com/getsentry/sentry-python/issues/6561">#6561</a>)</li>
<li><a
href="https://github.com/getsentry/sentry-python/commit/6bcfb9cf7e8e00a009bcd5ba4e1cb00f3fffe2d9"><code>6bcfb9c</code></a>
fix(fastapi): Prevent double wrapping of sync handlers on FastAPI &gt;=
0.137 (#...</li>
<li><a
href="https://github.com/getsentry/sentry-python/commit/72d972c176a1d41a8179b6666ca723de665399b5"><code>72d972c</code></a>
fix(fastapi): use effective_route_context path for prefixed routers (<a
href="https://redirect.github.com/getsentry/sentry-python/issues/6572">#6572</a>)</li>
<li><a
href="https://github.com/getsentry/sentry-python/commit/cc802f6fcedcbd50f76afe2fc902d4d21b6691d6"><code>cc802f6</code></a>
feat(chalice): Add span streaming support to Chalice integration (<a
href="https://redirect.github.com/getsentry/sentry-python/issues/6503">#6503</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/getsentry/sentry-python/compare/2.62.0...2.63.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `sqlalchemy` from 2.0.50 to 2.0.51
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/sqlalchemy/sqlalchemy/releases">sqlalchemy's
releases</a>.</em></p>
<blockquote>
<h1>2.0.51</h1>
<p>Released: June 15, 2026</p>
<h2>orm</h2>
<ul>
<li>
<p><strong>[orm] [bug]</strong> Fixed issue where
<code>_orm.subqueryload()</code> combined with
<code>PropComparator.of_type()</code> and
<code>PropComparator.and_()</code> would
silently drop the additional filter criteria, causing all related
objects
to be loaded instead of only those matching the filter.  The
<code>LoaderCriteriaOption</code> was being constructed against the base
entity rather than the effective entity indicated by
<code>PropComparator.of_type()</code>. Pull request courtesy Arya
Rizky.</p>
<p>References: <a
href="https://www.sqlalchemy.org/trac/ticket/13207">#13207</a></p>
</li>
<li>
<p><strong>[orm] [bug]</strong> Fixed bug where a failure during
<code>tpc_prepare()</code> within
<code>_orm.Session.commit()</code> for a two-phase session would raise
<code>IllegalStateChangeError</code> instead of the original database
exception. The internal <code>_prepare_impl()</code> method's error
handler
was unable to invoke <code>_orm.SessionTransaction.rollback()</code> due
to a state-change guard, preventing proper cleanup and masking the
underlying error.</p>
<p>References: <a
href="https://www.sqlalchemy.org/trac/ticket/13356">#13356</a></p>
</li>
</ul>
<h2>engine</h2>
<ul>
<li>
<p><strong>[engine] [bug]</strong> Fixed issue where
<code>Result.freeze()</code> would lose track of ambiguous
column names present in the original <code>CursorResult</code>, causing
key-based access on the thawed result to silently return a value instead
of
raising <code>InvalidRequestError</code>.  The
<code>SimpleResultMetaData</code> now accepts and propagates ambiguous
key
information so that frozen, thawed, and pickled results raise
consistently
for duplicate column names.  Pull request courtesy Saurabh Kohli.</p>
<p>References: <a
href="https://www.sqlalchemy.org/trac/ticket/9427">#9427</a></p>
</li>
</ul>
<h2>sql</h2>
<ul>
<li>
<p><strong>[sql] [bug]</strong> Fixed issue where
<code>_sql.StatementLambdaElement</code> would proxy
attribute access through the cached &quot;expected&quot; expression
rather than the
resolved expression, causing stale closure-bound parameter values to be
used when a lambda statement was extended with non-lambda criteria such
as
an additional <code>.where()</code> clause.  Courtesy cjc0013.</p>
<p>References: <a
href="https://www.sqlalchemy.org/trac/ticket/10827">#10827</a></p>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/sqlalchemy/sqlalchemy/commits">compare
view</a></li>
</ul>
</details>
<br />

Updates `pytest` from 9.0.3 to 9.1.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/pytest-dev/pytest/releases">pytest's
releases</a>.</em></p>
<blockquote>
<h2>9.1.1</h2>
<h1>pytest 9.1.1 (2026-06-19)</h1>
<h2>Bug fixes</h2>
<ul>
<li><a
href="https://redirect.github.com/pytest-dev/pytest/issues/14220">#14220</a>:
Fixed a logic bug in <code>pytest.RaisesGroup</code> which would might
cause it to display incorrect &quot;It matches <!-- raw HTML omitted
-->FooError()<!-- raw HTML omitted --> which was paired with <!-- raw
HTML omitted -->BarError<!-- raw HTML omitted -->&quot; messages.</li>
<li><a
href="https://redirect.github.com/pytest-dev/pytest/issues/14591">#14591</a>:
Fixed a regression in pytest 9.1.0 which caused overriding a
parametrized fixture with an indirect <!-- raw HTML omitted --><a
href="https://github.com/pytest"><code>@​pytest</code></a>.mark.parametrize<!--
raw HTML omitted --> to fail with &quot;duplicate parametrization of
'&lt;fixture name&gt;'&quot;.</li>
<li><a
href="https://redirect.github.com/pytest-dev/pytest/issues/14606">#14606</a>:
Fixed <code>list-item</code> typing errors from mypy in
<code>@pytest.mark.parametrize &lt;pytest.mark.parametrize
ref&gt;</code> <code>argvalues</code> parameter.</li>
<li><a
href="https://redirect.github.com/pytest-dev/pytest/issues/14608">#14608</a>:
Fixed a regression in pytest 9.1.0 where <code>conftest.py</code> files
located in <code>&lt;invocation dir&gt;/test*</code> were no longer
loaded as initial conftests when invoked without arguments.
This could cause certain hooks (like <code>pytest_addoption</code>) in
these files to not fire.</li>
</ul>
<h2>9.1.0</h2>
<h1>pytest 9.1.0 (2026-06-13)</h1>
<h2>Removals and backward incompatible breaking changes</h2>
<ul>
<li>
<p><a
href="https://redirect.github.com/pytest-dev/pytest/issues/14533">#14533</a>:
When using <code>--doctest-modules</code>, autouse fixtures with
<code>module</code>, <code>package</code> or <code>session</code> scope
that are defined inline in Python test modules (not plugins or
conftests) will now possibly execute twice.</p>
<p>If this is undesirable, move the fixture definition to a
<code>conftest.py</code> file if possible.</p>
<p>Technical explanation for those interested:
When using <!-- raw HTML omitted -->--doctest-modules<!-- raw HTML
omitted -->, pytest possibly collects Python modules twice, once as
<code>pytest.Module</code> and once as a <code>DoctestModule</code>
(depending on the configuration).
Due to improvements in pytest's fixture implementation, if e.g. the
<code>DoctestModule</code> collects a fixture, it is now visible to it
only, and not to the <code>Module</code>.
This means that both need to register the fixtures independently.</p>
</li>
</ul>
<h2>Deprecations (removal in next major release)</h2>
<ul>
<li>
<p><a
href="https://redirect.github.com/pytest-dev/pytest/issues/10819">#10819</a>:
Added a deprecation warning for class-scoped fixtures defined as
instance methods (without <code>@classmethod</code>). Such fixtures set
attributes on a different instance than the test methods use, leading to
unexpected behavior. Use <code>@classmethod</code> decorator instead --
by <code>yastcher</code>.</p>
<p>See <code>10819</code> and <code>14011</code>.</p>
</li>
<li>
<p><a
href="https://redirect.github.com/pytest-dev/pytest/issues/12882">#12882</a>:
Calling <code>request.getfixturevalue()
&lt;pytest.FixtureRequest.getfixturevalue&gt;</code> during teardown to
request a fixture that was not already requested is now deprecated and
will become an error in pytest 10.</p>
<p>See <code>dynamic-fixture-request-during-teardown</code> for
details.</p>
</li>
<li>
<p><a
href="https://redirect.github.com/pytest-dev/pytest/issues/13409">#13409</a>:
Using non-<code>~collections.abc.Collection</code> iterables (such as
generators, iterators, or custom iterable objects) for the
<code>argvalues</code> parameter in <code>@pytest.mark.parametrize
&lt;pytest.mark.parametrize ref&gt;</code> and
<code>metafunc.parametrize &lt;pytest.Metafunc.parametrize&gt;</code> is
now deprecated.</p>
<p>These iterables get exhausted after the first iteration,
leading to tests getting unexpectedly skipped in cases such as running
<code>pytest.main()</code> multiple times,
using class-level parametrize decorators,
or collecting tests multiple times.</p>
<p>See <code>parametrize-iterators</code> for details and
suggestions.</p>
</li>
<li>
<p><a
href="https://redirect.github.com/pytest-dev/pytest/issues/13946">#13946</a>:
The private <code>config.inicfg</code> attribute is now deprecated.
Use <code>config.getini() &lt;pytest.Config.getini&gt;</code> to access
configuration values instead.</p>
<p>See <code>config-inicfg</code> for more details.</p>
</li>
<li>
<p><a
href="https://redirect.github.com/pytest-dev/pytest/issues/14004">#14004</a>:
Passing <code>baseid</code> to <code>~pytest.FixtureDef</code> or
<code>nodeid</code> strings to fixture registration APIs is now
deprecated. These are internal pytest APIs that are used by some
plugins.</p>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/pytest-dev/pytest/commit/cf470ec0bf7eb89cd97dd56df4859eae5db46447"><code>cf470ec</code></a>
Prepare release version 9.1.1</li>
<li><a
href="https://github.com/pytest-dev/pytest/commit/e0c8ce6cc5db1f08363be6f152c32e6838df2690"><code>e0c8ce6</code></a>
Merge pull request <a
href="https://redirect.github.com/pytest-dev/pytest/issues/14625">#14625</a>
from pytest-dev/patchback/backports/9.1.x/a07c31a97...</li>
<li><a
href="https://github.com/pytest-dev/pytest/commit/1b82d1694fce22385ee7a4287917fbafbaf2e757"><code>1b82d16</code></a>
Merge pull request <a
href="https://redirect.github.com/pytest-dev/pytest/issues/14624">#14624</a>
from pytest-dev/patchback/backports/9.1.x/b375b79ec...</li>
<li><a
href="https://github.com/pytest-dev/pytest/commit/501c4bc784da3b08bfcaa64858eba5d15dc59e53"><code>501c4bc</code></a>
Merge pull request <a
href="https://redirect.github.com/pytest-dev/pytest/issues/14596">#14596</a>
from bluetech/doc-classmethod</li>
<li><a
href="https://github.com/pytest-dev/pytest/commit/b61f588e36e9377c3d1d3f06bece1da0fc31d9ca"><code>b61f588</code></a>
Merge pull request <a
href="https://redirect.github.com/pytest-dev/pytest/issues/14622">#14622</a>
from chrisburr/fix-14608-initial-conftest-test-subdir</li>
<li><a
href="https://github.com/pytest-dev/pytest/commit/9a567e009f4d2da3ce1721c6db3109cb5744d40a"><code>9a567e0</code></a>
[automated] Update plugin list (<a
href="https://redirect.github.com/pytest-dev/pytest/issues/14617">#14617</a>)
(<a
href="https://redirect.github.com/pytest-dev/pytest/issues/14618">#14618</a>)</li>
<li><a
href="https://github.com/pytest-dev/pytest/commit/ef8b2993e5b48639e4a3d97d0525df9760781384"><code>ef8b299</code></a>
Merge pull request <a
href="https://redirect.github.com/pytest-dev/pytest/issues/14620">#14620</a>
from pytest-dev/patchback/backports/9.1.x/680f9f3ed...</li>
<li><a
href="https://github.com/pytest-dev/pytest/commit/66abd0784d4cb7c1ba44ab9a8896506cd4985acc"><code>66abd07</code></a>
Merge pull request <a
href="https://redirect.github.com/pytest-dev/pytest/issues/14220">#14220</a>
from bysiber/fix-stale-iexp-raisesgroup</li>
<li><a
href="https://github.com/pytest-dev/pytest/commit/79fbf93b666cac5f27c9dad047943d47b766c8d5"><code>79fbf93</code></a>
Merge pull request <a
href="https://redirect.github.com/pytest-dev/pytest/issues/14612">#14612</a>
from pytest-dev/patchback/backports/9.1.x/974ed48b6...</li>
<li><a
href="https://github.com/pytest-dev/pytest/commit/0d312eb876177e9f1c04262b54060a41034ebf5c"><code>0d312eb</code></a>
Merge pull request <a
href="https://redirect.github.com/pytest-dev/pytest/issues/14611">#14611</a>
from bluetech/parametrize-argvalues-typing</li>
<li>Additional commits viewable in <a
href="https://github.com/pytest-dev/pytest/compare/9.0.3...9.1.1">compare
view</a></li>
</ul>
</details>
<br />

Updates `babel` from 2.17.0 to 2.18.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/python-babel/babel/releases">babel's
releases</a>.</em></p>
<blockquote>
<h2>v2.18.0</h2>
<p>Happy 2026! Like last year's release (ahem...), this one too is being
made from FOSDEM 2026, in Brussels, Belgium. 🇧🇪
We'll aspire for a less glacial release cycle for 2.19. 😁</p>
<p>Please see <a
href="https://github.com/python-babel/babel/blob/56c63caf50b18b152541b5dcafd51f645d867074/CHANGES.rst">CHANGELOG.rst</a>
for the detailed change log.</p>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/python-babel/babel/compare/v2.17.0...v2.18.0">https://github.com/python-babel/babel/compare/v2.17.0...v2.18.0</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/python-babel/babel/blob/master/CHANGES.rst">babel's
changelog</a>.</em></p>
<blockquote>
<h2>Version 2.18.0</h2>
<p>Happy 2026! This release is, coincidentally, also being made from
FOSDEM.</p>
<p>We will aspire for a slightly less glacial release cadence in this
year;
there are interesting features in the pipeline.</p>
<p>Features</p>
<pre><code>
* Core: Add `babel.core.get_cldr_version()` by @akx in :gh:`1242`
* Core: Use CLDR 47 by @tomasr8 in :gh:`1210`
* Core: Use canonical IANA zone names in zone_territories by @akx in
:gh:`1220`
* Messages: Improve extract performance via ignoring directories early
during os.walk by @akx in :gh:`968`
* Messages: Merge in per-format keywords and auto_comments by @akx in
:gh:`1243`
* Messages: Update keywords for extraction of dpgettext and dnpgettext
by @mardiros in :gh:`1235`
* Messages: Validate all plurals in Python format checker by @tomasr8 in
:gh:`1188`
* Time: Use standard library `timezone` instead of `FixedOffsetTimezone`
by @akx in :gh:`1203`
<p>Bugfixes<br />
</code></pre></p>
<ul>
<li>Core: Fix formatting for &quot;Empty locale identifier&quot;
exception added in <a
href="https://redirect.github.com/python-babel/babel/issues/1164">#1164</a>
by <a href="https://github.com/akx"><code>@​akx</code></a> in
:gh:<code>1184</code></li>
<li>Core: Improve handling of no-inheritance-marker in timezone data by
<a href="https://github.com/akx"><code>@​akx</code></a> in
:gh:<code>1194</code></li>
<li>Core: Make the number pattern regular expression more efficient by
<a href="https://github.com/akx"><code>@​akx</code></a> in
:gh:<code>1213</code></li>
<li>Messages: Keep translator comments next to the translation function
call by <a href="https://github.com/akx"><code>@​akx</code></a> in
:gh:<code>1196</code></li>
<li>Numbers: Fix KeyError that occurred when formatting compact
currencies of exactly one thousand in several locales by <a
href="https://github.com/bartbroere"><code>@​bartbroere</code></a> in
:gh:<code>1246</code></li>
</ul>
<p>Other improvements</p>
<pre><code>
* Core: Avoid unnecessary uses of `map()` by @akx in :gh:`1180`
* Messages: Have init-catalog create directories too by @akx in
:gh:`1244`
* Messages: Optimizations for read_po by @akx in :gh:`1200`
* Messages: Use pathlib.Path() in catalog frontend;…
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.

2 participants