fix refleaks from suspended frames#512
Merged
Merged
Conversation
jamadden
reviewed
Jun 16, 2026
jamadden
reviewed
Jun 17, 2026
jamadden
left a comment
Contributor
There was a problem hiding this comment.
This is a work-in-progress I know, but here's a review of what I'm seeing so far.
jamadden
requested changes
Jun 17, 2026
jamadden
left a comment
Contributor
There was a problem hiding this comment.
One thing I'm pretty sure needs changed, and some discussion about ignoring the leak checks.
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. |
Contributor
Author
|
Ok, it looks like it only fails for 3.10 on Windows, I'll add ignore for that. |
jamadden
approved these changes
Jun 17, 2026
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
Contributor
Author
No, the work is complete, feel free to make a release. |
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>>= 2.12.0, < 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) <https://github.com/python-greenlet/greenlet/pull/511></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) <https://github.com/python-greenlet/greenlet/pull/512></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 <https://github.com/python-greenlet/greenlet/pull/508></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 < 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("/", directory="dist")</code> and <code>router.frontend("/", directory="dist")</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 "Emit <code>http.disconnect</code> on server shutdown for streaming responses" (<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>&</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…
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR fixes refleaks of greenlet because of refs from suspended frames which were not previously cleared.
Follows up from #511
cc @jamadden