fix: make event queue sink removal idempotent - #1134
mykytanetipa merged 6 commits into
Conversation
Use set.discard so repeated sink closure does not raise inside the traced remove_sink method and export a false ERROR span. Fixes a2aproject#1133 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 42ca73c6-08fb-4954-96f4-b7e32e46613a
There was a problem hiding this comment.
Code Review
This pull request refactors the remove_sink method in EventQueueSource to use discard instead of remove, making the operation idempotent and allowing the removal of a contextlib.suppress(KeyError) block in the close method. A new test is added to verify that closing a sink multiple times does not record exceptions on the telemetry span. The review feedback suggests asserting that the tracer mock's start_as_current_span method was actually called to prevent a vacuous test pass if the mock is not active during execution.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
🧪 Code Coverage (vs
|
| Base | PR | Delta | |
|---|---|---|---|
| src/a2a/server/events/event_queue_v2.py | 91.83% | 91.79% | 🔴 -0.04% |
| Total | 93.12% | 93.12% | ⚪️ -0.00% |
Generated by coverage-comment.yml
Assert that span creation uses the patched tracer so the regression cannot pass silently if telemetry instrumentation changes. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 42ca73c6-08fb-4954-96f4-b7e32e46613a
astrogilda
left a comment
There was a problem hiding this comment.
Outside contributor, not a maintainer, and I should declare an interest up front: I have an open PR against this same file (#1137) and a merged one next door (#1105), so I read this one carefully for my own reasons before deciding it was worth saying something. Short version: I think this is correct, minimal, and fixing the right layer, and I could not find anything wrong with it. Here is what I actually ran, so the confirmation is worth something rather than being another opinion on the pile.
It still applies cleanly to current main. The PR shows as behind from 3e6fa6a, but git merge-tree --write-tree against cff6727 exits 0 with no conflict stanzas, and applying the diff to a cff6727 worktree succeeds. On that rebased tree the full suite is 1769 passed, 90 skipped, 3 xfailed, 1 xpassed, versus 1768 passed on cff6727 alone, so the new test is the entire delta and nothing else moved. ruff check is clean on both changed files. I ran with --ignore=tests/integration/cross_version since that directory needs network I do not have.
The new test is not vacuous, which was @gemini-code-assist's concern in the earlier round and is the thing I most wanted to check. I reverted event_queue_v2.py to main while keeping the test, and it fails with AssertionError: Expected 'record_exception' to not have been called. Called 1 times. So it genuinely pins the reported symptom, and the tracer.start_as_current_span.assert_called() line you added does its job of ruling out a mock that was never active.
On the change itself, discard is the right place to fix this rather than widening the suppression at the call site. EventQueueSource carries @trace_class(kind=SpanKind.SERVER), so remove_sink gets its own span and the KeyError was recorded there before contextlib.suppress ever saw it in the caller. Suppressing at the caller could never have cleared the span; only not raising can. I also checked the blast radius of loosening remove to discard: remove_sink has exactly one caller in the tree, EventQueueSink.close at line 369, so there is no other path that was relying on the KeyError as a signal. And contextlib is still used at three other places in the file, so dropping that one block does not leave an unused import behind.
One small thought, take it or leave it. Since remove_sink is public and its contract is now genuinely idempotent, the docstring change to "if present" is doing real work and it might be worth saying "no-op if the sink is not registered" so a caller cannot read silence as success. Not a blocker.
Finally, for whoever picks this up: this does not collide with my #1137. git merge-tree --write-tree between #1137's head 83fdd8d and this branch exits 0 with a clean tree, and the two diffs touch disjoint regions, since #1137 changes tap and the dispatch path and leaves remove_sink and close untouched. If anything the two are complementary, because #1137's eviction path force-closes a sink that a subscriber's own finally may close concurrently, which is exactly the double-remove this PR stops recording as an error. Merge order between them should not matter, and if it turns out to I will rebase mine rather than the other way round.
🤖 I have created a release *beep* *boop* --- ## [1.1.4](v1.1.3...v1.1.4) (2026-09-07) ### Features * **itk:** register itk-python-v10-agent as a uv workspace member and update dependency version markers ([#1203](#1203)) ([6eee895](6eee895)) * **itk:** use shared scenarios ([#1201](#1201)) ([b4a0b21](b4a0b21)) ### Bug Fixes * make event queue sink removal idempotent ([#1134](#1134)) ([58c72c6](58c72c6)) * omit artifacts from list tasks responses ([#1212](#1212)) ([35ef52e](35ef52e)) * owner-scope cancel/subscribe and write terminal state on cancel ([#1159](#1159), [#1170](#1170)) ([#1172](#1172)) ([ddbf853](ddbf853)) * prevent first-owner write loss in in-memory stores ([#1194](#1194)) ([bcc489c](bcc489c)) * **server:** let subscriber taps evict on full instead of wedging dispatch ([#1137](#1137)) ([0c2126f](0c2126f)) * **server:** surface producer errors after failed tasks ([#1229](#1229)) ([bc32d7e](bc32d7e)) * **server:** validate push-notification URLs at config creation ([#1173](#1173)) ([3eb88e2](3eb88e2)) * **server:** validate push-notification URLs before dispatch (SSRF hardening) ([#1164](#1164)) ([57a9df3](57a9df3)) * **server:** warn when queue_manager is ignored in DefaultRequestHandlerV2 ([#1153](#1153)) ([08fd223](08fd223)) ### Documentation * **server:** say what the evict-on-full check actually tests ([#1209](#1209)) ([4b7b242](4b7b242)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
Bumps the all group with 19 updates: | Package | From | To | | --- | --- | --- | | [google-api-core](https://github.com/googleapis/google-cloud-python) | `2.30.0` | `2.30.1` | | [fastapi](https://github.com/fastapi/fastapi) | `0.135.1` | `0.135.2` | | [sse-starlette](https://github.com/sysid/sse-starlette) | `3.3.2` | `3.3.4` | | [starlette](https://github.com/Kludex/starlette) | `0.52.1` | `1.0.0` | | [cryptography](https://github.com/pyca/cryptography) | `46.0.5` | `46.0.6` | | [grpcio](https://github.com/grpc/grpc) | `1.78.0` | `1.80.0` | | [grpcio-tools](https://github.com/grpc/grpc) | `1.78.0` | `1.80.0` | | [grpcio-reflection](https://grpc.io) | `1.78.0` | `1.80.0` | | [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.39.1` | `1.40.0` | | [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.39.1` | `1.40.0` | | [pyjwt](https://github.com/jpadilla/pyjwt) | `2.11.0` | `2.12.1` | | [google-cloud-aiplatform](https://github.com/googleapis/python-aiplatform) | `1.140.0` | `1.144.0` | | [datamodel-code-generator](https://github.com/koxudaxi/datamodel-code-generator) | `0.54.0` | `0.55.0` | | [mypy](https://github.com/python/mypy) | `1.19.1` | `1.20.0` | | [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `7.0.0` | `7.1.0` | | [ruff](https://github.com/astral-sh/ruff) | `0.15.4` | `0.15.8` | | [uv-dynamic-versioning](https://github.com/ninoseki/uv-dynamic-versioning) | `0.13.0` | `0.14.0` | | [types-requests](https://github.com/python/typeshed) | `2.32.4.20260107` | `2.33.0.20260327` | | [uvicorn](https://github.com/Kludex/uvicorn) | `0.41.0` | `0.42.0` | Updates `google-api-core` from 2.30.0 to 2.30.1 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fgoogleapis%2Fgoogle-cloud-python%2Freleases">google-api-core's releases</a>.</em></p> <blockquote> <h2>grpc-google-iam-v1: v0.14.4</h2> <h2><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fgoogleapis%2Fgoogle-cloud-python%2Fcompare%2Fgrpc-google-iam-v1-v0.14.3...grpc-google-iam-v1-v0.14.4">v0.14.4</a> (2026-03-31)</h2> <h2>google-cloud-compute-v1beta: v0.10.0</h2> <h2><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fgoogleapis%2Fgoogle-cloud-python%2Fcompare%2Fgoogle-cloud-compute-v1beta-v0.9.0...google-cloud-compute-v1beta-v0.10.0">v0.10.0</a> (2026-03-26)</h2> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fgoogleapis%2Fgoogle-cloud-python%2Fcommit%2F4e80530190d3e3d7d0dec26b8daf97c2db15c2df"><code>4e80530</code></a> chore: create a release (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fgoogleapis%2Fgoogle-cloud-python%2Fissues%2F16193">#16193</a>)</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fgoogleapis%2Fgoogle-cloud-python%2Fcommit%2F0f8d933cfeca182e00eb589da2ab0df61579c6f1"><code>0f8d933</code></a> chore: add gapic-generator integration test presubmit (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fgoogleapis%2Fgoogle-cloud-python%2Fissues%2F16465">#16465</a>)</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fgoogleapis%2Fgoogle-cloud-python%2Fcommit%2Fab44f7e4224b554e9365aafbd4ecb559ed975aa6"><code>ab44f7e</code></a> chore(deps): update dependency requests to v2.33.0 [security] (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fgoogleapis%2Fgoogle-cloud-python%2Fissues%2F16464">#16464</a>)</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fgoogleapis%2Fgoogle-cloud-python%2Fcommit%2F943a979f14b1f39608cdb2658823f087a599e418"><code>943a979</code></a> chore(migration): Migrate code from googleapis/sphinx-docfx-yaml into package...</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fgoogleapis%2Fgoogle-cloud-python%2Fcommit%2F8c6703da295ed30200bb38f637b745b64f34d690"><code>8c6703d</code></a> chore(migration): Migrate code from googleapis/gapic-generator-python into pa...</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fgoogleapis%2Fgoogle-cloud-python%2Fcommit%2Fe3731d58d5371f166e75742e257e2524d21e83cb"><code>e3731d5</code></a> Merge branch 'main' into migration.gapic-generator-python.migration.2026-03-2...</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fgoogleapis%2Fgoogle-cloud-python%2Fcommit%2F20f57241d9f690abc31c1a19ee5a0d33c667f300"><code>20f5724</code></a> Trigger CI</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fgoogleapis%2Fgoogle-cloud-python%2Fcommit%2F76a8b58e1f73328243ff838a4652bdcc4ead31b5"><code>76a8b58</code></a> chore: skip spanner django presubmits using dorny filter (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fgoogleapis%2Fgoogle-cloud-python%2Fissues%2F16196">#16196</a>)</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fgoogleapis%2Fgoogle-cloud-python%2Fcommit%2F7a05a34dc0d4bd9ded9ab3ce97b5e61f2780e081"><code>7a05a34</code></a> chore: create a release (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fgoogleapis%2Fgoogle-cloud-python%2Fissues%2F16191">#16191</a>)</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fgoogleapis%2Fgoogle-cloud-python%2Fcommit%2F46ee8a094fdb121f49fa600f91d1b8c0818a9253"><code>46ee8a0</code></a> fix presubmit</li> <li>Additional commits viewable in <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fgoogleapis%2Fgoogle-cloud-python%2Fcompare%2Fgoogle-api-core-v2.30.0...google-api-core-v2.30.1">compare view</a></li> </ul> </details> <br /> Updates `fastapi` from 0.135.1 to 0.135.2 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Ffastapi%2Ffastapi%2Freleases">fastapi's releases</a>.</em></p> <blockquote> <h2>0.135.2</h2> <h3>Upgrades</h3> <ul> <li>⬆️ Increase lower bound to <code>pydantic >=2.9.0.</code> and fix the test suite. PR <a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Ffastapi%2Ffastapi%2Fpull%2F15139">#15139</a> by <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fsvlandeg"><code>@svlandeg</code></a>.</li> </ul> <h3>Docs</h3> <ul> <li>📝 Add missing last release notes dates. PR <a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Ffastapi%2Ffastapi%2Fpull%2F15202">#15202</a> by <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Ftiangolo"><code>@tiangolo</code></a>.</li> <li>📝 Update docs for contributors and team members regarding translation PRs. PR <a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Ffastapi%2Ffastapi%2Fpull%2F15200">#15200</a> by <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2FYuriiMotov"><code>@YuriiMotov</code></a>.</li> <li>💄 Fix code blocks in reference docs overflowing table width. PR <a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Ffastapi%2Ffastapi%2Fpull%2F15094">#15094</a> by <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2FYuriiMotov"><code>@YuriiMotov</code></a>.</li> <li>📝 Fix duplicated words in docstrings. PR <a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Ffastapi%2Ffastapi%2Fpull%2F15116">#15116</a> by <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2FAhsanSheraz"><code>@AhsanSheraz</code></a>.</li> <li>📝 Add docs for <code>pyproject.toml</code> with <code>entrypoint</code>. PR <a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Ffastapi%2Ffastapi%2Fpull%2F15075">#15075</a> by <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Ftiangolo"><code>@tiangolo</code></a>.</li> <li>📝 Update links in docs to no longer use the classes external-link and internal-link. PR <a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Ffastapi%2Ffastapi%2Fpull%2F15061">#15061</a> by <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Ftiangolo"><code>@tiangolo</code></a>.</li> <li>🔨 Add JS and CSS handling for automatic <code>target=_blank</code> for links in docs. PR <a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Ffastapi%2Ffastapi%2Fpull%2F15063">#15063</a> by <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Ftiangolo"><code>@tiangolo</code></a>.</li> <li>💄 Update styles for internal and external links in new tab. PR <a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Ffastapi%2Ffastapi%2Fpull%2F15058">#15058</a> by <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Ftiangolo"><code>@tiangolo</code></a>.</li> <li>📝 Add documentation for the FastAPI VS Code extension. PR <a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Ffastapi%2Ffastapi%2Fpull%2F15008">#15008</a> by <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fsavannahostrowski"><code>@savannahostrowski</code></a>.</li> <li>📝 Fix doctrings for <code>max_digits</code> and <code>decimal_places</code>. PR <a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Ffastapi%2Ffastapi%2Fpull%2F14944">#14944</a> by <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2FYuriiMotov"><code>@YuriiMotov</code></a>.</li> <li>📝 Add dates to release notes. PR <a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Ffastapi%2Ffastapi%2Fpull%2F15001">#15001</a> by <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2FYuriiMotov"><code>@YuriiMotov</code></a>.</li> </ul> <h3>Translations</h3> <ul> <li>🌐 Update translations for zh (update-outdated). PR <a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Ffastapi%2Ffastapi%2Fpull%2F15177">#15177</a> by <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Ftiangolo"><code>@tiangolo</code></a>.</li> <li>🌐 Update translations for zh-hant (update-outdated). PR <a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Ffastapi%2Ffastapi%2Fpull%2F15178">#15178</a> by <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Ftiangolo"><code>@tiangolo</code></a>.</li> <li>🌐 Update translations for zh-hant (add-missing). PR <a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Ffastapi%2Ffastapi%2Fpull%2F15176">#15176</a> by <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Ftiangolo"><code>@tiangolo</code></a>.</li> <li>🌐 Update translations for zh (add-missing). PR <a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Ffastapi%2Ffastapi%2Fpull%2F15175">#15175</a> by <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Ftiangolo"><code>@tiangolo</code></a>.</li> <li>🌐 Update translations for ja (update-outdated). PR <a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Ffastapi%2Ffastapi%2Fpull%2F15171">#15171</a> by <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Ftiangolo"><code>@tiangolo</code></a>.</li> <li>🌐 Update translations for ko (update-outdated). PR <a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Ffastapi%2Ffastapi%2Fpull%2F15170">#15170</a> by <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Ftiangolo"><code>@tiangolo</code></a>.</li> <li>🌐 Update translations for tr (update-outdated). PR <a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Ffastapi%2Ffastapi%2Fpull%2F15172">#15172</a> by <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Ftiangolo"><code>@tiangolo</code></a>.</li> <li>🌐 Update translations for ko (add-missing). PR <a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Ffastapi%2Ffastapi%2Fpull%2F15168">#15168</a> by <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Ftiangolo"><code>@tiangolo</code></a>.</li> <li>🌐 Update translations for ja (add-missing). PR <a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Ffastapi%2Ffastapi%2Fpull%2F15167">#15167</a> by <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Ftiangolo"><code>@tiangolo</code></a>.</li> <li>🌐 Update translations for tr (add-missing). PR <a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Ffastapi%2Ffastapi%2Fpull%2F15169">#15169</a> by <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Ftiangolo"><code>@tiangolo</code></a>.</li> <li>🌐 Update translations for fr (update-outdated). PR <a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Ffastapi%2Ffastapi%2Fpull%2F15165">#15165</a> by <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Ftiangolo"><code>@tiangolo</code></a>.</li> <li>🌐 Update translations for fr (add-missing). PR <a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Ffastapi%2Ffastapi%2Fpull%2F15163">#15163</a> by <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Ftiangolo"><code>@tiangolo</code></a>.</li> <li>🌐 Update translations for uk (update-outdated). PR <a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Ffastapi%2Ffastapi%2Fpull%2F15160">#15160</a> by <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Ftiangolo"><code>@tiangolo</code></a>.</li> <li>🌐 Update translations for uk (add-missing). PR <a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Ffastapi%2Ffastapi%2Fpull%2F15158">#15158</a> by <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Ftiangolo"><code>@tiangolo</code></a>.</li> <li>🌐 Update translations for pt (add-missing). PR <a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Ffastapi%2Ffastapi%2Fpull%2F15157">#15157</a> by <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Ftiangolo"><code>@tiangolo</code></a>.</li> <li>🌐 Update translations for pt (update-outdated). PR <a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Ffastapi%2Ffastapi%2Fpull%2F15159">#15159</a> by <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Ftiangolo"><code>@tiangolo</code></a>.</li> <li>🌐 Update translations for es (update-outdated). PR <a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Ffastapi%2Ffastapi%2Fpull%2F15155">#15155</a> by <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Ftiangolo"><code>@tiangolo</code></a>.</li> <li>🌐 Update translations for es (add-missing). PR <a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Ffastapi%2Ffastapi%2Fpull%2F15154">#15154</a> by <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Ftiangolo"><code>@tiangolo</code></a>.</li> <li>🌐 Update translations for de (update-outdated). PR <a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Ffastapi%2Ffastapi%2Fpull%2F15156">#15156</a> by <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Ftiangolo"><code>@tiangolo</code></a>.</li> <li>🌐 Update translations for ru (update-and-add). PR <a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Ffastapi%2Ffastapi%2Fpull%2F15152">#15152</a> by <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Ftiangolo"><code>@tiangolo</code></a>.</li> <li>🌐 Update translations for de (add-missing). PR <a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Ffastapi%2Ffastapi%2Fpull%2F15153">#15153</a> by <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Ftiangolo"><code>@tiangolo</code></a>.</li> </ul> <h3>Internal</h3> <ul> <li>🔨 Exclude spam comments from statistics in <code>scripts/people.py</code>. PR <a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Ffastapi%2Ffastapi%2Fpull%2F15088">#15088</a> by <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2FYuriiMotov"><code>@YuriiMotov</code></a>.</li> <li>⬆ Bump authlib from 1.6.7 to 1.6.9. PR <a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Ffastapi%2Ffastapi%2Fpull%2F15128">#15128</a> by <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fapps%2Fdependabot"><code>@dependabot[bot]</code></a>.</li> <li>⬆ Bump pyasn1 from 0.6.2 to 0.6.3. PR <a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Ffastapi%2Ffastapi%2Fpull%2F15143">#15143</a> by <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fapps%2Fdependabot"><code>@dependabot[bot]</code></a>.</li> <li>⬆ Bump ujson from 5.11.0 to 5.12.0. PR <a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Ffastapi%2Ffastapi%2Fpull%2F15150">#15150</a> by <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fapps%2Fdependabot"><code>@dependabot[bot]</code></a>.</li> <li>🔨 Tweak translation workflow and translation fixer tool. PR <a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Ffastapi%2Ffastapi%2Fpull%2F15166">#15166</a> by <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2FYuriiMotov"><code>@YuriiMotov</code></a>.</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Ffastapi%2Ffastapi%2Fcommit%2F25a3697cedc6e7dfb84e93c8ff965801486f00f4"><code>25a3697</code></a> 🔖 Release version 0.135.2</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Ffastapi%2Ffastapi%2Fcommit%2Fab125daa4034435777853a2c5a6c47451414f9aa"><code>ab125da</code></a> 📝 Update release notes</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Ffastapi%2Ffastapi%2Fcommit%2F122b6d490f844b6f716855d55a3e11237b7fb61f"><code>122b6d4</code></a> 📝 Add missing last release notes dates (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Ffastapi%2Ffastapi%2Fissues%2F15202">#15202</a>)</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Ffastapi%2Ffastapi%2Fcommit%2F68ac0ab91e9b14c418013790fc0e420a827686b5"><code>68ac0ab</code></a> 📝 Update release notes</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Ffastapi%2Ffastapi%2Fcommit%2Fea6e287eb398afe6a82c3ef71780e8451813f674"><code>ea6e287</code></a> 📝 Update docs for contributors and team members regarding translation PRs (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Ffastapi%2Ffastapi%2Fissues%2F1">#1</a>...</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Ffastapi%2Ffastapi%2Fcommit%2Fd0a6f208c5cb5daaa1de5ea5187729e3789d1dce"><code>d0a6f20</code></a> 📝 Update release notes</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Ffastapi%2Ffastapi%2Fcommit%2Ffd9e192cf4fae399c0d51dd23e2a137052eb6087"><code>fd9e192</code></a> 💄 Fix code blocks in reference docs overflowing table width (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Ffastapi%2Ffastapi%2Fissues%2F15094">#15094</a>)</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Ffastapi%2Ffastapi%2Fcommit%2Ffce9460f865928eb7d0393d8809bbc472e0c21cd"><code>fce9460</code></a> 📝 Update release notes</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Ffastapi%2Ffastapi%2Fcommit%2F0227991a01e61bf5cdd93cc00e9e243f52b47a4a"><code>0227991</code></a> 🔨 Exclude spam comments from statistics in <code>scripts/people.py</code> (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Ffastapi%2Ffastapi%2Fissues%2F15088">#15088</a>)</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Ffastapi%2Ffastapi%2Fcommit%2Fcbd64b09a32681d3b0ea097608bc62eb0d1587e0"><code>cbd64b0</code></a> 📝 Update release notes</li> <li>Additional commits viewable in <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Ffastapi%2Ffastapi%2Fcompare%2F0.135.1...0.135.2">compare view</a></li> </ul> </details> <br /> Updates `sse-starlette` from 3.3.2 to 3.3.4 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fsysid%2Fsse-starlette%2Freleases">sse-starlette's releases</a>.</em></p> <blockquote> <h2>v3.3.4</h2> <h2>What's Changed</h2> <ul> <li>chore(deps): bump cbor2 from 5.8.0 to 5.9.0 by <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fdependabot"><code>@dependabot</code></a>[bot] in <a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fsysid%2Fsse-starlette%2Fpull%2F177">sysid/sse-starlette#177</a></li> <li>chore(deps): bump ujson from 5.11.0 to 5.12.0 by <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fdependabot"><code>@dependabot</code></a>[bot] in <a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fsysid%2Fsse-starlette%2Fpull%2F176">sysid/sse-starlette#176</a></li> <li>chore(deps): bump requests from 2.32.5 to 2.33.0 by <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fdependabot"><code>@dependabot</code></a>[bot] in <a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fsysid%2Fsse-starlette%2Fpull%2F178">sysid/sse-starlette#178</a></li> <li>chore(deps): bump cryptography from 46.0.5 to 46.0.6 by <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fdependabot"><code>@dependabot</code></a>[bot] in <a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fsysid%2Fsse-starlette%2Fpull%2F179">sysid/sse-starlette#179</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fsysid%2Fsse-starlette%2Fcompare%2Fv3.3.3...v3.3.4">https://github.com/sysid/sse-starlette/compare/v3.3.3...v3.3.4</a></p> <h2>v3.3.3</h2> <h2>What's Changed</h2> <ul> <li>chore(deps): bump astral-sh/setup-uv from 6 to 7 by <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fdependabot"><code>@dependabot</code></a>[bot] in <a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fsysid%2Fsse-starlette%2Fpull%2F172">sysid/sse-starlette#172</a></li> <li>chore(deps): bump pyopenssl from 25.3.0 to 26.0.0 by <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fdependabot"><code>@dependabot</code></a>[bot] in <a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fsysid%2Fsse-starlette%2Fpull%2F174">sysid/sse-starlette#174</a></li> <li>chore(deps): bump pyasn1 from 0.6.2 to 0.6.3 by <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fdependabot"><code>@dependabot</code></a>[bot] in <a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fsysid%2Fsse-starlette%2Fpull%2F175">sysid/sse-starlette#175</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fsysid%2Fsse-starlette%2Fcompare%2Fv0.0.0...v3.3.3">https://github.com/sysid/sse-starlette/compare/v0.0.0...v3.3.3</a></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fsysid%2Fsse-starlette%2Fcommit%2Fc938db3f6ea262f5f087c75d8631c3aab9cbf0ad"><code>c938db3</code></a> Bump version to 3.3.4</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fsysid%2Fsse-starlette%2Fcommit%2Feefd6dcb106784960af02505a56686b362e9caab"><code>eefd6dc</code></a> Merge pull request <a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fsysid%2Fsse-starlette%2Fissues%2F179">#179</a> from sysid/dependabot/uv/cryptography-46.0.6</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fsysid%2Fsse-starlette%2Fcommit%2Fd9e9b822224b09c275c1905aaeb3cbab6c29f4f7"><code>d9e9b82</code></a> chore(deps): bump cryptography from 46.0.5 to 46.0.6</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fsysid%2Fsse-starlette%2Fcommit%2F28cd775f51f138726d6c27f42ff4fdae91f482f0"><code>28cd775</code></a> Merge pull request <a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fsysid%2Fsse-starlette%2Fissues%2F178">#178</a> from sysid/dependabot/uv/requests-2.33.0</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fsysid%2Fsse-starlette%2Fcommit%2F2e52732f92665dd7ed83250af840bdef0ef1bc98"><code>2e52732</code></a> Merge pull request <a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fsysid%2Fsse-starlette%2Fissues%2F176">#176</a> from sysid/dependabot/uv/ujson-5.12.0</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fsysid%2Fsse-starlette%2Fcommit%2Fbac335e7dce0ee11f6585d6cfc1379079756b22c"><code>bac335e</code></a> Merge pull request <a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fsysid%2Fsse-starlette%2Fissues%2F177">#177</a> from sysid/dependabot/uv/cbor2-5.9.0</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fsysid%2Fsse-starlette%2Fcommit%2Fd4654686c68f18e71d09f580a4acb10199858abc"><code>d465468</code></a> chore(deps): bump requests from 2.32.5 to 2.33.0</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fsysid%2Fsse-starlette%2Fcommit%2F7434cd326b055077719df224b12d0d7ace3e4cfd"><code>7434cd3</code></a> chore(deps): bump cbor2 from 5.8.0 to 5.9.0</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fsysid%2Fsse-starlette%2Fcommit%2Ffc2455af95ec26822d7ca0420c2c115f7489b7c4"><code>fc2455a</code></a> chore(deps): bump ujson from 5.11.0 to 5.12.0</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fsysid%2Fsse-starlette%2Fcommit%2F5f845398db25a50889ef7a0f8214aa931aed7ac0"><code>5f84539</code></a> Bump version to 3.3.3</li> <li>Additional commits viewable in <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fsysid%2Fsse-starlette%2Fcompare%2Fv3.3.2...v3.3.4">compare view</a></li> </ul> </details> <br /> Updates `starlette` from 0.52.1 to 1.0.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2FKludex%2Fstarlette%2Freleases">starlette's releases</a>.</em></p> <blockquote> <h2>Version 1.0.0</h2> <p>Starlette 1.0 is here! 🎉</p> <p>After nearly eight years since its creation, Starlette has reached its first stable release.</p> <p>A special thank you to <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Flovelydinosaur"><code>@lovelydinosaur</code></a>, the creator of Starlette, Uvicorn, HTTPX and MkDocs, whose work helped to lay the foundation for the modern async Python ecosystem. 🙏</p> <p>Thank you to <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fadriangb"><code>@adriangb</code></a>, <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fgraingert"><code>@graingert</code></a>, <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fagronholm"><code>@agronholm</code></a>, <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fflorimondmanca"><code>@florimondmanca</code></a>, <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Faminalaee"><code>@aminalaee</code></a>, <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Ftiangolo"><code>@tiangolo</code></a>, <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Falex-oleshkevich"><code>@alex-oleshkevich</code></a>, <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fabersheeran"><code>@abersheeran</code></a>, and <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2FuSpike"><code>@uSpike</code></a> for helping make Starlette what it is today. And to all my sponsors - especially <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Ftiangolo"><code>@tiangolo</code></a>, <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fhuggingface"><code>@huggingface</code></a>, and <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Felevenlabs"><code>@elevenlabs</code></a> - thank you for your support!</p> <p>Thank you to all <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fencode%2Fstarlette%2Fgraphs%2Fcontributors">290+ contributors</a> who have shaped Starlette over the years! ❤️</p> <p>Read more on the <a href="/sitelet?url=https%3A%2F%2Fmarcelotryle.com%2Fblog%2F2026%2F03%2F22%2Fstarlette-10-is-here%2F">blog post</a>.</p> <p>Check out the full release notes at <a href="/sitelet?url=https%3A%2F%2Fwww.starlette.io%2Frelease-notes%2F%23100-march-22-2026">https://www.starlette.io/release-notes/#100-march-22-2026</a></p> <hr /> <p><strong>Full Changelog</strong>: <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fencode%2Fstarlette%2Fcompare%2F1.0.0rc1...1.0.0">https://github.com/encode/starlette/compare/1.0.0rc1...1.0.0</a></p> <h2>Version 1.0.0rc1</h2> <p>We're ready! 🚀</p> <p>The first release candidate for Starlette 1.0 is here! After years on ZeroVer, we're finally making the jump.</p> <p>This release removes all deprecated features marked for 1.0.0, along with some last-minute bug fixes.</p> <p>A special thank you to <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Flovelydinosaur"><code>@lovelydinosaur</code></a>, the creator of Starlette, Uvicorn, HTTPX and MkDocs, whose work helped to lay the foundation for the modern async Python ecosystem. 🙏</p> <p>Thank you to <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fadriangb"><code>@adriangb</code></a>, <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fgraingert"><code>@graingert</code></a>, <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fagronholm"><code>@agronholm</code></a>, <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fflorimondmanca"><code>@florimondmanca</code></a>, <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Faminalaee"><code>@aminalaee</code></a>, <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Ftiangolo"><code>@tiangolo</code></a>, <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Falex-oleshkevich"><code>@alex-oleshkevich</code></a>, and <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fabersheeran"><code>@abersheeran</code></a> for helping make Starlette what it is today. And to all my sponsors - especially <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Ftiangolo"><code>@tiangolo</code></a>, <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fhuggingface"><code>@huggingface</code></a>, and <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Felevenlabs"><code>@elevenlabs</code></a> - thank you for your support!</p> <p>Thank you to all <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fencode%2Fstarlette%2Fgraphs%2Fcontributors">290+ contributors</a> who have shaped Starlette over the years!</p> <p>Check out the full release notes at <a href="/sitelet?url=https%3A%2F%2Fwww.starlette.io%2Frelease-notes%2F%23100rc1-february-23-2026">https://www.starlette.io/release-notes/#100rc1-february-23-2026</a></p> <hr /> <p><strong>Full Changelog</strong>: <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2FKludex%2Fstarlette%2Fcompare%2F0.52.1...1.0.0rc1">https://github.com/Kludex/starlette/compare/0.52.1...1.0.0rc1</a></p> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2FKludex%2Fstarlette%2Fblob%2Fmain%2Fdocs%2Frelease-notes.md">starlette's changelog</a>.</em></p> <blockquote> <h2>1.0.0 (March 22, 2026)</h2> <p>Starlette 1.0 is here!</p> <p>After nearly eight years since its creation, Starlette has reached its first stable release. Thank you to everyone who tested the release candidate and reported issues.</p> <p>You can read more on the <a href="/sitelet?url=https%3A%2F%2Fmarcelotryle.com%2Fblog%2F2026%2F03%2F22%2Fstarlette-10-is-here%2F">blog post</a>.</p> <h4>Added</h4> <ul> <li>Track session access and modification in <code>SessionMiddleware</code> <a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fencode%2Fstarlette%2Fpull%2F3166">#3166</a>.</li> </ul> <h4>Fixed</h4> <ul> <li>Handle websocket denial responses in <code>StreamingResponse</code> and <code>FileResponse</code> <a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fencode%2Fstarlette%2Fpull%2F3189">#3189</a>.</li> <li>Use <code>bytearray</code> for field accumulation in <code>FormParser</code> <a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fencode%2Fstarlette%2Fpull%2F3179">#3179</a>.</li> <li>Move <code>parser.finalize()</code> inside try/except in <code>MultiPartParser.parse()</code> <a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fencode%2Fstarlette%2Fpull%2F3153">#3153</a>.</li> </ul> <h2>1.0.0rc1 (February 23, 2026)</h2> <p>We're ready! I'm thrilled to announce the first release candidate for Starlette 1.0.</p> <p>Starlette was created in June 2018 by Tom Christie, and has been on ZeroVer for years. Today, it's downloaded almost <a href="/sitelet?url=https%3A%2F%2Fpypistats.org%2Fpackages%2Fstarlette">10 million times a day</a>, serves as the foundation for FastAPI, and has inspired many other frameworks. In the age of AI, Starlette continues to play an important role as a dependency of the Python MCP SDK.</p> <p>This release focuses on removing deprecated features that were marked for removal in 1.0.0, along with some last minute bug fixes. It's a release candidate, so we can gather feedback from the community before the final 1.0.0 release soon.</p> <p>A huge thank you to all the contributors who have helped make Starlette what it is today. In particular, I'd like to recognize:</p> <ul> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Flovelydinosaur">Kim Christie</a> - The original creator of Starlette, Uvicorn, and MkDocs, and the current maintainer of HTTPX. Kim's work helped lay the foundation for the modern async Python ecosystem.</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fadriangb">Adrian Garcia Badaracco</a> - One of the smartest people I know, whom I have the pleasure of working with at Pydantic.</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fgraingert">Thomas Grainger</a> - My async teacher, always ready to help with questions.</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fagronholm">Alex Grönholm</a> - Another async mentor, always prompt to help with questions.</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fflorimondmanca">Florimond Manca</a> - Always present in the early days of both Starlette and Uvicorn, and helped a lot in the ecosystem.</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Faminalaee">Amin Alaee</a> - Contributed a lot with file-related PRs.</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Ftiangolo">Sebastián Ramírez</a> - Maintains FastAPI upstream, and always in contact to help with upstream issues.</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Falex-oleshkevich">Alex Oleshkevich</a> - Helped a lot on templates and many discussions.</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fabersheeran">abersheeran</a> - My go-to person when I need help on many subjects.</li> </ul> <p>I'd also like to thank my sponsors for their support. A special thanks to <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Ftiangolo"><code>@tiangolo</code></a>, <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fhuggingface"><code>@huggingface</code></a>, and <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Felevenlabs"><code>@elevenlabs</code></a> for their generous sponsorship, and to all my other sponsors:</p> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2FKludex%2Fstarlette%2Fcommit%2F0e88e92b592bfa11fd92e331869a8d49ba34b541"><code>0e88e92</code></a> Version 1.0.0 (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2FKludex%2Fstarlette%2Fissues%2F3178">#3178</a>)</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2FKludex%2Fstarlette%2Fcommit%2F9ee951980bae776103715b66305f807d9e8245da"><code>9ee9519</code></a> Handle websocket denial responses in streaming and file responses (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2FKludex%2Fstarlette%2Fissues%2F3189">#3189</a>)</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2FKludex%2Fstarlette%2Fcommit%2Fa0bcc26612c9c344737cd59fb4ef847326adf37a"><code>a0bcc26</code></a> chore(deps-dev): bump black from 26.1.0 to 26.3.1 (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2FKludex%2Fstarlette%2Fissues%2F3183">#3183</a>)</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2FKludex%2Fstarlette%2Fcommit%2F79b3f26a9a38791af14d15c058c0e8c54cd9b11e"><code>79b3f26</code></a> chore(deps-dev): bump the python-packages group with 7 updates (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2FKludex%2Fstarlette%2Fissues%2F3168">#3168</a>)</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2FKludex%2Fstarlette%2Fcommit%2F789b9269fd3f3d6ab28781624f151e44432463cd"><code>789b926</code></a> Use <code>bytearray</code> for field accumulation in <code>FormParser</code> (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2FKludex%2Fstarlette%2Fissues%2F3179">#3179</a>)</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2FKludex%2Fstarlette%2Fcommit%2Fa1fd9d822dc49857e9f39ea5b0970aeed6c8f669"><code>a1fd9d8</code></a> docs: fix typo in routing.md (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2FKludex%2Fstarlette%2Fissues%2F3176">#3176</a>)</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2FKludex%2Fstarlette%2Fcommit%2Fc14d0f778010940ac40f97dbc23d8dbf99e87e23"><code>c14d0f7</code></a> Document session cookie security flags (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2FKludex%2Fstarlette%2Fissues%2F3169">#3169</a>)</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2FKludex%2Fstarlette%2Fcommit%2Fc2e28786d1e73da045fa84e622f65c314a7171c1"><code>c2e2878</code></a> Move parser.finalize() inside try/except in MultiPartParser.parse() (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2FKludex%2Fstarlette%2Fissues%2F3153">#3153</a>)</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2FKludex%2Fstarlette%2Fcommit%2F89630a8658ab8aac7cca8a0d6ec4b78dcc2fcb46"><code>89630a8</code></a> chore(deps): bump the github-actions group with 3 updates (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2FKludex%2Fstarlette%2Fissues%2F3167">#3167</a>)</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2FKludex%2Fstarlette%2Fcommit%2F4647e532bbed7a5f60c9972ddba3f5fb4a79e1f9"><code>4647e53</code></a> Track session access and modification in <code>SessionMiddleware</code> (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2FKludex%2Fstarlette%2Fissues%2F3166">#3166</a>)</li> <li>Additional commits viewable in <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2FKludex%2Fstarlette%2Fcompare%2F0.52.1...1.0.0">compare view</a></li> </ul> </details> <br /> Updates `cryptography` from 46.0.5 to 46.0.6 <details> <summary>Changelog</summary> <p><em>Sourced from <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fpyca%2Fcryptography%2Fblob%2Fmain%2FCHANGELOG.rst">cryptography's changelog</a>.</em></p> <blockquote> <p>46.0.6 - 2026-03-25</p> <pre><code> * **SECURITY ISSUE**: Fixed a bug where name constraints were not applied to peer names during verification when the leaf certificate contains a wildcard DNS SAN. Ordinary X.509 topologies are not affected by this bug, including those used by the Web PKI. Credit to **Oleh Konko (1seal)** for reporting the issue. **CVE-2026-34073** <p>.. _v46-0-5:<br /> </code></pre></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fpyca%2Fcryptography%2Fcommit%2F91d728897bdad30cd5c79a2b23e207f1f050d587"><code>91d7288</code></a> Cherry-pick <a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fpyca%2Fcryptography%2Fissues%2F14542">#14542</a> (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fpyca%2Fcryptography%2Fissues%2F14543">#14543</a>)</li> <li>See full diff in <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fpyca%2Fcryptography%2Fcompare%2F46.0.5...46.0.6">compare view</a></li> </ul> </details> <br /> Updates `grpcio` from 1.78.0 to 1.80.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fgrpc%2Fgrpc%2Freleases">grpcio's releases</a>.</em></p> <blockquote> <h2>Release v1.80.0</h2> <p>This is release 1.80.0 (<a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fgrpc%2Fgrpc%2Fblob%2Fmaster%2Fdoc%2Fg_stands_for.md">glimmering</a>) of gRPC Core.</p> <p>For gRPC documentation, see <a href="/sitelet?url=https%3A%2F%2Fgrpc.io%2F">grpc.io</a>. For previous releases, see <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fgrpc%2Fgrpc%2Freleases">Releases</a>.</p> <p>This release contains refinements, improvements, and bug fixes, with highlights listed below.</p> <h2>Core</h2> <ul> <li>[ssl] Implement TLS private key signer in Python. (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fgrpc%2Fgrpc%2Fpull%2F41701">#41701</a>)</li> <li>[TLS Credentials]: Private Key Offload Implementation. (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fgrpc%2Fgrpc%2Fpull%2F41606">#41606</a>)</li> <li>Fix max sockaddr struct size on OpenBSD. (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fgrpc%2Fgrpc%2Fpull%2F40454">#40454</a>)</li> <li>[core] Enable EventEngine for Python by default, and EventEngine fork support in Python and Ruby. (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fgrpc%2Fgrpc%2Fpull%2F41432">#41432</a>)</li> <li>[TLS Credentials]: Create InMemoryCertificateProvider to update certificates independently. (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fgrpc%2Fgrpc%2Fpull%2F41484">#41484</a>)</li> <li>[Ruby] Build/test ruby 4.0 and build native gems with Ruby 4.0 support. (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fgrpc%2Fgrpc%2Fpull%2F41324">#41324</a>)</li> <li>[EventEngine] Remove an incorrect std::move in DNSServiceResolver constructor. (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fgrpc%2Fgrpc%2Fpull%2F41502">#41502</a>)</li> <li>[RR and WRR] enable change to connect from a random index. (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fgrpc%2Fgrpc%2Fpull%2F41472">#41472</a>)</li> <li>[xds] Implement gRFC A101. (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fgrpc%2Fgrpc%2Fpull%2F41051">#41051</a>)</li> </ul> <h2>C++</h2> <ul> <li>[C++] Add SNI override option to C++ channel credentials options API. (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fgrpc%2Fgrpc%2Fpull%2F41460">#41460</a>)</li> </ul> <h2>C#</h2> <ul> <li>[C# tools] Option to append Async to server side method names <a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fgrpc%2Fgrpc%2Fissues%2F39010">#39010</a>. (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fgrpc%2Fgrpc%2Fpull%2F39797">#39797</a>)</li> <li>[C# tools] Fix Grpc.Tools 2.69.0 stops working on ARM64 (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fgrpc%2Fgrpc%2Fpull%2F41543">#41543</a>)</li> </ul> <h2>Objective-C</h2> <ul> <li>[Fix][Compiler] Plugins fall back to the edition 2023 for older protobuf. (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fgrpc%2Fgrpc%2Fpull%2F41357">#41357</a>)</li> </ul> <h2>PHP</h2> <ul> <li>[PHP] Disable php infinite recursion check for callback from Core to PHP. (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fgrpc%2Fgrpc%2Fpull%2F41835">#41835</a>)</li> <li>[PHP] Fix runtime error with PHp8.5 alpha because zend_exception_get_defaul…. (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fgrpc%2Fgrpc%2Fpull%2F40337">#40337</a>)</li> </ul> <h2>Python</h2> <ul> <li>[Python] Fix <code>GRPC_TRACE</code> not working when absl log initialized in cython. (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fgrpc%2Fgrpc%2Fpull%2F41814">#41814</a>)</li> <li>Revert "[Python] Align GRPC_ENABLE_FORK_SUPPORT env defaults in core and python (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fgrpc%2Fgrpc%2Fissues%2F41455">#41455</a>)". (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fgrpc%2Fgrpc%2Fpull%2F41769">#41769</a>)</li> <li>[Python] Fix AsyncIO Server maximum_concurrent_rpcs enforcement preventing negative active_rpcs count. (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fgrpc%2Fgrpc%2Fpull%2F41532">#41532</a>)</li> <li>[Python] Docs: correct <code>grpc.Compression</code> references. (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fgrpc%2Fgrpc%2Fpull%2F41705">#41705</a>)</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fgrpc%2Fgrpc%2Fcommit%2Ff5e2d6e856176c2f6b7691032adfefe21e5f64c1"><code>f5e2d6e</code></a> [Release] Bump version to 1.80.0 (on v1.80.x branch) (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fgrpc%2Fgrpc%2Fissues%2F41857">#41857</a>)</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fgrpc%2Fgrpc%2Fcommit%2F938cfecaebfc28b5e6bcdb95d55aba3962d9b55b"><code>938cfec</code></a> [subchannel connection scaling] fix when we reset backoff (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fgrpc%2Fgrpc%2Fissues%2F41935">#41935</a>)</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fgrpc%2Fgrpc%2Fcommit%2F91778bec667d7310864420f2b32aeb2e41e1b51c"><code>91778be</code></a> [Backport][v1.80.x][Python] New <code>_create</code> method for aio.Metadata (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fgrpc%2Fgrpc%2Fissues%2F41888">#41888</a>)</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fgrpc%2Fgrpc%2Fcommit%2Ff10b9f26933703c5fe3e080f50ef19c858d773e0"><code>f10b9f2</code></a> [bzlmod] upgrade rules_swift to avoid BCR CI breakage on Windows with bazel 7...</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fgrpc%2Fgrpc%2Fcommit%2Fbe4c1c55b69493868241bfffd4bc318d3d592656"><code>be4c1c5</code></a> [subchannel] fix crash in connection scaling code (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fgrpc%2Fgrpc%2Fissues%2F41853">#41853</a>)</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fgrpc%2Fgrpc%2Fcommit%2Fa71df73eafb18fa0210a13dd6a2ce2cb6594d427"><code>a71df73</code></a> [Release] Bump version to 1.80.0-pre1 (on v1.80.x branch) (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fgrpc%2Fgrpc%2Fissues%2F41844">#41844</a>)</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fgrpc%2Fgrpc%2Fcommit%2F3ca09e4818f4362e75c9c224f1d4c2065db75a0a"><code>3ca09e4</code></a> [Python] Fix GRPC_TRACE and add test to check the GRPC_TRACE logs print (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fgrpc%2Fgrpc%2Fissues%2F41814">#41814</a>)</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fgrpc%2Fgrpc%2Fcommit%2F260c6fd37c502e984836a446c5d90e4a1298036d"><code>260c6fd</code></a> [PHP] Disable php infinite recursion check for callback from Core to PHP (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fgrpc%2Fgrpc%2Fissues%2F41">#41</a>...</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fgrpc%2Fgrpc%2Fcommit%2F50957c5c47de1c85637fc9dafe6d4eb4c1224f6b"><code>50957c5</code></a> [Flakiness] Delete flaky iomgr fd_conservation_posix_test and create an Event...</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fgrpc%2Fgrpc%2Fcommit%2Fe1e1d0a8150b5178d4b75e15f4856a4d825a8999"><code>e1e1d0a</code></a> [Bzlmod] Turn off bzlmod for PSM python tests. (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fgrpc%2Fgrpc%2Fissues%2F41810">#41810</a>)</li> <li>Additional commits viewable in <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fgrpc%2Fgrpc%2Fcompare%2Fv1.78.0...v1.80.0">compare view</a></li> </ul> </details> <br /> Updates `grpcio-tools` from 1.78.0 to 1.80.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fgrpc%2Fgrpc%2Freleases">grpcio-tools's releases</a>.</em></p> <blockquote> <h2>Release v1.80.0</h2> <p>This is release 1.80.0 (<a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fgrpc%2Fgrpc%2Fblob%2Fmaster%2Fdoc%2Fg_stands_for.md">glimmering</a>) of gRPC Core.</p> <p>For gRPC documentation, see <a href="/sitelet?url=https%3A%2F%2Fgrpc.io%2F">grpc.io</a>. For previous releases, see <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fgrpc%2Fgrpc%2Freleases">Releases</a>.</p> <p>This release contains refinements, improvements, and bug fixes, with highlights listed below.</p> <h2>Core</h2> <ul> <li>[ssl] Implement TLS private key signer in Python. (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fgrpc%2Fgrpc%2Fpull%2F41701">#41701</a>)</li> <li>[TLS Credentials]: Private Key Offload Implementation. (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fgrpc%2Fgrpc%2Fpull%2F41606">#41606</a>)</li> <li>Fix max sockaddr struct size on OpenBSD. (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fgrpc%2Fgrpc%2Fpull%2F40454">#40454</a>)</li> <li>[core] Enable EventEngine for Python by default, and EventEngine fork support in Python and Ruby. (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fgrpc%2Fgrpc%2Fpull%2F41432">#41432</a>)</li> <li>[TLS Credentials]: Create InMemoryCertificateProvider to update certificates independently. (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fgrpc%2Fgrpc%2Fpull%2F41484">#41484</a>)</li> <li>[Ruby] Build/test ruby 4.0 and build native gems with Ruby 4.0 support. (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fgrpc%2Fgrpc%2Fpull%2F41324">#41324</a>)</li> <li>[EventEngine] Remove an incorrect std::move in DNSServiceResolver constructor. (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fgrpc%2Fgrpc%2Fpull%2F41502">#41502</a>)</li> <li>[RR and WRR] enable change to connect from a random index. (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fgrpc%2Fgrpc%2Fpull%2F41472">#41472</a>)</li> <li>[xds] Implement gRFC A101. (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fgrpc%2Fgrpc%2Fpull%2F41051">#41051</a>)</li> </ul> <h2>C++</h2> <ul> <li>[C++] Add SNI override option to C++ channel credentials options API. (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fgrpc%2Fgrpc%2Fpull%2F41460">#41460</a>)</li> </ul> <h2>C#</h2> <ul> <li>[C# tools] Option to append Async to server side method names <a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fgrpc%2Fgrpc%2Fissues%2F39010">#39010</a>. (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fgrpc%2Fgrpc%2Fpull%2F39797">#39797</a>)</li> <li>[C# tools] Fix Grpc.Tools 2.69.0 stops working on ARM64 (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fgrpc%2Fgrpc%2Fpull%2F41543">#41543</a>)</li> </ul> <h2>Objective-C</h2> <ul> <li>[Fix][Compiler] Plugins fall back to the edition 2023 for older protobuf. (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fgrpc%2Fgrpc%2Fpull%2F41357">#41357</a>)</li> </ul> <h2>PHP</h2> <ul> <li>[PHP] Disable php infinite recursion check for callback from Core to PHP. (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fgrpc%2Fgrpc%2Fpull%2F41835">#41835</a>)</li> <li>[PHP] Fix runtime error with PHp8.5 alpha because zend_exception_get_defaul…. (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fgrpc%2Fgrpc%2Fpull%2F40337">#40337</a>)</li> </ul> <h2>Python</h2> <ul> <li>[Python] Fix <code>GRPC_TRACE</code> not working when absl log initialized in cython. (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fgrpc%2Fgrpc%2Fpull%2F41814">#41814</a>)</li> <li>Revert "[Python] Align GRPC_ENABLE_FORK_SUPPORT env defaults in core and python (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fgrpc%2Fgrpc%2Fissues%2F41455">#41455</a>)". (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fgrpc%2Fgrpc%2Fpull%2F41769">#41769</a>)</li> <li>[Python] Fix AsyncIO Server maximum_concurrent_rpcs enforcement preventing negative active_rpcs count. (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fgrpc%2Fgrpc%2Fpull%2F41532">#41532</a>)</li> <li>[Python] Docs: correct <code>grpc.Compression</code> references. (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fgrpc%2Fgrpc%2Fpull%2F41705">#41705</a>)</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fgrpc%2Fgrpc%2Fcommit%2Ff5e2d6e856176c2f6b7691032adfefe21e5f64c1"><code>f5e2d6e</code></a> [Release] Bump version to 1.80.0 (on v1.80.x branch) (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fgrpc%2Fgrpc%2Fissues%2F41857">#41857</a>)</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fgrpc%2Fgrpc%2Fcommit%2Fa71df73eafb18fa0210a13dd6a2ce2cb6594d427"><code>a71df73</code></a> [Release] Bump version to 1.80.0-pre1 (on v1.80.x branch) (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fgrpc%2Fgrpc%2Fissues%2F41844">#41844</a>)</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fgrpc%2Fgrpc%2Fcommit%2F1299baa1d49383c92bd462cba0360838bba092b8"><code>1299baa</code></a> [Python] Add language features to exported proto files (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fgrpc%2Fgrpc%2Fissues%2F41501">#41501</a>)</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fgrpc%2Fgrpc%2Fcommit%2F522dbbbb25ab793ec65f5ec02de362a63c26e36a"><code>522dbbb</code></a> [Release] Bump version to 1.79.0-dev (on master branch) (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fgrpc%2Fgrpc%2Fissues%2F41291">#41291</a>)</li> <li>See full diff in <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fgrpc%2Fgrpc%2Fcompare%2Fv1.78.0...v1.80.0">compare view</a></li> </ul> </details> <br /> Updates `grpcio-reflection` from 1.78.0 to 1.80.0 Updates `opentelemetry-api` from 1.39.1 to 1.40.0 <details> <summary>Changelog</summary> <p><em>Sourced from <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fopen-telemetry%2Fopentelemetry-python%2Fblob%2Fmain%2FCHANGELOG.md">opentelemetry-api's changelog</a>.</em></p> <blockquote> <h2>Version 1.40.0/0.61b0 (2026-03-04)</h2> <ul> <li><code>opentelemetry-sdk</code>: deprecate <code>LoggingHandler</code> in favor of <code>opentelemetry-instrumentation-logging</code>, see <code>opentelemetry-instrumentation-logging</code> documentation (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fopen-telemetry%2Fopentelemetry-python%2Fpull%2F4919">#4919</a>)</li> <li><code>opentelemetry-sdk</code>: Clarify log processor error handling expectations in documentation (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fopen-telemetry%2Fopentelemetry-python%2Fpull%2F4915">#4915</a>)</li> <li>bump semantic-conventions to v1.40.0 (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fopen-telemetry%2Fopentelemetry-python%2Fpull%2F4941">#4941</a>)</li> <li>Add stale PR GitHub Action (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fopen-telemetry%2Fopentelemetry-python%2Fpull%2F4926">#4926</a>)</li> <li><code>opentelemetry-sdk</code>: Drop unused Jaeger exporter environment variables (exporter removed in 1.22.0) (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fopen-telemetry%2Fopentelemetry-python%2Fissues%2F4918">#4918</a>)</li> <li><code>opentelemetry-sdk</code>: Clarify timeout units in environment variable documentation (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fopen-telemetry%2Fopentelemetry-python%2Fpull%2F4906">#4906</a>)</li> <li><code>opentelemetry-exporter-otlp-proto-grpc</code>: Fix re-initialization of gRPC channel on UNAVAILABLE error (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fopen-telemetry%2Fopentelemetry-python%2Fpull%2F4825">#4825</a>)</li> <li><code>opentelemetry-exporter-prometheus</code>: Fix duplicate HELP/TYPE declarations for metrics with different label sets (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fopen-telemetry%2Fopentelemetry-python%2Fissues%2F4868">#4868</a>)</li> <li>Allow loading all resource detectors by setting <code>OTEL_EXPERIMENTAL_RESOURCE_DETECTORS</code> to <code>*</code> (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fopen-telemetry%2Fopentelemetry-python%2Fpull%2F4819">#4819</a>)</li> <li><code>opentelemetry-sdk</code>: Fix the type hint of the <code>_metrics_data</code> property to allow <code>None</code> (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fopen-telemetry%2Fopentelemetry-python%2Fpull%2F4837">#4837</a>).</li> <li>Regenerate opentelemetry-proto code with v1.9.0 release (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fopen-telemetry%2Fopentelemetry-python%2Fpull%2F4840">#4840</a>)</li> <li>Add python 3.14 support (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fopen-telemetry%2Fopentelemetry-python%2Fpull%2F4798">#4798</a>)</li> <li>Silence events API warnings for internal users (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fopen-telemetry%2Fopentelemetry-python%2Fpull%2F4847">#4847</a>)</li> <li>opentelemetry-sdk: make it possible to override the default processors in the SDK configurator (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fopen-telemetry%2Fopentelemetry-python%2Fpull%2F4806">#4806</a>)</li> <li>Prevent possible endless recursion from happening in <code>SimpleLogRecordProcessor.on_emit</code>, (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fopen-telemetry%2Fopentelemetry-python%2Fpull%2F4799">#4799</a>) and (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fopen-telemetry%2Fopentelemetry-python%2Fpull%2F4867">#4867</a>).</li> <li>Implement span start/end metrics (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fopen-telemetry%2Fopentelemetry-python%2Fpull%2F4880">#4880</a>)</li> <li>Add environment variable carriers to API (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fopen-telemetry%2Fopentelemetry-python%2Fpull%2F4609">#4609</a>)</li> <li>Add experimental composable rule based sampler (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fopen-telemetry%2Fopentelemetry-python%2Fpull%2F4882">#4882</a>)</li> <li>Make ConcurrentMultiSpanProcessor fork safe (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fopen-telemetry%2Fopentelemetry-python%2Fpull%2F4862">#4862</a>)</li> <li><code>opentelemetry-exporter-otlp-proto-http</code>: fix retry logic and error handling for connection failures in trace, metric, and log exporters (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fopen-telemetry%2Fopentelemetry-python%2Fpull%2F4709">#4709</a>)</li> <li><code>opentelemetry-sdk</code>: avoid RuntimeError during iteration of view instrument match dictionary in MetricReaderStorage.collect() (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fopen-telemetry%2Fopentelemetry-python%2Fpull%2F4891">#4891</a>)</li> <li>Implement experimental TracerConfigurator (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fopen-telemetry%2Fopentelemetry-python%2Fpull%2F4861">#4861</a>)</li> <li><code>opentelemetry-sdk</code>: Fix instrument creation race condition (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fopen-telemetry%2Fopentelemetry-python%2Fpull%2F4913">#4913</a>)</li> <li>bump semantic-conventions to v1.39.0 (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fopen-telemetry%2Fopentelemetry-python%2Fpull%2F4914">#4914</a>)</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fopen-telemetry%2Fopentelemetry-python%2Fcommit%2Fdd2202172982d1b3cc896ddecc2bef27d7956acb"><code>dd22021</code></a> Prepare release 1.40.0/0.61b0 (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fopen-telemetry%2Fopentelemetry-python%2Fissues%2F4949">#4949</a>)</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fopen-telemetry%2Fopentelemetry-python%2Fcommit%2F26c716602cd5927a4ad1e36a77baefdeba5457a5"><code>26c7166</code></a> api: add docstrings to core metrics instrument abstract methods (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fopen-telemetry%2Fopentelemetry-python%2Fissues%2F4923">#4923</a>)</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fopen-telemetry%2Fopentelemetry-python%2Fcommit%2Fc17ba89fdf62e39221211c2110816daff09e4238"><code>c17ba89</code></a> opentelemetry-sdk: deprecate logging handler (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fopen-telemetry%2Fopentelemetry-python%2Fissues%2F4919">#4919</a>)</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fopen-telemetry%2Fopentelemetry-python%2Fcommit%2F6ea15ffa5da5c4fa0b599e1c0c54644e42be20b3"><code>6ea15ff</code></a> docs: Clarify log processor error handling expectations (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fopen-telemetry%2Fopentelemetry-python%2Fissues%2F4915">#4915</a>)</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fopen-telemetry%2Fopentelemetry-python%2Fcommit%2F24f4fb0ead320b8a1196f01612ce94b1ea959838"><code>24f4fb0</code></a> bump semconv to v1.40.0 (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fopen-telemetry%2Fopentelemetry-python%2Fissues%2F4941">#4941</a>)</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fopen-telemetry%2Fopentelemetry-python%2Fcommit%2F2308baf3ee7053d70ca3db8b9ba02a2387ef2aeb"><code>2308baf</code></a> maint: Add stale github action (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fopen-telemetry%2Fopentelemetry-python%2Fissues%2F4926">#4926</a>)</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fopen-telemetry%2Fopentelemetry-python%2Fcommit%2F99b47df940a624523aecad88f54d7721beec6559"><code>99b47df</code></a> config: generate model code from json schema (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fopen-telemetry%2Fopentelemetry-python%2Fissues%2F4879">#4879</a>)</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fopen-telemetry%2Fopentelemetry-python%2Fcommit%2F9a658ac86376a13ccf3a67d245a9f3edc5f19043"><code>9a658ac</code></a> Add Lukas to approvers (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fopen-telemetry%2Fopentelemetry-python%2Fissues%2F4939">#4939</a>)</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fopen-telemetry%2Fopentelemetry-python%2Fcommit%2F1c64c149681d47c42506ccc7e9840aad049c755e"><code>1c64c14</code></a> opentelemetry-sdk: change sdk metrics related parameters as named (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fopen-telemetry%2Fopentelemetry-python%2Fissues%2F4937">#4937</a>)</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fopen-telemetry%2Fopentelemetry-python%2Fcommit%2F7247af7f0f131541df5f3509e5ecd7e4f90f18c2"><code>7247af7</code></a> opentelemetry-sdk: change sdk metrics related parameters as named (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fopen-telemetry%2Fopentelemetry-python%2Fissues%2F4937">#4937</a>)</li> <li>Additional commits viewable in <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fopen-telemetry%2Fopentelemetry-python%2Fcompare%2Fv1.39.1...v1.40.0">compare view</a></li> </ul> </details> <br /> Updates `opentelemetry-sdk` from 1.39.1 to 1.40.0 <details> <summary>Changelog</summary> <p><em>Sourced from <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fopen-telemetry%2Fopentelemetry-python%2Fblob%2Fmain%2FCHANGELOG.md">opentelemetry-sdk's changelog</a>.</em></p> <blockquote> <h2>Version 1.40.0/0.61b0 (2026-03-04)</h2> <ul> <li><code>opentelemetry-sdk</code>: deprecate <code>LoggingHandler</code> in favor of <code>opentelemetry-instrumentation-logging</code>, see <code>opentelemetry-instrumentation-logging</code> documentation (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fopen-telemetry%2Fopentelemetry-python%2Fpull%2F4919">#4919</a>)</li> <li><code>opentelemetry-sdk</code>: Clarify log processor error handling expectations in documentation (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fopen-telemetry%2Fopentelemetry-python%2Fpull%2F4915">#4915</a>)</li> <li>bump semantic-conventions to v1.40.0 (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fopen-telemetry%2Fopentelemetry-python%2Fpull%2F4941">#4941</a>)</li> <li>Add stale PR GitHub Action (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fopen-telemetry%2Fopentelemetry-python%2Fpull%2F4926">#4926</a>)</li> <li><code>opentelemetry-sdk</code>: Drop unused Jaeger exporter environment variables (exporter removed in 1.22.0) (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fopen-telemetry%2Fopentelemetry-python%2Fissues%2F4918">#4918</a>)</li> <li><code>opentelemetry-sdk</code>: Clarify timeout units in environment variable documentation (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fopen-telemetry%2Fopentelemetry-python%2Fpull%2F4906">#4906</a>)</li> <li><code>opentelemetry-exporter-otlp-proto-grpc</code>: Fix re-initialization of gRPC channel on UNAVAILABLE error (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fopen-telemetry%2Fopentelemetry-python%2Fpull%2F4825">#4825</a>)</li> <li><code>opentelemetry-exporter-prometheus</code>: Fix duplicate HELP/TYPE declarations for metrics with different label sets (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fopen-telemetry%2Fopentelemetry-python%2Fissues%2F4868">#4868</a>)</li> <li>Allow loading all resource detectors by setting <code>OTEL_EXPERIMENTAL_RESOURCE_DETECTORS</code> to <code>*</code> (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fopen-telemetry%2Fopentelemetry-python%2Fpull%2F4819">#4819</a>)</li> <li><code>opentelemetry-sdk</code>: Fix the type hint of the <code>_metrics_data</code> property to allow <code>None</code> (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fopen-telemetry%2Fopentelemetry-python%2Fpull%2F4837">#4837</a>).</li> <li>Regenerate opentelemetry-proto code with v1.9.0 release (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fopen-telemetry%2Fopentelemetry-python%2Fpull%2F4840">#4840</a>)</li> <li>Add python 3.14 support (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fopen-telemetry%2Fopentelemetry-python%2Fpull%2F4798">#4798</a>)</li> <li>Silence events API warnings for internal users (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fopen-telemetry%2Fopentelemetry-python%2Fpull%2F4847">#4847</a>)</li> <li>opentelemetry-sdk: make it possible to override the default processors in the SDK configurator (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fopen-telemetry%2Fopentelemetry-python%2Fpull%2F4806">#4806</a>)</li> <li>Prevent possible endless recursion from happening in <code>SimpleLogRecordProcessor.on_emit</code>, (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fopen-telemetry%2Fopentelemetry-python%2Fpull%2F4799">#4799</a>) and (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fopen-telemetry%2Fopentelemetry-python%2Fpull%2F4867">#4867</a>).</li> <li>Implement span start/end metrics (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fopen-telemetry%2Fopentelemetry-python%2Fpull%2F4880">#4880</a>)</li> <li>Add environment variable carriers to API (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fopen-telemetry%2Fopentelemetry-python%2Fpull%2F4609">#4609</a>)</li> <li>Add experimental composable rule based sampler (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fopen-telemetry%2Fopentelemetry-python%2Fpull%2F4882">#4882</a>)</li> <li>Make ConcurrentMultiSpanProcessor fork safe (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fopen-telemetry%2Fopentelemetry-python%2Fpull%2F4862">#4862</a>)</li> <li><code>opentelemetry-exporter-otlp-proto-http</code>: fix retry logic and error handling for connection failures in trace, metric, and log exporters (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fopen-telemetry%2Fopentelemetry-python%2Fpull%2F4709">#4709</a>)</li> <li><code>opentelemetry-sdk</code>: avoid RuntimeError during iteration of view instrument match dictionary in MetricReaderStorage.collect() (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fopen-telemetry%2Fopentelemetry-python%2Fpull%2F4891">#4891</a>)</li> <li>Implement experimental TracerConfigurator (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fopen-telemetry%2Fopentelemetry-python%2Fpull%2F4861">#4861</a>)</li> <li><code>opentelemetry-sdk</code>: Fix instrument creation race condition (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fopen-telemetry%2Fopentelemetry-python%2Fpull%2F4913">#4913</a>)</li> <li>bump semantic-conventions to v1.39.0 (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fopen-telemetry%2Fopentelemetry-python%2Fpull%2F4914">#4914</a>)</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fopen-telemetry%2Fopentelemetry-python%2Fcommit%2Fdd2202172982d1b3cc896ddecc2bef27d7956acb"><code>dd22021</code></a> Prepare release 1.40.0/0.61b0 (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fopen-telemetry%2Fopentelemetry-python%2Fissues%2F4949">#4949</a>)</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fopen-telemetry%2Fopentelemetry-python%2Fcommit%2F26c716602cd5927a4ad1e36a77baefdeba5457a5"><code>26c7166</code></a> api: add docstrings to core metrics instrument abstract methods (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fopen-telemetry%2Fopentelemetry-python%2Fissues%2F4923">#4923</a>)</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fopen-telemetry%2Fopentelemetry-python%2Fcommit%2Fc17ba89fdf62e39221211c2110816daff09e4238"><code>c17ba89</code></a> opentelemetry-sdk: deprecate logging handler (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fopen-telemetry%2Fopentelemetry-python%2Fissues%2F4919">#4919</a>)</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fopen-telemetry%2Fopentelemetry-python%2Fcommit%2F6ea15ffa5da5c4fa0b599e1c0c54644e42be20b3"><code>6ea15ff</code></a> docs: Clarify log processor error handling expectations (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fopen-telemetry%2Fopentelemetry-python%2Fissues%2F4915">#4915</a>)</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fopen-telemetry%2Fopentelemetry-python%2Fcommit%2F24f4fb0ead320b8a1196f01612ce94b1ea959838"><code>24f4fb0</code></a> bump semconv to v1.40.0 (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fopen-telemetry%2Fopentelemetry-python%2Fissues%2F4941">#4941</a>)</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fopen-telemetry%2Fopentelemetry-python%2Fcommit%2F2308baf3ee7053d70ca3db8b9ba02a2387ef2aeb"><code>2308baf</code></a> maint: Add stale github action (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fopen-telemetry%2Fopentelemetry-python%2Fissues%2F4926">#4926</a>)</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fopen-telemetry%2Fopentelemetry-python%2Fcommit%2F99b47df940a624523aecad88f54d7721beec6559"><code>99b47df</code></a> config: generate model code from json schema (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fopen-telemetry%2Fopentelemetry-python%2Fissues%2F4879">#4879</a>)</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fopen-telemetry%2Fopentelemetry-python%2Fcommit%2F9a658ac86376a13ccf3a67d245a9f3edc5f19043"><code>9a658ac</code></a> Add Lukas to approvers (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fopen-telemetry%2Fopentelemetry-python%2Fissues%2F4939">#4939</a>)</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fopen-telemetry%2Fopentelemetry-python%2Fcommit%2F1c64c149681d47c42506ccc7e9840aad049c755e"><code>1c64c14</code></a> opentelemetry-sdk: change sdk metrics related parameters as named (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fopen-telemetry%2Fopentelemetry-python%2Fissues%2F4937">#4937</a>)</li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fopen-telemetry%2Fopentelemetry-python%2Fcommit%2F7247af7f0f131541df5f3509e5ecd7e4f90f18c2"><code>7247af7</code></a> opentelemetry-sdk: change sdk metrics related parameters as named (<a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fopen-telemetry%2Fopentelemetry-python%2Fissues%2F4937">#4937</a>)</li> <li>Additional commits viewable in <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fopen-telemetry%2Fopentelemetry-python%2Fcompare%2Fv1.39.1...v1.40.0">compare view</a></li> </ul> </details> <br /> Updates `pyjwt` from 2.11.0 to 2.12.1 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fjpadilla%2Fpyjwt%2Freleases">pyjwt's releases</a>.</em></p> <blockquote> <h2>2.12.1</h2> <h2>What's Changed</h2> <ul> <li>Add typing_extensions dependency for Python < 3.11 by <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fjpadilla"><code>@jpadilla</code></a> in <a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fjpadilla%2Fpyjwt%2Fpull%2F1151">jpadilla/pyjwt#1151</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fjpadilla%2Fpyjwt%2Fcompare%2F2.12.0...2.12.1">https://github.com/jpadilla/pyjwt/compare/2.12.0...2.12.1</a></p> <h2>2.12.0</h2> <h2>Security</h2> <ul> <li>Validate the crit (Critical) Header Parameter defined in RFC 7515 §4.1.11. by <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fdmbs335"><code>@dmbs335</code></a> in <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fjpadilla%2Fpyjwt%2Fsecurity%2Fadvisories%2FGHSA-752w-5fwx-jx9f">GHSA-752w-5fwx-jx9f</a></li> </ul> <h2>What's Changed</h2> <ul> <li>[pre-commit.ci] pre-commit autoupdate by <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fpre-commit-ci"><code>@pre-commit-ci</code></a>[bot] in <a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fjpadilla%2Fpyjwt%2Fpull%2F1132">jpadilla/pyjwt#1132</a></li> <li>chore(docs): fix docs build by <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Ftamird"><code>@tamird</code></a> in <a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fjpadilla%2Fpyjwt%2Fpull%2F1137">jpadilla/pyjwt#1137</a></li> <li>Annotate PyJWKSet.keys for pyright by <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Ftamird"><code>@tamird</code></a> in <a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fjpadilla%2Fpyjwt%2Fpull%2F1134">jpadilla/pyjwt#1134</a></li> <li>fix: close HTTPError to prevent ResourceWarning on Python 3.14 by <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fveeceey"><code>@veeceey</code></a> in <a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fjpadilla%2Fpyjwt%2Fpull%2F1133">jpadilla/pyjwt#1133</a></li> <li>chore: remove superfluous constants by <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Ftamird"><code>@tamird</code></a> in <a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fjpadilla%2Fpyjwt%2Fpull%2F1136">jpadilla/pyjwt#1136</a></li> <li>[pre-commit.ci] pre-commit autoupdate by <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fpre-commit-ci"><code>@pre-commit-ci</code></a>[bot] in <a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fjpadilla%2Fpyjwt%2Fpull%2F1135">jpadilla/pyjwt#1135</a></li> <li>chore(tests): enable mypy by <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Ftamird"><code>@tamird</code></a> in <a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fjpadilla%2Fpyjwt%2Fpull%2F1138">jpadilla/pyjwt#1138</a></li> <li>Bump actions/download-artifact from 7 to 8 by <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fdependabot"><code>@dependabot</code></a>[bot] in <a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fjpadilla%2Fpyjwt%2Fpull%2F1142">jpadilla/pyjwt#1142</a></li> <li>[pre-commit.ci] pre-commit autoupdate by <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fpre-commit-ci"><code>@pre-commit-ci</code></a>[bot] in <a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fjpadilla%2Fpyjwt%2Fpull%2F1141">jpadilla/pyjwt#1141</a></li> <li>[pre-commit.ci] pre-commit autoupdate by <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fpre-commit-ci"><code>@pre-commit-ci</code></a>[bot] in <a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fjpadilla%2Fpyjwt%2Fpull%2F1145">jpadilla/pyjwt#1145</a></li> <li>fix: do not store reference to algorithms dict on PyJWK by <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fakx"><code>@akx</code></a> in <a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fjpadilla%2Fpyjwt%2Fpull%2F1143">jpadilla/pyjwt#1143</a></li> <li>Use PyJWK algorithm when encoding without explicit algorithm by <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fjpadilla"><code>@jpadilla</code></a> in <a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fjpadilla%2Fpyjwt%2Fpull%2F1148">jpadilla/pyjwt#1148</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Ftamird"><code>@tamird</code></a> made their first contribution in <a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fjpadilla%2Fpyjwt%2Fpull%2F1137">jpadilla/pyjwt#1137</a></li> <li><a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fveeceey"><code>@veeceey</code></a> made their first contribution in <a href="/sitelet?url=https%3A%2F%2Fredirect.github.com%2Fjpadilla%2Fpyjwt%2Fpull%2F1133">jpadilla/pyjwt#1133</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fjpadilla%2Fpyjwt%2Fcompare%2F2.11.0...2.12.0">https://github.com/jpadilla/pyjwt/compare/2.11.0...2.12.0</a></p> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Fjpadilla%2Fpyjwt%2Fblob%2Fmaster%2FCHANGELOG.rst">pyjwt's changelog</a>.</em></p> <blockquote> <h2><code>v2.12.1 <https://github.com/jpadilla/pyjwt/compare/2.12.0...2.12.1></code>__</h2> <p>Fixed</p> <pre><code> - Add missing ``typing_extensions`` dependency for Python < 3.11 in `[#1150](https://github.com/jpadilla/pyjwt/issues/1150) <https://github.com/jpadilla/pyjwt/issues/1150>`__ <h2><code>v2.12.0 &lt;https://github.com/jpadilla/pyjwt/compare/2.11.0...2.12.0&gt;</code>__</h2> <p>Fixed </code></pre></p> <ul> <li>Annotate PyJWKSet.keys for pyright by <a href="/sitelet?url=https%3A%2F%2Fgithub.com%2Ftamird"><code>@tamird</code></a> in <code>[#1134](https://github.com/jpadilla/pyjwt/issues/1134) <https://github.com/jpadilla/pyjwt/pull/1134></code>__</li> <li>Clo…
Description
Thank you for opening a Pull Request!
This pull request changed
EventQueueSource.remove_sink()to useset.discard(), so removing an already-absent sink completes without raisingKeyError.EventQueueSink.close()now delegates directly to that idempotentoperation instead of suppressing the exception after telemetry has recorded it.
A regression test closes the same sink twice and verifies that the mocked
OpenTelemetry span records neither an exception nor an error description.
Before submitting your PR, there are a few things you can do to make sure it goes smoothly:
CONTRIBUTINGGuide.fix:which represents bug fixes, and correlates to a SemVer patch.feat:represents a new feature, and correlates to a SemVer minor.feat!:, orfix!:,refactor!:, etc., which represent a breaking change (indicated by the!) and will result in a SemVer major.bash scripts/format.shfrom the repository root to format)Fixes #1133 🦕